Update teak-raycast extension#25995
Conversation
- 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
|
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 commandsBRANCH="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 devWe're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 10-15 business days. |
There was a problem hiding this comment.
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/v1and 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
CardsListCommandwith 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 SummaryThis 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 Key changes:
Issues found:
Confidence Score: 2/5
Last reviewed commit: e420006 |
| 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" }, | ||
| ]); | ||
| }); |
There was a problem hiding this comment.
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.
| 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 |
There was a problem hiding this comment.
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.
| } | |
| } |
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!
Additional Comments (1)
|
0xdhrv
left a comment
There was a problem hiding this comment.
Looks good to me, approved ✅
- 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)
Description
Screencast
Checklist
npm run buildand tested this distribution build in Raycastassetsfolder are used by the extension itselfREADMEare placed outside of themetadatafolder