Files
Portfolio/docs/redesign/round6.md

4.0 KiB

Round 6: polish pass

Fable's ranked list from the round 5 review, implemented as one commit per item. Evidence lives in round6/. Before and after shots are at 1440 unless the filename names another width.

Items

# Change Commit Evidence
1 Removed the gantry and billboard districts from the export (glb went from 83.7 KB to 67.6 KB). The remaining districts now render as opaque dark steel with an emissive rim. fc897e5 world-*-before/after
2 Trimmed the interlude to about 1.5 s: the rise now starts at 1043 ms, the sign docks at 1194 ms, and the content settles at about 1.56 s (it was 1.93 s). c8bc75c nav-sequence-after
3 Moved the window and plate corner marks onto their own corners. 4eaf327 window-*, profile-*
4 Filed the end-of-route sign inside the destination panel, clear of both the bar and the credit. 7fa1c08 outro-* (1440, 1024, 390)
5 Changed the activation line from 35 % to 60 % of the viewport. d6045ad unit and browser tests
6 The 2D exit plate now stays visible on window hover at the destination. c715cf1 outro-hover-*
7 The window hint is hidden while a sign is in flight. 40d8635 window-hover-after
8 The motion tile gets its own slot outside the bay, so the other tiles no longer shift. 38f680f bay-paused-1440/390-after
10 Operations now runs as a base rail under the infrastructure route. 0771062 infra-* (1440, 1024, 390)
11 Fixed the snapshot of null error when the scene controller is disposed mid-await. 1bccb75 console clean
12 The quality select is disabled and reads Static while visuals are unavailable. 863a44e new unit test
RM Under reduced motion the exit plate fades in over 160 ms instead of cutting. 6f8449d opacity sampled 0 → 1
Sweep When a sign takes the frame, the plates clear before the headings: plates go in 160 ms, headings in 130 ms after a 60 ms delay. 06c7592 screencast

Deviations

  • Item 9 (reduced motion): with the OS set to reduce motion, the scene state is static. No scene chunks load and no WebGL is created; the only canvas is the 24x32 title particle canvas. "Enable motion" is offered only after a saved Static choice, never over the OS preference. We kept this on purpose.
  • Navy frame: across about 100 screencast frames after a nav click, the lowest grey standard deviation was about 0.14. No frame was flat navy, so no change was needed.

Test edits

  • tests/unit/sign-rendering.test.ts: the sampled progress moved from 0.69 to 0.61 to follow the new truss timing.
  • tests/unit/section-controller.test.ts: the activation test now expects 60 % (expected value 575 changed to 825), and the test names were updated.
  • tests/browser/navigation.spec.ts: the activation offset moved from 0.34 to 0.59.
  • tests/browser/journey-integration.spec.ts: every 0.35 activation offset is now 0.6, and a gantryWindowBox helper was added. The two stale pass-by tests were rewritten, not deleted:
    • The car pass-by test now asserts that the approach arc peaks at more than 1.5 times the dwell width, that the sign docks inside the window box at opacity of at least 0.98, that it departs in place, and that the gantry state runs incoming → docked → passing.
    • The Profile face test now asserts the sign is inside the window box and above #profile .chapter-body. The texel-density checks are kept.
  • tests/unit/SceneCanvas.test.ts: added a test that the quality select is disabled while visuals are unavailable.

Verification

  • vitest: 686 tests pass. Typecheck is clean. build:preview reports "violations": [].
  • Full Playwright run (4 workers): 163 passed, 72 failed, 55 skipped. Compared by title with the round 5 baseline, 61 of the failures were already failing there, and 2 baseline failures now pass. The other 11 all pass when re-run serially; they are timing-sensitive sign and audio tests under GPU contention.
  • fps (headed, Intel ARL, 120 Hz display): start 67, infrastructure 81, selected-builds 79, toolkit 82, contact 93.