refactor: extract audiobook cast view

This commit is contained in:
mARTin-B78 2026-09-04 11:53:04 +02:00
parent 262e37fffd
commit 6f2c0b7b3d
7 changed files with 3288 additions and 3128 deletions

View File

@ -8,6 +8,8 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi
## [Unreleased]
### Changed
- **Audiobook live cast-view extraction.** The live cast feed, roster, settings, and prompt controls now live in
`audiobook-cast.js`; the legacy `audiobookCastView` entry point remains available for compatibility.
- **Rehearser voice-matching extraction.** Local voice matching, preview-line selection, fish.audio search/import,
and candidate assignment now live in `rehearser-voice-picker.js`; DOM event registration remains timing-safe.
- **Audiobook/Reader stylesheet extraction.** Reader controls, Audiobook casting, page layout, character overlays,

View File

@ -137,7 +137,8 @@ architecture change: the larger Audiobook/Rehearser/style split.
- [x] Extract Rehearser character development and backend-selection controls into `rehearser-voice-design.js`.
- [x] Extract Audiobook quote segmentation and conservative turn-taking into `audiobook-segmentation.js`.
- [x] Extract Rehearser library persistence and IndexedDB migration into `rehearser-library.js`.
- [ ] Extract Audiobook parsing and casting.
- [x] Extract Audiobook parsing and casting; parsing, segmentation, cast normalization/serialization, and the live cast
view now live in focused modules, while LLM orchestration and transport remain in `audiobook.js`.
- [x] Extract Audiobook parsing primitives and speaker-heuristic constants into `audiobook-parse.js`.
- [x] Extract Audiobook cast serialization and page-stamping helpers into `audiobook-cast.js`.
- [x] Split the Performance/resource diagnostic styles into `static/css/resource-diagnostics.css`.

View File

@ -1 +1 @@
1.24.47
1.24.48

View File

@ -38,7 +38,7 @@ Done incrementally as global-scope ordered files (no ES-module change needed)
- ✅ `rehearser-voice-design.js` — character development, backend selection, and backend-refresh synchronization.
- ✅ `audiobook-segmentation.js` — quote segmentation, conservative turn-taking, and dialogue-piece validation.
- ✅ `audiobook-parse.js` — dialogue detection, dehyphenation, and speaker-heuristic constants; the casting pipeline remains in `audiobook.js`.
- ✅ `audiobook-cast.js` — cast Markdown export, legacy page-stamping migration, and deterministic speaker/sentence/duplicate/alias normalization helpers; live casting remains in `audiobook.js`.
- ✅ `audiobook-cast.js` — cast Markdown export, legacy page-stamping migration, deterministic speaker/sentence/duplicate/alias normalization helpers, and the live cast-view renderer.
- ✅ `static/css/resource-diagnostics.css` — isolated Performance/resource diagnostic panel styles.
- ✅ `static/css/background-jobs.css` — isolated background-job history and retry-panel styles.
- ✅ `static/css/voice-design.css` — isolated Voice Design form, samples, and preview-match styles.

View File

@ -10,7 +10,7 @@
<meta name="format-detection" content="telephone=no">
<meta name="color-scheme" content="light dark">
<meta name="theme-color" content="#2563EB">
<meta name="app-version" content="1.24.47">
<meta name="app-version" content="1.24.48">
<link rel="manifest" href="/manifest.webmanifest">
<link rel="icon" href="/static/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/static/icon.svg">
@ -27,12 +27,12 @@
<!-- ── Core styles (local — no CDN dependency for first paint) ────────── -->
<link rel="stylesheet" href="/static/vendor/mdi/materialdesignicons.min.css">
<link rel="stylesheet" href="/static/style.css?v=1.24.47">
<link rel="stylesheet" href="/static/css/resource-diagnostics.css?v=1.24.47">
<link rel="stylesheet" href="/static/css/background-jobs.css?v=1.24.47">
<link rel="stylesheet" href="/static/css/voice-design.css?v=1.24.47">
<link rel="stylesheet" href="/static/css/rehearser.css?v=1.24.47">
<link rel="stylesheet" href="/static/css/audiobook.css?v=1.24.47">
<link rel="stylesheet" href="/static/style.css?v=1.24.48">
<link rel="stylesheet" href="/static/css/resource-diagnostics.css?v=1.24.48">
<link rel="stylesheet" href="/static/css/background-jobs.css?v=1.24.48">
<link rel="stylesheet" href="/static/css/voice-design.css?v=1.24.48">
<link rel="stylesheet" href="/static/css/rehearser.css?v=1.24.48">
<link rel="stylesheet" href="/static/css/audiobook.css?v=1.24.48">
<!-- ── Flag icons — non-blocking (loaded async, icons appear after JS) ── -->
@ -397,7 +397,7 @@ window.toggleNavTree = function(treeId, chevronId) {
</script>
<!-- loader.js: fetches sections → loads JS modules → removes skeleton -->
<script src="/static/loader.js?v=1.24.47"></script>
<script src="/static/loader.js?v=1.24.48"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long