From f42af6f3b1c656586e30f0cd93dd86d839b1fb81 Mon Sep 17 00:00:00 2001 From: LucaP Date: Tue, 13 Oct 2026 06:51:55 +0300 Subject: [PATCH] docs: log the nav label fix and the final nav bar --- docs/overnight/LOG.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/docs/overnight/LOG.md b/docs/overnight/LOG.md index 22f1c36..704d8a2 100644 --- a/docs/overnight/LOG.md +++ b/docs/overnight/LOG.md @@ -145,3 +145,37 @@ Run: `npm run build:preview` then serve `dist` (dev server shows a blank page). - **B, compile in slices (240c2cd, not merged, kept on `polish/compile-slices`):** spreads the warm-up over frames with a 40 ms budget and no task over about 220 ms; adds a `'warming'` render state and a prefetch of the scene chunk. First scene frame came 0.6–1.0 s later than baseline, and total compile stall rose by about 0.8 s. It also needs a record/replay hook on the renderer and a hand-kept copy of three's program grouping. The B agent also noted that 21 browser tests fail at baseline 71465fa on this machine (context-loss, fault-matrix, static-fallback and journey-integration); this is not caused by A or B. - **3A, payoffs in the card gaps (7510856, Fable):** the real gap model is `route.css` (the open road after each panel is the section's padding-end plus the next section's margin-start), so the gap always falls at section progress of about 0.9–1.0. The new `journey/card-gaps.ts` exports `CARD_GAP = {from 0.9, peak 0.94, to 0.96}`, and a test proves that window holds for chapter spans of 140–330 vh. The district relight moved from 0.35–0.65 (behind the panel) to 0.90–0.94, and it shares the cutover step. The last yard lift peaks at 0.94. Relay station beams now go live together at 0.90–0.94 through `stationLive()`. The gap is widened from `clamp(220px,44vh,480px)` to `clamp(240px,48vh,520px)`, which adds 252 px of page height at 1440×900. No new chunks or shaders. Screenshots: gaps-*.webp. - **Merged state (fbcea0b):** vue-tsc clean, 1021 tests, build:preview violations []. + +## Fix: nav labels clipped between 1280 and 1440 px (4b1b416) +- Between 1280 and 1440 px the chapter tab labels were cut off. They now stay whole across that range. + +## Nav bar: the edge-lit LCD (owner pick after seven rounds) +- **How it was chosen:** 17 bar options were built behind `html[data-nav-bg]` on throwaway `polish/navbg*` branches (Fable: 1, 2, 4–6, 12, 13; Opus: 3, 7–11, 14–17). + - The owner reviewed them in a standalone preview page that fakes the drive signals live. + - Round 4's ambient motion was rejected for "meaningful" motion that stands on its own and reacts to the drive. + - V14–V16 crossed V3 (instrument panel) with V8 (light-guide glass). The owner then specified V17 from V15: + - a quieter LCD grid; + - V16's arrival droplet; + - slower, narrower route glints; + - a lower wave that is a smooth PS3-style ribbon at low speed and a smooth visualizer at high speed, with a hue cycle above 80 % speed that eases back slowly. +- **Shipped as the only bar, with no attribute:** + - `styles/nav-bar.css` (`.nav-lcd` with 15 parts, `.nav-wave`), using `html:root` in place of the variant attribute so specificity stays 0,1,1. + - `composables/useNavBarSignals.ts` mirrors the speedometer onto the bar. It writes only when values change, writes speed onto the LCD rather than the nav, and runs the hue tiers with hysteresis (on 0.80/0.88/0.95, off 0.76/0.85/0.92, stepping down one tier per 700 ms, then a 4 s settle). It also fires the one-shot `data-nav-shift`. + - `journey/nav-wave.ts` is a lazy 2D canvas: repainted at 30 Hz, paused when hidden, a still frame under reduced motion, hidden under forced colours. + - V1–V16 and the Fable bridge are not shipped. +- **Review fixes:** + - the wave now re-reads the chapter accent; + - per-frame engine writes are gone, and speed is written onto the LCD (−1.7 ms/frame of style recalc); + - the shift attribute clears after 1.6 s; + - the page-wide observer is removed; + - the wave repaints on resize; + - route glints are hidden below 768 px; + - unmount cleanup is complete; + - a slow wave test was rewritten. +- **Checks:** + - Pixel diffs against the approved preview build: 0 px in 21 scenes, apart from speedometer noise that also appears between two runs of the preview build itself, and the intended mobile glint removal. + - Contrast ≥6.38:1 at the worst frame. At most 1.5 flashes per second. + - 1029 tests, vue-tsc clean, build:preview violations []. +- **Known cost:** at rest it is identical to the old bar. While scrolling the mean frame is about 32 ms against 24–26 ms for the old bar, mostly from LCD restyling on speed changes. Updating the bargraph at 30 Hz would cut this, but was left out so the approved look is untouched. +- **Also fixed:** `tests/integration/prepare-assets.test.ts` never removed its `portfolio-assets-test-*` temp folders; about 10k of them (8 GB) had piled up in /tmp. It now removes them after the run. +- Recording: docs/overnight/polish/navbar-final.webp.