Commit Graph

87 Commits

Author SHA1 Message Date
LucaP
f42af6f3b1 docs: log the nav label fix and the final nav bar 2026-10-13 06:51:55 +03:00
LucaP
749fc96d41 docs: add the final nav bar recording 2026-10-13 06:48:33 +03:00
LucaP
88ea4f76c4 docs: log the owner's picks from the remaining options 2026-10-12 19:24:02 +03:00
LucaP
fbcea0bb2c Merge branch 'polish/card-gaps' into redesign/overnight 2026-10-12 19:22:21 +03:00
LucaP
75108562a4 polish: time the scene payoffs to the gaps between cards
One shared window (journey/card-gaps.ts, CARD_GAP) describes the open road
after each chapter's panel in section-local progress; the district relight
and cutover, the last yard lift and the relay station's beams now key off
it instead of their own numbers, and the chapter margin widens from 44vh
to 48vh so the gap reads as a stretch of road. Unit tests prove every
payoff's peak sits inside the window for every chapter span.
2026-10-12 19:20:43 +03:00
LucaP
f9b515c3a0 Merge branch 'polish/compile-async' into redesign/overnight 2026-10-12 19:13:02 +03:00
LucaP
c6ce7c24f5 Merge branch 'polish/scene-nits' into redesign/overnight 2026-10-12 19:00:08 +03:00
LucaP
3602eeb3d1 polish: scene nits — live-lens yard, square stacks, deck-clear billboard, two-layer lamps, flare reach, phone traffic and exposure 2026-10-12 18:59:33 +03:00
LucaP
53e532384c Merge branch 'polish/speedometer' into redesign/overnight 2026-10-12 18:44:48 +03:00
LucaP
70b30fa200 feat: put a speedometer in the gantry's left bay
A 240-degree SVG dial with a spring needle, three-digit readout, unit
label, warning lamp (BRAKE / OVERDRIVE / ENGINE OFF), trip odometer and
gear chip, driven by the journey's own frame loop from the scroll drive,
route progress, navigator state, scene ignition and the high beam. Hover
or focus shows route, exit and time on the road; a click toggles km/h
and mph (remembered). The model and DOM driver load as a lazy chunk so
the initial bundle grows by about 1.3 kB gzipped; reduced motion snaps
the readout, and the bay hides below 1280px.
2026-10-12 18:44:05 +03:00
LucaP
26e5ff01fd perf: compile scene shaders off-thread before the first frame
I warm the world's programs with renderer.compileAsync() at the end of the
async build, with the composer's scene target bound so tone mapping and
output colour space key the same programs the composer draws with, and with
hidden subtrees revealed so the light count matches the frame-0 warm render.
The wait is capped at 2.5 s; the warm render stays as the safety net for the
post passes, texture uploads and anything a slow or extension-less driver
left. Test builds report renderer.info.programs, and a browser spec pins zero
program growth after frame 0.

On the Intel ARL laptop the frame-0 task drops from ~1.74 s to ~0.34 s with a
pixel-identical first frame; measurements in
docs/overnight/compile-async-results.md.
2026-10-12 18:34:12 +03:00
LucaP
f4d9cb0cd4 feat: close the shift with a Thoreau quote in the end letterbox 2026-10-12 18:13:06 +03:00
LucaP
71465fa481 docs: options for the remaining weaknesses 2026-10-12 18:05:35 +03:00
LucaP
06e6a59b6f fix: guard shader pow() bases so a NaN pixel can no longer black out the frame 2026-10-12 04:23:25 +03:00
LucaP
50da616a46 feat: interactive traffic with car-following, overtakes and flash-to-pass 2026-10-11 23:13:05 +03:00
LucaP
8c9ec69565 fix: a chapter's first mile-marker post no longer arrives late 2026-10-11 16:12:15 +03:00
LucaP
388289f2fe feat: mile-marker posts travel with the road and carry the route log 2026-10-11 15:48:49 +03:00
LucaP
1326cee886 fix: polish pass for traffic, nav, icons, contact email reveal and dashcam robustness 2026-10-11 15:11:44 +03:00
LucaP
ca12cfda44 feat: night freight container yard works through the additional work chapter 2026-10-11 11:52:27 +03:00
LucaP
4e097e5ef9 feat: living tab title and favicon follow the drive 2026-10-11 11:18:47 +03:00
LucaP
989928c5bb feat: underpass overpasses carry the chapter transitions 2026-10-11 10:48:31 +03:00
LucaP
7423f5d52e feat: ignition opening with cold start, lamps, crossfade and shader warm-up 2026-10-11 09:54:48 +03:00
LucaP
33585f7e34 feat: relay station masts come online through the toolkit chapter 2026-10-11 08:32:33 +03:00
LucaP
568b0802b4 feat: dashcam photo mode with telemetry frame, lens drift and postcard capture 2026-10-11 07:49:56 +03:00
LucaP
d71b0ecfd4 feat: floodlit roadside billboard carries the selected-builds case studies 2026-10-11 07:09:31 +03:00
LucaP
19f3ce79e6 feat: route log odometer and lit mile markers for profile and experience 2026-10-11 06:15:36 +03:00
LucaP
b6e22a1299 feat: daybreak finale turns the contact arrival into a sunrise with a dawn chord 2026-10-11 05:32:08 +03:00
LucaP
c9e6ac0f29 feat: cursor-steered headlights light the hero name, plates and world 2026-10-11 05:07:05 +03:00
LucaP
52b4a1ad14 feat: scroll-driven maintenance window set-piece in the infrastructure chapter 2026-10-11 04:25:28 +03:00
LucaP
bd9bd692b9 docs: start overnight log 2026-10-11 03:46:24 +03:00
LucaP
43dec06bbc style: soften the focus ring on programmatically focused headings 2026-10-11 02:11:49 +03:00
LucaP
70b628f65a fix: let each additional-work plate end with its own content 2026-10-11 02:11:49 +03:00
LucaP
8771e73b91 docs: record the round 6 polish pass and evidence 2026-10-11 02:00:11 +03:00
LucaP
4ff42288a8 docs: record the round 5 review pass, evidence and test results 2026-10-11 00:13:05 +03:00
LucaP
bacc035c43 feat: sign interlude, window plate and a two-button control bay
The sign closes in over the road on a gantry truss, arcs into a wider
window and hands off to a flat 2D plate that mirrors its face; content
steps aside for the interlude and rises after. The bay keeps sound and
settings; volume and Pause motion move into the settings popover.
2026-10-10 23:30:58 +03:00
LucaP
c3863f8dbe feat: one card title rule and a motion pass
Every card title now sits first inside its card under a mono registration
plate; chapter titles stay outside, above the plate. Cards rise and unmask
as they enter the reading window, lift on hover and focus, chapters settle
in sequence on arrival and the gantry lane lamps light along the route.
All motion is transform and clip-path, behind reduced-motion.
2026-10-10 22:46:06 +03:00
LucaP
582bf6dc43 feat(scene): phone LOD car and clearcoat coachwork on desktop
Phones and the low tier load a decimated grand tourer built by a headless
Blender script (31k to 11k faces, same nodes and materials). Desktop gets
clearcoat paint and a soft halo parented to the tail bar.
2026-10-10 22:41:12 +03:00
LucaP
06b6e996a0 feat: cinematic outro that mirrors the intro crane
On arrival the camera cranes back toward the sun on a long lens, letterbox
bars close in on every tier and a closing credit of real identity facts
fades into the upper bar. Leaving the destination reverses it.
2026-10-10 22:25:25 +03:00
LucaP
0ae27168cd feat: overhead gantry top bar with a docking sign window
The top bar becomes a steel gantry. Its centre window is a mask cut-out the
3D exit sign docks into; between signs the window shows the dash read-out.
The drive controls move into the right bay, and the reading viewport is
clipped at the beam, so the empty band under the bar is gone.
2026-10-10 22:20:48 +03:00
LucaP
298da54871 fix(scene): keep traffic lamps out of the hero car's near field 2026-10-10 22:02:39 +03:00
LucaP
48a3413ebc fix(scene): drop the first-frame precompile; record round 4 test evidence 2026-10-10 21:05:00 +03:00
LucaP
af14e5910b docs: record round 4 critique, transformation and evidence 2026-10-10 19:50:38 +03:00
LucaP
da7bd9940e docs: record round 3 route concept and decisions 2026-10-10 19:06:29 +03:00
LucaP
6c18228ed6 docs: record round 2 wayfinding concept, cuts and alternatives 2026-10-10 17:46:17 +03:00
LucaP
475e494675 docs: add Night Shift implementation plan 2026-10-10 14:11:57 +03:00
LucaP
12a4e196ab docs: record Night Shift redesign direction 2026-10-10 14:11:22 +03:00
LucaP
fa4d1a2377 docs: add redesign discovery brief 2026-10-10 14:09:12 +03:00
LucaP
15bcdf7cec perf: reuse a stationary reading mask during scrolling
Keep native document geometry while translating content behind one viewport fade. Preserve navigation, focus, media preloading, and Static cleanup without changing 3D quality or render resolution.

Validated assets, types, production builds, prerendered artifacts and transfer budgets; compared 64 layouts and checked 87 live interactions plus uncached media and repeated cleanup. High improved from 71.7 to 101.4 FPS at DPR 1 and 47.8 to 62.2 FPS in the full-size DPR 1.5 window, with occasional sub-60 intervals still remaining.
2026-09-05 17:42:19 +03:00
LucaP
d48e9017cc docs: record scrolling mask performance investigation 2026-09-05 16:43:44 +03:00
LucaP
b188cac7ed feat: sculpt portfolio into an immersive midnight expressway
Author physical road furniture, layered terrain and atmosphere, projected illuminated route signs, and detailed Blender coachwork. Refine camera mass, wheel contact, chapter composition, and compact reading space while preserving approved content and audio contracts.

Include isolated Blender source, before/after and hardware Chrome motion evidence, preservation hashes, validated preview checks, and documented inherited unit failures.
2026-09-05 05:10:17 +03:00