feat: swap the hero portrait for the skyline illustration - #2
Merged
Conversation
Removes cartoon-headshot.jpg. The new art could not just be dropped into the old slot. The hero cropped to a square (width/height 320 + aspect-ratio 1/1, object-fit cover), and the drawn frame is part of this artwork — a centre crop of the 1024x1536 source cut the frame's top and bottom edges and clipped the top of the head. The old cartoon only survived that because it had no frame. Show the full 2:3 instead; the portrait box goes 320x320 -> 320x480 and the hero row grows ~160px, with the text column still centred beside it. Also drops the 3.4MB portrait_skyline.png master. Under output: 'export' everything in public/ is copied to out/ and deployed, so an unreferenced 3.4MB file would still have shipped to every visitor. Ships a 640px-wide WebP derivative instead (2x the 300px display box). Encoding note: lossy beat lossless badly here — dense cross-hatching is high-entropy, so lossless WebP came out at 733KB vs 171KB for q80. Compared q80 against the master at true 300px display size; no visible difference. Net 3.4MB -> 171KB, which is also smaller than the 244KB cartoon it replaces. Verified: tsc clean, build green, 20/20 e2e, rendered ratio 0.667 at both 1440px and 390px, and out/images/ contains only the webp.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replaces the hero headshot with the hand-drawn NYC-skyline portrait, and removes the old cartoon.
The new art couldn't just be dropped into the old slot. The hero cropped its image to a square (
width={320} height={320}plusaspect-ratio: 1/1; object-fit: cover). The drawn frame is part of this artwork, so a centre crop of the 1024×1536 source cut the frame's top and bottom edges and clipped the top of the head — the old cartoon only survived that because it had no frame. So the portrait now renders at its full 2:3: the box goes 320×320 → 320×480 and the hero row grows ~160px, with the text column still centred beside it (align-items: centeron.hero-head).Also drops a 3.4MB file that was shipping for nothing.
portrait_skyline.pngwas already committed but referenced nowhere — and underoutput: 'export', everything inpublic/is copied toout/and deployed regardless. This ships a 640px-wide WebP derivative instead (2× the ~300px display box).Encoding note: lossy beat lossless badly here. Dense cross-hatching is high-entropy, so lossless WebP came out at 733KB vs 171KB for q80 — worth knowing if this art is ever re-exported. I compared q80 against the master at true display size and there's no visible difference. Net 3.4MB → 171KB, which is also smaller than the 244KB cartoon it replaces.
Test plan
npx tsc --noEmit— cleannpm run build— static export succeedsnpx playwright test— 20/20 (the no-horizontal-overflow matrix covers the taller hero)out/images/contains onlyportrait-skyline.webp— both PNGs goneNote
Deleting
cartoon-headshot.jpgremoves it from the working tree, not from history — same distinction as any deleted file. Nothing sensitive here, no action needed.