Skip to content

Update teak-raycast extension#25995

Merged
raycastbot merged 4 commits intoraycast:mainfrom
praveenjuge:ext/teak-raycast
Mar 6, 2026
Merged

Update teak-raycast extension#25995
raycastbot merged 4 commits intoraycast:mainfrom
praveenjuge:ext/teak-raycast

Conversation

@praveenjuge
Copy link
Contributor

@praveenjuge praveenjuge commented Mar 3, 2026

Description

  • Update design for single card details page
  • Update API Endpoint

Screencast

teak-raycast 2026-03-03 at 19 22 09

Checklist

- chore: update changelog for version 0.2.0 and modify asset images
- fix: rename package from \'teak-raycast\' to \'teak\'
- fix: rename package from \'teak-raycast\' to \'teak\'
- feat: add Raycast action to environment configuration
- style: apply trailing comma formatting to raycast api and tests
- style: apply trailing comma formatting to raycast api and tests
- feat: add API server, update Raycast integration, and enhance card operations
- feat(api): initialize API with Hono framework and add basic structure
- chore(mobile): bump version to 1.1.0 and add release notes
- feat: add detailed release notes for new features and improvements in the app
- feat: update app description and notes to include incoming share functionality
- Implement mobile startup plan
- feat: implement theme preference storage and update related components
- Remove swipe delete from mobile list
- refactor: wrap auth routes in Protected component for better access control
- Ensure incoming share signatures
- refactor: update .easignore to align with repository ignores and improve clarity
- feat: sync card modal state with URL for deep-linking support
- refactor: update createIncomingShareSignature to simplify signature format and remove item ID from text items
- feat: implement incoming share functionality with native intent handling
- refactor: update text styling for quote content in CardPreviewSheet component
- refactor: enhance accessibility and touch target for stop recording button
- refactor: update layout and styling in authentication screens for improved UI consistency
- refactor: remove feedback status functions and related usages across components
- refactor: update text styling and list modifiers in CardPreviewSheet component
- test: add regression tests for CardsGrid and Settings components
- feat: add haptic feedback functions and implement in various components
- refactor: streamline UI components by enhancing styles and removing unnecessary sections
- refactor: simplify CardPreviewSheet by removing Section components and updating list styles
- feat: enhance CardsGrid component with improved loading and error handling
- chore: update @types/react to version 19.2.10 in package.json
- Add new skills for Apple Zoom Transitions, Expo UI SwiftUI, and Upgrading Expo
- Refactor window size settings and remove unused persistence hook
- Format openCustomerPortal callback
- Simplify pre-commit hook setup
- Update README structure
- Remove Ultracite installation and migration scripts; update AGENTS.md for streamlined commands and code standards; add skills-lock.json for Ultracite dependency tracking.
- Add emoji cards to docs hero
- Add Raycast install image
- Merge pull request raycast#40 from praveenjuge/chrome-v2
- Add persistent hover save button
- Add Raycast promo and grids
- WIP: Chrome extension v2 changes
- Add emoji support to pricing plans and update layout
- Update FAQ section layout and simplify card title
- Update docs home card layout
- Add emoji support to CTASection and update layout with new bookmark emoji
- Add new SVG and WEBP assets for app badges and emojis
- Audit multi-app dependency updates
@raycastbot raycastbot added extension fix / improvement Label for PRs with extension's fix improvements extension: teak-raycast Issues related to the teak-raycast extension platform: macOS OP is author The OP of the PR is the author of the extension labels Mar 3, 2026
@raycastbot
Copy link
Collaborator

raycastbot commented Mar 3, 2026

Thank you for your contribution! 🎉

🔔 @praveenjuge you might want to have a look.

You can use this guide to learn how to check out the Pull Request locally in order to test it.

📋 Quick checkout commands
BRANCH="ext/teak-raycast"
FORK_URL="https://github.com/praveenjuge/raycast-extensions.git"
EXTENSION_NAME="teak-raycast"
REPO_NAME="raycast-extensions"

git clone -n --depth=1 --filter=tree:0 -b $BRANCH $FORK_URL
cd $REPO_NAME
git sparse-checkout set --no-cone "extensions/$EXTENSION_NAME"
git checkout
cd "extensions/$EXTENSION_NAME"
npm install && npm run dev

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

@praveenjuge praveenjuge marked this pull request as ready for review March 3, 2026 13:51
Copilot AI review requested due to automatic review settings March 3, 2026 13:51
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the Teak Raycast extension to use the new Teak API base URL/endpoints and refreshes the card detail experience (favorite/delete actions, richer metadata), while consolidating list command logic into a shared component.

Changes:

  • Migrated API base URL + endpoints to api.teakvault.com/v1 and added new card mutations (favorite, soft delete) plus 404/timeout handling.
  • Reworked card detail UI/behavior (hero media, metadata chips, optimistic favorite toggle, soft delete).
  • Refactored Search/Favorites list commands into a reusable CardsListCommand with shared state helpers.

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
extensions/teak-raycast/src/search-cards.tsx Switches Search Cards to shared list command component.
extensions/teak-raycast/src/favorites.tsx Switches Favorites to shared list command + removes unfavorited cards from list.
extensions/teak-raycast/src/components/CardsListCommand.tsx Introduces reusable list UI/state + hooks into updated CardDetail callbacks.
extensions/teak-raycast/src/components/CardDetail.tsx Major redesign: metadata, hero media, favorite toggling, soft delete, improved actions.
extensions/teak-raycast/src/lib/constants.ts Replaces Convex base URL with Teak API base URL selection.
extensions/teak-raycast/src/lib/api.ts Updates endpoints, adds request timeout + localhost fallback, adds favorite/delete APIs, maps 404.
extensions/teak-raycast/src/lib/apiErrors.ts Adds NOT_FOUND mapping + recovery hints.
extensions/teak-raycast/src/lib/apiParsers.ts Adds parseRaycastCard and simplifies cards response validation.
extensions/teak-raycast/src/lib/cardListState.ts Adds shared list state helpers (upsert/remove/tag query).
extensions/teak-raycast/src/lib/cardDetailModel.ts Adds title/url/hero-media/chip derivation logic used by CardDetail.
extensions/teak-raycast/src/tests/request.test.ts Expands request tests for timeout, 404 mapping, favorite patch, delete 204.
extensions/teak-raycast/src/tests/cardListState.test.ts Adds test coverage for new list state helpers.
extensions/teak-raycast/src/tests/cardDetailModel.test.ts Adds test coverage for new card detail model helpers.
extensions/teak-raycast/src/tests/api.test.ts Extends error code mapping test for NOT_FOUND.
extensions/teak-raycast/src/tests/apiResponses.test.ts Minor import reordering.
extensions/teak-raycast/src/quick-save.tsx No functional change; moves navigationTitle prop placement.
extensions/teak-raycast/package.json Updates @types/node dev dependency.
extensions/teak-raycast/README.md Updates network troubleshooting text to reference new API host.
extensions/teak-raycast/CHANGELOG.md Adds 0.2.0 entry (date placeholder).

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 3, 2026

Greptile Summary

This PR updates the teak-raycast extension with a redesigned card detail page (rich metadata panel, hero images, debounced optimistic favorite toggling, soft-delete with rollback, tag filtering) and migrates all API calls from Convex endpoints to a new REST API at api.teakvault.com. The codebase is well-organized, with the shared CardsListCommand component cleanly eliminating duplication between the search and favorites commands.

Key changes:

  • New CardDetail with metadata panel, hero images, debounced favorite mutations, and soft-delete
  • New shared CardsListCommand component (replaces duplicated code in search-cards.tsx and favorites.tsx)
  • API migration: Convex → api.teakvault.com/v1 REST endpoints with AbortController timeouts and localhost loopback fallback
  • New cardDetailModel.ts and cardListState.ts utility modules with corresponding tests

Issues found:

  • The new cardDetailModel.test.ts asserts "AI Summary" / "No AI Summary" / "AI Tags" / "No AI Tags" for status chip text, but the implementation in cardDetailModel.ts returns "Teak Summary" / "No Teak Summary" / "Teak Tags" / "No Teak Tags". These tests will fail.
  • package.json still declares "version": "0.1.0" despite the CHANGELOG.md introducing a 0.2.0 entry for this PR.
  • package.json is missing a trailing newline at end of file.

Confidence Score: 2/5

  • Not safe to merge — the new unit tests for getDetailStatusChips will fail as written, and the version field is out of sync with the changelog.
  • Two correctness issues block a clean merge: the cardDetailModel tests assert text values that don't match the implementation (test suite will report failures), and the package.json version hasn't been bumped to 0.2.0 to match the changelog entry. The core logic changes (API migration, new CardDetail UX, shared component extraction) are well-implemented. Additionally, the missing trailing newline in package.json is a minor formatting issue.
  • extensions/teak-raycast/src/tests/cardDetailModel.test.ts (failing assertions) and extensions/teak-raycast/package.json (stale version field and missing trailing newline).

Last reviewed commit: e420006

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

19 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +82 to +103
test("builds status chips for type, favorite and AI signals", () => {
expect(getDetailStatusChips(baseCard)).toEqual([
{ kind: "type", text: "link" },
{ kind: "favorite", text: "Favorited" },
{ kind: "aiSummary", text: "AI Summary" },
{ kind: "aiTags", text: "AI Tags" },
]);

expect(
getDetailStatusChips({
...baseCard,
isFavorited: false,
aiSummary: null,
aiTags: [],
}),
).toEqual([
{ kind: "type", text: "link" },
{ kind: "favorite", text: "Not Favorited" },
{ kind: "aiSummary", text: "No Teak Summary" },
{ kind: "aiTags", text: "No Teak Tags" },
]);
});
Copy link
Contributor

Choose a reason for hiding this comment

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

Test expectations don't match the implementation. The getDetailStatusChips function in cardDetailModel.ts returns "Teak Summary" / "No Teak Summary" and "Teak Tags" / "No Teak Tags", but these tests assert "AI Summary" / "No AI Summary" and "AI Tags" / "No AI Tags". These tests will fail as written.

Suggested change
test("builds status chips for type, favorite and AI signals", () => {
expect(getDetailStatusChips(baseCard)).toEqual([
{ kind: "type", text: "link" },
{ kind: "favorite", text: "Favorited" },
{ kind: "aiSummary", text: "AI Summary" },
{ kind: "aiTags", text: "AI Tags" },
]);
expect(
getDetailStatusChips({
...baseCard,
isFavorited: false,
aiSummary: null,
aiTags: [],
}),
).toEqual([
{ kind: "type", text: "link" },
{ kind: "favorite", text: "Not Favorited" },
{ kind: "aiSummary", text: "No Teak Summary" },
{ kind: "aiTags", text: "No Teak Tags" },
]);
});
test("builds status chips for type, favorite and AI signals", () => {
expect(getDetailStatusChips(baseCard)).toEqual([
{ kind: "type", text: "link" },
{ kind: "favorite", text: "Favorited" },
{ kind: "aiSummary", text: "Teak Summary" },
{ kind: "aiTags", text: "Teak Tags" },
]);
expect(
getDetailStatusChips({
...baseCard,
isFavorited: false,
aiSummary: null,
aiTags: [],
}),
).toEqual([
{ kind: "type", text: "link" },
{ kind: "favorite", text: "Not Favorited" },
{ kind: "aiSummary", text: "No Teak Summary" },
{ kind: "aiTags", text: "No Teak Tags" },
]);
});

"typescript": "^5.9.3"
}
}
} No newline at end of file
Copy link
Contributor

Choose a reason for hiding this comment

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

The file is missing a trailing newline. Most linters and editors expect files to end with a newline character for consistency and to avoid merge conflicts.

Suggested change
}
}

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 3, 2026

Additional Comments (1)

extensions/teak-raycast/package.json
The version field in package.json is still "0.1.0", but CHANGELOG.md introduces a ## 0.2.0 entry for this PR. Update the version to match the changelog and reflect the release being prepared.

  "version": "0.2.0",

@0xdhrv 0xdhrv self-assigned this Mar 6, 2026
Copy link
Contributor

@0xdhrv 0xdhrv left a comment

Choose a reason for hiding this comment

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

Looks good to me, approved ✅

@raycastbot raycastbot merged commit 58393b5 into raycast:main Mar 6, 2026
2 checks passed
LlaziG added a commit to LlaziG/raycast-extensions that referenced this pull request Mar 7, 2026
- chore(hugeicons-ui):Update hugeicons-ui: bump @hugeicons/core-free-icons and @hugeicons/react
- [Skills] Display Metadata from SKILL.md frontmatter (raycast#26101)
- Update CODEOWNERs (c2c1e0d)
- Add timely extension (raycast#25085)
- Fix: copy prompt/answer for selected message (raycast#25438)
- Update CODEOWNERs (46ecffc)
- Update todoist extension (raycast#26087)
- Dia: update @raycast/utils to 2.2.3 (raycast#26091)
- Update CODEOWNERs (3503a64)
- Add typewhisper extension (raycast#25733)
- Update CODEOWNERs (5ea5ef7)
- Add number-research extension (raycast#26060)
- Update trustmrr extension (raycast#26085)
- Update CODEOWNERs (40aabef)
- Add desktoprenamer extension (raycast#24610)
- Update tailwindcss extension (raycast#26067)
- Update CODEOWNERs (7a13ffd)
- Update time-awareness extension (raycast#25765)
- Update CODEOWNERs (6c50032)
- Update github-status extension (raycast#26063)
- Update anna-s-archive extension (raycast#26076)
- Update CODEOWNERs (46b879a)
- Update shopify-developer-changelog extension (raycast#25711)
- Update CODEOWNERs (22aa04d)
- Update weather extension (raycast#26074)
- Update kagi-news extension (raycast#25679)
- Update (raycast#26073)
- Update teak-raycast extension (raycast#25995)
- otp-inbox: Add Windows support (raycast#25441)
- Update CODEOWNERs (36e7a5f)
- Add trustmrr extension (raycast#26069)
- Update CODEOWNERs (d7c540c)
- Add doubao-tts extension (raycast#25705)
- GitHub: Improve auto-merge support (raycast#25256)
- Update CODEOWNERs (9f556d5)
- Update microsoft-edge extension add new feat to search and launch workspaces (raycast#25335)
- Add RouteMesh MCP server to model-context-protocol-registry (raycast#25960)
- feat: Add Advanced Batch Rename command with rule-based engine (raycast#25501)
- Update media-converter extension (raycast#25836)
- Update scheduler extension (raycast#26059)
- Docs: Update the utils docs
- [pipe-commands] Add data formatting utilities (raycast#25824)
- Update CODEOWNERs (5b660b2)
- Add hdri-library extension (raycast#25701)
- Update CODEOWNERs (2ea8b9c)
- Update ente-auth extension (raycast#25773)
- Update CODEOWNERs (b9b9e2b)
- Add grpcui extension (raycast#25697)
- Update CODEOWNERs (1730346)
- Update openrouter model search extension (raycast#26045)
- System Monitor: Fix stale temperature readings in menubar (raycast#26025)
- Update CODEOWNERs (4e3ff41)
- Fix truncated row values in pass extension (raycast#25843)
- Update CODEOWNERs (489aede)
- Add quickreferences-raycast extension (raycast#23629)
- Update CODEOWNERs (84a0a58)
- Update cleanshotx extension (raycast#25985)
- [ccusage] Hide "Usage Limits" details when using non-OAuth authentication (raycast#26009)
- Browser Bookmarks: Add support for Perplexity Comet browser (raycast#25874)
- Add Windows support (raycast#25882)
- Update bmrks extension (raycast#25952)
- Update CODEOWNERs (2faa166)
- Update radarr extension (raycast#25953)
- Update CODEOWNERs (d8b0e95)
- Update google-chrome extension (raycast#25939)
- Add PrusaConnect links to Prusa extension (raycast#25955)
- Update CODEOWNERs (9f8c615)
- Claude Code Launcher: Fix Ghostty PATH by using interactive shell (raycast#25976)
- Update aave-search extension (raycast#26016)
- uuid-generator: add Pack Type Id command (raycast#25800)
- Update CODEOWNERs (39fe5d1)
- [ccusage] Fix npx path resolution for fnm installs using XDG directories (raycast#26008)
- fix(arc): prevent duplicate windows when Arc is not running (raycast#25806)
- System Monitor: Add pin-to-display for menubar stats (raycast#25821)
- Update CODEOWNERs (ec57b0b)
- Add unified Wispr Flow extension (raycast#25218)
- Update shadcn ui extension (raycast#26011)
- Update CODEOWNERs (b354d33)
- feat(gumroad): add price filter and copy actions (raycast#25703)
- Update CODEOWNERs (134d6f9)
- Add raycast-ai-custom-providers extension (raycast#25180)
- Update CODEOWNERs (4accbb2)
- Add zo-raycast extension (raycast#25464)
- Update CODEOWNERs (227732f)
- Add job-dojo extension (raycast#25677)
- Update CODEOWNERs (eace185)
- Add wallhaven extension (raycast#25656)
- Update existing somafm extension: launch flow, refresh toasts, menu fallback (raycast#25187)
- Update CODEOWNERs (d0f014f)
- Add email-finder extension (raycast#24847)
- Update cut-out extension (raycast#25990)
- Update CODEOWNERs (1ef7a10)
- Add cut-out extension (raycast#25663)
- [Pokedex] Added support for Scarlet & Violet–style sprite artwork (raycast#25986)
- Discogs extension new functions (raycast#25686)
- Update nhk-program-search extension (raycast#25967)
- Update kimi extension (raycast#25962)
- Update CODEOWNERs (de246c1)
- Update shiori-sh extension (raycast#25944)
- fix(browser-bookmarks): fix slow initial load and open-in-browser reliability (raycast#25979)
- Update CODEOWNERs (0ad09cd)
- Add spacer extension (raycast#25652)
- [zotero] Fix Zotero 7+ / Better BibTeX compatibility (raycast#25634)
- Docs: update for the new API release
- added ARM64 sdk support (raycast#25966)
- Update CODEOWNERs (3051c01)
- Add Bird extension (raycast#25481)
- Update CODEOWNERs (7c4f8af)
- Add Lock Time extension (raycast#25255)
- Update CODEOWNERs (cdc0ceb)
- Add paste-safely extension (raycast#25951)
- Update CODEOWNERs (bd032c8)
- Add polars-documentation-search extension (raycast#25589)
- Update CODEOWNERs (564b0f2)
- Add DevContainer Features extension (raycast#25603)
- Update CODEOWNERs (2cdb8f6)
- Update gift-stardew-valley extension (raycast#25552)
- Update CODEOWNERs (f728891)
- Update Inkdrop extension (raycast#25529)
- Sourcegraph: Setup improvements (raycast#25950)
- [Skills] Add support for updating skills (raycast#25887)
- Update CODEOWNERs (cb956f6)
- Add search repositories feature for Github for Enterprise (raycast#25661)
- Fix/trakt manager user agent v2 (raycast#25825)
- Update `CricketCast` extension - add menu bar for scores (raycast#25942)
- Add Windows platform support to Goodreads extension (raycast#25936)
- idonthavespotify: Add Qobuz, Bandcamp, Pandora support & fix crash on unknown adapters (raycast#25937)
- Update singularityapp extension (raycast#25943)
- Update raycast-surge extension (raycast#25883)
- Update awork extension (raycast#25844)
- Update extend-display extension (raycast#25894)
- Update git-worktrees extension (raycast#25898)
- [Image Modification] Fix QSpace / QSpace Pro selection detection (raycast#25923)
- Update zeabur extension (raycast#25924)
- Update vietnamese-calendar extension (raycast#25917)
- [AzTU LMS] Fix Color & Add New Image (raycast#25912)
- Update CODEOWNERs (c2aba2b)
- Add Hop extension (raycast#25162)
- [Music Assistant Controls]:  Big update with many features (raycast#25860)
- [MXroute] set mail hosting status + open webmail link (raycast#25895)
- Update kitty extension (raycast#25856)
- Update CODEOWNERs (b73dbee)
- Addeed SDK implementation (raycast#25820)
- Update CODEOWNERs (66857dc)
- Add notilight-controller extension (raycast#25424)
- Update raycast-store-updates extension (raycast#25865)
- Update reader-mode extension (raycast#25872)
- Update CODEOWNERs (f8eeb0d)
- Update battery-optimizer extension (raycast#25509)
- fix: show window icons on first load in window-walker extension (raycast#25871)
- Update CODEOWNERs (7e705b7)
- Update t3 chat extension (raycast#25803)
- Update CODEOWNERs (19f337b)
- Update modify-hash extension (raycast#25816)
- Update CODEOWNERs (64e21d0)
- Add `ZeroSSL` extension - list certificates, view + validate csr (raycast#25861)
- [Cron Manager] Fix tasks disappearing from UI & permission handling (raycast#25845)
- Update CODEOWNERs (abe1d59)
- Add markdown-converter extension (raycast#24129)
- Update betaseries extension (raycast#25842)
- [Skills] Inline detail Panel (raycast#25658)
- Update CODEOWNERs (f1bac6d)
- Removed two extensions (raycast#25851)
- Update CODEOWNERs (53db7b3)
- Add shiori-sh extension (raycast#25757)
- Docs: update for the new API release
- feat(everything-search): allow custom cli arguments (raycast#24607)
- Update CODEOWNERs (93ff0be)
- Delete extensions/proton-pass-client directory (raycast#25841)
- update (raycast#25840)
- Update CODEOWNERs (d85419c)
- Add kaneo-for-raycast extension (raycast#25461)
- [Apple Reminders] Prevent accidental recurring reminders from AI (raycast#25746)
- [Apple Notes] Fix AI tool note ID mismatch, timeout, and search filtering (raycast#25720)
- fix: show window icons on first load in window-walker extension (raycast#25818)
- [Namecheap] fix error when no domain dns hosts (raycast#25827)
- Update youversion-suggest extension (raycast#25797)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

extension fix / improvement Label for PRs with extension's fix improvements extension: teak-raycast Issues related to the teak-raycast extension OP is author The OP of the PR is the author of the extension platform: macOS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants