diff --git a/CHANGELOG.md b/CHANGELOG.md
index a78d9d8..791f873 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,8 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi
## [Unreleased]
### Changed
+- **Audiobook segmentation extraction.** Quote segmentation, conservative turn-taking, and dialogue-piece validation
+ now live in `audiobook-segmentation.js`; the live casting pipeline remains compatible with the same global helpers.
- **Rehearser voice-design extraction.** Character development, backend selection, and backend-refresh synchronization
now live in `rehearser-voice-design.js` while preserving the existing cast controls and global API.
- **Voice Design stylesheet split.** Voice-design form, sample-grid, and preview-match rules now live in
diff --git a/TODO.md b/TODO.md
index 73d2ce2..253d207 100644
--- a/TODO.md
+++ b/TODO.md
@@ -97,15 +97,15 @@ architecture change: the larger Audiobook/Rehearser/style split.
### P2 — after behavior and safety stabilize
-- [ ] **M — Add structured logs with request/job IDs.** Report provider, endpoint,
+- [x] **M — Add structured logs with request/job IDs.** Report provider, endpoint,
duration and failure reason without logging prompts, keys or book contents.
- [ ] **M — Separate provider health from configuration status.** Show actionable
connectivity and authentication errors.
-- [ ] **M — Add visible job history and retry controls.** Expose recent failures and
+- [x] **M — Add visible job history and retry controls.** Expose recent failures and
safe retry state to users.
-- [ ] **L — Add memory diagnostics.** Show browser heap where supported, rendered rows,
+- [x] **L — Add memory diagnostics.** Show browser heap where supported, rendered rows,
cache size, active jobs, server/container memory and recent operation sizes.
-- [ ] **L — Add linting and duplicate-function checks.** Run them in CI alongside the
+- [x] **L — Add linting and duplicate-function checks.** Run them in CI alongside the
existing compile, bundle and SonarQube checks.
## P0 — Testing, data safety, and resource limits
@@ -133,6 +133,7 @@ architecture change: the larger Audiobook/Rehearser/style split.
- [x] Extract Rehearser cast view, sorting, filtering, and toolbar wiring into `rehearser-cast.js`.
- [x] Extract Rehearser training transcript comparison helpers into `rehearser-train.js`.
- [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 primitives and speaker-heuristic constants into `audiobook-parse.js`.
diff --git a/VERSION b/VERSION
index fb56e1f..c2ea603 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.24.37
+1.24.38
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
index 97273d7..994df25 100644
--- a/docs/ARCHITECTURE.md
+++ b/docs/ARCHITECTURE.md
@@ -35,6 +35,7 @@ Done incrementally as global-scope ordered files (no ES-module change needed)
- ✅ `rehearser-voice-picker.js` — voice preview state and matched-choice presentation; import and assignment actions remain in `rehearser.js`.
- ✅ `rehearser-cast.js` — cast view, sort/filter state handlers, and cast toolbar wiring; card rendering remains in `rehearser.js`.
- ✅ `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 and legacy page-stamping migration helpers; live casting remains in `audiobook.js`.
- ✅ `static/css/resource-diagnostics.css` — isolated Performance/resource diagnostic panel styles.
diff --git a/static/index.html b/static/index.html
index ee6ceec..7aaac00 100644
--- a/static/index.html
+++ b/static/index.html
@@ -10,7 +10,7 @@
-
+
@@ -27,10 +27,10 @@
-
-
-
-
+
+
+
+
@@ -395,7 +395,7 @@ window.toggleNavTree = function(treeId, chevronId) {
-
+