The content store never shrinks on its own — deleting a save removes only tomls, never store audio (D7) — so unreferenced audio accumulates. The new /orphans provider surfaces it for reclamation (realizing store D10). It lists every store entry, walks the mounted file providers (the /crabidy tree and /fs) to cross off entries a Playable::Store toml still references, and presents the rest. Each orphan is an editable + deletable + queueable child node, so the existing e/d/queue gestures work unchanged — no proto, TUI, or web change. Rename moves both the audio file and its .cbd-store.toml sidecar (keeping the derived index in sync); delete removes both from disk; queueing plays straight from the store. Enumeration/rename/delete are CrabidyStore methods (it owns the store root and index); a thin OrphansProvider computes the reference roots and delegates. fsdy::Client gains a disk_root() accessor so the /fs root can be handed in as a reference root. Mounts only when the store is present. Includes the dev-flow artifacts (architecture/quality/plan) and docs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| tests | ||
| Cargo.lock | ||
| Cargo.toml | ||
| build.rs | ||