crabidy/plan/cbd-bundle.md

1.4 KiB

Plan: cbd-bundle

Ordered tasks; each names its verification (tests in cbd/src/main.rs and/or gates in quality/cbd-bundle.md).

  • 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".
  • 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.
  • 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".
  • T4 — Full verification. Workspace suite green; clippy/fmt/ taplo/markdownlint clean.
  • 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.
  • T6 — Docs. plan/summary.md section incl. deviations; reconcile architecture/cbd-bundle.md.