docs: add TODO items for VoiceStudio-inspired features the user picked

Projects nav grouping (Audiobooks/Magazines/Script Rehearsals/Video
Dubbing), Video Dubbing itself, Live STT Dictation, an onboarding/setup
wizard, a global command palette + cross-app recent history, and a
curated voice-design preset gallery. Telephony integrations were in the
same gap list but not picked -- left alone.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
mARTin-B78 2026-09-29 14:40:15 +02:00
parent df4bfc934a
commit b7202e030d

57
TODO.md
View File

@ -193,6 +193,63 @@ rules beat what was built up by hand, and to feed every difference back into the
to compare against; worth revisiting only as an alternate TTS backend for a second opinion on narration to compare against; worth revisiting only as an alternate TTS backend for a second opinion on narration
quality, or its MCP server for a quick engine A/B). No integration started. quality, or its MCP server for a quick engine A/B). No integration started.
### UI/UX and feature ideas from the VoiceStudio comparison — set 2026-09-29
From the deep-dive UI/UX comparison (`architecture/voicestudio-comparison.md`, "UI/UX and
feature-parity deep dive"). User picked these to build; telephony integrations (Twilio/
Plivo/Telnyx) were in the same gap list but deliberately not picked -- leave that one alone.
- [ ] **Projects menu: group Audiobooks, Magazines, Script Rehearsals and Video Dubbing
under one "Projects" nav section.** Currently `Reader` (audiobook), `Magazine` and
`Rehearser` are three separate top-level `nav-tree-head` sections in the sidebar
(`static/index.html`/served nav — see `data-nav-section="s-reader"` /
`"s-magazine"` / `"s-rehearser"`). Add a new "Projects" parent with these three as
submenu items, plus a fourth submenu item for the new Video Dubbing feature below (a
placeholder entry is fine until that feature exists, but say so in its UI rather than
linking to nothing silently). Update `Manual.md`'s navigation description and any
Playwright specs that assert the current nav structure.
- [ ] **Video Dubbing feature.** New capability, not currently in this app at all: upload a
video/audio file or paste a URL, transcribe it, translate to a target language (offer a
local/offline model, not only an LLM call -- see VoiceStudio's NLLB-200 option), then
re-synthesize speech timed to the original and mux it back into the video. This is a
multi-day feature (needs its own data model, a job pipeline, and a review UI, likely
similar in shape to the magazine pipeline's box/undo conventions) -- plan it properly
(goals, data model, API contract, error/offline behaviour) before implementing, per the
planning workflow, rather than bolting it onto an existing route file.
- [ ] **Live STT Dictation.** A global hotkey that starts listening, transcribes speech, and
inserts the resulting text into whatever field/app currently has focus -- distinct from
the existing "global hotkey daemon" in Connect Apps, which triggers TTS *playback*, not
speech-to-text insertion; do not conflate the two or reuse its name for this. Needs a
small native/OS-level component (focus capture, text insertion) similar in spirit to
VoiceStudio's Rust control sidecar -- decide the platform(s) to support first (this
household's own machines) rather than building a generic cross-platform solution
speculatively.
- [ ] **Onboarding / setup wizard.** Either (a) detect the local stack already configured
(Qwen3-TTS, vision OCR, the LLM router -- these already have URLs in Settings) and walk a
new install through pointing at them with a live check per engine, or (b) a single
one-click installer/setup flow that provisions everything needed, mirroring VoiceStudio's
tiered model packs (Fast/Balanced/Quality/Max, disk size shown before committing). Decide
which of (a)/(b) fits this app's actual deployment story (self-hosted, one household, engines
usually already running on the DGX) before building -- (a) is likely the better fit and
the smaller change; (b) only makes sense if this app starts bundling/installing its own
models rather than calling existing engine URLs.
- [ ] **Global command palette + cross-app "recent" history.** A `Ctrl`/`Cmd`+`K` palette to
jump to any section/action, and a unified "recent generations" view spanning Voice Clone/
Design/Conversation/Magazine/Reader, not just each feature's own history (the magazine's
20-step undo stack stays separate -- this is about *finding* a past generation across
features, not undoing one). Survey existing per-feature history/list endpoints first
(`/api/*/history`-shaped routes already exist for several features) so the palette reuses
them rather than duplicating state.
- [ ] **Curated voice-design preset gallery, integrated into the existing preset system.**
`s-design.html` already has save/load/delete for named presets (`design-preset-*`,
`routes` behind `design-preset-save`/`-load`/`-delete`) -- add a small built-in gallery of
named example personas (in VoiceStudio's style: "The Librarian", "The Anchor", …), each
with a one-line pitch and a pre-rendered demo clip, "Use this design →" filling the
description box from it. Ship a handful covering common needs (audiobook narrator, news
anchor, casual conversational, storyteller) rather than trying to match VoiceStudio's
exact catalog. Generate and store the demo clips once (not on every page load) and keep
them small (the existing 24 kHz mono WAV convention).
### P0 — do first ### P0 — do first
- [x] **S — Stop provider API keys from reaching frontend JavaScript or logs.** Provider keys are masked in settings - [x] **S — Stop provider API keys from reaching frontend JavaScript or logs.** Provider keys are masked in settings