Skip to content

Standards map polish: pack the small trees, steady hover, no intro draw - #76

Merged
jbspeakr merged 2 commits into
mainfrom
claude/project-thread-7tesl5
Oct 23, 2026
Merged

jbspeakr merged 2 commits into
mainfrom
claude/project-thread-7tesl5

Conversation

@jbspeakr

Copy link
Copy Markdown
Collaborator

Requested by Jan · project thread

What this changes

Layout and whitespace. ELK used to lay out all 41 specs as one graph, so every standalone spec and small tree (EU acts, A2A, WIMSE, SD-JWT…) was stacked into column 0 below the long column of OAuth extensions. That left the lower right of the drawing empty. Now layoutGraph lays out each group of specs joined by dependencies on its own. The largest group (the OAuth tree) sets the columns. Every other group, plus one stack of standalone specs per body, goes into the run of columns where it sits highest, below nodes and routed lines that are already there. The drawing goes from 1320×2151 to 1320×1277, about 40% shorter, and the empty lower right is filled. Within each group, a spec still sits one column right of what it builds on.

  • A same-column curve in the last column now bows left, so it stays inside the frame.
  • Band names are drawn above the lines, with a rim in the plate colour, so a line through the gap no longer runs over a label.
  • The rail's body toggles use the short name when the full one would wrap ("OpenID", "EU"), with the full name as a title. Each toggle is now one line, so the rail is shorter and the reading card sits higher.

Hover flicker. Each node used mouseenter/mouseleave. When the pointer crossed the gap between two nodes, the whole map snapped back to full strength and then dimmed again. Nodes also had no opacity transition, so this showed as a hard blink. Now the island delegates pointer events on the drawing. It holds the highlight for 280 ms while the pointer crosses a gap and only redraws when the node changes. Nodes fade with their lines over --dur. The new motion is M19 in docs/design.md and is listed on the accessibility page. Under reduced motion it applies at once.

Intro animation. The spine draw-in and halo are removed from the map. The spine is two or three short edges, so the draw read as a glitch, not a path. The spine stays drawn at full strength. M4 now covers only the decorative plate.

Before/after screenshots are in the project files under review/standards-map-polish/ (before-plate.png / after-plate.png, hover, light and dark).

Code checklist

  • pnpm check passes (321 unit tests, incl. a new packing test that fails on the old layout).
  • Pages read fully without JavaScript; no new island.
  • Both themes checked; screenshots updated only for intended changes. The standards.png and standards-greyscale.png baselines need a refresh from CI's Chromium (refresh-screenshots label). Locally, all other standards e2e tests pass, including the new gap-hover test. The spec.png comparison also fails locally, on a page this PR does not touch, because the local Chromium differs from the pinned one.

Generated by Claude Code

- layoutGraph lays out each dependency group on its own and packs the small
  groups and the standalone specs (one stack per body) into the columns
  where they sit highest, so the drawing is about 40% shorter and the empty
  lower right is gone. A same-column curve in the last column bows left.
- Band names sit above the lines with a rim of the plate; long body names
  in the rail take their short form so each toggle stays on one line.
- The hover highlight holds for 280ms while the pointer crosses a gap,
  redraws only when the node changes, and nodes fade with their lines over
  --dur (M19), instead of flashing back to full strength in every gap.
- The spine draw-in and halo on the map are gone (M4 keeps the plate); the
  spine stays drawn at full strength.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Av2PMEUphJTsSQVdibdx1f
@jbspeakr jbspeakr added the refresh-screenshots Regenerate Playwright screenshot baselines with CI's Chromium and commit them to the PR branch label Oct 23, 2026 — with Claude
@jbspeakr jbspeakr self-assigned this Oct 23, 2026
Generated by the screenshots workflow for #76.
@github-actions github-actions Bot removed the refresh-screenshots Regenerate Playwright screenshot baselines with CI's Chromium and commit them to the PR branch label Oct 23, 2026
@jbspeakr
jbspeakr merged commit 03ec899 into main Oct 23, 2026
@jbspeakr
jbspeakr deleted the claude/project-thread-7tesl5 branch October 23, 2026 14:24
jbspeakr added a commit that referenced this pull request Oct 24, 2026
…de the node (#80)

* Standards map: toggles in a bar above a full-width drawing, card beside the node

Carries over the two parts of #75 that #76 did not cover.

- The rail of toggles becomes a bar above the drawing (relations, bodies,
  view and maturity side by side, the count and Reset under a rule), so
  the drawing takes the full page width and its labels render near their
  set size. Below 60rem the bar's groups wrap.
- The card of the hovered or focused node floats beside that node, right
  of it or left where the frame ends, absolutely positioned with
  pointer-events: none so it cannot steal the hover or move the drawing.
- e2e: the hover test checks the card sits beside the node and takes no
  pointer events; the gap test scrolls its pair into view first, since the
  drawing now starts lower on the page.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VTZi51N8fuxwrrSVPWiPcU

* Refresh screenshot baselines from CI's Chromium

Generated by the screenshots workflow for #80.

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants