Files
Max Litruv Boonzaayer e058165830 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.
2026-07-09 01:55:09 +10:00

2.7 KiB

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

Add your extra things here

  • Bundle id: com.paarrot.streamdeck
  • Build output: .streamDeckPlugin via npm run build in streamdeck-plugin/