Implements #1540 by extending desktop deeplink actions and adding an initial Raycast extension scaffold.
/claim #1540
start_current_recordingpause_recordingresume_recordingswitch_microphone (optional label, rotate when null)switch_camera (optional selector, rotate when null)cap-desktop://action?value=... host handling.deeplink_actions.rs.apps/desktop/src-tauri/DEEPLINKS.md.extensions/raycast with commands:
extensions/*.pnpm --dir extensions/raycast typecheck).Extended desktop deeplink actions to support recording controls (pause/resume) and device switching (microphone/camera with rotation), and added a Raycast extension scaffold with 6 commands that invoke these deeplinks.
cap-desktop://action?value=... using host_str() instead of only domain()start_current_recording action that uses saved recording settings from RecordingSettingsStorenext_item() helper that cycles through available devices when no specific device is providedfind_camera_by_selector() to match cameras by display name, device ID, or model IDrunDeepLinkAction() utility that encodes JSON actions as URL query params| Filename | Overview |
|---|---|
| apps/desktop/src-tauri/src/deeplink_actions.rs | Extended deeplink actions with recording controls, device switching, rotation logic, and comprehensive unit tests |
| apps/desktop/src-tauri/DEEPLINKS.md | Added comprehensive deeplink documentation with examples for all new actions |
| extensions/raycast/src/lib/deeplink.ts | Added reusable deeplink utility for Raycast commands with proper URL encoding |
| extensions/raycast/package.json | Added Raycast extension manifest with 6 commands and proper dependencies |
| pnpm-workspace.yaml | Added extensions/* to workspace packages |
sequenceDiagram
participant User
participant Raycast
participant Desktop as Cap Desktop
participant Recording as Recording Module
User->>Raycast: Execute command
Raycast->>Raycast: Build deeplink action JSON
Raycast->>Raycast: URL encode as cap-desktop://action?value=...
Raycast->>Desktop: Open deeplink URL
Desktop->>Desktop: Parse URL and deserialize action
alt Recording Control
Desktop->>Recording: pause_recording() / resume_recording()
Recording-->>Desktop: Result
else Device Switching
Desktop->>Desktop: Get current device
Desktop->>Desktop: List available devices
Desktop->>Desktop: Calculate next_item() with rotation
Desktop->>Recording: set_mic_input() / set_camera_input()
Recording-->>Desktop: Result
else Start Current Recording
Desktop->>Desktop: Load RecordingSettingsStore
Desktop->>Recording: set_mic_input() + set_camera_input()
Desktop->>Recording: start_recording() with stored settings
Recording-->>Desktop: Result
end
Desktop-->>Raycast: Success/Error
Raycast->>User: Show HUD notification
Last reviewed commit: 112bf3f
(2/5) Greptile learns from your feedback when you react with thumbs up/down!
cocochocolate
@cocochocolate
Cap
@CapSoftware
Abhishek Verma
@w3Abhishek