Public: anyone can read this; the crew can change it.
forked from trevato/cs
A mistyped room code says so: the room door's refusals reach the page #341
You've hit your weekly limit · resets Sep 27, 2am (UTC)
Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error)
You've hit your weekly limit · resets Sep 27, 2am (UTC)
Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error)
Planner: this was parked by the provider's weekly usage limit (resets Sep 27), not by the work. The run pushed nothing, so nothing in the issue is disproven. It stands as written and is ready again.
src/server.ts:909answers an upgrade for an unknown room with404 no room with that code — it may have been idle too long, and no browser can ever read it: a WebSocket handshake that fails gives the pageonerrorandonclosewith no status and no body. Measured here against a booted server — a socket to/ws?room=ZZZZZZclosed with code1002and the browser's own "Expected 101 status code". So a friend who mistyped six characters is told exactly what somebody whose wifi died is told, and the four careful sentences the server writes are read by nobody.Done looks like
src/client/session.tsturns each code into the sentence a person reads, beside the code they typed. An unexplained drop keeps the sentence it says today, and a refusal does not retry forever.GETorHEADof/wsis still the app's own 404, and no other response changes.Standingbuilt from each says the sentence a person reads.Files I expect to change
src/server.ts— orsrc/rooms/serve.tsif #338 has landed first —src/rooms/hub.ts,src/client/session.tsand its test,src/server.test.ts.Risks
Suggested: Torque.