A character's name change: a "Former name" with its own audience, never shown by default, still heard in transcripts #1377

Open
opened 2026-11-10 01:03:34 +00:00 by claude-bot · 2 comments
Collaborator

Owner, 2026-11-10 (with the gender-diverse design on #1376). Renaming a page today keeps the old name as an alias: it's searchable, offered and used for transcription matching. That's right for "the Grey Hand is really the Thieves' Guild", but wrong for a character who changed their name. The old name still matters to the story (a villain deliberately deadnames someone; news of a transition hasn't reached a character yet), so it must be kept under control rather than deleted.

Design

  • At a rename, the GM chooses: "Another name for the same thing" (an alias, as now), or "A name change".
  • A name change makes the old name a "Former name" fact with its own audience. GM-only by default; it can be widened to the table or to specific characters (the existing per-character audiences, :::for), so who knows is recorded on the page.
  • The page always leads with the current name. The former name is never in search suggestions, autolinks or name offers for anyone outside its audience. Text that mentions it (a villain's line) is never rewritten.
  • Transcription still recognises the former name when spoken, so the transcript keeps what was said and links it to the right character. Summaries and recaps use the current name, except in direct quotes.
  • Real people are different: a player changing their own profile name simply replaces it; no former name is kept for a person.

Touches:

  • the lore aliases (f6a7b8c9d0e1) and the rename flow;
  • search and autolink audiences;
  • campaign_characters.heard_as and the transcription vocabulary;
  • the summary prompts.
**Owner, 2026-11-10** (with the gender-diverse design on #1376). Renaming a page today keeps the old name as an alias: it's searchable, offered and used for transcription matching. That's right for "the Grey Hand is really the Thieves' Guild", but wrong for a character who changed their name. The old name still matters to the story (a villain deliberately deadnames someone; news of a transition hasn't reached a character yet), so it must be kept under control rather than deleted. **Design** - **At a rename, the GM chooses:** "Another name for the same thing" (an alias, as now), or "A name change". - **A name change makes the old name a "Former name" fact with its own audience.** GM-only by default; it can be widened to the table or to specific characters (the existing per-character audiences, `:::for`), so who knows is recorded on the page. - **The page always leads with the current name.** The former name is never in search suggestions, autolinks or name offers for anyone outside its audience. Text that mentions it (a villain's line) is never rewritten. - **Transcription still recognises the former name when spoken,** so the transcript keeps what was said and links it to the right character. Summaries and recaps use the current name, except in direct quotes. - **Real people are different:** a player changing their own profile name simply replaces it; no former name is kept for a person. **Touches:** - the lore aliases (`f6a7b8c9d0e1`) and the rename flow; - search and autolink audiences; - `campaign_characters.heard_as` and the transcription vocabulary; - the summary prompts.
Author
Collaborator

Owner, 2026-11-10: fictional characters can keep a former name like this; real people's names must never be saved.

Checked in the code:

  • The profile itself is clean. PATCH /api/me → user_service.update_user overwrites display_name_override with no audit row or history. Users already carry optional pronouns.

  • Past sessions keep a person's name as it was when transcribed, in three places:

    • summarisation_runs.speaker_legend (display_name per speaker, reminder_tasks.py around line 8114);
    • transcript_segments.speaker_label;
    • the speaker labels in sessions.transcript's text.

    So after a name change, every earlier session would still show the old name.

Add to this issue (real people):

  • Speakers are their accounts, not their names. Store the user id with each speaker and render the person's current name when a session is read: transcript, summary, beats, legend and exports.
  • Existing records: when someone changes their name, rewrite the speaker labels already stored (segments, transcript text, run legends) to the current name, so no copy of the old one remains. Bot speakers' Discord display names in speakers.json are only in the temporary audio directory, which is deleted after transcription.
  • Exports carry the current name only.
  • Said plainly where the name is changed: messages the bot already posted to Discord and emails already sent can't be recalled.

Characters are unchanged: a character's former name is story information, kept under its own audience as designed above.

**Owner, 2026-11-10: fictional characters can keep a former name like this; real people's names must never be saved.** **Checked in the code:** - **The profile itself is clean.** `PATCH /api/me` → `user_service.update_user` overwrites `display_name_override` with no audit row or history. Users already carry optional `pronouns`. - **Past sessions keep a person's name as it was when transcribed,** in three places: - `summarisation_runs.speaker_legend` (`display_name` per speaker, `reminder_tasks.py` around line 8114); - `transcript_segments.speaker_label`; - the speaker labels in `sessions.transcript`'s text. So after a name change, every earlier session would still show the old name. **Add to this issue (real people):** - **Speakers are their accounts, not their names.** Store the user id with each speaker and render the person's current name when a session is read: transcript, summary, beats, legend and exports. - **Existing records:** when someone changes their name, rewrite the speaker labels already stored (segments, transcript text, run legends) to the current name, so no copy of the old one remains. Bot speakers' Discord display names in `speakers.json` are only in the temporary audio directory, which is deleted after transcription. - **Exports** carry the current name only. - **Said plainly where the name is changed:** messages the bot already posted to Discord and emails already sent can't be recalled. **Characters are unchanged:** a character's former name is story information, kept under its own audience as designed above.
Author
Collaborator

Correction to the comment above: the per-session audio folder is not deleted right after transcription. Per the project notes, it's kept until a GM approves the session, so it can be reprocessed. Its speakers.json (the speakers' Discord display names, written by the bot) therefore lives as long as that folder. On a name change, either rewrite that file too, or have reprocessing read speaker names from the accounts rather than from the file.

**Correction to the comment above:** the per-session audio folder is not deleted right after transcription. Per the project notes, it's kept until a GM approves the session, so it can be reprocessed. Its `speakers.json` (the speakers' Discord display names, written by the bot) therefore lives as long as that folder. On a name change, either rewrite that file too, or have reprocessing read speaker names from the accounts rather than from the file.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/Quest-Board#1377
No description provided.