docs: log the owner's picks from the remaining options
This commit is contained in:
@@ -135,3 +135,13 @@ Run: `npm run build:preview` then serve `dist` (dev server shows a blank page).
|
||||
- **Fix:** every `pow()` base in the scene shaders is now non-negative on its face. Traffic uses `clamp(vUv.y, 0, 1)`. The 31 other sites in 15 world files get `abs()` for even exponents (where results are identical), and `max(…, 0)` or `clamp(…, 0, 1)` elsewhere (identical wherever the old result was defined). Examples are speed-wake `1 - vUv.y`, expressway `facing`, billboard/dawn/districts fresnel `1 - |dot|`, road film and cones, skyline, yard and terrain. No CPU-side change and no allocations.
|
||||
- **Test:** tests/unit/shader-pow-safety.test.ts scans src for `pow(` (comments stripped). It fails unless the base is a single abs/max/clamp/smoothstep call, optionally scaled by a positive literal. It includes the traffic regression.
|
||||
- **Checks:** 973 tests (83 files), vue-tsc clean, build:preview violations []. After the fix the unguarded probe gave 0 black frames in 21.6k frames (seeds 11 and 19 confined, seed 7 full range). Probe rAF p50 16.7 / p95 33.3 ms, the same as the pre-fix probe runs (the readback inflates p95).
|
||||
|
||||
## Owner picks from remaining-options.md (2A, 3A, 4, 6A, 7A, 8 B1)
|
||||
- **8 B1, Thoreau closer (f4d9cb0):** the end letterbox no longer types name, title and location. It shows "There is more day to dawn. The sun is but a morning star." (Thoreau, *Walden*) in a serif italic system stack, with each word fading in at sunrise. Content lives in the content JSON (`closer: {quote, attribution}`, schema and types updated). Reduced motion shows it static. Screenshots: closer-*.webp.
|
||||
- **4, speedometer (70b30fa, Fable):** the gantry's left bay holds a 240° SVG arc dial in the chapter accent, with a spring needle and a readout for speed, gear and TRIP, plus BRAKE, OVERDRIVE and ENGINE OFF lamps. It does an ignition sweep, cruises at 88, climbs to about 160 while scrolling, goes to overdrive on navigator jumps, flares on the high-beam flash and parks at 000/P at the destination. It is a button that toggles km/h and mph (saved in localStorage) and shows a route detail line on hover. It is hidden below 1280 px, snaps without animating under reduced motion, rides the existing frame loop, and the dial is a lazy 1.81 KB gz chunk (deferred-non-video). Initial JS +1.30 KB gz. Weak spots: the BRAKE lamp is brief, and under reduced motion the digits can stay at 088 while scrolling. Screenshots: speedo-*.webp.
|
||||
- **6A scene nits + 7A phones (3602eeb, Opus):** the yard aims from the live camera every frame, so it no longer slides in at chapter entry; any future camera-rig change must keep `camera.position` in world space. Container stacks are squared to the road, with the far stack cut to 3 tiers. The billboard holds until the EXIT 05 deck has passed. Relay rungs and pylon lamps are two-layer, with a violet core under the tonemap shoulder and an additive halo. The high-beam flare stays in the lamp's own colour and peaks at 120–250 m. Phones get exposure ×1.15, lamp gain ×1.3, a brighter mobile poster (mean 62 → 71.5), one large portrait transmitter, nearer overtakes, and a staging rule. The rule promises a pull-out within 30 s of each chapter entry (mean under 20 s) and no gap without a lane change longer than 55 s; it is looser than the 15 s target because of the 6-vehicle pool. Initial JS +12 B (hash churn only). Screenshots: nits-*.webp, phone-*.webp.
|
||||
- **2, first frame on a cold GPU: A and B both built and measured, owner kept A.**
|
||||
- **A, compile in the background (26e5ff0):** `shader-warmup.ts` compiles into the composer's scene target with hidden objects made visible, then awaits `compileAsync` with a 2.5 s timeout. Measured against baseline (medians, loaded machine, relative only): first scene frame within noise; the frame-0 main-thread task drops 1737 → 340 ms; the next frame drops 177 → 98 ms. Cons: total link time is unchanged (it just moves off the main thread), it relies on three internals (guarded by a browser spec), about 330 ms remains for the post-processing programs, and three keeps polling after a timeout.
|
||||
- **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 [].
|
||||
|
||||
Reference in New Issue
Block a user