tts-voice-creator-clone-and.../static/js
mARTin-B78 1f812d2faf fix(characters): merge profiles only on real names, keep other cast names, reasoning and foreign quotes out of a character
Real-library audit (270 records) traced the data damage to:
- identity matching on ANY shared token ("Zwerg", "der Zwerg", "Mann") with
  "longer text wins" merging (Arthag b02 = Kolon's species/relationships), and
- csRosterCanonicalName renaming a sheet to the first cast name among its
  aliases, which saved 16 whole-sheet copies (Zwerg/Kolon = Arthag b03,
  Fremder = Mann, Alchimist = Promos ...).

Fixes:
- static/js/character-identity.js + core/character_records.py: generic labels
  are never identity evidence; csFindMergeKey, csConsolidateAliasDuplicates,
  csRosterCanonicalName, clSameIdentity use it; own name always wins; clUpsert
  writes to the exact-name record before any alias scan; no seed rename onto a
  name that has its own record.
- _charsheets_parse: in cast-target mode drop other cast members' names from
  aliases / first / last name (Kolon: "Sharraz Garthai"), strip reasoning
  leakage ("Warte:", "Der Text sagt ...") from every text field.
- _character_scene_evidence: only a quote naming the character is used,
  otherwise its own mannerisms (16 panels showed another character's scene).
- _character_age_category: Junge/Mädchen/boy/girl, number words, Sommer/
  Winter ages, evidence clause, age-tagged quotes; "15 Jahre älter" is no age.
- scripts/audit_character_records.py (read-only) and
  scripts/clean_character_records.py (dry run by default, --apply backs up).

Tests: tests/test_character_record_hygiene.py, tests/character-identity.test.mjs.
Docs: architecture/character-extraction.md, Manual, CHANGELOG.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 14:09:53 +02:00
..
audiobook refactor: scope audiobook network 2026-09-04 12:41:35 +02:00
pdf Release v1.8.1 2026-06-25 18:48:42 +02:00
tesseract Merge Reader/Casting/Rehearser pipeline into one guided workflow (v1.12.84) 2026-07-03 17:45:38 +02:00
ai-backends.js feat(engines): searchable dropdown for the Active LLM and OCR model pickers 2026-09-20 16:19:26 +02:00
audiobook-cast-spans.js fix(audiobook): warm the model before span cast/verify; keep tests off the real LLM 2026-09-19 21:08:01 +02:00
audiobook-cast.js fix(audiobook): route the Verify menu action to the advisory second pass 2026-09-19 20:55:39 +02:00
audiobook-parse.js refactor: scope audiobook core 2026-09-04 12:37:37 +02:00
audiobook-pipeline.js fix(audiobook): route the Verify menu action to the advisory second pass 2026-09-19 20:55:39 +02:00
audiobook-preview-export.js refactor: scope audiobook state modules 2026-09-04 12:26:21 +02:00
audiobook-segmentation.js refactor: scope pure frontend leaves 2026-09-04 12:20:33 +02:00
audiobook-spans.js feat(audiobook): span-mode casting - deterministic quote spans, LLM only names speakers 2026-09-19 08:30:26 +02:00
audiobook.js feat(audiobook): calibrate span-cast confidence on pass agreement 2026-09-19 20:41:25 +02:00
benchmark-voice-picker.js feat(engines): searchable dropdown for the Active LLM and OCR model pickers 2026-09-20 16:19:26 +02:00
benchmark.js perf: coalesce voice library fetches 2026-09-04 10:10:10 +02:00
character-columns.js refactor: scope character columns 2026-09-04 13:35:10 +02:00
character-identity.js fix(characters): merge profiles only on real names, keep other cast names, reasoning and foreign quotes out of a character 2026-10-03 14:09:53 +02:00
character-sheets.js fix(characters): merge profiles only on real names, keep other cast names, reasoning and foreign quotes out of a character 2026-10-03 14:09:53 +02:00
characters-library.js fix(characters): merge profiles only on real names, keep other cast names, reasoning and foreign quotes out of a character 2026-10-03 14:09:53 +02:00
conversation.js refactor: scope conversation state 2026-09-04 13:42:02 +02:00
dump_state.js chore: add local maintenance utilities 2026-09-09 07:53:13 +02:00
engines.js fix(engines): resolve LiteLLM card's own key server-side instead of a stale global one 2026-09-14 13:58:54 +02:00
fishaudio-browser.js Add unified Studio casting workflow and fix voice/casting pipeline bugs 2026-07-26 02:03:56 +02:00
generation.js refactor: scope generation module 2026-09-04 13:15:30 +02:00
i18n.js refactor: scope i18n state 2026-09-04 13:40:07 +02:00
image-cache.js perf: bound browser library image cache 2026-09-04 10:28:07 +02:00
init.js Release v1.26.13: Fix drag-and-drop file opening in tab & improve magazine dropzone reliability 2026-09-10 14:31:16 +02:00
integrations.js refactor: scope integrations module 2026-09-04 13:06:59 +02:00
jobs.js perf(ui): lazy-render big sections to stay within the DOM node budget 2026-10-02 23:13:19 +02:00
library-characters.js fix(characters): keep rating stars visible beside the sticky name column on phones 2026-10-02 22:31:13 +02:00
library.js fix: magazine state persistence, misfiled in book library, confidence badge layout, docker-socket-proxy crash loop 2026-09-07 09:39:20 +02:00
magazine.js feat(magazine): night theme for driving mode (Auto/Light/Dark) 2026-10-03 09:15:28 +02:00
namespace.js refactor: add frontend namespace migration bridge 2026-09-04 10:07:46 +02:00
reader.js fix: magazine state persistence, misfiled in book library, confidence badge layout, docker-socket-proxy crash loop 2026-09-07 09:39:20 +02:00
rehearser-cast.js refactor: scope rehearser cast 2026-09-04 12:44:58 +02:00
rehearser-io.js refactor: scope rehearser io 2026-09-04 12:30:13 +02:00
rehearser-library.js refactor: scope rehearser library 2026-09-04 12:40:56 +02:00
rehearser-parse.js refactor: scope pure frontend leaves 2026-09-04 12:20:33 +02:00
rehearser-playback.js refactor: scope rehearser playback 2026-09-04 12:29:19 +02:00
rehearser-recording.js refactor: scope rehearser core 2026-09-04 12:33:55 +02:00
rehearser-stage.js refactor: scope rehearser stage 2026-09-04 12:42:22 +02:00
rehearser-train.js refactor: scope pure frontend leaves 2026-09-04 12:20:33 +02:00
rehearser-training-ui.js refactor: scope training ui module 2026-09-04 12:23:03 +02:00
rehearser-voice-design.js refactor: scope rehearser voice design 2026-09-04 12:44:08 +02:00
rehearser-voice-picker.js refactor: scope rehearser voice picker 2026-09-04 12:43:11 +02:00
rehearser.js refactor: scope rehearser core 2026-09-04 12:33:55 +02:00
routing.js refactor: scope routing module 2026-09-04 13:00:10 +02:00
seed-finder.js refactor: scope seed finder 2026-09-04 13:36:55 +02:00
settings.js refactor: scope settings module 2026-09-04 12:51:29 +02:00
sillytavern.js refactor: scope cast compatibility modules 2026-09-04 13:38:40 +02:00
stt.js refactor: scope stt module 2026-09-04 13:13:10 +02:00
studio.js refactor: scope studio module 2026-09-04 12:47:30 +02:00
tts-preview.js refactor: scope tts preview 2026-09-04 12:53:44 +02:00
utils.js perf(ui): lazy-render big sections to stay within the DOM node budget 2026-10-02 23:13:19 +02:00
voice-cache.js perf: coalesce voice library fetches 2026-09-04 10:10:10 +02:00
voice-clone.js refactor: scope voice clone 2026-09-04 12:55:50 +02:00
voice-inspector.js refactor: scope voice inspector 2026-09-04 13:25:13 +02:00
voice-library.js fix: explain why designed-voice benchmarks fail and stop batches on an unreachable service 2026-09-29 16:03:23 +02:00
voice-picker.js Release v1.53.2 2026-09-24 07:44:16 +02:00
voice-sources.js refactor: scope voice sources 2026-09-04 12:57:53 +02:00