Rebuild the status marks and avatars #29
- MA
Rebuilds everything that reports state without being operated — the status dot, the notice pill, every count, and the avatar fallback. Task `009`.
## What changed
**The dot and the notice pill** keep the construction they already had. The dot is 6px filled with the colour of the text beside it; the pill is white with the 7% hairline and the resting shadow, fully rounded, and its text moves from 10px to 13px — about a third taller, which is expected rather than a regression. A healthy plan draws no status element at all, and `sr-only` keeps "Saved" in the tree for a screen reader.
**All three counts take the petrol pill** — 20px tall, white figures: the decisions rail header, a quoted span's replies, and the overflow on a stack of faces. One treatment means a reply count now carries the same weight as an outstanding decision; if that proves too loud in use, the quote is the one to demote, not the rail.
**Avatars lose their lettering entirely.** Both were 8px inside a 20px circle and the scale now stops at 13px. Shape carries kind instead: a person is a filled rounded square in their account colour, the agent a filled circle in petrol. That holds on every surface that draws a face — the chat entry, the presence stack and the header — because confining the square to chat would have shown one person as two shapes on one screen. Identity now rests on shape, colour, the photograph and the tooltip; in the presence stack there is no name at all, so two people on neighbouring account colours are only told apart by hovering. Worth watching in use.
Sizes are 20px in a chat entry and the presence stack, 24px in the header, and overlapping faces keep a 2px white ring.
Two things surfaced on the way and are fixed here rather than left:
- `--shadow-color` was declared above its own `--shadow-*: initial` reset, so it never reached the built CSS and **every** resting shadow in the app computed to `none`. `check-tokens` now fails a token declared above its namespace reset, so this cannot come back quietly. - The pill beside a quote was counting the places the thread is anchored in. That number already had a home — it is what the jump does, so the button's label says it — and the canvas asks for replies. The two are now separate props, and the pill sits outside the button so a drifted thread with no jump left still counts its replies out loud.
The tool-call outcome — a successful call losing its tick — is settled but deliberately not here. The tool card is being redesigned with the chat rail and should be touched once.
## Screenshots
Taken against this branch's build.
**The decisions rail header**
<img src="https://github.com/githubnext/chopin/raw/c47231ce870ce8cc0e324dd6c6fb729f41adbe0f/tasks/images/009-decisions-header.png" width="320">
**A reconnecting notice**
<img src="https://github.com/githubnext/chopin/raw/c47231ce870ce8cc0e324dd6c6fb729f41adbe0f/tasks/images/009-reconnecting.png" width="360">
**An agent chat entry** — the petrol circle for the planner, a photograph and a fallback rounded square for two people
<img src="https://github.com/githubnext/chopin/raw/c47231ce870ce8cc0e324dd6c6fb729f41adbe0f/tasks/images/009-chat-entries.png" width="340">
## Checks
`bun run ci`, `bun run types`, 565 unit tests and 55 e2e all green.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
MaggieAppletonmerged da6abdd436613 months ago on GitHub
MaggieAppletonhead-ref-deleted3 months ago on GitHub