Summary
Allow the GM to rename an adversary slot during a live encounter. Names must be unique across all slots in the session.
Requirements
- Editing is accessible from the expanded
AdversaryRunnerCard — e.g. tapping the name in the card header makes it inline-editable
- On commit, validate that the new name is not already used by another slot in the session; show an inline error if it is
- Empty names are not allowed; if the field is cleared, revert to the previous value
- The renamed slot's display updates immediately in both the collapsed row and the expanded card
- Mutation routes through
EncounterSession (a new method, e.g. renameAdversary(id:name:)) — the view does not write to AdversaryState directly
Depends on
Summary
Allow the GM to rename an adversary slot during a live encounter. Names must be unique across all slots in the session.
Requirements
AdversaryRunnerCard— e.g. tapping the name in the card header makes it inline-editableEncounterSession(a new method, e.g.renameAdversary(id:name:)) — the view does not write toAdversaryStatedirectlyDepends on
customNamefield as the source of truth for display)renameAdversary(id:name:)method onEncounterSession(can be added in the same PR as Code review cleanup: isHomebrew, index-based ForEach, plist fix #17 or separately)