Daemon mode: persistent headless Connect device for CLI playback
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
Direzione di ricerca
Start by reading the issue's references to the driver extraction and lib/bin split, plus the existing saved-device path and StreamingPlayer entry points. The issue identifies single-instance locking, auth/cache sharing and handoff, shutdown, and platform autostart as open design requirements; there are no specific files or tests named. Done means a persistent headless Connect device can serve CLI playback without conflicting with the TUI or leaving a ghost device.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Is your feature request related to a problem? Please describe.
The CLI is a remote control for an existing Spotify device. After #465 it can activate a listed idle device, but when no Spotify client is open anywhere there is still nothing to make sound: spotatui playback --toggle on a machine with no running player has no target. The CLI process itself cannot host native streaming because it is one-shot; the audio pipeline and the Connect device would die the moment the command exits. Building a librespot session per shell invocation is also the short-lived connect/disconnect pattern that produced the ghost Connect devices of #297, and it would add a session handshake of a second or two to every command.
Today the answer is "keep the TUI running in a terminal somewhere", which works but should not be a requirement for shell-driven playback.
Describe the solution you'd like
A spotatui daemon subcommand: one persistent headless process that owns a StreamingPlayer as a long-lived Spotify Connect device (in the spirit of spotifyd), while the CLI stays a thin remote that reaches it through the existing saved-device path. Rough scope:
- single-instance locking so a second daemon (or a TUI with native streaming) does not fight over the persisted Connect
device_id - shared auth and cache with the TUI, with a defined handoff when the TUI starts while the daemon runs (or mutual exclusion)
- clean shutdown (
spotatui daemon --stopor signal handling) so no ghost device is left behind - an autostart story per platform (systemd unit, Windows service or startup task, launchd)
Describe alternatives you've considered
- Embedding librespot in each one-shot CLI invocation: audio stops when the process exits, session churn risks ghost devices (#297), and every command pays the connect latency.
- Requiring a running TUI instance: works today (#465 activates its device from the CLI) but ties background playback to an open terminal.
- Doing nothing: acceptable for users who always have the official client or the TUI open, which is exactly the assumption #464 showed does not hold.
Additional context
A long-lived headless core process overlaps heavily with the frontend-neutral substrate work already underway (driver extraction, lib/bin split). The daemon and any future non-terminal frontend want the same thing: a core that owns playback and state without a terminal attached. Designing the daemon as a consumer of that substrate, rather than a CLI bolt-on, keeps one core instead of two.
- Lingua principale
- Rust
- Stelle
- 1.4k
- Fork
- 238
- Merge medio
- 9h 21m
- PR unite (30g)
- 193
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di LargeModGames/spotatui
-
enhancement good first issue javascript
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
LargeModGames/spotatui#841 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
LargeModGames/spotatui#832 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
LargeModGames/spotatui#829 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
LargeModGames/spotatui#827 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug enhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
LargeModGames/spotatui#825 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di LargeModGames/spotatui
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
adorsys/status-list-server#698 ·
I maintainer di solito rispondono entro 2 giorni
-
Expose the dot grid colourAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
nannou-org/egui_graph#92 ·
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
sujithputta02/Esapay#13 ·
-
Deduplicate normalized_f64_bits (hash_table.rs and bloom_filter.rs)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
tursodatabase/turso#10002 ·
I maintainer di solito rispondono entro 1 giorno
-
needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
topgrade-rs/topgrade#2419 ·
I maintainer di solito rispondono entro 1 giorno