diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7449c49..f32efc5 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
+- **Rehearser voice-picker extraction.** Voice preview state and matched voice-choice presentation now live in
+ `rehearser-voice-picker.js`; matching, import, and assignment actions remain compatible with the existing cast API.
- **Rehearser stage extraction.** Stage font scaling, cast-sidebar collapse state, cast filtering/sorting, and cast-strip
rendering now live in `rehearser-stage.js`, reducing the main Rehearser module while preserving its legacy globals.
- **Release cache-busting.** Bumped the app version and HTML stylesheet/loader URLs to `1.24.25` so the extracted module
diff --git a/TODO.md b/TODO.md
index cf967fd..5b1a171 100644
--- a/TODO.md
+++ b/TODO.md
@@ -124,6 +124,7 @@ architecture change: the larger Audiobook/Rehearser/style split.
- [x] Add a dependency-free frontend syntax and top-level declaration collision gate (`npm run check:frontend`);
a full style/lint policy remains a follow-up.
- [ ] Extract Rehearser voice matching and voice design.
+- [x] Extract Rehearser voice-picker presentation and preview state into `rehearser-voice-picker.js`.
- [x] Extract Rehearser library persistence and IndexedDB migration into `rehearser-library.js`.
- [ ] Extract Audiobook parsing and casting.
- [ ] Split `style.css` by feature.
diff --git a/VERSION b/VERSION
index 80dd64f..e1b911a 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.24.25
+1.24.26
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
index 2f6e22b..28f0900 100644
--- a/docs/ARCHITECTURE.md
+++ b/docs/ARCHITECTURE.md
@@ -32,6 +32,7 @@ Done incrementally as global-scope ordered files (no ES-module change needed)
- ✅ `rehearser-parse.js` — `parseScript`, `detectCharacters` (pure; only call-time `SPEAKER_COLORS`).
- ⬜ `rehearser-cast.js` — `renderCastList`, sort/filter, online voice picker, character research.
- ✅ `rehearser-stage.js` — stage font/cast sidebar controls and cast-strip rendering; playback and transport remain in `rehearser.js`.
+- ✅ `rehearser-voice-picker.js` — voice preview state and matched-choice presentation; import and assignment actions remain in `rehearser.js`.
- ⬜ `rehearser-train.js` — mic record / STT compare.
- ✅ `rehearser-library.js` — SQLite persistence helpers and IndexedDB migration; import/export and auto-save remain
in `rehearser.js` until their UI/event-handler dependencies are isolated.
diff --git a/static/index.html b/static/index.html
index 09fedb4..1658b43 100644
--- a/static/index.html
+++ b/static/index.html
@@ -10,7 +10,7 @@
-
+
@@ -27,7 +27,7 @@
-
+
@@ -392,7 +392,7 @@ window.toggleNavTree = function(treeId, chevronId) {
-
+