feat(raycast): surface trust and submission handoff#476
feat(raycast): surface trust and submission handoff#476jakearmstrong59 wants to merge 2 commits into
Conversation
📝 WalkthroughWalkthroughThis PR extends the Raycast integration to surface trust metadata and clean submission handoff paths. The feed entry model gains claim/source status, safety/privacy notes, reviewer attribution, package/source verification, and last-verified-date fields, which are parsed and normalized from the feed JSON. New utilities render human-readable trust labels and generate GitHub issue URLs for reporting stale entries and requesting safety reviews. The UI displays aggregated trust signals in entry details, and two new action buttons link users to GitHub submission flows. ChangesTrust metadata and submission handoff
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Suggested labels
Poem
Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 error)
✅ Passed checks (7 passed)
✨ Finishing Touches✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
JSONbored
left a comment
There was a problem hiding this comment.
#476 feat(raycast): surface trust and submission handoff
Action: request changes.
Required before merge:
- Add Raycast UI evidence for the changed detail sidebar and Contribute actions.
- Include screenshots showing Source, Package, Review, Last verified, Safety, Privacy, Report Stale Listing, and Request Safety Review.
- Ensure official PR Validation runs and passes, especially Raycast/feed checks and required-pr-gate.
Validation expected:
pnpm validate:raycast-feed
pnpm build
git diff --chec
|
Hi @JSONbored how are you? I don't have macOS access locally, so I can't capture Raycast UI shots. The extension does build cleanly on Linux via ray develop (compile log attached) and the changes are TypeScript-only — the new rows in raycast-ui.tsx and Action Panel items in registry-command.tsx are pure JSX wired to existing Raycast primitives. Would you accept the test suite (31/31 with 11 new cases asserting the helpers and the URL builders' output) and a screen recording from a maintainer with the dev extension running, instead of contributor-captured screenshots? |
JSONbored
left a comment
There was a problem hiding this comment.
@jakearmstrong59 hi there, I re-reviewed the Raycast PR and the previous review context.
Concrete blockers:
- This changes visible Raycast UI behavior, but the required Raycast UI screenshots/evidence are still missing.
- The previous requested evidence covered the detail sidebar and Contribute actions: Source, Package, Review, Last verified, Safety, Privacy, Report Stale Listing, and Request Safety Review.
- Your latest reply says you cannot capture the Raycast UI evidence, so the PR remains unreviewable for the maintainer standard.
Required change:
- Close this PR unless you can provide the required Raycast UI evidence.
- A new PR can be opened later with the same scope plus screenshots - unfortunately, these are mandatory as this is also required of me when I submit changes/updates for the extension upstream.
The Raycast extension documentation mentions how to accurately gather screenshots for the raycast extension - feel free to check it out.
Hi @JSONbored how are you? Please review this. |
You can disregard this, I was testing out the Superagent CLA integration earlier. |
|
Hi, @JSONbored please review this. |
|
Action: request changes
|
Parse and render the trust metadata the registry feed already emits — source-backed status, package trust, claim/review attribution, and safety/privacy note coverage — in the Raycast entry detail sidebar, gated on summarizeEntryTrust().hasAnyTrustSignal so entries without metadata are unchanged. Add read-only "Report Stale Listing" and "Request Safety Review" actions to the Contribute panel that open the existing GitHub issue templates with prefilled fields. The extension stays read-only. Closes JSONbored#449
d1fa752 to
87e7c70
Compare
JSONbored
left a comment
There was a problem hiding this comment.
@jakearmstrong59 I reviewed the screenshot comment and the current Raycast extension screenshot requirements.
Concrete blockers:
- The screenshots are present in a PR comment, but they do not match Raycast extension screenshot requirements.
- Raycast’s store-prep docs expect extension screenshots to be captured through Raycast Window Capture in development mode with “Save to Metadata,” using 2000×1250 PNG images in 16:10 landscape format.
- The submitted images are GitHub comment attachments at much smaller sizes: 950×455, 640×407, 634×404, 627×409, 647×403, and 630×414.
- The PR body still contains TODO placeholders in the screenshot section instead of the actual labeled screenshots.
- The images are not clearly mapped to the requested review states: Source, Package, Review, Last verified, Safety notes, Privacy notes, Report Stale Listing, and Request Safety Review.
- I still cannot verify complete evidence for the
Last verifiedrow and fullPrivacy notesrow/content from the submitted screenshots.
Required change:
- Replace the TODO screenshot placeholders in the PR body with properly labeled screenshots.
- Use Raycast Window Capture from the extension running in development mode and save/export screenshots as Raycast metadata-quality images.
- Provide up to six clear screenshots, ideally committed or attached in the same structure expected for Raycast extension metadata.
- Each screenshot should use a consistent background, focus only on the Raycast extension, and clearly show the relevant changed UI state.
- If you cannot capture Raycast screenshots because you do not have macOS access, this PR is not review-ready as-is. Please do not request another review until the required evidence can be provided.
Validation expected:
- Updated PR body with labeled screenshots replacing all TODO placeholders.
- Screenshots matching Raycast’s 2000×1250 PNG / 16:10 metadata screenshot standard.
- Evidence covering all changed visible UI states listed above.
- Existing Raycast checks should remain green after any branch update.








Summary
category/slug/title/brand/source fields.Action.OpenInBrowseragainst an approved flow. No installs, no GitHub writes, no auth.raycast-index.jsonviabuildEntryNoteFields/buildEntryProvenanceFields. The parser was the bottleneck; this PR opens it up.What changed
integrations/raycast/src/feed.ts— newEntryTrustSummaryinterface, 8 new optional fields onRaycastEntry(safetyNotes,privacyNotes,claimStatus,reviewedBy,submittedBy,packageVerified,sourceStatus,lastVerifiedAt), defensive normalizers, label formatters (formatSourceLabel,formatPackageLabel,formatReviewLabel,formatVerifiedDate),summarizeEntryTrust, and two new handoff URL builders (buildReportStaleUrl,buildSafetyReviewUrl).integrations/raycast/src/raycast-ui.tsx—entryDetailMetadatarenders Source / Package / Review / Last verified / Safety notes / Privacy notes rows, gated onsummarizeEntryTrust(entry).hasAnyTrustSignalso entries without metadata stay unchanged.integrations/raycast/src/registry-command.tsx— two newAction.OpenInBrowseritems inside the existing "Contribute"ActionPanel.Section.integrations/raycast/test/feed.test.ts— 4 new describe suites, 11 new tests covering every helper, malformed-input rejection, fallback template behavior, and that the new URLs target the approved domains.Acceptance criteria from #449
hasAnyTrustSignal).pnpm validate:raycast-feedpasses (386 entries).Test plan
cd integrations/raycast && npm test— 31/31 pass (20 existing + 11 new across 4 new suites)cd integrations/raycast && npx tsc --noEmit— cleanpnpm type-check— cleanpnpm exec prettier --checkon the four touched files — cleanpnpm validate:raycast-feed—Validated 386 Raycast feed entries.pnpm build— exit 0,Compiled successfullygit diff --check— cleanapps/web/public/data/**orapps/web/src/generated/**— regenerated artifacts reverted before committing.CI status on the current tip
required-pr-gate— successvalidate-raycast— successvalidate-content— successScreenshots (Raycast UI evidence)
1 · Detail sidebar — new Source row (rendered by
formatSourceLabel)2 · Detail sidebar — new Package row (rendered by
formatPackageLabel, shows "First-party (verified)" / "External" / "No package download")3 · Detail sidebar — new Review row (rendered by
formatReviewLabel, shows "Verified claim" / "Reviewed by …" / "Submitted by …" / "Unclaimed")4 · Detail sidebar — new Last verified row (rendered by
formatVerifiedDate, ISO-date trimmed)5 · Detail sidebar — new Safety notes row (count + plural agreement)
6 · Detail sidebar — new Privacy notes row (count + plural agreement)
7 · Action Panel — new "Report Stale Listing" action under the Contribute section (opens
buildReportStaleUrl(entry)→ GitHub issue with category template prefilled, title prefixed "Stale …")8 · Action Panel — new "Request Safety Review" action under the Contribute section (opens
buildSafetyReviewUrl(entry)→ GitHub issue with category template prefilled, title prefixed "Safety review: …")Out of scope (per #449)
Notes for review
Download trustandVerificationrows are preserved.applyHandoffEntryParams, so the prefill behavior matchesbuildSuggestChangeUrl.degrades gracefully when no trust metadata is presenttest.Closes #449