/changelog

What shipped, and when

Every commit that has shipped to this site, newest first, grouped by the week it went out. Read straight from git at build time, so it's the real history rather than a tidied-up version of it.

Week of 24 August 2026

28 commits
  • c4db4baSearch what each project actually says26 August
  • fdb19e2Broaden the hire teaser and show a condensed savings receipt26 August
  • f1a49b9Lift TL;DR out of the box and size it up26 August
  • 1a29fc5Label the case-study summary TL;DR26 August
  • 26173ebPut the point of each case study at the top26 August
  • f7c545aSit the playful links in their own footer column26 August
  • 6806e64Let the footer group reach three columns26 August
  • 5bb4e4eDeepen the clone before reading the ship log26 August
  • e20cba7Publish what shipped, and when26 August
  • 3e884ecCentre the AI brief above the ask26 August
  • ab70a39Offer the AI brief before asking for a chat26 August
  • 2fd0457Hand the whole site over as plain text26 August
  • 3e8f030Open the palette with a bare slash too26 August
  • 58dcaa6Hand out hints, and answers for the stuck26 August
  • e4191aeLeave the page alone and the wordmark bounces26 August
  • 199c96dPut back a space the compiler ate26 August
  • 1567513Wrap the long footer group into two columns26 August
  • 9806157Put a torch behind torch mode26 August
  • 290b6d5Give every egg in the cabinet a trophy26 August
  • ea62685Show the last commit in the footer26 August
  • e7074b8Measure the devtools gate on the outer window26 August
  • 8166615Add the trophy cabinet, and time the hunt26 August
  • 19c5512Turn the lights off with a torch26 August
  • 0f6e7fcRender the nav once, in the root layout26 August
  • 2981785Route nav page links client-side26 August
  • c53f8f7Blur the page in on route changes26 August
  • aa37634Lead the savings receipt with the committed total24 August
  • cb7e9b4Point at my Google Business Profile24 August

Week of 17 August 2026

68 commits
  • b643375Add a live receipt of what I've saved clients23 August
  • 2a5d2a4Show a launch date on every shipped project23 August
  • c4b4732Put WAKOOS above Skin Defence in the project list23 August
  • d4891f9Use the desktop Lighthouse pair on the WAKOOS case study23 August
  • 7e5ce28Write up the WAKOOS rebuild23 August
  • d4796d2Say where the theme toggle is on mobile21 August
  • 82bdf68Bind the space game's thumb pad21 August
  • bf1b051Say where my name is in the right-click hint21 August
  • 3b8d000Revert "Make the mobile menu a full-screen panel"21 August
  • c730e7dMake the mobile menu a full-screen panel21 August
  • 2790521Point people at the easter eggs21 August
  • 24bd60eGive the mobile menu icons, an animation and headings21 August
  • 8b4234cSearch the writing itself from ⌘K20 August
  • fec143aMatch the hire CTA and label the case-study buttons20 August
  • b871461Give the case-study CTAs the same buttons as the hero20 August
  • f685c26Give posts a way to be shared20 August
  • 6f1101aSay how old the Now page is, not just its date20 August
  • 722d7deKeep the Sanity client out of the browser20 August
  • d383f77Send case-study readers to the next one20 August
  • a267e55Paint the nav's backing before the JS arrives20 August
  • 5dc0338Stop the nav sending readers back to the home page20 August
  • 17df43cGive the case studies a way to be skimmed20 August
  • a31a22eLet post sections be linked to20 August
  • e31f6ccMake the blog tags do something20 August
  • a6613b6Say how long a post takes before it's opened20 August
  • ccbb542Give the command palette something to click20 August
  • c2e0938Make the 404 quote the page you asked for20 August
  • 69cd9d3Stamp the footer with the build it came from20 August
  • 9b45570Keep the text-fragment check next to the code20 August
  • 3fb617dMake the quote links actually resolve20 August
  • 1ef4ab3Put the blog in the command palette20 August
  • 8d8f62dTell browsers the text files are utf-820 August
  • 3ab207fSilence no-img-element on the two deliberate img tags20 August
  • 1440d5aRead the grid's media queries as a store20 August
  • 062aa66Point the img lint directive at the img20 August
  • 6151c6eStop linting the Sanity Studio bundles20 August
  • 6566450Put the intro back within reach20 August
  • c6d7e2dPlay the intro for first-timers only20 August
  • f450127Say hello to anyone coming back20 August
  • d006062Read the visitor's clock on the contact card20 August
  • 19e9886Serve the CV to anyone who would rather curl than click20 August
  • b9ecabcGive the page something to say on paper20 August
  • 9980d44Let visitors edit the page themselves20 August
  • 37d773aPoint every internal link at its trailing slash20 August
  • 16f12a3force push17 August
  • a43aea2Render the hero before the JavaScript arrives17 August
  • 5f0acdfGive Keep reading the same card as the home page17 August
  • 2dd8a9aLet the posts point at each other17 August
  • 6ee99dcFold the intro lab into the workbench17 August
  • a16a8eaLet the card own the click17 August
  • 4c8e51dSay out loud where the avatar goes17 August
  • 0db7120Hide the sliver the feather left behind17 August
  • c7a77faClose the seam and set the ring turning17 August
  • 315e4eeDouble the ring17 August
  • 730b5fdStop the ring stepping round the corner17 August
  • a2e0f75Put the ring on the edge and the edge on a link17 August
  • fb489f4Wrap the progress bar around the avatar17 August
  • e1d7335Make the motion switch mean it17 August
  • 3ef6100Send a spark round the rim on the way past17 August
  • c75525fTake the crop from the source, not the copy17 August
  • 945026dTrade the frame for a face17 August
  • a72cbaaPut a face to the name17 August
  • 2bef5bdSay who you are in more than one place17 August
  • 0864821Give the results a trail to show instead of a URL17 August
  • e5a4bd3Write down the six things the list had to learn the hard way17 August
  • f24dbd0Tell the crawlers which doors are actually open17 August
  • 567e5edPoint every canonical at the door people actually walk through17 August
  • 6db9cf8Walk the climb before asking anyone else to17 August

Week of 10 August 2026

41 commits
  • 211b600Put the eggs on show without leaving the page16 August
  • 86e366fGive the mail a face to show16 August
  • 2e2c9f1Let a lost semicolon climb the page16 August
  • a35ee93Give a thumb something to press against16 August
  • 8522b11Let people out of the briefing16 August
  • f3d64b4Draw the controls as keycaps16 August
  • 4f15c6aBrief the pilot before the game starts16 August
  • 949e9f3Note the component-library post as published, add its cover prompt16 August
  • e3f4bf9Shoot the page a line at a time, nav included16 August
  • f3f5195Break the headline over its own lines16 August
  • 174f9e5Fit three posts across the blog index on desktop16 August
  • a19e96eAdd image prompts for the /friends post16 August
  • 4ee2821Add Josh to /friends16 August
  • 38ff9e4Paint the typed word's gradient on the word itself13 August
  • b083d35Type the hero headline, and warp the grid behind it13 August
  • 07f7cafShip one footer on every page13 August
  • 97751a7Ship one header on every page13 August
  • 54e5bf2Add a skip link, which the checklist said was missing13 August
  • ede83a3Note the Blueprint post as published, add its cover prompt13 August
  • 70483f8Add a /friends page, and group the footer links13 August
  • cf8e223Add Wakoos as a WIP project with a coming-soon deep dive12 August
  • c4fb942Surface the three reference pages in the footer12 August
  • 7d7a37aScale the range control, and four more featured components12 August
  • c126201Add a range control, and the Split Lip globe to drive with it12 August
  • d1b0e44Add the seven components I rebuild on every project12 August
  • 765dec2Point each check at somewhere it's actually been done12 August
  • 6123067Split Blueprint into /blueprint and /workbench12 August
  • 988e828Import Blueprint as /blueprint12 August
  • f8f2ceeCap the phone shots at three on mobile12 August
  • ccc9a68Light up the hero grid around the cursor12 August
  • 3b7fd7dAdd /brand — the design system in one page12 August
  • 1c222e7Brighten the nav links12 August
  • 70781baWipe an underline under the nav links on hover12 August
  • dcb727bTint the tech chips on hover12 August
  • fd4d034Dip the CTA buttons on press12 August
  • 70cb4feLink the featured work previews and zoom them on hover12 August
  • cad729aSweep the button shine across the featured work images12 August
  • 72a4219Add shine and swirling gradient hovers to the CTA buttons10 August
  • 2c95b33Zoom blog card covers on hover10 August
  • 8bdd798Show cover image previews on the home page blog cards10 August
  • 79f04a2blog image commands update10 August

Week of 3 August 2026

1 commit
  • 79e7305Add a favicon.ico and fix the sitemap's trailing slashes9 August

Week of 27 July 2026

7 commits
  • b6dc804Add a copy button and icons to the game results panel30 July
  • 98aa424Add a shoot-the-page spaceship game as the ninth easter egg30 July
  • 2fb697bReword Tiny Tails deep dive to be kinder about Laura29 July
  • f7fbb93Plain-English /hire copy for non-technical readers28 July
  • 52df6aaGenerate per-deep-dive OG images from a shared template28 July
  • cd05f39Add static RSS feed at /feed.xml with autodiscovery28 July
  • dbb734fAdd Tiny Tails Pet Care featured review to /hire28 July

Week of 20 July 2026

26 commits
  • 2ef8d0dAdd unlisted /hidden index linking the hidden pages24 July
  • 5171871Add unlisted /card business-card studio (noindexed)24 July
  • 3cdb0a8Add unlisted /od page (Ocean Diver revision), noindexed23 July
  • 63e4713Pause carousel auto-advance when arrows or dots are clicked23 July
  • f37b7b6Turn /hire featured reviews into an auto-scrolling carousel23 July
  • a92cb38Add Serena testimonial as a second featured review on /hire23 July
  • e3d5861Style /hire testimonials as iMessage conversation screens23 July
  • 052864cAdd Scott Butler testimonial as featured quote on /hire23 July
  • 08984efRe-add Tiny Tails Lighthouse gauge and a "more work" link on /hire22 July
  • d1e521fFeature Darras Index over Tiny Tails on /hire22 July
  • a3cab5eFix icon badge shape on /hire "what I can build" cards22 July
  • fc1f70bAdd /hire page and homepage teaser for website work22 July
  • 26ae06cDocument image-optimisation convention in CLAUDE.md21 July
  • f481b68Bump --color-faint to meet WCAG AA contrast21 July
  • 7505f29Convert project images to resized WebP21 July
  • 5888550Add SEO.md documenting Google/search setup20 July
  • 605bbadAdd WebSite + logo structured data for search results20 July
  • 5da0e2dAdd home-page metrics to Popcorn Simulation Gaming card20 July
  • bbe6c2eAdd home-page metrics to Split Lip Adventures card20 July
  • b964963Reorder projects: move Tiny Tails above Skin Defence20 July
  • b6114a5Mark Split Lip Adventures live and flesh out the deep dive20 July
  • b881211updated logs to write20 July
  • dacd717Update Darras Index card to new light palette20 July
  • a5e5c15Add before/after slider block to blog (Sanity + renderer)20 July
  • 77cbf01Add Lighthouse before/after scores to Split Lip deep dive20 July
  • b249f59Add before/after slider to Tiny Tails deep dive20 July

Week of 13 July 2026

38 commits
  • 15d2296Add Split Lip Adventures project with before/after deep dive19 July
  • 190a806idea update md17 July
  • b9f8399Add /uses page backed by Sanity17 July
  • 7605bc2Add icons to footer Now and Colophon links17 July
  • ebe65f5Add /colophon page and drive palette nav from site.ts17 July
  • ea94439Add Cloudflare Web Analytics beacon17 July
  • a3705cdCount ⌘K palette as an easter egg17 July
  • dfecbe7Add ⌘K command palette17 July
  • 5b147c2Add /now page backed by Sanity17 July
  • ed741c4Add recruiter-aimed hire() console egg17 July
  • 19d470eAdd Trustpilot rating to Covertime metrics17 July
  • 6797d8aAdd outcome metrics to project cards17 July
  • 76df79dAdd per-page OG cards for case studies and BlogPosting JSON-LD17 July
  • afd22b0Drop stale content TODOs; add portfolio ideas doc17 July
  • 33bb2ceadded blog idea17 July
  • d68e039Add no-account like button to blog posts17 July
  • dd289bbSmooth the matrix reveal front to remove blocky steps17 July
  • 5c38775Reveal the intro via a ragged matrix-rain sweep17 July
  • ce65a93Add one-time terminal-boot intro on the home page17 July
  • 9fabd9bblogs to write md16 July
  • 6c0ee2dAdd blog cover-image prompts doc16 July
  • 0ecf625Clarify seed.ndjson is gitignored in CLAUDE.md16 July
  • cac3d25Document adding blog posts via Sanity CLI import in CLAUDE.md16 July
  • 7afe587Add CLAUDE.md and rewrite README16 July
  • 821533aPull fresh Sanity content on every build15 July
  • 2c7bf20Fix inline-image ref parsing for mixed-case asset IDs15 July
  • 2ec1bb0Exclude studio/ from the root TypeScript build15 July
  • 52f1d22Add Sanity-backed blog15 July
  • 979e3efSnow (C): pile on the three hero CTA buttons15 July
  • 8570503Snow (C): let snow pile on the hero status pill15 July
  • 6362decSnow (C): flakes fall behind content, inset piles from rounded corners15 July
  • 3a973fdSnow: experimental canvas particle sim (option C)15 July
  • 50a031cSnow: pile-up effect (B) — settling caps on [data-snow] surfaces15 July
  • 3a4cdc1Snow: move layer behind content (z-index -10)15 July
  • f30b602Snow: label the mobile toggle "Disable/Enable snow"15 July
  • b3ea17fSnow: add nav/mobile toggle with red-slash off state15 July
  • 1c133d6Snow effect15 July
  • 67d2a73Portfolio: note both client sites now self-editable via Sanity + auto-deploy webhooks14 July

Week of 6 July 2026

1 commit
  • 3917de6Popcorn: go live, move above Skin Defence, note charity/GoFundMe6 July

Week of 29 June 2026

6 commits
  • 02d318dupdate home page for popcorn gaming2 July
  • 5695f13Label WIP project links as "Live preview" with a subtext note1 July
  • 0052cf0Add Skin Defence deep dive; add Popcorn Simulation Gaming project1 July
  • 318cfbeAdd trailer and poster gallery to Serendipity deep dive1 July
  • a2e8ee9Embed Tiny Tails trailer in deep dive1 July
  • 65b4f8dTiny Tails now in prod: drop WIP, feature it, add deep dive1 July

Week of 22 June 2026

45 commits
  • 1919682trigger build25 June
  • 9aa9694trigger build25 June
  • 16c005cMove the dark move around as a fun easter egg25 June
  • 052d65cchange easter egg to modal rather than toast23 June
  • aedb732Reword completion modal and rename hire → contact23 June
  • fb6f9cfAdd two-stage egg milestones: thank-you popup + completion modal23 June
  • eadb3c8Add an easter-egg discovery counter23 June
  • 195806bundo help comment23 June
  • 3334e67update terminal message23 June
  • 2a90d9dAdd an on-screen NES controller for the Konami code on mobile23 June
  • 50094ebAllow full-screen matrix on mobile and show the toggle everywhere23 June
  • b776f0bStop iOS zooming on terminal/menu inputs23 June
  • 270f3b2Make the terminal tappable to type on mobile/iOS23 June
  • c39d4f5Add full-screen matrix toggle to the easter-egg menu23 June
  • aa808b0Add easter-egg hints panel with a tappable mobile terminal23 June
  • 7e8bab2minor word fix on darras page22 June
  • cc37848Remove all GitHub profile references22 June
  • d5e225fslots easter egg update22 June
  • feea42eMake slots easier to win (~1 in 3)22 June
  • 1ddd937Fire confetti on the Konami easter egg22 June
  • 81e69c4Confetti burst on a slots jackpot22 June
  • 7842ce9Add a slots mini-game to the terminal22 June
  • 2753c73Make the terminal accept free input with command-not-found22 June
  • 1d56085Update CV PDF22 June
  • 1756d2aUpdate toggle for dark mode22 June
  • 3a4afbeAnchor the toggle toast next to the icon again (portaled, no clip)22 June
  • 86988ccLet the tamper toast linger after the boom22 June
  • 0a66f99Fix toggle toast vanishing — drop AnimatePresence for a CSS pop22 June
  • 7f8fbf5Portal the toggle message to a real toast outside the nav22 June
  • 67d0f3bKeep the toggle message visible longer (2.6s -> 4.2s)22 June
  • 37942d6Make the dark-mode toggle disable itself, then detonate if tampered22 June
  • 20dd88cExtract shared CV download helper and CaseStudy header22 June
  • 9772350Pop the toggle message above on mobile, below on desktop22 June
  • fa9ce64Show the dark-mode toggle in the footer on mobile only22 June
  • 8f27dd9Add humans.txt, devtools nudge, Esc-to-close, softer selection22 June
  • 33d333eAdd terminal commands: cv, hire, skills, coffee, ping, rm22 June
  • 2f2fadbShow live typing in the terminal egg22 June
  • 6b4b9eaWrap long terminal lines so they stay in the box22 June
  • dbb8130Improve egg discoverability22 June
  • 35db3bdAdd custom right-click menu on the logo22 June
  • c78458fAdd scroll-to-bottom trophy egg22 June
  • ec6551aExpand sudo egg into a mini-terminal22 June
  • f016dc9Add 404 page, CV fake-load and sudo easter eggs22 June
  • 9ed269dtab switch title change dev humor added22 June
  • 8464482added dark mode toggle dev humor22 June

Week of 15 June 2026

19 commits
  • 455febcAdded Konami easter egg17 June
  • 008a82cFix floating code background with random positions and fix fade out17 June
  • fe5eaafPonytail cleanup17 June
  • 16f1843Update matrix rain to only >1024 - do not cover content17 June
  • ae1607a- Homepage Contact — Email card: now click-to-copy (labelled "Email · click to copy"). On click the mail icon flips to a green tick and the address swaps to "Copied!" for ~2s. No more relying on mailto: you can't easily highlight on desktop. - Footer email icon: click-to-copy too — the mail glyph flips to a green tick with a small "copied" label.17 June
  • 02de167Copy email added to bottom of deep dive pages17 June
  • 54aa7601. Deep dive is now a prominent button, first — "Read the deep dive" renders as the filled primary button at the front of the button row, with "Live site" demoted to a secondary outline button. Clean hierarchy: the rich case study leads, the live site follows. (On cards without a deep dive, "Live site" stays primary.) 2. Removed all GitHub repo links — dropped from Serendipity and Tiny Tails (and the github field is gone from the project type), since the repos are private. Also fixed the URL-bar host fallback in ProjectPreview that referenced it. Your GitHub profile link in Contact/Footer stays — that's your public profile,17 June
  • e727f35Deep dive on Serendipity17 June
  • 37e85bfadd deep dive for darras index17 June
  • b490dd91. Favicon → <DH> — blue brackets, white DH, on a dark rounded square (src/app/icon.svg). Verified legible at 64/32/16px. Removed the default favicon.ico. 2. OG share image — a polished 1200×630 card (public/og.png) matching the site: <Daniel Hadaway/> brand, "West Sussex, UK" badge, big gradient Software Engineer headline, subline, and tech chips. Wired into both openGraph.images and twitter.images (verified the og:image tags are in the build → https://danielhadaway.dev/og.png). Now any link share on LinkedIn/Slack/iMessage shows a proper preview. 3. Pulsing green dot — the hero "Software Engineer · West Sussex, UK" badge dot now has a live animate-ping halo (disabled under prefers-reduced-motion).17 June
  • 3f8446dAdd WIP badge17 June
  • 009f143update easter egg source code position17 June
  • 9719325Mobile horizontal scroll — fixed at the root (verified canScrollX: false at 320 / 390px, document width = viewport width): 1. grid-cols-1 on both project grids → mobile columns can't outgrow the viewport. 2. min-w-0 through the shrink chain (cards, preview, chrome row) + the URL bar now truly truncates (min-w-0 flex-1 truncate) instead of forcing width — this was also silently affecting the long Skin Defence azure URL. 3. w-full min-w-0 on ProjectPreview so it fills (not exceeds) its card. 4. Covertime phone shots now wrap on mobile (no in-card scroll), smaller h-44, swipeable row on ≥sm. 5. overflow-x-hidden on <body> as the safety net you asked for — but nothing is causing overflow anyway now.16 June
  • a4f754cupdate matrix16 June
  • 850d02fadd matrix effect16 June
  • 7b823ceAll four tweaks are done and verified in the browser (local only — not committed):16 June
  • 03cd0f9Refresh hero stats, content and copy16 June
  • 05595f7Add Cloudflare Workers static-assets config16 June
  • 1006292Initial commit: Daniel Hadaway portfolio site16 June
🥚 0/3