feat: upgrade toolchain and soften sync recovery after network blips
Bump Vite 8, matrix-js-sdk, and related deps; fix immer/vanilla-extract imports for new majors. Replace blocking sync error dialog with background recovery on wake/offline, and disable Vite auto-open in dev. Add feature handoff documentation index.
This commit is contained in:
82
docs/handoff/features/streamdeck/HANDOFF.md
Normal file
82
docs/handoff/features/streamdeck/HANDOFF.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# Stream Deck integration — handoff
|
||||
|
||||
## Summary
|
||||
|
||||
The Elgato Stream Deck plugin (`streamdeck-plugin/`) controls Paarrot via the local HTTP API: toggle mute/deafen, switch channels, send messages, and show status. It is a separate package from the main app but ships in the same monorepo.
|
||||
|
||||
## User-facing behavior
|
||||
|
||||
- User installs `.streamDeckPlugin` or copies `com.paarrot.streamdeck.sdPlugin` into Stream Deck plugins folder
|
||||
- Requires Paarrot desktop running with API on `http://127.0.0.1:33384`
|
||||
- Actions: Toggle Mute, Toggle Deafen, Change Channel, Send Message, Get Status
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Stream Deck button press
|
||||
→ com.paarrot.streamdeck.sdPlugin/plugin/index.js
|
||||
→ fetch http://127.0.0.1:33384/...
|
||||
→ Paarrot Electron API (see local-api handoff)
|
||||
```
|
||||
|
||||
## Key files
|
||||
|
||||
| Path | Role |
|
||||
|------|------|
|
||||
| `streamdeck-plugin/com.paarrot.streamdeck.sdPlugin/manifest.json` | Plugin manifest |
|
||||
| `streamdeck-plugin/com.paarrot.streamdeck.sdPlugin/plugin/index.js` | Action implementations |
|
||||
| `streamdeck-plugin/com.paarrot.streamdeck.sdPlugin/plugin/index.html` | Property inspector UI |
|
||||
| `streamdeck-plugin/build.js` | Build `.streamDeckPlugin` bundle |
|
||||
| `streamdeck-plugin/validate.js` | Manifest validation |
|
||||
| `streamdeck-plugin/README.md` | User install guide |
|
||||
| `streamdeck-plugin/QUICKSTART.md` | Dev quickstart |
|
||||
|
||||
## Data model
|
||||
|
||||
None — stateless HTTP client. Channel list and status come from Paarrot API responses.
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Elgato Stream Deck software 6.0+
|
||||
- Paarrot local API (port 33384)
|
||||
- Node build tooling in `streamdeck-plugin/package.json`
|
||||
|
||||
## Integration points
|
||||
|
||||
- **local-api**: sole backend; breaking API changes require Stream Deck plugin update
|
||||
- Icons: `streamdeck-plugin/.../images/paarrot.svg`, `status.svg`
|
||||
|
||||
## Testing
|
||||
|
||||
### Manual
|
||||
|
||||
1. Run Paarrot; confirm `/health` responds.
|
||||
2. Load plugin in Stream Deck developer mode.
|
||||
3. Map Toggle Mute to a key; join a call; press key.
|
||||
4. Map Change Channel; verify room switch in Paarrot.
|
||||
|
||||
### Automated
|
||||
|
||||
- `node streamdeck-plugin/validate.js`
|
||||
|
||||
## Known issues & gotchas
|
||||
|
||||
- Plugin repo README still references placeholder GitHub URLs in places — update on publish
|
||||
- No auth on API; same machine trust model
|
||||
- Deafen/mute only meaningful during active calls
|
||||
|
||||
## Future work
|
||||
|
||||
- Auto-discover rooms without manual room id entry in property inspector
|
||||
- Connection status indicator on Stream Deck key
|
||||
|
||||
## Related docs
|
||||
|
||||
- [local-api HANDOFF](../local-api/HANDOFF.md)
|
||||
- [API.md](../../API.md)
|
||||
- [streamdeck-plugin/README.md](../../../../streamdeck-plugin/README.md)
|
||||
|
||||
## Add your extra things here
|
||||
|
||||
- Bundle id: `com.paarrot.streamdeck`
|
||||
- Build output: `.streamDeckPlugin` via `npm run build` in `streamdeck-plugin/`
|
||||
Reference in New Issue
Block a user