diff --git a/CHANGELOG.md b/CHANGELOG.md index 7300d59..637258a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi ## [Unreleased] +### Changed +- **P1 Roadmap status.** Documented the completed namespace/manifest foundations and durable background artifacts, + while keeping true lazy feature loading, responsibility-level frontend extraction, provider-health consolidation, + full workload measurements, and browser image-cache eviction explicitly open. + ### Added - **Bounded Rehearser Audio Cache.** Decoded/synthesized line audio now uses a 128-entry LRU cache so long scripts cannot grow browser memory without limit. diff --git a/TODO.md b/TODO.md index d997ac2..9d424b2 100644 --- a/TODO.md +++ b/TODO.md @@ -15,6 +15,17 @@ hours, **M** = 1–2 days, **L** = several days, **XL** = multi-week or iterativ Within each priority, tasks are ordered from smallest to largest effort. Complete the first block before investing in architecture or polish. +## Current status — 2026-09-04 + +All P0 safety, security, data-integrity, and release-protection work is complete. +P1 implementation is active: pagination, shared voice caching, bounded decoded-audio +caching, background jobs, canonical character identity, forms, and the frontend +namespace/manifest foundations are working and regression-tested. Remaining P1 work +is intentionally open where it needs a real architecture change or workload +measurement: true feature-module lazy loading, the larger Audiobook/Rehearser/style +split, centralized provider-health handling, full constrained-device workloads, and +browser image/profile-cache eviction. + ### P0 — do first - [x] **S — Stop provider API keys from reaching frontend JavaScript or logs.** Provider keys are masked in settings @@ -67,7 +78,7 @@ the first block before investing in architecture or polish. - [x] **L — Add background jobs and bounded queues.** Image generation already has the full interactive job path, and transcription, voice design, and casting now have optional ID/status/cancel/timeout paths while preserving synchronous callers. Job metadata now persists in SQLite and marks interrupted work after restart; durable binary - result storage remains; outbound TTS and LLM calls now share a bounded transient-failure retry policy, and `/api/jobs` + result storage is bounded and authenticated; outbound TTS and LLM calls now share a bounded transient-failure retry policy, and `/api/jobs` exposes sanitized recent job history. Completed voice-design audio and consistent-image outputs now use bounded, atomic artifact files with authenticated download URLs; transcription text remains deliberately non-persistent. Failed live transcription, voice-design, and casting jobs now offer bounded in-memory retries; after restart they @@ -78,8 +89,9 @@ the first block before investing in architecture or polish. - [x] **L — Add character forms inside one character record.** `sheet.forms[]` stores bounded alternate appearances, prompts, and per-form visual assets; the detail-page switcher preserves one character ID and voice, and selected forms feed prompt generation and identity fingerprints. -- [ ] **L — Modularize the frontend.** Split Audiobook, Rehearser and styles, replace - broad globals with namespaces, and consolidate the loader/module manifest. +- [ ] **L — Modularize the frontend.** The shared manifest and compatibility namespace + bridge are complete foundations; responsibility-level extraction, true feature-module + lazy loading, and the Audiobook/Rehearser/style split remain. ### P2 — after behavior and safety stabilize diff --git a/VERSION b/VERSION index 16cb6f2..afd2e72 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.24.14 +1.24.15