[Frontend] Let a GM pin which character a player was running for a past session #422
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up to #330, folded into the UX overhaul rather than bolted onto the existing campaign page.
What exists already
#330 shipped the whole backend for per-session character overrides:
session_character_overrides(PK(session_id, user_id),character_idFK CASCADE)PUT /api/sessions/{session_id}/character-overrides/{user_id}— GM only, body{"character_id": uuid | null}, null clears the overridecampaign_character_service.set_session_override/session_overridesresolve_speakers(..., session_id=...)applies the override, so attribution uses the pinned characterAll of it is tested. Nothing in the frontend calls it, so today an override can only be set through the API.
Why it matters
Without an override, correcting a member's character to reflect a mid-campaign swap rewrites the past. Reprocessing an old recording — which #421 and #397 both make possible — relabels session 5 with the character that player runs now. The GM's only recourse is to leave the stale character in place, which breaks every session after the swap instead.
Why it belongs in the UX overhaul
It is a small control with no obvious home. It is session-scoped and GM-only, so it does not belong on the campaign member list where the rest of the character UI lives; it needs to sit wherever the redesign puts per-session GM administration, next to transcript approval and reprocessing. Adding it to the current page would mean building it twice.
Acceptance criteria