crabidy/plan/cbd-bundle.md

29 lines
1.4 KiB
Markdown

# Plan: cbd-bundle
Ordered tasks; each names its verification (tests in `cbd/src/main.rs`
and/or gates in `quality/cbd-bundle.md`).
- [x] **T1 — Server library extraction.** Move `playback`/`provider`/
`rpc` and the command/message enums into the `crabidy-server` lib;
add `serve(addr)` + `LISTEN_ADDR`; thin `main.rs`. Verifies: the
moved server suite passes unchanged; gates "Refactor".
- [x] **T2 — TUI library extraction.** `cbd-tui/src/lib.rs` with
`run(config)` (orchestrate + run_ui + channels); thin `main.rs` keeps
file tracing + config. Verifies: the moved TUI suite passes
unchanged.
- [x] **T3 — cbd crate.** Workspace member; main = shared file tracing,
`cbd-tui.toml` config, spawn `serve(LISTEN_ADDR)`, `wait_for_server`
(scheme-stripped TCP poll, adopt-on-occupied-port, dead-server
error, bounded attempts), then `cbd_tui::run`. Verifies:
`readiness_polls_until_the_socket_accepts`,
`readiness_gives_up_and_reports_a_dead_server`; gates "Bundled
behavior".
- [x] **T4 — Full verification.** Workspace suite green; clippy/fmt/
taplo/markdownlint clean.
- [x] **T5 — Live smoke test.** Boot the extracted `serve()` on a free
port through `wait_for_server` (temporary ignored probe, removed
after passing): the real stack — tidal login, providers, playback,
queue restore — accepted a TCP connection in ~1 s.
- [x] **T6 — Docs.** `plan/summary.md` section incl. deviations;
reconcile `architecture/cbd-bundle.md`.