Skip to content
- stop reconnect recovery from creating another audio sink when the previous native sink is still shutting down
- stop a stuck CoreAudio teardown from accumulating replacement sinks and cleanup threads
- retry another Spotify CDN when the first response is not playable audio
- resume the interrupted track after the audio watchdog reconnects the embedded player
- wait for the old daemon process to exit during stop and restart, then terminate that exact PID if its audio cleanup hangs
- keep player cleanup off the async runtime so a stuck audio driver cannot freeze daemon shutdown
- make the live playback release check wait for restart recovery and verify audio after the watchdog window
- resume the current track after a daemon restart instead of restoring a silent playing state
- start playback once after an audio-output change and report any resume failure to the caller
- make the opt-in live playback check restart the daemon and confirm that audio still advances
- recover playback automatically when Spotify rejects cached device credentials
- keep the current track playing when the macOS audio output changes
- wait for Spotify’s final playback result before CLI commands report success
- stop unchanged playlist refreshes from repeatedly consuming Spotify API quota
- EQ peak limiter replaces static headroom (#102) (e29fbba)
- spotuify events + unknown-event tolerance + event-kind parity (#103) (e35aca3)
- document how the spotuify agent skill configures and tests Last.fm or ListenBrainz hooks (cd47a5b)
- build the downloadable skill reproducibly and add an optional local-sync command (cd47a5b)
- stop tag releases when their changelog entry is missing or the downloadable skill is stale (0a6b55d)
- visualizer motion parity with cliamp + sign-off gallery script (#104) (8059737)
- keep artist follow state unchanged until the daemon confirms the request, and show failures in the TUI (53bafe0)
- pass cached track, artist, album, audible time, and playback start time to qualified-listen hooks (53bafe0)
- replace the Last.fm and ListenBrainz placeholders with working scrobble recipes that check API responses (53bafe0)
- visualizer styles batch 2 (waveform + particle styles) (#98) (bdefb70)
- visualizer styles (cliamp port, batch 1) (#95) (185497a)
- 10-band equalizer across all clients (#94) (494adfb)
- rate-limit cooldowns gate only their own sync domain (3240830)
- podcast playback speed and bookmarks across all clients (819fe3c)
- build the time-stretch shim with cc so Windows compiles (598b09a)
- satisfy Rust 1.98 unused-import lint and allowlist the clock parser (0a9046f)
- trim README and refresh guides, research, and demo asset (7dd3418)
- site: update vulnerable build dependencies (fa77138)
- stop the Mac reclaiming playback from the car on session reconnect (b7e2399)
- cli,spotify: repair artist likes, show playback, and legacy share-link resolution (702ae8c)
- cli: repair provider-abstraction CLI regressions (235b98a)
- cli: validate queue/playlist target selection before daemon contact (261b787)
- core,daemon: drop remaining u128 from search analytics payload (1be6ea1)
- harden config load and sync/auth after provider abstraction (4a66651)
- harden core/protocol wire compatibility (d99d019)
- macos: harden search, mutation retry, IPC decode, and reseed (02deca8)
- mcp,tui: repair provider-abstraction client regressions (2f5db58)
- mcp: only promise safe mutation replay when the daemon dedupes (441b1a8)
- spotify,provider-fake: close provider adapter defects from d52aa98 review (7d65ad7)
- spotify: close the lock-free credential-migration race and temp-path collision (a130475)
- store,search: harden provider-abstraction migrations and derived-data paths (320f5a8)
- system: include provider in feature-gated auth-error notification match (b58e388)
- record Apple Music feasibility findings and settle as D026 (b99b751)
- spotify,daemon: stop burning the first-party rate budget on doctor + isolate cooldowns by bearer (#74) (bd323b2)
- tui: reorganize navigation into 7 focused tabs and from-anywhere surfaces (#73) (b6e90ea)
- daemon,tui: stop the queue flashing empty on next, and fix failed-toast styling (#71) (7e52eae)
- cli: TTY-aware styled human output with aligned columns (#68) (f6edfbe)
- macos: design tokens, shared load/error states, accessibility polish (#66) (b8e53b3)
- player: fall back to system default when the configured audio output is gone (#70) (371095e)
- tui: dedup spinner/volume helpers and harden glyph widths (#69) (922f748)
- tui: unify color constants into one semantic token system (#65) (0c6a94a)
- sync Cargo.lock workspace versions so
--locked release builds pass (#61) (9c0a055)
- prompt first-party-only users to migrate to dev-app auth (#59) (38dcfc9)
- hybrid Spotify auth with dev-app reads and first-party playlist/library writes (#57) (bee8fcb)
- add desktop theme setting (system/light/dark/adaptive) (#51) (94b7706)
- lazy-load liked songs with scroll pagination (#52) (c395943)
- play liked songs track within full collection context (#55) (be5b50d)
- keep the embedded device listed while its player is idle (29f9771)
- derive auth mode from stored credentials when env unset (c67b047)
- derive tui palette from cover art (8a82068)
- import lastfm listening history (04cc39c)
- keep followed playlists usable (f59dd55)
- point llms-full.txt page urls at spotuify.app (96c82eb)
- prevent mobile horizontal overflow on landing page (bf6c30c)
- stop audio-flow watchdog stealing playback from id-less devices (c32d9a6)
- auto-resolve latest release in windows install snippet (a1b2473)
- correct stale command and mcp tool counts (58, 41) (c84e14f)
- drop vanity stats strip from landing page (8ba3a1e)
- lead landing page with value prop and runnable examples (93905cc)
- lead landing with command-line framing, trim install block (eee9243)
- record album reactive tui workstream (389b94e)
- regenerate cli reference from current command snapshot (787553f)
- macos: add album save/unsave button to detail view with track art fallback (97a5a29)
- library: update in-file test and url-encode ids in endpoint paths (4a09dd7)
- library: use type-specific Spotify endpoints for library saves (a4a8021)
- macos: album save button rolls back on failure and grid uses fallback art (bc8c9d4)
- add bugs and security audit report (f4e3824)
- add half-finished features audit report (7b1927d)
- add outstanding work audit report (0c8c6e4)
- add quality architecture audit report (eb7eda5)
- add races and concurrency audit report (b369e72)
- consolidate audit backlog (8a2eea2)
- daemon,macos: stop relaunching the daemon after an intentional stop (4597f9a)
- daemon: stop permanently latching the player reconnect give-up (0d79f87)
- ipc: make GetDoctorReport serializable and stop silent connection drops (d92bfef)
- player: pin forked librespot with session-recovery backport (PR #1692) (1ff33e9)
- add lyrics follow (b6a7759)
- add macos client (98b7d18)
- add media browse commands (b40b543)
- analytics: playlist-level top-k (0cf1248)
- analytics: sink-accurate audible time from the embedded counter (aa87ac6)
- artist discography browser, listening reminders, and macOS client (f7374a0)
- cli: add unlike (library unsave) to close a CLI parity gap (12c2fb6)
- cli: config show –format json (full config dump) (2afe3d8)
- cli: play Spotify URIs and share links directly (99ae7d2)
- daemon: bound every IPC request with a category-aware timeout (bc62cbe)
- daemon: cut Spotify API volume ~90%, surface rate limits + loading states (cd5f9c9)
- daemon: follow the system default audio output (macOS) (0fb2bef)
- daemon: self-heal zombie player sessions (bd903de)
- discord: real Rich Presence from playback events (a63b973)
- doctor: report terminal + cover-art protocol (client-side) (491b238)
- instant queue sync on next and full context queue retention (5583dc5)
- ipc: atomic daemon startup lock + peer-credential check (a888a8f)
- macos: add album label and seek bar to menu bar popover header (20f60ec)
- macos: add column headers to track list table (4ac2324)
- macos: bundle daemon+CLI in app for self-contained install (2b33137)
- macos: full DaemonRequest protocol parity + enforcement test (c12a996)
- macos: full Settings window (visual config editor) + Check for Updates (dcbe79e)
- macos: global keyboard control (transport + view navigation) (c5ee6ea)
- macos: new app icon (glowing equalizer, gradient squircle) (5da8bf8)
- macos: pointing hand cursor on nav link hover (973b102)
- macos: skeleton placeholders for first-load surfaces (73ad16c)
- macos: update banner + Settings toggle + podcast overhaul (9d169cb)
- mcp: live resource push over stdio (87ed5db)
- Mercury-backed related artists + radio stations (67d2780)
- per-client viz focus voting and one-click macOS app updates (4146a08)
- protocol v5, TUI parity, and macOS Apple-Music client (0ef3c09)
- refresh macOS client (9c25f93)
- release album-reactive tui fixes (9f55cf7)
- switch audio output live without a daemon restart (8cdfc86)
- system: enrich notifications, media controls, and hooks from playback (1a224ee)
- system: Windows SMTC via a hidden-window driver (0d24850)
- tui: delete-playlist + bulk-unsave behind a confirm modal (1f48213)
- tui: responsive narrow-width layout and album-adaptive accents everywhere (6c7b1b0)
- tui: width-filling contextual hints; surface queue-whole-playlist (f3fd135)
- update-awareness + cross-show episode feed (protocol 6) (3373e32)
- add player bar device switcher (331e821)
- audit waves 0-1 for cleanup and P1 correctness (1c304c3)
- avoid windows cli stack overflow (df71b03)
- bound windows smoke build time (5bc1f91)
- clean up fake daemon on windows (ea9dfaa)
- cli: selection misses exit 2, not whatever the query text matches (0f82b94)
- cli: structured exit codes, JSON contract, IPC robustness, link parity, –wait (b1fcdd8)
- daemon: actually enable media controls + wire the opt-out (307b850)
- daemon: queue integrity + optimistic reconciliation holes (35fe7c7)
- daemon: satisfy clippy (sort_by_key + episode-feed type alias) (76aaa93)
- daemon: start on Windows by keeping the named pipe off the filesystem (8c5793b)
- extend daemon startup wait (f28ffee)
- extend the side rail behind the titlebar (c7034a0)
- honest queue-add reversibility, queue dedup, and undo dry-run preview (dc58c9d)
- keep optimistic queue appends visible (ad1f1df)
- keep playback live through empty Spotify Web API polls (ddac640)
- keep test daemon watchdog cross-platform (5347d8e)
- keep windows entrypoint safe (5e4c57c)
- keep windows named pipe listener ready (09784ce)
- launcher: don’t restart a newer daemon (post-upgrade livelock) (50b06b4)
- library: paginate liked songs past Spotify’s 50-per-page cap (c3517b2)
- macos: address PR review comments (df6a565)
- macos: align track table column headers with row values (381150f)
- macos: align track table header columns with rows (1e66e51)
- macos: use consistent column slots so every track row has the same structure (43e367d)
- macos: don’t shadow a system spotuify with the bundled CLI (02d521a)
- macos: flexible album column width, title fills remaining space (9eb990f)
- macos: group action buttons into fixed-width container, align header placeholder (8c693d3)
- macos: headphone/media-key play-pause routing (250d017)
- macos: move table header outside scroll view, match padding to rows (7866505)
- macos: now-playing layout, mode-pill hit target, heart feedback (c221ece)
- macos: player bar fits any width + confirmation toasts for actions (d320770)
- macos: remove top padding gap between table header and first row (e49b474)
- macos: right-align collection row meta into a fixed column (6cbe64b)
- macos: stop Liked Songs header breaking at narrow widths (2ac69f6)
- macos: update banner false positive + apply audio-output changes (4c9f893)
- macos: updater off the main actor, pipe drains, connection races, vote hygiene (8773afa)
- macos: use .pointerStyle(.link) instead of NSCursor push/pop for hover cursors (4ad94f4)
- macos: wrap table header divider inside VStack to align with rows (3bd76b5)
- normalize windows cli help snapshots (550a681)
- player: heal silent device transfers for contextless playback (ed1dd73)
- preserve Spotify queue entries (c805a2b)
- reject blank client id (374b9eb)
- repair v1 hardening ci fallout (533332c)
- repair windows fingerprint state (f856ae3)
- seed fake smoke config (a1f04b2)
- site: force esbuild 0.28.1 to clear the npm audit gate (bad2555)
- stabilize fake daemon ci tests (f0de625)
- sync: probe /me/player at idle cadence when nothing is playing (cfad16f)
- tui: keep the last-played track on screen when idle (6679290)
- use windows pipe paths in cli tests (c629f56)
- viz vote expiry, loopback off-runtime init, shared chrome geometry (f12d0be)
- wire macOS playback controls (6988110)
- daemon: split the dispatch god-function into handler modules (78b20dd)
- extract spotuify-launcher crate, decouple CLI from daemon (226655a)
- macos: rename ArtistLinkLabel to NavLinkLabel for reuse (0d6a38b)
- remove analytics export/import scrobble stubs (7deb48b)
- add hero video shooting script (ce511ce)
- add windows install instructions (0c84ccb)
- align README with daemon-first positioning and add daemon proof video (d6cfeab)
- close the audit with roadmap, current-state, discovery guide, and em-dash fixes (483a12f)
- cli: generate reference pages for radio + artist related (be45aff)
- dedupe installs to Homebrew-only in the ship-it flow (9383d1e)
- macOS app is self-contained (bundles daemon + CLI) (26ef10b)
- macOS DMG is now signed + notarized (drop the right-click caveat) (567eb99)
- macos: add doc comments to detail views and shared types (cb1db73)
- notification template tokens + the hook positional-arg contract. (1a224ee)
- prominent Download for macOS button + stable DMG link; refresh CLI reference (4768bf5)
- record launcher-crate extraction deferral (D021) (101cb52)
- replace em dash in config media-controls note (site validate gate) (c1980cb)
- reposition the landing page around the daemon and its four clients (6d733de)
- skill: correct queue semantics, add discovery + live audio, refresh MCP tool list (e26b048)
- update-awareness + episode feed (staying up to date, D018) (32e5cba)
- sharpen homepage positioning (948a205)
- keep lyrics and cover art synced (c3ec454)
- update homepage hero video (06f6231)
- replace keychain auth with file store (5447301)
- keep playlist context queue visible (012c195)
- [] add analytics + ops CLI subcommands (6757bef)
- [] add core types for Phase 10 analytics (1bec408)
- [] add cross-platform CI + release matrix (3b86633)
- [] add cross-platform paths + IpcStream module (498670f)
- [] add flake.nix + cargo-deb + Windows console FFI dep (40fae87)
- [] add HealthClass::Unhealthy + error-based doctor election (cc5ceef)
- [] add hook_executor + listen-qualified recipes (b39dd6e)
- [] add operations CRUD + listen_facts queries (6519f23)
- [] add Phase 13 CLI surface (panic hook, log-format, globals, bug-report, generate) (1c011ef)
- [] add Phase 9 player backends + AudioCounterTap (2dd45ab)
- [] add platform service installers (887a4fe)
- [] add PrivacyGate to spotuify-sync (37138d7)
- [] add reload/reconnect/search-prune daemon requests (1a556e3)
- [] add souvlaki media-controls + notify-rust + Discord RPC modules (65870b7)
- [] add Spotify inverse mutators + enriched User-Agent (80d5699)
- [] add spotuify-keychain crate (8ee01d4)
- [] add TUI ops panel + u-key undo + confirm-modal scaffold (be40fe0)
- [] add TUI ops panel under Diagnostics (61c555c)
- [] add undo module + ops + analytics handlers (9c5365e)
- [] add v4+v5 SQLite migrations (08e5c57)
- [] capture pre-state + implement undo/redo for Phase 12 (9856a52)
- [] extend Config with PlayerConfig + AnalyticsConfig (d000135)
- [] extend protocol with analytics + operations surface (0a7ee0d)
- [] render full op detail + plan/pre_state in ops show –diff (3829b5a)
- [] scaffold spotuify-system crate with cover cache + shell hooks (7d8cc82)
- [] wire analytics + ops MCP tools (9291208)
- [] wire player factory + SessionTracker into daemon state (0dae611)
- [] wire SystemIntegration actor into daemon event fan-out (1fb221f)
- activate-first guard for embedded queue mutations (88a1811)
- add agent playlist workflow (3b2dc21)
- add batch URI mutations (a353750)
- add daemon event refreshes (552b8f3)
- add local cache search and sync (b9306bd)
- add player-first TUI redesign (50ff672)
- audio crate analyzer + cpal/pipewire loopback capture (76c36dc)
- auth: silent OAuth + typed AuthRevoked + diagnostic logging (e083fd5)
- choose the embedded player’s local audio output device (c208642)
- clearer error when transferring to an Alexa/Echo device (1236002)
- cli crate command surface (cache + hooks + mcp + mpris + viz) (e195c3c)
- cli: streaming search, search-page, –pages, auth-revoked retry, daemon login nudge (052d65c)
- daemon crate clock + queue_warm + retention + viz coordinator + session tracker (97276f1)
- daemon: push-state architecture for playback/queue/devices (cfa2582)
- daemon: wire request handlers for push-state + auth-revoked + optimistic transport (15351a8)
- device: stable SHA-1 device_id + replace-on-refresh device cache (d8faf3a)
- don’t auto-restart a stale daemon mid-playback (1cc4595)
- first-party Spotify login (keymaster + login5) (dd86966)
- initialize spotuify (293c1d4)
- keychain crate cross-platform credential storage (b99370e)
- lyrics crate with mercury + lrclib providers + alignment + parser (1c22434)
- make TUI home actionable (1f793c5)
- mcp crate http + stdio + server transports + bridge expansion (4f8fcb0)
- phase-6.1: typed SpotifyError + classifier with adversarial tests (ad1f7cb)
- phase-6.2: Spotify payload compat normalizer (852d4e7)
- phase-6.3: rate-limit middleware (retry decisions, backoff, budget) (304a0e6)
- phase-6.4: schema v2 (snapshot_id, freshness, sync_generation) (ef2fb3f)
- phase-6.5/6.6/6.8/6.9: wire typed cores into the binary (9c5a432)
- phase-6.5: snapshot_id field + sync refetch gate helpers (a3e07cb)
- phase-6.6/6.7: two-stage receipts + new typed daemon events (1afa564)
- phase-6.6: receipts table + lifecycle in spotuify-store (e7c57b4)
- phase-6.8/6.9: refresh planner + recent-event log + doctor findings (9799eb2)
- phase-8.1-8.3: MCP server core (catalogue + confirm + bridge) (0631e81)
- phase-8.4-8.8: MCP resources catalogue + README + decision log (8ccc732)
- phase-8.6/8.7: JSON-RPC 2.0 dispatch + spotuify-mcp stdio binary (b238a28)
- phase-8: spotuify-mcp dispatches executable Requests to the daemon (4bfd9e1)
- player crate librespot sink chain + viz tap + premium gate + token bridge + recovering sink (929c9ad)
- pre-existing core/daemon/tui/player work + queue dedup + librespot queue_add (eedcc38)
- preserve queue across sessions when Spotify drops the device (3730a2b)
- protocol crate event log + receipts + agent playlists request types (fe01959)
- reroute 8 playback controls through embedded librespot Spirc (ea6207f)
- route music controls through daemon IPC (6e629c9)
- search/sync/store crate updates for analytics + listen facts (cc525a7)
- search: concurrent per-type Spotify fanout (2d2708a)
- show playlist and album artwork in tui (10ff578)
- spotify crate auth scopes + rate limit + selection + compat + spotifyd helpers (c9657ac)
- spotuify playlist set-image (custom cover art) (1c50241)
- system crate cover cache + media controls + discord rpc + hooks (51b5064)
- teleprompter lyrics + softer queue selection highlight (07389ca)
- TUI banner to restart the daemon after an in-place upgrade (09b349d)
- tui crate widgets (album art + spectrum + style) + now playing module (143874a)
- TUI picker for the local audio output device (19fcb46)
- tui: deterministic streaming-search pane focus and order (d29c49f)
- tui: push-state client, streaming search panes, snappy transport, auth modal (1b6560a)
- activate embedded device so volume and transport work (2a6dd17)
- auth: cache Spotify token to disk so daemon doesn’t re-prompt keychain (1282b76)
- auto-play first selection when queueing with no active device (e22fa2f)
- avoid playback rate-limit preflights (da05376)
- bound provider rate-limit waits (8c6f6f7)
- call POST /me/playlists instead of POST /users/{user_id}/playlists (3587625)
- consolidate Spotify endpoints; route playlist writes to /items (f79917f)
- daemon: log rotation + tantivy noise filter + zombie preflight (c47d14b)
- daemon: make
cargo build produce a working daemon by default (9c95453)
- declare Homebrew portaudio dependency (404343e)
- escalating global backoff so the daemon self-heals from throttling (b6d93a8)
- harden first-party auth (review findings) (0d6fc7a)
- harden public release security (f2058e5)
- harden Spotify runtime reliability (8c62d80)
- isolate dev and prod runtime state (7ebeb28)
- isolate target builds from prod daemon (6bf348a)
- load docs fonts without blocking render (e8a87a9)
- poll devices and queue on slower lanes than playback (10f4c84)
- preserve playback context and audio defaults (98f25bd)
- record operations log + add playlist unfollow + auth bearer (21c8635)
- recover onboarding from blank config (d45cb56)
- reduce keychain prompt fanout (e404766)
- reduce startup Spotify polling (3e2c9f7)
- revert Spirc::add_to_queue + PlayerEvent::SetQueue (not in librespot 0.8.0) (2f97351)
- search: clamp Spotify /v1/search limit to 10 (empirical cap) (c99e576)
- search: CLI –source default flip + bump default limit to 50 (a1b9fc0)
- search: dedup merged per-type results + raise TUI timeout to 30s (49779a5)
- search: default discovery surfaces to Spotify (was Hybrid) (bc8392b)
- search: drop multi-type limit to 20 (Spotify rejects 50 here) (6dadc84)
- search: fan multi-type queries into sequential per-type requests (acb268f)
- search: make Tantivy QueryParser AND-by-default (d87cdfd)
- search: raise Spotify /v1/search limit cap from 10 to 50 (f6854fb)
- search: reject queries >144 chars with a clear error (1515a89)
- search: render artist + album subtitle under each search result (892ab11)
- search: stop polluting library Tantivy index with catalog hits (ad0acc0)
- silence linux log path warning (f6b2b14)
- SPOTUIFY_FAKE_SPOTIFY routes to MockPlayerBackend, expose mock unconditionally (fc09101)
- stop auth prompt storms (478f634)
- stop chronic Web API rate-limiting under first-party auth (a34aa06)
- stop startup cache-warm bursts that re-feed the rate limit (25988bd)
- tui: keep library cursor inside its visible panel (eab4999)
- unstick lyrics “Fetching” on track-change race (67026cc)
- AnalyticsSink trait + analytics types into spotuify-core (ad558ea)
- drop dead spotifyd_* fields from Config + DoctorReport (7348bc2)
- extract spotuify-core and spotuify-protocol crates (28aa30f)
- extract spotuify-store and spotuify-search crates (6acb26e)
- phase 0 drops Spotifyd and ConnectOnly backends in favour of embedded playback (808fe3f)
- phase-7: break the cli↔daemon cycle; move OutputFormat to protocol (d2a21e1)
- phase-7: extract config/auth/spotifyd/agent_playlists/selection (43f65c9)
- phase-7: extract output, actions, commands, ipc_client, analytics types (3ad4291)
- phase-7: move daemon + TUI + analytics + diagnostics into crates (675350d)
- phase-7: move src/spotify.rs and src/sync.rs into their crates (6ce96de)
- simplify workspace and harden daemon accept loop (4119e70)
- SpotifyClient holds Arc<dyn AnalyticsSink> – cycle broken (9ccbbf4)
- SyncContext trait – the sync↔daemon::state seam (e1f19bd)
- [] add D013 HealthClass + D014 competitor study + Phase 5 note (5cca1db)
- [] rewrite README for cross-platform install + repo move (da07e7b)
- add demo media and agent skill with mcp integration (3c6e22b)
- add idiomatic-rust rubric and backlog (11593b2)
- add phase 6-17 implementation plans and competitor research (b9f8f7d)
- add player screenshot asset (7b00876)
- add security audit v2 (a3ad5f0)
- add spotuify docs site (fb92141)
- add visual revamp research + 23 TUI snapshot baselines (81b795d)
- agents: adopt mxr’s CLI-first operating rules (5e5ecc8)
- agents: daemon-owns-state doctrine + symlink CLAUDE.md → AGENTS.md (f2ba31a)
- correct remaining dev-app onboarding references (e0294b4)
- document audio-output, audio-outputs, and search-page commands (f8eb793)
- document shell workflow shortcuts (a57b1d3)
- first-party login onboarding (bd6a919)
- fix Homebrew install commands (70b8ed4)
- lead README with plain positioning and honest install matrix (c7783bd)
- refresh guides + reference for recent shipped changes (a525922)
- refresh root readme + contributing guide (ef9f271)
- rewrite README + ARCHITECTURE + AGENTS narrative for librespot-only (ea55edc)
- serve demo gif from site/public for a stable URL (af7cc32)
- sharpen landing positioning (name prior art, lead pipeable CLI) (17f2a08)
- update astro docs site content + add new CLI references (ea8c797)
- update implementation phase notes + add observability plan (91103e7)
- widen landing demo (a252a0f)