- gallery.js: math/score focus overlays are keyboard-activatable
(role=button, tabindex, Enter/Space) and focus return on close lands
on a focusable trigger (AUDIT §5.7)
- annotations.js: marks are focusable; Enter/Space pins the tooltip
with focus moved to its Delete button, Escape dismisses — the delete
affordance is finally reachable without a mouse (§5.7)
- transclude.js: nested transclusions resolve (depth-capped at 3, with
ancestor-chain cycle rejection rendering the existing error style);
collapse.js reinit is idempotent via data-collapse-bound (§5.7)
- copy.js excludes the button label from code-less <pre> copies;
score-reader.js stops rewriting plain loads to ?p=1; search-filters
treats non-numeric threshold input as inactive instead of a
match-everything >=0 filter; selection-popup no longer re-summons
the toolbar while typing capitals in the annotation picker (§5.8)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- score-reader template: load utils.js before theme.js — without
lnUtils.safeStorage the saved theme/text-size never restored on
score pages (AUDIT §5.1)
- search-filters: expand trailing-slash pathnames to .../index.html
before the epistemicMeta lookup; clean-URL pages were silently
bypassing every active filter (AUDIT §5.2)
- viz: treat cappuccino as a dark theme so charts stop rendering
near-black marks on a dark brown background (AUDIT §5.3)
- collapse: namespace section-collapsed keys by pathname (Pandoc
auto-slugs recur across essays) and go through safeStorage like the
rest of the site (AUDIT §5.4)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>