Skip to content

Add WebCull extension - #32938

Open
growthboot wants to merge 5 commits into
raycast:mainfrom
growthboot:add-webcull
Open

growthboot wants to merge 5 commits into
raycast:mainfrom
growthboot:add-webcull

Conversation

@growthboot

@growthboot growthboot commented Oct 29, 2026 •

Copy link
Copy Markdown

Description

Adds WebCull as optional bookmark access for people who already use Raycast.

  • Connect WebCull accounts through browser approval and choose the active account.
  • Search saved bookmarks by title, URL, notes, and tags.
  • Open or copy a bookmark URL, or open its parent folder in WebCull.
  • Save a URL to Root or a selected folder, including from the clipboard.
  • Retry failed setup or reconnect rejected authorizations without losing search text or entered URL/title fields. Reconnection never automatically submits a bookmark.

Cancelled or replaced login attempts cannot overwrite newer credentials. Partial
logout removes each successfully revoked account immediately. Saves remain bound
to the account that loaded the form or result, and URLs are validated before any
request. Development retains normal TLS certificate verification.

A paid WebCull account or active trial is required. Accounts on the iOS app plan
and end-to-end encrypted accounts are unsupported. Search returns up to 25
bookmarks. The save picker shows Root and up to 100 folders, subject to the
response size limit. Setup and privacy details are documented in the README.

Screencast

Three native Raycast v2 screenshots are included in the contribution, each
2000 x 1250 PNG with a consistent theme and background:

  • extensions/webcull/metadata/webcull-1.png: bookmark search results.
  • extensions/webcull/metadata/webcull-2.png: result actions for opening, copying, and saving a clipboard URL.
  • extensions/webcull/metadata/webcull-3.png: URL/title form and destination-folder picker.

Bookmark search results

Bookmark actions

Save URL and choose a folder

All three screenshots were recaptured with Raycast Capture Window and Save to
Metadata, with matching backgrounds and no mouse pointer visible. The Save URL
capture shows the folder picker open.

Validation

  • All 27 focused extension tests passed for the November 1 source update.
    The suite is retained in the maintainer's WebCull repository and excluded from
    this Store contribution as requested in review. It uses isolated Raycast/storage/network adapters
    and covers stale login responses, partial logout, account-bound saves, token
    rejection, setup retry, field retention, and TLS settings.
  • Review follow-ups refresh the three screenshots, remove the development-only
    test file, and apply the requested Prettier printWidth: 120 with
    singleQuote: false. Store lint and TypeScript checks pass. All ten TypeScript
    files produce identical JavaScript syntax trees before and after formatting;
    runtime behavior and dependencies are unchanged.
  • Store lint (manifest, author, icons, metadata, ESLint and formatting), TypeScript,
    and the production distribution build pass. Dependencies and lockfile are unchanged
    from the initial submission, whose clean lockfile install also passed.
  • Both development and distribution default to production endpoints; local
    development requires an explicit override. Distribution ignores that override.
  • The maintainer reported API deployment and confirmed production reauthorization,
    token-revocation recovery, and field-retention testing. Native checks also observed
    search results and the reconnect prompt after a rejected token.
  • Live stale-login testing was inconclusive. Stale-attempt handling and partial
    logout cleanup have automated coverage; native partial-failure logout remains
    unverified. Broader account/edge-case coverage is not claimed.
  • The deprecated ESLint configuration helper was replaced with defineConfig,
    and unused handwritten Raycast preference types were removed. No dependency
    upgrade or E2EE support change is included.

Checklist

  • I read the extension guidelines.
  • I read the documentation about publishing.
  • I ran npm run build and tested this distribution build in Raycast.
  • I checked that files in the assets folder are used by the extension itself.
  • I checked that README media is outside metadata unless generated by Raycast.

@raycastbot raycastbot added new extension Label for PRs with new extensions platform: macOS labels Oct 29, 2026
@raycastbot

Copy link
Copy Markdown
Collaborator

Congratulations on your new Raycast extension! 🚀

We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 15 business days.

Once the PR is approved and merged, the extension will be available on our Store.

@greptile-apps

greptile-apps Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[High impact] The follow-up appears safe to merge; the formatter finding is fixed and no new issues were found.

Summary

Adds WebCull account connections, bookmark search, and URL saving to Raycast.

  • WebCull accounts connect through browser approval and can be switched or revoked.
  • WebCull bookmarks appear in Raycast search with actions for their links and folders.
  • A URL can be saved to Root or a chosen WebCull folder from Raycast.
  • The extension includes its own setup, build settings, and user guide.

Reviews (4) · Last reviewed commit: "Apply requested 120-column Prettier form..." · Reviewed by Greptile

Comment thread extensions/webcull/src/lib/auth.ts Resolved
Comment thread extensions/webcull/src/lib/http.ts Resolved
Comment thread extensions/webcull/.prettierrc Resolved
Comment thread extensions/webcull/eslint.config.js Resolved
Cancel superseded login attempts, clean up partial logout, and preserve TLS verification. Add retry and reauthorization flows with retained input, account-bound saves, and focused regression coverage. Replace the deprecated ESLint helper and remove unused preference declarations.

@0xdhrv 0xdhrv left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @growthboot 👋

Thanks for your contribution 🔥 The account-bound saves and reconnection flow are thoughtful, and the README clearly explains the account requirements and limitations.

Here's everything I found in this pass:

Blocking

  • Please remove tests/security.test.cjs and the tests/ folder from the Store extension. Keep the security tests in your own repository rather than shipping development-only material with the extension.

    As mentioned in our docs here ↗

  • metadata/webcull-3.png shows a mouse pointer over the Stack dropdown. Please retake this screenshot:

    1. Open Save URL to WebCull Stack and show the folder picker.
    2. Move the pointer off the Raycast window.
    3. Run Capture Window and select Save to Metadata.

    As mentioned in our docs here ↗

When the blocking items are done, request another review 😊

Feel free to reach me here or on Slack if anything is unclear.

@0xdhrv
0xdhrv marked this pull request as draft November 6, 2026 14:44
@0xdhrv 0xdhrv self-assigned this Nov 6, 2026
@growthboot
growthboot marked this pull request as ready for review November 10, 2026 04:34
@growthboot

Copy link
Copy Markdown
Author

@0xdhrv Both requested changes are addressed:

  • Removed tests/security.test.cjs and the tests/ directory from the Store contribution. The unchanged security suite remains in our own WebCull repository.
  • Recaptured the Save screenshot using Capture Window / Save to Metadata with the folder picker open and no pointer visible. Search and Actions were also recaptured to match its background, as required by the metadata checker.

The follow-up changes only the three PNGs and removes the development-only test file. The PR description links the new images, and the PR is marked ready for review. Please take another look. Thank you!

@0xdhrv 0xdhrv left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you look into the suggestion from Greptile?


I converted this PR into a draft until it's ready for the review, please press the button Ready for review when it's ready and we'll have a look 😊

@0xdhrv
0xdhrv marked this pull request as draft November 10, 2026 16:14
@growthboot
growthboot marked this pull request as ready for review November 13, 2026 01:17
@growthboot

Copy link
Copy Markdown
Author

@0xdhrv Addressed the remaining Greptile suggestion in 8fa33e4:

  • Set printWidth to 120, retaining singleQuote: false.
  • Applied Prettier to the affected source files.
  • Store lint and TypeScript checks pass. All ten TypeScript files produce identical compiled JavaScript syntax trees before and after formatting, so this introduces no behavior change.

The earlier test-file removal and pointer-free screenshot set remain in place. The PR is ready for review again. Thank you!

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions platform: macOS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants