Skip to content

fix(ui): converge copy, focus/motion tokens and limit encodings - #68

Merged
obvious-autobuild[bot] merged 3 commits into
release/task-mode-ia-redesign-20261011-170103from
feat/tmia-copy-a11y
Oct 11, 2026
Merged

obvious-autobuild[bot] merged 3 commits into
release/task-mode-ia-redesign-20261011-170103from
feat/tmia-copy-a11y

Conversation

@obvious-autobuild

@obvious-autobuild obvious-autobuild Bot commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Why

The task-mode IA rework left three convergence debts from the audit: lessons and copy still carried old surface names in three places, the stylesheet had a corrupted tail (a stray auto; } fragment plus duplicated rules from a sibling merge), one hardcoded focus-ring override bypassed the --focus-ring token, no prefers-reduced-motion support existed, and "distance to a limit" was still rendered four times on one screen (gauges, limits strip, strip value color, and the insight prose restating the numbers). This PR settles the copy/a11y/redundancy lane of the release plan (V7/V9 hygiene) without removing any capability.

What

Three commits, web/-only (plus web/lessons.json), no backend changes:

  1. chore(copy) — finish the surface-label sweep. The sibling PRs already renamed the surfaces in lessons 0.2/0.3/4.8/7.1/8.1; three stragglers remained: two "sandbox" comments (figures.js preset note, guide.js lab-help note) and one user-facing string (the agent's protocol-accept confirmation now says "fills the Explore form").
  2. feat(a11y) — one focus token, reduced motion. Repairs the style.css tail; drops the one hardcoded .entry-action a:focus-visible override so every interactive element shares the --focus-ring token; adds @media (prefers-reduced-motion: reduce) collapsing the two orientation tweens (gauge bars, spotlight dim); the two JS smooth scrolls (guide.js spotlight, catalog panel jump) gate on the same query at call sites.
  3. fix(redundancy) — limit proximity at most twice. The insight paragraph now names which limit is closest and points at the gauges and the limits strip instead of restating their numbers a third time. Lesson 5.5, which described the old prose, drops "and when" to match. No renumbering, no re-anchoring.

Deliberately kept: the window.FusionLab.sandbox API namespace and the lessons' legacy "tab": "sandbox"/"db" directives (the guide contract tests/test_guide.py pins, mapped by workspaces.js LEGACY); the W_kJ field in the fusionlab:slice event detail (same contract — user-facing surfaces all show MJ). The 3D auto-orbit and figure jitter are render-loop motion outside this PR's CSS-token scope — flagged for the release audit, not changed.

Acceptance criteria

  • V7 guided walkthrough — lesson 1 loads, NEXT advances to lesson 2 with spotlight and task card; Lab-mode "?" panel help opens the mapped lesson (captured)
  • V9 naming/units greps — zero database in web/; zero user-facing kJ (only the W_kJ event-contract field); remaining "sandbox" words are contract identifiers only
  • V1 gates — uv run pytest -q 352 passed, 1 skipped; uv run ruff check clean; uv run mypy fusionlab clean
  • ARIA tab semantics finalized (verified): tablist/tab/tabpanel roles, aria-controls wiring to the three workspace sections, router-synced aria-selected with roving tabindex and arrow-key navigation — evidenced by the accessibility tree in the captures
  • Reduced motion verified functionally under emulated preference: gauge-bar computed transition becomes none, matchMedia gate returns true

Evidence

Captured with agent-browser against the tested head SHA 9cef3e0 (app served from this branch, Q≈9.2 sanity pass):

  • tc-1-lesson-1-start.png / tc-1-lesson-2-next.png / tc-1-lesson-walk.webm — guided walkthrough
  • tc-2-panel-help-open.png — Lab "?" on the Equilibrium panel opens lesson 4.1
  • tc-3-insight-reference-copy.png — insight paragraph referencing the limits, numbers only in gauges/strip
  • tc-4-focus-ring.png — token focus ring (2px solid accent) on keyboard focus

Sibling PRs (same release lane)

How to review

web/replay.js insight block (~line 585) and web/lessons.json 5.5 travel together — review as one change. The style.css diff is mostly deletions (corrupted tail); the reduced-motion block is additive. Guide-contract identifiers are intentionally unchanged.

Human author: Tapan Ganatma Nakkina ([email protected])

🔗 Obvious Project · 🧵 Obvious Thread · 🔀 Obvious PR Artifact

Test Evidence

V7a: guided lesson-1 walkthrough advances to lesson 2 with spotlight and task card
V7a: guided lesson-1 walkthrough advances to lesson 2 with spotlight and task card — before
V7a: guided lesson-1 walkthrough advances to lesson 2 with spotlight and task card — after

Limit redundancy: insight paragraph references gauges and limits strip instead of restating numbers
Limit redundancy: insight paragraph references gauges and limits strip instead of restating numbers — result

Focus ring: shared --focus-ring token (2px solid accent) on keyboard focus
Focus ring: shared --focus-ring token (2px solid accent) on keyboard focus — result

V7b: Lab-mode ? panel help opens the mapped lesson (Equilibrium → lesson 4.1)
V7b: Lab-mode ? panel help opens the mapped lesson (Equilibrium → lesson 4.1) — result

ObviousApp and others added 3 commits October 11, 2026 22:42
The sibling PRs renamed the surfaces in the lessons themselves (0.2, 0.3,
4.8, 7.1, 8.1) but left three "sandbox" stragglers in web/: two comments
(figures.js preset note, guide.js lab-help note) and one user-facing
string (the agent's protocol-accept confirmation). Part of the V9
final sweep; no behavior change.

Co-authored-by: Tapan Ganatma Nakkina <[email protected]>
- style.css: repair the tail left by a sibling merge (a stray "auto; }"
  fragment and duplicated .srch-rows/.bad/Explore/mobile-header rules);
  drop the one hardcoded :focus-visible override so every interactive
  element shares the --focus-ring token; add @media
  (prefers-reduced-motion: reduce) collapsing the two orientation
  tweens (gauge bars, spotlight dim).
- guide.js, replay.js: the two smooth scrolls (spotlight, catalog panel
  jump) jump instantly under the same query — the preference otherwise
  could not reach them from CSS.

Co-authored-by: Tapan Ganatma Nakkina <[email protected]>
…ir numbers

Limit proximity was rendered four times on one screen: the three gauges,
the limits strip, the strip value's color, and the insight prose — the
prose being the third restatement of the same numbers. Keep the gauges
(the instant) and the limits strip (the run); the prose now names which
limit is closest and points at those two. Lesson 5.5, which described
the panel's prose, drops "and when" to match.

Co-authored-by: Tapan Ganatma Nakkina <[email protected]>
@obvious-autobuild
obvious-autobuild Bot marked this pull request as ready for review October 11, 2026 23:06
@obvious-autobuild
obvious-autobuild Bot merged commit d67c16a into release/task-mode-ia-redesign-20261011-170103 Oct 11, 2026
3 checks passed
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