The LED matrix is a passive prop in a room. It must:
- Low compute on the Raspberry Pi — scenes must be lightweight
- Non-interactive — no user interaction with the matrix itself (configuration via web UI is fine, but the running display requires no input)
- No text reading — no tickers, headlines, scores, or any text the viewer would need to actively read
- Visually interesting — the primary goal is ambiance and visual appeal
| Idea | Reason |
|---|---|
| Home Assistant / MQTT | Not needed |
| Continuously pushed / always-on live preview | Too heavy on the RPi; live capture must remain viewer-demand-driven |
| RSS / News Feed | Not used; also violates no-text rule |
| Sports Scores | Not needed; violates no-text rule |
| Crypto / Stock Ticker | Not needed; violates no-text rule |
| Scrolling News Ticker | Violates no-text rule |
| Web Paint / Pixel Canvas | Too interactive |
| Emoji Signal Scene | Implies active triggering from user |
-
2026-06-01: Initial decisions. Constraints set: low compute, non-interactive, no text, prop use case.
-
2026-06-15: SpotifyMV plugin added. Standalone plugin (not extending SpotifyScenes) that auto-plays YouTube music videos when a Spotify track changes. Audio intentionally disabled (Spotify handles audio). YouTube search, download, and decode all happen on the desktop via yt-dlp + ffmpeg; Pi only copies UDP pixels to canvas.
VideoStreamEngineextracted from VideoDesktop intoSharedToolsDesktopto deduplicate the streaming pipeline. Cache keyed by Spotify track_id for stable replays. -
2026-08-22: Live web preview transport switched from repeated HTTP polling to a persistent pull-based WebSocket. A WebSocket connection alone does no capture work; each browser
nextmessage requests exactly one future composed frame, concurrent viewers coalesce, and hidden/off-screen previews stop requesting./live_frameis WebSocket-only; the pre-release HTTP polling transport was removed. -
2026-09-06: New scenery should prioritize calm, recognizable environments that reward occasional glances: aquariums, planetary vistas, and natural landscapes with sparse events. The standalone crystal/gyroid sculpture shaders were rejected and replaced.