diff --git a/CHANGELOG.md b/CHANGELOG.md
index e7f06e6..46111bc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,13 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi
---
+## [1.12.99] — 2026-07-05
+
+### Fixed
+- **"Design all" (Script Rehearser bulk voice design) silently did nothing** — confirmed via server logs: `/api/analyze-characters` succeeded every time, but `/api/voice-design` was never once called. Root cause: `rehState.cast[sp].voice` was accessed unguarded right after the (multi-second, for a large cast) analyze-characters request resolved; any cast-entry change during that window threw a TypeError with nothing to catch it, silently killing the whole run with no toast and no further requests. Guarded the access and wrapped the rest of the flow in a try/catch/finally so any future failure surfaces as a toast and always re-enables the button instead of leaving it stuck with no feedback.
+
+---
+
## [1.12.98] — 2026-07-05
### Added
diff --git a/VERSION b/VERSION
index f12b77f..d8e4738 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.12.98
+1.12.99
diff --git a/static/index.html b/static/index.html
index 194a12f..3e21e7a 100644
--- a/static/index.html
+++ b/static/index.html
@@ -10,7 +10,7 @@
-
+
@@ -27,7 +27,7 @@
-
+
@@ -365,7 +365,7 @@ window.toggleNavTree = function(treeId, chevronId) {
-
+