tts-voice-creator-clone-and.../static
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
..
css fix(mobile): retry failed script loads; fix 8 phone-width layout bugs 2026-09-13 17:09:24 +02:00
dist perf(ui): lazy-render big sections to stay within the DOM node budget 2026-10-02 23:13:19 +02:00
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
samples chore: release 1.21.0 - Consistent ComfyUI Character Renders and Audiobook Export 2026-08-23 09:12:57 +02:00
sections feat(magazine): night theme for driving mode (Auto/Light/Dark) 2026-10-03 09:15:28 +02:00
vendor Add skeleton loading, self-host assets, fix LLM empty response 2026-05-29 17:28:42 +02:00
icon.svg Release v1.6.0: a11y (WCAG AA), i18n (DE), PWA, perf, tests, Cast UX 2026-06-03 14:23:35 +02:00
index.html chore(release): v1.57.0 2026-10-03 10:13:53 +02:00
loader.js perf(ui): lazy-render big sections to stay within the DOM node budget 2026-10-02 23:13:19 +02:00
manifest.webmanifest Release v1.6.0: a11y (WCAG AA), i18n (DE), PWA, perf, tests, Cast UX 2026-06-03 14:23:35 +02:00
module-manifest.json 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
nav.js perf(ui): lazy-render big sections to stay within the DOM node budget 2026-10-02 23:13:19 +02:00
style.css feat(magazine): night theme for driving mode (Auto/Light/Dark) 2026-10-03 09:15:28 +02:00
sw.js Add unified Studio casting workflow and fix voice/casting pipeline bugs 2026-07-26 02:03:56 +02:00