Clearing the name put "Player" straight back before a real one could be
typed. Three things combined to cause it:
- setPlayerName coerced a blank value to "Player" on write, so deleting
the last character immediately persisted the default.
- The settings flow then emitted that default, and the text field's
remember was keyed on the stored name, so it re-seeded itself from the
value that had just been written.
- The default also lived in the stored value, so a fresh install had
"Player" pre-filled and had to be cleared to begin with.
The stored name is now whatever the user typed, blank included. The
default moved to Settings.displayName, which is what the lobby and seat
labels use, so it applies where a name is shown rather than to what is
being edited. The field keeps its own edit state once touched, and shows
"Player" as placeholder text with a note explaining the fallback.
Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_015qjfMiPUDshdKEUa6vxqzN