✅ Decided — locked, do not re-litigate
- UI: the "Review Cast" panel — the machine proposes, you confirm once and every mention re-links across the transcript; aliases drive find-and-replace; status colors green = confirmed, amber = needs review, red = conflict — never purple.
- Reuse, don't reinvent: Director's Palette already ships
extractEntities (with alias-merging — "a.k.a."/nicknames collapse into one character + aliases[]), the name/tag/alias model (StoryboardCharacter: name + metadata.aliases[] + reference_tag), and the alias-aware name-replacement.service — all stateless, portable. Mirror them into the desktop, don't rebuild.
Part of the design spec (Pillar 5). Make "Lands" in the audio reliably become "Lands Davis" → @ldavis → the right reference images, with a great review UX.
Feature goals
- Character model gains
reference_tag (@ldavis) + aliases[] ("Lands", "L-Dav") alongside name, mirroring DP's StoryboardCharacter. (Today desktop Character has only name, and @lands doesn't even match "Lands Davis" — a real bug.)
- Entity extraction on transcript load — reuse DP's
extractEntities (already merges aliases + writes visual descriptions).
- Review Cast panel (chosen UI): side panel beside the transcript; each detected character = name + mention count + confidence + context snippets. One gesture: link to existing (autocomplete by name/
@tag/alias) or create new; confirm once → all mentions re-link; Same / Different / Not sure for look-alikes; aliases = find-and-replace that persists back to the character (next song auto-resolves more). Inline click-a-mention to fix one instance. Status colors green/amber/red (no purple).
- Resolution into generation: a confirmed
@tag auto-attaches the character's references (alias-aware, reuse DP's name-replacement.service).
Quality goals
- Small/obvious cast = a fast keyboard flick, no per-mention babysitting.
- One confirmation makes "Lands" →
@ldavis → right references everywhere; find-and-replace shows a re-link count with undo; user never forced into a wrong commit (Not-sure defers).
- New aliases learned here persist, so each subsequent transcript auto-resolves more (compounding).
Acceptance
Load a song transcript → "We found 3 characters" → confirm + link @ldavis once → all mentions re-link, references attach, that section generates with the right character automatically.
Dependencies / reuse / files
Depends on Pillar 4 (transcript, #12). DP: extractEntities, StoryboardCharacter, name-replacement.service. Desktop: backend/state/library_store.py (+reference_tag,aliases), backend/server_utils/prompt_language.py (alias-aware), frontend/views/Characters.tsx, frontend/hooks/useMentionOptions.ts, new Review Cast panel component.
✅ Decided — locked, do not re-litigate
extractEntities(with alias-merging — "a.k.a."/nicknames collapse into one character +aliases[]), the name/tag/alias model (StoryboardCharacter:name+metadata.aliases[]+reference_tag), and the alias-awarename-replacement.service— all stateless, portable. Mirror them into the desktop, don't rebuild.Part of the design spec (Pillar 5). Make "Lands" in the audio reliably become "Lands Davis" →
@ldavis→ the right reference images, with a great review UX.Feature goals
reference_tag(@ldavis) +aliases[]("Lands", "L-Dav") alongsidename, mirroring DP'sStoryboardCharacter. (Today desktopCharacterhas onlyname, and@landsdoesn't even match "Lands Davis" — a real bug.)extractEntities(already merges aliases + writes visual descriptions).@tag/alias) or create new; confirm once → all mentions re-link; Same / Different / Not sure for look-alikes; aliases = find-and-replace that persists back to the character (next song auto-resolves more). Inline click-a-mention to fix one instance. Status colors green/amber/red (no purple).@tagauto-attaches the character's references (alias-aware, reuse DP'sname-replacement.service).Quality goals
@ldavis→ right references everywhere; find-and-replace shows a re-link count with undo; user never forced into a wrong commit (Not-sure defers).Acceptance
Load a song transcript → "We found 3 characters" → confirm + link
@ldavisonce → all mentions re-link, references attach, that section generates with the right character automatically.Dependencies / reuse / files
Depends on Pillar 4 (transcript, #12). DP:
extractEntities,StoryboardCharacter,name-replacement.service. Desktop:backend/state/library_store.py(+reference_tag,aliases),backend/server_utils/prompt_language.py(alias-aware),frontend/views/Characters.tsx,frontend/hooks/useMentionOptions.ts, new Review Cast panel component.