diff --git a/CHANGELOG.md b/CHANGELOG.md
index d871815..c61ec45 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.14.17] — 2026-07-09
+
+### Added
+- **Editable "Prompt" panel for Character sheets**, matching the one already on Casting audiobook — a button in the progress modal's header opens a textarea with the full extraction prompt (all ~25 fields + the sources/citation schema), with named-preset save/load/delete. Edits persist as the new default and take effect from the next passage onward (even mid-run), via a new `character_sheets_prompt` override accepted by `_charsheets_prepare()` server-side (shared by both the blocking and streaming endpoints, so it can't drift between them).
+
+---
+
## [1.14.16] — 2026-07-09
### Changed
diff --git a/VERSION b/VERSION
index 9631867..02fd050 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.14.16
+1.14.17
diff --git a/routes/conversation.py b/routes/conversation.py
index 30e0155..75b0dfb 100644
--- a/routes/conversation.py
+++ b/routes/conversation.py
@@ -617,7 +617,17 @@ def _charsheets_prepare(data: dict) -> dict:
"- You may add a brand-new character only when the passage clearly introduces one that is not in the target roster.\n"
"- NEVER copy the known-characters roster into one character's aliases, relationships, title, or description fields.\n\n"
) if target_mode and known else ""
- system = (
+
+ # A user-editable prompt (client-side "Prompt" panel, mirroring the
+ # audiobook casting one) replaces the extraction-instructions/schema body
+ # below wholesale — the language/target-mode prefixes above still apply
+ # regardless, since they depend on per-request state the user's saved
+ # prompt text can't know about.
+ prompt_override = data.get("character_sheets_prompt")
+ if isinstance(prompt_override, str) and prompt_override.strip():
+ system = f"{lang_instruction}{target_instruction}{prompt_override.strip()}"
+ else:
+ system = (
f"{lang_instruction}"
f"{target_instruction}"
"You are an expert dramaturge, developmental editor, and tabletop RPG game master building rich "
diff --git a/static/index.html b/static/index.html
index c22025e..29f9d33 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) {
-
+