Files
Portfolio/docs/reviews/midnight-expressway-review.md
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

7.2 KiB
Raw Blame History

Midnight expressway — ready for visual review

Implementation branch: codex/midnight-expressway, based on local main c9ac36e. Worktree: /home/luca/Documents/Portfolio/.worktrees/midnight-expressway. No merge, push, or deployment.

Open the work

The gallery is also available locally as evidence/midnight-expressway/index.html. Preview serves this worktree's validated, prerendered dist; the baseline was separately built from the merged version and serves on port 41820. The previous port 41812 was not running.

What changed

A satin graphite expressway now has directional grain, broken coral reflections, cyan recessed channels, shoulder ribs, reflectors, expansion joints, low rails, and swept signal pylons. Sparse ridge observatories create a slower outer rhythm. All repeated scenery uses bounded instancing and continuous wrap; no additional reflection pass is required.

The cyan terrain waves now sit on opaque displaced ground. Dark surfaces occlude distant contours and give the landscape actual depth. Thin, separated atmospheric layers replace full-screen haze. The striped sun has a peach crown, a coral lower limb, luminous band edges, convection filaments, and restrained distortion. Stars sit behind its solid surface.

The car has twin articulated rear lamp rails, deep side intakes, machined dished wheels, shoulder rings, lower blades, deck seams, larger wing endplates, exhaust surrounds, and a more defined diffuser. Four wheels rotate independently while suspension acts on the body. The isolated Blender source remains editable.

Signs are beveled illuminated objects with fins, inset faces, twin supports, footings, hardware, and an approach sweep. Camera projection places readable dwell in measured empty screen space. A reserved scene strip protects that space without placing the signs above the content. Very short landscape layouts put reading on the left and the sign on the right. Reflow is damped, keyboard focus stays in the reading corridor, and Static mode releases the clipping entirely.

Camera lag, forward anticipation, coasting, and warm Contact recovery are visual consumers of existing journey state. Typography, project staging, diagram sizing, and compact reading surfaces were refined around the unchanged copy.

Refinement after the first implementation

Browser observation led to a second pass: removal of flat full-screen haze and distracting old anchors; opaque ground beneath the grid; a crisper sun limb with correct star occlusion; closer sign dwell to prevent foreground pylons crossing labels; corrected short-height composition; stable heading activation after navigation; and independent wheel rotation with grounded contact. Static posters were captured from the live world.

Preservation

The baseline and new preview have identical normalized main text, rendered wording, links, title, metadata, canonical information, structured metadata, and ordered section IDs. The 15 approved media/audio files match the approved manifest and both built previews byte for byte. Content, audio, canonical journey state, motion preferences, route definitions, tests, and preview configuration have no source changes.

Evidence: content comparison, all approved media/audio hashes.

The soundtrack reached its running state through the existing controls. Mute/unmute, volume, motion pause/resume, and quality controls were exercised. The capture is silent; it does not replace the soundtrack assets or certify acoustic playback through physical speakers.

Practical verification

  • Approved-asset validation, typecheck, client build, SSR build, validated prerender, artifact verification, and transfer checks pass. Validation was not disabled.
  • All eight chapters were traversed at 1440×900, 768×1024, 390×844, 320×568, 1024×600, and 844×390. Intermediate resizing also included 900×760. No horizontal page overflow was observed; narrow and short navigation settled on every requested section.
  • Ordinary scrolling, acceleration, coasting, reverse scrolling, long navigation jumps, Contact arrival, keyboard skip link, successive media/link focus, and resizing were exercised. The motion recording shows the road, sign transitions, reversal, Builds, and Contact.
  • Static mode: zero canvas, no live clipping. Reduced motion: static artwork and all eight sections. JavaScript disabled: all eight sections and the approved content remain available.
  • Direct-preview console inspection found no application exceptions or WebGL shader errors. An inherited /favicon.ico 404 remains. The instrumentation proxy emitted its own WebGL warning.
  • Static → High → Low transitions were exercised. Scene disposal inspection found zero orphaned geometries or textures. Repeated roadside objects are bounded; the final Low scene has 45 draw calls and approximately 44,572 triangles while the sign is inactive. No new full-resolution post-processing pass was added.

Performance and limits

The initial inspection renderer was ANGLE / Vulkan / SwiftShader Device (Subzero). At Low quality the instrumented 1440×900 sample averaged 12 fps (4 seconds, p95 99.9 ms); 390×844 averaged 31.1 fps (3 seconds, p95 49.9 ms). The Chrome app connector returned Transport closed, including its reset call. A direct isolated host Chrome window provided the working hardware-backed alternative.

Host Chrome 152.0.7977.64 uses ANGLE / Mesa Intel Graphics (ARL), OpenGL ES 3.2. With the High maximum-quality preference and normal adaptive behavior intact, six-second requestAnimationFrame samples averaged 63.1 fps at the opening, 62.7 fps while reading Infrastructure, and 65.4 fps during native scrolling/coasting at 1440×900. Desktop p95 was 20.9 ms. The 390×844 host-browser viewport averaged 188.7 fps (p95 8.4 ms). These samples use the host GPU at devicePixelRatio 1; they do not certify a physical phone, high-DPI screen, or every browser. No application exceptions occurred. Raw hardware results include the renderer and measurement method. A second motion capture uses this hardware-backed Chrome window.

Transfer report: initial application JS 90,264 bytes; first live scene code plus car 299,457 bytes; both responsive posters 136,680 bytes, measured by the existing Brotli/raw accounting. No transfer violations. The raw car export is 1,185,588 bytes. Vite retains its large scene-chunk warning.

The untouched baseline's established build:preview stopped at 9 failing / 653 passing unit tests: fallback counts and old bloom/camera/sign assertions. The original log was captured before editing. Tests were not written, changed, or repeatedly run, as requested. The complete validated rendering and artifact stages were run separately and pass; the unit suite is not claimed green.