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.
BIN
docs/reviews/evidence/midnight-expressway/after-builds.png
Normal file
|
After Width: | Height: | Size: 321 KiB |
BIN
docs/reviews/evidence/midnight-expressway/after-contact.png
Normal file
|
After Width: | Height: | Size: 480 KiB |
BIN
docs/reviews/evidence/midnight-expressway/after-desktop.png
Normal file
|
After Width: | Height: | Size: 785 KiB |
|
After Width: | Height: | Size: 227 KiB |
BIN
docs/reviews/evidence/midnight-expressway/after-phone-sign.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
docs/reviews/evidence/midnight-expressway/after-phone.png
Normal file
|
After Width: | Height: | Size: 204 KiB |
150
docs/reviews/evidence/midnight-expressway/baseline-checks.log
Normal file
@@ -0,0 +1,150 @@
|
||||
|
||||
> portfolio-phase-1@1.0.0 build:preview
|
||||
> npm run verify:approved-assets && npm run typecheck && npm run test:unit && npm run build:client && npm run build:ssr && npm run prerender -- --config config/site.preview.json && npm run verify:artifacts -- --config config/site.preview.json && npm run check:budgets:transfer
|
||||
|
||||
|
||||
> portfolio-phase-1@1.0.0 verify:approved-assets
|
||||
> node scripts/materialize-empty-asset-set.mjs
|
||||
|
||||
|
||||
> portfolio-phase-1@1.0.0 typecheck
|
||||
> vue-tsc --noEmit
|
||||
|
||||
|
||||
> portfolio-phase-1@1.0.0 test:unit
|
||||
> vitest run
|
||||
|
||||
|
||||
RUN v4.1.11 /home/luca/Documents/Portfolio/.worktrees/midnight-expressway
|
||||
|
||||
❯ tests/unit/world-models.test.ts (29 tests | 7 failed) 272ms
|
||||
× disposes a composer and its passes exactly once 32ms
|
||||
× keeps the grand tourer anatomy readable in desktop and portrait chase views 29ms
|
||||
× reflows a visible portrait sign into its navigator-safe pose without a teleport 4ms
|
||||
× keeps a short-landscape left sign inside the narrow desktop roadside gutter 3ms
|
||||
× places a portrait navigator arrival below its full-width destination panel 3ms
|
||||
× grows a medium portrait navigator sign without enlarging the phone pose 7ms
|
||||
× places route signs in their authored transition-safe corridors 10ms
|
||||
❯ tests/unit/SceneCanvas.test.ts (16 tests | 2 failed) 134ms
|
||||
× does not request or render the scene for reduced motion 36ms
|
||||
× does not request or render the scene for saved Static mode 6ms
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯ Failed Tests 9 ⎯⎯⎯⎯⎯⎯⎯
|
||||
|
||||
FAIL tests/unit/SceneCanvas.test.ts > SceneCanvas > does not request or render the scene for reduced motion
|
||||
FAIL tests/unit/SceneCanvas.test.ts > SceneCanvas > does not request or render the scene for saved Static mode
|
||||
AssertionError: expected [] to have a length of 7 but got +0
|
||||
|
||||
- Expected
|
||||
+ Received
|
||||
|
||||
- 7
|
||||
+ 0
|
||||
|
||||
❯ tests/unit/SceneCanvas.test.ts:95:9
|
||||
93| expect(
|
||||
94| wrapper.findAll(".journey-poster-composition > span"),
|
||||
95| ).toHaveLength(7);
|
||||
| ^
|
||||
96| expect(wrapper.find(".journey-poster__sun").exists()).toBe(true);
|
||||
97| expect(wrapper.find(".journey-poster__road").exists()).toBe(true…
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/9]⎯
|
||||
|
||||
FAIL tests/unit/world-models.test.ts > procedural world models > disposes a composer and its passes exactly once
|
||||
AssertionError: expected 0.39 to be greater than 0.54
|
||||
❯ tests/unit/world-models.test.ts:439:32
|
||||
437| expect(outputPass.dispose).toHaveBeenCalledOnce();
|
||||
438| expect(composer.dispose).toHaveBeenCalledOnce();
|
||||
439| expect(bloomPass.strength).toBeGreaterThan(0.54);
|
||||
| ^
|
||||
440| });
|
||||
441|
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/9]⎯
|
||||
|
||||
FAIL tests/unit/world-models.test.ts > procedural world models > keeps the grand tourer anatomy readable in desktop and portrait chase views
|
||||
AssertionError: expected 56 to be 66 // Object.is equality
|
||||
|
||||
- Expected
|
||||
+ Received
|
||||
|
||||
- 66
|
||||
+ 56
|
||||
|
||||
❯ tests/unit/world-models.test.ts:461:52
|
||||
459|
|
||||
460| const desktopCamera = createChaseCamera(16 / 9);
|
||||
461| expect((desktopCamera as { fov: number }).fov).toBe(66);
|
||||
| ^
|
||||
462| const desktop = projectedBounds(car.group, desktopCamera);
|
||||
463| expect(desktop.maxX - desktop.minX).toBeGreaterThan(0.28);
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/9]⎯
|
||||
|
||||
FAIL tests/unit/world-models.test.ts > procedural world models > reflows a visible portrait sign into its navigator-safe pose without a teleport
|
||||
AssertionError: expected 595.8091348948393 to be greater than or equal to 626
|
||||
❯ tests/unit/world-models.test.ts:818:37
|
||||
816| if (presentation === null) throw new Error("Missing navigator-safe…
|
||||
817| expect(sign.group.position.distanceTo(midpoint)).toBeGreaterThan(0…
|
||||
818| expect(presentation.bounds.top).toBeGreaterThanOrEqual(626);
|
||||
| ^
|
||||
819| expect(presentation.bounds.bottom).toBeLessThanOrEqual(690);
|
||||
820| resources.dispose();
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/9]⎯
|
||||
|
||||
FAIL tests/unit/world-models.test.ts > procedural world models > keeps a short-landscape left sign inside the narrow desktop roadside gutter
|
||||
AssertionError: expected -10.199278524338355 to be greater than or equal to 8
|
||||
❯ tests/unit/world-models.test.ts:884:38
|
||||
882| const presentation = sign.inspect(camera, 780, 493);
|
||||
883| if (presentation === null) throw new Error("Missing short-landscap…
|
||||
884| expect(presentation.bounds.left).toBeGreaterThanOrEqual(8);
|
||||
| ^
|
||||
885| expect(presentation.bounds.right).toBeLessThanOrEqual(265);
|
||||
886| resources.dispose();
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/9]⎯
|
||||
|
||||
FAIL tests/unit/world-models.test.ts > procedural world models > places a portrait navigator arrival below its full-width destination panel
|
||||
AssertionError: expected 595.8091348948393 to be greater than or equal to 626
|
||||
❯ tests/unit/world-models.test.ts:921:37
|
||||
919| if (presentation === null) throw new Error("Missing portrait navig…
|
||||
920| expect(presentation.bounds.left).toBeGreaterThanOrEqual(8);
|
||||
921| expect(presentation.bounds.top).toBeGreaterThanOrEqual(626);
|
||||
| ^
|
||||
922| expect(presentation.bounds.right).toBeLessThanOrEqual(382);
|
||||
923| expect(presentation.bounds.bottom).toBeLessThanOrEqual(690);
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/9]⎯
|
||||
|
||||
FAIL tests/unit/world-models.test.ts > procedural world models > grows a medium portrait navigator sign without enlarging the phone pose
|
||||
AssertionError: expected 122.59356940139988 to be less than or equal to 110
|
||||
❯ tests/unit/world-models.test.ts:958:32
|
||||
956|
|
||||
957| expect(phone.bounds.width).toBeGreaterThanOrEqual(85);
|
||||
958| expect(phone.bounds.width).toBeLessThanOrEqual(110);
|
||||
| ^
|
||||
959| expect(medium.viewportProfile).toBe("tall");
|
||||
960| expect(medium.bounds.width).toBeGreaterThanOrEqual(145);
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/9]⎯
|
||||
|
||||
FAIL tests/unit/world-models.test.ts > procedural world models > places route signs in their authored transition-safe corridors
|
||||
AssertionError: expected 656.9555824147709 to be less than or equal to 630
|
||||
❯ tests/unit/world-models.test.ts:1013:51
|
||||
1011| expect(experiencePresentation?.corridor).toBe("right");
|
||||
1012| expect(experiencePresentation?.bounds.top).toBeGreaterThanOrEqual(…
|
||||
1013| expect(experiencePresentation?.bounds.bottom).toBeLessThanOrEqual(…
|
||||
| ^
|
||||
1014|
|
||||
1015| sign.update(null);
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/9]⎯
|
||||
|
||||
|
||||
Test Files 2 failed | 47 passed (49)
|
||||
Tests 9 failed | 653 passed (662)
|
||||
Start at 04:04:19
|
||||
Duration 23.81s (transform 17.57s, setup 0ms, import 30.29s, tests 45.44s, environment 19.53s)
|
||||
|
||||
BIN
docs/reviews/evidence/midnight-expressway/before-desktop.png
Normal file
|
After Width: | Height: | Size: 685 KiB |
|
After Width: | Height: | Size: 195 KiB |
BIN
docs/reviews/evidence/midnight-expressway/before-phone.png
Normal file
|
After Width: | Height: | Size: 143 KiB |
BIN
docs/reviews/evidence/midnight-expressway/blender-coachwork.png
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"browser": "152.0.7977.64",
|
||||
"renderer": {
|
||||
"renderer": "ANGLE (Intel, Mesa Intel(R) Graphics (ARL), OpenGL ES 3.2)",
|
||||
"vendor": "Google Inc. (Intel)",
|
||||
"canvas": {
|
||||
"width": 1425,
|
||||
"height": 900
|
||||
},
|
||||
"dpr": 1.0000000298023224
|
||||
},
|
||||
"samples": [
|
||||
{
|
||||
"label": "1440x900 opening high preference",
|
||||
"frames": 379,
|
||||
"seconds": 6.004099999999999,
|
||||
"averageFps": 63.12353225296048,
|
||||
"p50Ms": 16.600000000000364,
|
||||
"p95Ms": 20.900000000001455
|
||||
},
|
||||
{
|
||||
"label": "1440x900 infrastructure reading",
|
||||
"frames": 377,
|
||||
"seconds": 6.012599999999998,
|
||||
"averageFps": 62.70165984765328,
|
||||
"p50Ms": 16.600000000002183,
|
||||
"p95Ms": 20.900000000001455
|
||||
},
|
||||
{
|
||||
"label": "1440x900 native scrolling and coasting",
|
||||
"frames": 393,
|
||||
"seconds": 6.0125,
|
||||
"averageFps": 65.36382536382537,
|
||||
"p50Ms": 16.599999999998545,
|
||||
"p95Ms": 20.899999999997817
|
||||
},
|
||||
{
|
||||
"label": "390x844 opening high preference",
|
||||
"frames": 1132,
|
||||
"seconds": 6.000000000000001,
|
||||
"averageFps": 188.66666666666663,
|
||||
"p50Ms": 4.199999999999818,
|
||||
"p95Ms": 8.400000000000546
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"notes": "Headed host Google Chrome in an isolated temporary profile. Native devicePixelRatio 1. High maximum-quality preference; normal adaptive quality behavior preserved. requestAnimationFrame measurements; no profiler injection."
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"baseline": {
|
||||
"text": "8621cc0f9fab07e86edb0308cc7b7f9d7ce519b2a55b8a39bd1a01f6820b1520",
|
||||
"rendered": "59a5678b6efe114292c5113ba7922c427d6911823a980ccbe43c284adabf80f5",
|
||||
"head": "b5571c4ca03daff042ebc496a5c4e01ea70fee7ed2fab08d4b0b126440ab790d",
|
||||
"links": "11e4e3627e0d5f1bf1140e7c73ab86a6d305ceaf8286c0649e4a4a3266e48977",
|
||||
"sections": [
|
||||
"start",
|
||||
"profile",
|
||||
"experience",
|
||||
"infrastructure",
|
||||
"selected-builds",
|
||||
"additional-work",
|
||||
"toolkit",
|
||||
"contact"
|
||||
],
|
||||
"scene": "static",
|
||||
"canvas": 0
|
||||
},
|
||||
"implementation": {
|
||||
"text": "8621cc0f9fab07e86edb0308cc7b7f9d7ce519b2a55b8a39bd1a01f6820b1520",
|
||||
"rendered": "59a5678b6efe114292c5113ba7922c427d6911823a980ccbe43c284adabf80f5",
|
||||
"head": "b5571c4ca03daff042ebc496a5c4e01ea70fee7ed2fab08d4b0b126440ab790d",
|
||||
"links": "11e4e3627e0d5f1bf1140e7c73ab86a6d305ceaf8286c0649e4a4a3266e48977",
|
||||
"sections": [
|
||||
"start",
|
||||
"profile",
|
||||
"experience",
|
||||
"infrastructure",
|
||||
"selected-builds",
|
||||
"additional-work",
|
||||
"toolkit",
|
||||
"contact"
|
||||
],
|
||||
"scene": "static",
|
||||
"canvas": 0
|
||||
},
|
||||
"sameText": true,
|
||||
"sameRenderedText": true,
|
||||
"sameMetadata": true,
|
||||
"sameLinks": true,
|
||||
"noJavaScript": {
|
||||
"sections": 8,
|
||||
"characters": 12333
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 311 KiB |
BIN
docs/reviews/evidence/midnight-expressway/desktop-contact.png
Normal file
|
After Width: | Height: | Size: 473 KiB |
BIN
docs/reviews/evidence/midnight-expressway/desktop-experience.png
Normal file
|
After Width: | Height: | Size: 387 KiB |
|
After Width: | Height: | Size: 218 KiB |
BIN
docs/reviews/evidence/midnight-expressway/desktop-profile.png
Normal file
|
After Width: | Height: | Size: 479 KiB |
|
After Width: | Height: | Size: 349 KiB |
BIN
docs/reviews/evidence/midnight-expressway/desktop-toolkit.png
Normal file
|
After Width: | Height: | Size: 224 KiB |
BIN
docs/reviews/evidence/midnight-expressway/hardware-desktop.png
Normal file
|
After Width: | Height: | Size: 766 KiB |
|
After Width: | Height: | Size: 250 KiB |
BIN
docs/reviews/evidence/midnight-expressway/hardware-phone.png
Normal file
|
After Width: | Height: | Size: 199 KiB |
21
docs/reviews/evidence/midnight-expressway/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>Midnight expressway — visual review</title>
|
||||
<style>
|
||||
:root{color-scheme:dark;font-family:system-ui,sans-serif;background:#070d15;color:#e6edf2}*{box-sizing:border-box}body{margin:0}header,main,footer{width:min(1280px,calc(100% - 48px));margin:auto}header{padding:64px 0 40px;border-bottom:1px solid #29404d}p{color:#aebdc7;line-height:1.65;max-width:780px}h1{font-weight:500;font-size:clamp(40px,6vw,76px);letter-spacing:-.06em;line-height:1;margin:18px 0 28px}h2{font-size:30px;font-weight:500;letter-spacing:-.03em;margin:0 0 12px}h3{font-weight:500}.eyebrow,figcaption,label{font-size:12px;letter-spacing:.09em;color:#a8cbd0}.eyebrow{text-transform:uppercase}a{color:#a3e1e4;text-underline-offset:5px}a:focus-visible,input:focus-visible,video:focus-visible{outline:2px solid #f39378;outline-offset:6px}.actions{display:flex;gap:24px;flex-wrap:wrap;margin-top:26px}.actions a{padding:12px 18px;border:1px solid #42616c;text-decoration:none}section{padding:54px 0;border-bottom:1px solid #243744}.compare{position:relative;overflow:hidden;border:1px solid #36505d;margin-top:24px;background:#0c111a;--cut:50%}.compare img{width:100%;display:block}.compare .old{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--cut)) 0 0)}.compare::after{content:'';position:absolute;top:0;bottom:0;left:var(--cut);width:2px;background:#bfe8e8}.badge{position:absolute;z-index:1;top:12px;background:#060b12df;padding:7px 10px;font-size:11px;letter-spacing:.13em}.before{left:12px}.after{right:12px}.slider{display:flex;align-items:center;gap:18px;margin-top:16px}input[type=range]{flex:1;accent-color:#9ad8dd}.grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.grid img,video,.wide{width:100%;display:block;border:1px solid #2b424e}figure{margin:0}figcaption{line-height:1.7;margin-top:12px;letter-spacing:.02em}.phones{max-width:760px;margin:30px auto 0}.phones img{max-width:390px;margin:auto}.note{padding:20px 24px;border-left:2px solid #f0957c;background:#0e1923}footer{padding:36px 0 56px;font-size:13px}@media(max-width:650px){header,main,footer{width:calc(100% - 28px)}header{padding-top:36px}.grid{grid-template-columns:1fr}.phones{grid-template-columns:1fr 1fr;gap:12px}section{padding:38px 0}.badge{font-size:9px;padding:5px}.actions{gap:12px}}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header><div class="eyebrow">Portfolio / September 2026 / Local visual review</div><h1>Midnight<br>expressway.</h1><p>A more physical road, coachbuilt silver bodywork, illuminated route signs, and a layered coral horizon. The approved portfolio content and adaptive soundtrack remain intact.</p><div class="actions"><a href="http://localhost:41821" target="_blank" rel="noopener">Open the live portfolio ↗</a><a href="#motion">Watch the journey ↓</a></div></header>
|
||||
<main>
|
||||
<section><div class="eyebrow">01 / The opening</div><h2>The same identity, a deeper world.</h2><p>Drag the divider to compare the merged baseline with this implementation. These are actual browser captures; moving objects naturally occupy different positions.</p><div class="compare" id="opening"><img src="after-desktop.png" alt="New expressway opening with detailed road, silver car, opaque cyan terrain and separated coral sun bands"><img class="old" src="before-desktop.png" alt="Approved previous opening"><span class="badge before">BEFORE</span><span class="badge after">AFTER</span></div><div class="slider"><label for="opening-range">COMPARE</label><input id="opening-range" type="range" min="0" max="100" value="50" aria-label="Opening before and after divider" oninput="document.getElementById('opening').style.setProperty('--cut',this.value+'%')"></div></section>
|
||||
<section id="motion"><div class="eyebrow">02 / Motion study</div><h2>Travel, settle, arrive.</h2><p>Actual hardware-backed Chrome capture: forward acceleration, coasting, reverse document scrolling, and navigation to Infrastructure, Selected builds, and Contact. Silent recording with the High maximum-quality preference and normal adaptive behavior.</p><video controls playsinline preload="metadata" poster="after-desktop.png" src="journey-motion.mp4"></video></section>
|
||||
<section><div class="eyebrow">03 / Route objects</div><h2>Signs with their own space.</h2><div class="grid"><figure><img loading="lazy" src="before-infrastructure.png" alt="Infrastructure in the approved baseline"><figcaption>Before — merged version.</figcaption></figure><figure><img loading="lazy" src="after-infrastructure.png" alt="New beveled Infrastructure sign clearly above its reading surface"><figcaption>After — beveled housing, luminous edges, inset label, and a reserved approach corridor.</figcaption></figure></div><div class="grid phones"><figure><img loading="lazy" src="after-phone-sign.png" alt="Infrastructure sign and reading surface on phone"><figcaption>Phone sign arrival. The canvas retains its original stacking order.</figcaption></figure><figure><img loading="lazy" src="narrow-infrastructure.png" alt="Infrastructure reading layout at 320 pixels wide"><figcaption>320 px reading layout after the sign has departed.</figcaption></figure></div></section>
|
||||
<section><div class="eyebrow">04 / Coachwork</div><h2>A more memorable grand tourer.</h2><img loading="lazy" class="wide" src="blender-coachwork.png" alt="Blender render showing articulated rear lamps, machined wheels, side channels and refined wing"><p>Editable Blender source retains the individual parts and look-development setup. The runtime export batches materials and preserves four independently rotating wheels.</p></section>
|
||||
<section><div class="eyebrow">05 / Small screens</div><h2>The night drive travels with you.</h2><div class="grid phones"><figure><img loading="lazy" src="before-phone.png" alt="Previous phone introduction"><figcaption>Before.</figcaption></figure><figure><img loading="lazy" src="after-phone.png" alt="New phone introduction"><figcaption>After.</figcaption></figure></div></section>
|
||||
<section><div class="eyebrow">06 / Evidence and arrival</div><h2>The work stays central.</h2><div class="grid"><figure><img loading="lazy" src="after-builds.png" alt="Selected builds with approved real medication tracker media"><figcaption>Unchanged project evidence, staged within the continuous world.</figcaption></figure><figure><img loading="lazy" src="after-contact.png" alt="Warm Contact arrival"><figcaption>Contact resolves into a warmer horizon and slower camera recovery.</figcaption></figure></div></section>
|
||||
<section><h2>Verified, with clear limits.</h2><p>Approved wording, links, metadata, section order, and all 15 approved media/audio files match the baseline. Asset validation, typecheck, client/SSR build, prerender, artifact verification, and transfer checks pass. Static and reduced-motion views retain the full content.</p><p class="note">Host Chrome uses the Intel hardware GPU: desktop samples averaged 63–65 fps across opening, reading, and native scrolling at 1440×900, with p95 frame time 20.9 ms. Physical phones and high-DPI displays remain unverified. The untouched baseline already had nine failing unit assertions; tests were preserved. Ready for visual review.</p><div class="actions"><a href="chrome-hardware-performance.json">Hardware performance</a><a href="content-preservation.json">Content comparison</a><a href="media-audio-preservation.json">Media and audio hashes</a><a href="baseline-checks.log">Baseline check log</a></div></section>
|
||||
</main><footer>Local review artifact · codex/midnight-expressway · Based on c9ac36e · No deployment</footer>
|
||||
</body></html>
|
||||
BIN
docs/reviews/evidence/midnight-expressway/journey-motion.mp4
Normal file
BIN
docs/reviews/evidence/midnight-expressway/landscape-contact.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 142 KiB |
BIN
docs/reviews/evidence/midnight-expressway/landscape-start.png
Normal file
|
After Width: | Height: | Size: 221 KiB |
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"assetCount": 15,
|
||||
"allIdentical": true,
|
||||
"assets": [
|
||||
{
|
||||
"asset": "nightdrive-afterglow.mp3",
|
||||
"sha256": "685687ad131d61c34e42bcee29af16a4c8180d788c67d75f2331fa9082a3a44e",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "nightdrive-afterglow.opus",
|
||||
"sha256": "693215397e8ae4c2c13a4a6e4cc74b0059fb26b396c7f35d99e0e2c3e738d4b1",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "nightdrive-drive-lift.mp3",
|
||||
"sha256": "edcb802938d3d1e53392f9ccd2e153f72a24b494c205ce6f556d73de5fe709ec",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "nightdrive-drive-lift.opus",
|
||||
"sha256": "d580e58039c9d700599cf100c96b50d4b5816d93a0af738a93a1e8646fbb7566",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "nightdrive-intro.mp3",
|
||||
"sha256": "008794ebd7f545c32f19aab4ada6aba40d9fc3341830a66e77f21d87a41c009b",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "nightdrive-intro.opus",
|
||||
"sha256": "561c05cea71d0920ec323375644039007b91b0a4c346dc663e233ad42d6ab490",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "nightdrive-main.mp3",
|
||||
"sha256": "796de8247c4cb8012d7c6883b534112ac09a40255a2c33cd68acf0f87c066659",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "nightdrive-main.opus",
|
||||
"sha256": "81933fc8e589428ef07fb265572a79975f183848b6a23616cb289e33fe3fb88c",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "project-currency-converter.webp",
|
||||
"sha256": "57159ae72a075ba5317217233c3c0eb210a485c51b5f2c37b5ed156d5ea37efb",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "project-medication-data-settings.webp",
|
||||
"sha256": "d951dd723047b737ab6a7da46b82f3f3f3aca7ec8853314f74ac57e1950ce1ba",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "project-medication-logs.webp",
|
||||
"sha256": "d34b2d41855e6dca4762fb9fc7728b64a94fef60de36149e465ce50821bc1dc7",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "project-medication-notification-settings.webp",
|
||||
"sha256": "d2fe0076d6581e76c361cb656350c58f6685f6fe91c5b6c5871e60977e8d5be7",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "project-opinion-final-distribution.webp",
|
||||
"sha256": "2f2f6d64b8bb4f79ecbce1a8bc486cf7bbdf4087eb4f10062a6fe889246dbdf1",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "project-opinion-polarization.webp",
|
||||
"sha256": "77f0d5076769e6e45b566c5f322d8f535686f9e9f928e18fe4c16b3dac989c43",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
},
|
||||
{
|
||||
"asset": "project-social-preview.webp",
|
||||
"sha256": "ed470760643ef3d413b6ca4a0e1434771fcc9b61b6ac34011feae77a13f2daca",
|
||||
"matchesApprovedManifest": true,
|
||||
"samePreparedBaselineAndPreview": true
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
docs/reviews/evidence/midnight-expressway/narrow-contact.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 50 KiB |
BIN
docs/reviews/evidence/midnight-expressway/narrow-start.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
39
docs/reviews/evidence/midnight-expressway/performance.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"renderer": "ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)",
|
||||
"hardwareVerified": false,
|
||||
"quality": "low",
|
||||
"samples": [
|
||||
{
|
||||
"viewport": "390x844",
|
||||
"seconds": 3.05,
|
||||
"frames": 95,
|
||||
"averageFps": 31.1,
|
||||
"p50Ms": 33.3,
|
||||
"p95Ms": 49.9
|
||||
},
|
||||
{
|
||||
"viewport": "1440x900",
|
||||
"seconds": 4.02,
|
||||
"frames": 48,
|
||||
"averageFps": 12,
|
||||
"p50Ms": 83.3,
|
||||
"p95Ms": 99.9
|
||||
}
|
||||
],
|
||||
"inactiveSignScene": {
|
||||
"drawCalls": 45,
|
||||
"triangles": 44572,
|
||||
"points": 160,
|
||||
"lines": 4586,
|
||||
"rendererGeometries": 34,
|
||||
"rendererTextures": 3,
|
||||
"programs": 21
|
||||
},
|
||||
"afterStaticHighLow": {
|
||||
"orphanedGeometries": 0,
|
||||
"orphanedTextures": 0
|
||||
},
|
||||
"limitations": "Software rendering with instrumentation. Physical devices and hardware frame rates unverified. Static quality removes all live canvases and clipping.",
|
||||
"scope": "Initial software renderer inspection only",
|
||||
"hardwareReport": "chrome-hardware-performance.json"
|
||||
}
|
||||
|
After Width: | Height: | Size: 84 KiB |
BIN
docs/reviews/evidence/midnight-expressway/phone-contact.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
docs/reviews/evidence/midnight-expressway/phone-experience.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 62 KiB |
BIN
docs/reviews/evidence/midnight-expressway/phone-profile.png
Normal file
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 124 KiB |
BIN
docs/reviews/evidence/midnight-expressway/phone-toolkit.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 227 KiB |
BIN
docs/reviews/evidence/midnight-expressway/short-contact.png
Normal file
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 158 KiB |
BIN
docs/reviews/evidence/midnight-expressway/short-start.png
Normal file
|
After Width: | Height: | Size: 439 KiB |
BIN
docs/reviews/evidence/midnight-expressway/static-phone.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
docs/reviews/evidence/midnight-expressway/tablet-contact.png
Normal file
|
After Width: | Height: | Size: 352 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 306 KiB |
BIN
docs/reviews/evidence/midnight-expressway/tablet-start.png
Normal file
|
After Width: | Height: | Size: 398 KiB |
BIN
docs/reviews/evidence/midnight-expressway/world-desktop.png
Normal file
|
After Width: | Height: | Size: 422 KiB |
BIN
docs/reviews/evidence/midnight-expressway/world-phone.png
Normal file
|
After Width: | Height: | Size: 175 KiB |