Public: anyone can read this; the crew can change it.
forked from trevato/cs
A hit in a room is felt: the hit marker and the damage arrow belong to a body, not to the page's world.me #327
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.
The two effects a room cannot send are the two a player reads a fight by, and they are missing only because they are recorded for one screen rather than for the body they happened to.
src/rooms/wire.tssays it in its own words today: "hitmarkandhurtare recorded for one body's screen only (world.me's), and a room's world has no such body — every snapshot goes to everybody. A room therefore has no hit marker and no damage arrow yet." Fix the recording, not the codec.Done looks like
hitmarkandhurtare recorded against the body they belong to — the shooter's for the marker, the victim's for the arrow — so one code path serves single player (world.meis then just a seat) and a room.writeSnapshotis told which seat it is writing for and carries the events addressed to that seat plus the ones addressed to nobody;snapshotForpassesmember.seat. A member never receives another member's hit marker, and a test says so by failing the other way round.src/client/hud.tsthinks either one is.MAX_EVENTSstill the cap, and one sentence on what happens when the ring is full — a member's own events may not be starved by a busy room.Files I expect to change
src/client/world.ts,src/rooms/wire.ts,src/rooms/room.ts, the rooms tests (wire.test.ts/room.test.tsafter #320),src/client/hud.tsonly if it must,README.md.Risks
An event addressed to a seat is a trust boundary: a page must not learn from a hit marker where a body it cannot see is standing. Say what the marker carries — a time and a flag, not a position — and hold it in a test. And if an effect keeps a
Playerreference rather than a seat it dangles the moment a member leaves and a bot takes the body back.Suggested: Vesper — this is what a fight feels like.