Raycast integration research and home-bar UI prototype
NO
8d ago+1271+1271+0123456789012345678901234567890123456789-20-20-01234567890123456789
Summary
This PR has three parts:
- Research.
docs/raycast-integration.mdanswers six questions about integrating with Raycast:- Triggering Raycast from outside.
- Getting data back.
- Discovering installed extensions on disk.
- A companion Raycast extension.
- Display mapping.
- Prior art.
- Recommendation and agreed design.
- A local unix-socket API in the app, with a
notchctlCLI. - A small companion Raycast extension.
- A launcher panel that reads installed manifests and launches commands by
raycast://deeplink. VISION.mditems 2 and 6 are updated to match.
- A local unix-socket API in the app, with a
- UI-only prototype with placeholder data (nothing talks to Raycast):
- A home bar under now playing: built-in panel buttons, pinned Raycast commands, and "⋯".
- A Raycast panel, an argument form, and placeholder calendar, mirror and shelf panels.
- A Settings → Raycast page.
- It reuses
HoverButton, the output picker's row style, and the existing settingsFormstyle.
Deeplink behavior (tested manually on Raycast 2.8.0)
- Raycast asks for confirmation the first time each command is launched by deeplink, including with
launchType=background. - After "Always Open Command", later launches are silent, with no Raycast window. The approval survives a Raycast restart.
- Prefilling
argumentsworks.
Prototype-only changes to existing code
- The window height went from 190 to 300 (
compactExpandedMaxHeight) so the bar and panels fit. compactModenow defaults totrue.AudioOutputRowButtonStyleis no longer private, so the Raycast rows can reuse it.- New strings are not in
Localizable.xcstringsyet.
Test plan
-
scripts/dev.sh buildsucceeds, withorigin/mainmerged in. - Run
scripts/dev.sh, open the notch, and check the bar under the player. Clicking pins should show a tick, open the form, or close the notch. - Check that "⋯" and the calendar, mirror and shelf buttons morph into panels of different sizes.
- Check that Settings → Raycast updates the bar immediately.
- Check that clicks just below the notch still pass through, now that the window is taller.
- Check on a display without a notch.
🤖 Generated with Claude Code
Summary by cubic
Documents Raycast integration options and prototypes the agreed UI with placeholder data only — nothing talks to Raycast yet.
docs/raycast-integration.md answers six questions (deeplink launching, getting data back, discovering installed extensions, a companion extension, display mapping, and prior art) and recommends a local unix-socket API with a notchctl CLI plus a small companion Raycast extension. Manually tested on Raycast 2.8.0: the first deeplink launch of each command shows a confirmation prompt, "Always Open Command" makes later launches silent, and that choice survives a Raycast restart.
Prototype
- Adds a home bar under now playing with built-in panel buttons, pinned Raycast commands, and "⋯"; panels morph the notch to per-feature sizes.
- Adds a Settings → Raycast page to pin, reorder, and preview commands; pins update the bar live but aren't persisted.
- Prototype-only changes: window height raised from 190 to 300,
compactModenow defaults totrue,AudioOutputRowButtonStyleis public, and new strings aren't inLocalizable.xcstringsyet.