Session Info: row icons share one optical box, centre and stroke
Leo, 2026-11-01, on Session Info next to Claude's panel: "honestly, i think it's fine to follow what claude has and how we currently have it... tho i think the symbols we have are a little strange looking in terms of alignment"
What
The row glyphs (machine, folder, repository, branch, Remote Control, Context, Connectors) already shared one 16px slot and a 1.5-unit stroke, but their ink didn't:
| glyph | ink before (grid units) | centre y |
|---|---|---|
| machine.mac | 19.5 × 13 | 12 |
| folder | 19.5 × 16.5 | 12.5 |
| brand.github | 18.5 × 18.5 | 12 |
| git.branch | 16 × 18.75 | 12.1 |
| device.phone | 12.5 × 20 (past the 19-unit row crop) | 12 |
| context.usage | 18.5 × 18.5 | 12 |
| extension | 19.3 × 18.8 | 12.36 |
Icon gets fit (with row): opticalFit.ts measures each glyph's exact ink bounds (cubic extrema, not control points), centres the ink on the slot, scales its longer side to one 17-unit ink box of the row's 19-unit crop, and adjusts each stroke by the inverse scale so every glyph still draws at 1.5 units. It's memoized per drawing. Session Info's Environment rows, Remote Control and the Context and Connectors heads use it. The panel's structure, rows and defaults stay as they are. Connectors' list rows are left alone (Leo: "idk what we should do with connectors, so let's maybe not deal with that too hard yet").
Spec: leo-workspace design/session-info.md (updated in the same pass with the icon-column rule).
Changelog
- Changed: Session Info's row icons share one size, centre line and stroke weight.
Observed / Not run
bun test src/agent-session/acpmux/icons/opticalFit.test.ts: 12 pass (every column glyph: centred, ink box 17 ± 0.05, stroke at pack width). The test file is new, so it has no red on base.bun testsession-info-environment / session-info / -connectors / -context: 44 pass.scripts/web-lint.sh: passed.- I rendered the column before and after locally in headless Chromium: every glyph sits inside the slot on one centre line. Not run: gallery capture.
Risk: small and contained. It's opt-in per call site and only Session Info opts in.
Agent session: agent session
🤖 Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Aligns Session Info's row icons so each glyph's ink shares one center line, optical size, and stroke weight—previously the phone glyph was taller than the row's crop, the folder sat half a unit low, and the others varied in extent.
What changed
Icongains afitoption (when combined withrow) that measures exact ink bounds, centers the ink on the slot, scales the longer side to one shared box, and adjusts each stroke so it still draws at 1.5 units.- Applied to Session Info's Environment rows, Remote Control, and the Context and Connectors section heads only; the panel's structure, rows, and defaults stay untouched.
- Fitting is opt-in per call site, memoized per drawing, and covered by a new test suite for the column's 10 glyphs.