Skip to content

Implementation Roadmap

The roadmap is phased so every step leaves a usable command behind. No inert infrastructure, no TUI-only capability.

Terminal window
spotuify --help
spotuify doctor
scripts/cargo-test -p spotuify-cli --tests
PhaseGoalVerification
0Stabilize current appspotuify doctor, spotuify search, playback smoke
1CLI paritystatus/devices/search/playback/queue/playlists/library commands
2Daemon and IPCCLI/TUI use socket, daemon survives TUI exit
3SQLite and Tantivylocal search works without waiting on Spotify
4TUI redesignplayer-first UI, hint bar, palette, diagnostics
5Agent playlistsplan, resolve, dry-run, commit
6Sync hardeningrate limits, freshness, snapshot gates
7Workspace splitreal crate boundaries
8MCP servertools/list, tool routing, live resources
9Embedded librespotone auth flow, local playback backend
10Analyticsderived listens, top-N, habits, live hook recipes
10Analyticsderived listens, top-N, habits, Last.fm import
11Cross-platformlaunchd, systemd user, Task Scheduler
12Operation log and undorecorded mutations with reversal plans
13Spec compliance and QoLreload, reconnect, overrides, bug reports
14System integrationmedia keys, notifications, hooks
15Cover artinline art plus fallbacks
16Lyricssynced lyrics and offset tuning
17Audio visualizationFFT spectrum via sink tap or loopback

A full-codebase audit (2026-06) shipped reliability + feature work across the phases above: per-request IPC timeouts, search-service timeouts, a player session-health/auto-reconnect loop, an atomic daemon startup lock + IPC peer-credential check, OAuth localhost-redirect warnings, full macOS DaemonRequest protocol parity (enforced by a fixture test), rich notifications/media-controls/hooks + Discord Rich Presence from playback events, Mercury-backed related-artists + radio (spotuify artist related, spotuify radio start), sink-accurate audible time for analytics, playlist-level top-k, TUI delete-playlist/bulk-unsave, MCP live resource push (stdio), and a terminal/cover-art section in doctor.

Deliberately not done (see docs/blueprint/13-decision-log.md D019–D023): removed the never-functional analytics export/import stubs; deferred the dispatch god-function split and the spotuify-launcher crate extraction (pure-layering refactors); Windows SMTC and CLI notarization (need a Windows machine / Apple CI credentials). Row thumbnails, manual lyrics-provider selection, native PipeWire capture, AUR/Scoop, and MCP-over-HTTP push remain explicit won’t-dos.

Every new user-visible capability needs a real command:

Terminal window
spotuify <capability> --format json

If a capability has only a TUI button, it is incomplete.