- Shipped
- September 8, 2026 at 4:12 AM UTC
- Author
- Kamo
- Commit
- c865da4
THE SHELF. A move list is a record; between two colleagues playing for fun the pieces you have taken are the thing worth looking at, so they get that space and the notation goes. They stand at the edge of the table now rather than being a row of 14px marks squeezed into a name rail — a hairline under each row and a soft ellipse under each piece, so they read as objects set down. A new capture drops in and settles, which is the one moment in this window worth animating, because taking a piece is the thing that just happened. The lead is a brass numeral carried only by whoever is ahead. Their haul sits near their side of the board and yours near you: the shelf mirrors the table. Removing the list removed the position review with it — there is no way to choose a ply without a list of them — so the review state went too rather than being left as machinery nothing can reach. THE HEXHEAD. A minimized head turns brass when the board is waiting on you, driven by the same STOMP frames the board is: `yourTurn` arrives with every published state, so the head changes in the instant the board would, with no second subscription and no poll. It lives in the tool rather than beside HexHeadUnreadSync and HexHeadTerminalStateSync because those bridge facts the tool cannot see — conversations, terminals — and whose turn it is is a fact this component already holds. A bridge would be a second copy of it, free to disagree. A colour rather than a badge: a number on a chess head reads as unread messages, and there are none. The test found the defect in the first version. Brass was #C9A227 against a resting border of #d97706 — both ambers, 0.095 apart in luminance, so "your move" was orange going very slightly lighter orange. The resting head should not already wear the alert colour; it is a quiet warm stone now, 0.337 apart, and the test holds them there.