v3.0.0 — library dashboard + persistence
A new web dashboard to replay past reads, backed by an on-device read library. It's a separate, model-free replay UI — the terminal CLI and the WebSocket protocol are unchanged.
✨ Highlights
- Read library (SQLite). Every synthesized read is now saved — title, summary, source URL, voice, duration, timestamp — in a local stdlib-
sqlite3library. Read-only paged REST:GET /api/library(search + sort + paginate),GET /api/library/{id},DELETE /api/library/{id}. - Web dashboard (Vue 3) — search, sort, and replay any past read with a full player (seek, ±5 s, pause/replay) and a word-by-word synced transcript; delete removes the row and its audio. Same terminal aesthetic as the CLI.
- Generate once, replay anytime. The heavy LLM + neural-TTS work runs on demand; replaying a saved read is light and model-free — so the dashboard stays tiny.
⚠️ Breaking change
- Audio + library location. Generated audio and the new SQLite library are written to a configurable folder via
reader.output_dir/reader.library_db, moved out of the old~/.readback/reader/default. Upgrading? Move your existing WAVs and point those config keys wherever you like (or set them back to~/.readback/readerinconfig.yaml).
Details: PR #12 · compare v2.0.0...v3.0.0