Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WCDKexiF6SkDodmyKWmppK
… instead of swapping codes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WCDKexiF6SkDodmyKWmppK
…m code Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WCDKexiF6SkDodmyKWmppK
|
Review (cold read, The session state machine is sound. Traced: host renewal on
|
…eps the caret in place Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WCDKexiF6SkDodmyKWmppK
|
Answers to the review (fixes in the commit after
Follow-up review: not needed. The changes are two small, self-contained fixes to the field, each with its own test, plus a README sentence. |
Bead: nr-z4nw — Players start a network game with one short room code. Agreed experience: the bead's acceptance and
docs/ui/nr-z4nw-room-code.html.What changes
NSR1-…codes. The host's browser opens a room on the liaison meeting service (wss://liaison.rmstdope.eu/ws) and shows its six-character code (K7Q-M4X) with Copy invite message and Copy code; the joiner types it into one field (capitals, dash put in by itself, I/O/0/1 and symbols never taken) and presses Join.signal {offer}/signal {answer}; each side leaves liaison once the direct link opens. Everything after that (the response-time check, sending the game, lockstep, resync) is unchanged.web/src/netplay/room_code.ts,web/src/netplay/liaison.ts(the onlyWebSocketuser). Removed:web/src/netplay/code.ts. Reworked:session.ts,ui/play_together.ts, CSS, README, architecture.md.routeWebSocket, so CI never reaches the real service.Validation
./scripts/gate-full.sh: passed (1078 Vitest, 14796 Rust lib, wasm tests, clippy ×3, Python, typecheck).pnpm run test:integration:web: 136 passed, including the 9 Play together scenarios against the fake liaison.Y8J-H6Fwas created,ZZZ-ZZZgave "There's no game with that code.", typing the room code connected both ("Response time 0 ms · Great"), and Copy invite message put the agreed sentence on the clipboard.Deviations from the plan
None. Two details settled during the build were added to the plan's Decided by me: a red message stays under the field until Join is pressed again, and reopening Join a game starts with an empty field.
🤖 Generated with Claude Code
https://claude.ai/code/session_01WCDKexiF6SkDodmyKWmppK