Changelog

Every release of leo.ridgwell.family, newest first.

All notable changes to leo.ridgwell.family are documented here. The format is based on Keep a Changelog, with sections always in the order Added, Changed, Fixed, Removed, Security, Deprecated. This is a complete rebuild of the original WordPress site, which moves to v1-leo.ridgwell.family, so this is v2. It uses Date Versioning (YY.MM.DD, the UTC release date, with -1, -2… for later releases the same day) since v26.11.07, its first stable release; v2.0.0 to v2.9.1 were pre-stable, on Semantic Versioning 2.x.y.

v26.11.08-3

Fixed

  • **Jobs on Ridgghrs no longer trip over each other's files.** The PHP jobs' containers run as root, so they left
  • root-owned files in the runner's work folder, and the next job running straight on Ridgghrs couldn't clear them (its checkout failed). Each container job now hands the folder back to the runner's own user when it finishes.

v26.11.08-2

Changed

  • **CI and Deploy fall back to Ridgghrs, the family's own runner,** when GitHub won't start a job (a spending limit or
  • billing hold stopped v26.11.08-1's deploy), as Ridgdash and Ridgarch already do. A small first job tests whether GitHub will run anything; if it can't start, every job runs on Ridgghrs (homelab-mascom) instead. Ridgghrs has Docker but no sudo, so the PHP jobs run there in the official php:<version>-cli images rather than setup-php.

  • **The deploy keeps its SSH key in the job's own temporary folder** (and deletes it afterwards), not in ~/.ssh,
  • since Ridgghrs is shared with the other repos' deploys. scripts/deploy.sh takes the key and known hosts from DEPLOY_SSH_KEY_FILE and DEPLOY_KNOWN_HOSTS_FILE when they're set.

v26.11.08-1

Fixed

  • **The cat gets kat.stuxie.dev's newest script,** so it says "Pat the cat" and remembers a bi cat pick from page to
  • page. The script's address now ends ?v=26.11.08: the old ?v= had been cached with the script from before those fixes.

v26.11.08

Changed

  • **The cat is now StuxieDev's kat,** loaded from kat.stuxie.dev as Olly and still called a
  • cat, so every Ridgwell site shares one cat that's looked after in one place. It looks and behaves as before, the footer's **Your cat** menu still swaps him for Lily, Poppy, Dougal or the bi cat (or none), and Cat Run still uses whichever one you picked. The choice is now kept as sdKat; an earlier choice saved as ljdrCat is moved over, so nobody loses theirs. The cookies and privacy pages say so.

Removed

  • **public/static/js/cat.js,** the site's own copy of the cat.

v26.11.07

Changed

  • **The first stable release, and the site is live.** leo.ridgwell.family moves from pre-stable
  • Semantic Versioning (2.x.y) to Date Versioning: from now on each release is its UTC release date as YY.MM.DD, with -1, -2… for later releases the same day. There is no 3.0.0; this is v26.11.07, and it never goes back to 2.x.y (the commit scripts refuse).

  • **Coming soon mode is off by default.** The site has launched, so COMING_SOON_MODE now defaults to false (in
  • config.example.php and views/bootstrap.php's fallbacks); turn it on in the server's config.php to show the coming soon page again.

v2.9.1

Changed

  • **The coming soon and maintenance pages are light and Ridgwell blue,** in the same style as stuxie.dev's: a light
  • background with soft Ridgwell-blue glows drifting slowly behind the card (held still with reduced motion), dark text and blue links, whichever theme the visitor picked. The bouncing LJDR logo now changes between three Ridgwell blues at each wall instead of the rainbow, so it shows up on the light background.

v2.9.0

Added

  • **A bouncing LJDR logo on the coming soon and maintenance pages,** like an old DVD player's screensaver (as on
  • Ridgauth's sign-in page): the LJDR mark's shape drifts across the blue background behind the card, changes colour at every wall it hits, and lands exactly in a corner every 117 seconds (the first 61 seconds in), with a little pop. Pure CSS (body.holding::after in site.css); hidden on small screens and with reduced motion.

v2.8.10

Fixed

  • **Cat Run** no longer gets stuck on its theme switch: after clicking the theme (or sound) button, that button kept
  • focus, so pressing Space could press it again instead of starting or jumping. A click on the game's buttons now hands focus straight back to the game, and Space or Up always reaches the game even when a button has focus. The buttons still work from the keyboard with Enter.

v2.8.9

Fixed

  • The README says the screenshots job also runs when its scripts change, and that only the site's own "429 Too Many
  • Requests" answers count (as of v2.8.7); CONTRIBUTING.md lists the Node tests (cr.test.mjs, screenshots.test.mjs) that CI runs.

v2.8.8

Fixed

  • Stuxie.com's portfolio screenshot is light only. The site has no dark mode, but its embedded Twitch player shows
  • something different each time (its chat, or a cookie notice), which made the dark capture look different enough to keep.

v2.8.7

Fixed

  • A portfolio screenshot is only counted as rate limited ("429 Too Many Requests") when the site itself is, not an
  • embed from elsewhere on it: Stuxie.com's archived copy embeds a Twitch player, and Twitch rate limiting the screenshot job kept it from ever being re-taken.

v2.8.6

Changed

  • Debug mode stays on as you click around: while a page is in debug mode (?debug, with DEBUG_MODE on), every
  • link to another page keeps ?debug, including the portfolio's filters. Links to files (like the CV's PDF) and other sites don't change, and nothing changes outside debug mode.

v2.8.5

Changed

  • Portfolio screenshots of archived copies (on archives.ljdr.uk, archives.stuxie.dev, archives.stuxiedev.com and
  • archives.ridgwell.network) are cropped to just the archived site, without the archive's own header, banner and footer; screenshot.hide works inside it too. As on stuxie.dev.

Fixed

  • The LJDR Website v1 and StuxieDev Website v1 screenshots hide their cookie popup, which covered the page.
  • A screenshot answered "429 Too Many Requests" (as the four old Stuxedo pages were in today's run) is retried
  • twice, after 20 and 40 seconds, and then fails so the last good screenshot stays, rather than saving a "Too Many Requests" or half-styled page. As on stuxie.dev.

v2.8.4

Added

  • Portfolio screenshots of replaced, archived and defunct projects can come from an archiveUrl (the project's copy
  • in the archives), so its url can stay its original address; a defunct project with one gets a screenshot too. As on stuxie.dev.

Fixed

  • A replaced or archived project whose dark screenshot files go missing is captured again, rather than kept with its
  • dark version gone (as on stuxie.dev).

v2.8.3

Changed

  • The Shift easter egg changes the X link's name too: it says **Twitter**, and **X** while Shift is held (on the
  • Contact page, and in the icon links' labels it reads "Twitter").

v2.8.2

Added

  • **A Shift easter egg**, as on links.stuxie.dev: the X link shows the old Twitter bird, and turns into the X mark while
  • you hold Shift. It works on every page, the coming soon page included.

v2.8.1

Added

  • **Bluesky** (@leo.ridgwell.family) with the other social links: the header, footer, Contact page and the coming
  • soon page.

Changed

  • The footer says **"Created with ♥ / code / coffee by Leo"**, with the love, code and coffee icons the other Ridgwell
  • Family sites use, instead of just the heart.

v2.8.0

Added

  • **/cv is a page**: the CV in the browser's own PDF viewer, with **Download my CV** (saves the PDF rather than
  • opening it) and **Open in a new tab**. Browsers that can't show a PDF inside a page, like most phones, get a note pointing at those buttons instead of an empty frame. It's in the sitemap.

Changed

  • Every CV link (the home page, Experience, Contact and the footer) goes to /cv instead of straight to the PDF.

v2.7.0

Added

  • **Light and dark screenshots.** Each project is now screenshotted as a browser in light mode and in dark mode,
  • and its card shows the one that matches the site's theme, switching the moment you flip it (the hidden one isn't downloaded). When a site looks the same either way, only one is kept: 33 projects have both, 8 have no dark mode. Archived pages got a one-off dark capture. screenshot.colorScheme captures just one.

v2.6.5

Fixed

  • **The experience timeline's dots sit centred on its line.** They were sized without their border, which made them
  • 26px wide instead of 18px and pushed them 4px off the line.

v2.6.4

Changed

  • The StuxieDev stat reads **Since 2016**, "building as StuxieDev", after all.

v2.6.3

Fixed

  • The home page's last stat reads **2016**, "since building as StuxieDev", instead of "building as StuxieDev
  • since".

v2.6.2

Fixed

  • Nor do they require every screenshot on record to be for a project still in the portfolio: the daily job deletes a
  • removed project's screenshot on main, so removing a project on test would have failed CI until then.

v2.6.1

Fixed

  • The screenshot tests no longer require every project to have a screenshot already: a new project gets its first
  • one when the daily job runs on main, so that check would have failed CI on test in the meantime. They check that every screenshot on record is for a real project, with its files there.

v2.6.0

Added

  • **The portfolio's screenshots and icons update themselves**, as stuxie.dev's do. A daily workflow
  • (.github/workflows/screenshots.yml) screenshots every active project, and every replaced or archived one once, in headless Chromium (scripts/screenshots.mjs), and refreshes any icon whose original changed (scripts/icons.mjs, from data/icons.json), then commits what changed to main and deploys it. All 41 capturable projects have their first screenshots.

  • screenshot and iconThemed fields for a project, and tests for the screenshot plan, the manifest and the icon
  • list.

Changed

  • **The portfolio's cards look like stuxie.dev's**: until a project has a screenshot (and while it's in
  • development), its icon sits on a glow in the project's own hue instead of a Ridgwell blue panel. Screenshots zoom slightly on hover, and archived and defunct ones are a little desaturated.

  • **The Stux brands' icons** are their own light and dark versions at full size, from their global.media domains,
  • shown to suit the theme.

Fixed

  • **The cat no longer glitches when you edge away from it slowly.** It now gets up only once the pointer is 72px
  • away, and sits as soon as it arrives, instead of running on the spot.

Removed

  • The hand-made screenshots and single-version brand icons the automatic ones replace (Gaymer.social, which is
  • defunct, keeps its screenshot).

v2.5.2

Changed

  • **The home page photo floats gently**, as stuxie.dev's avatar does, and so does the LJDR logo on the coming soon and
  • maintenance pages. Both stay still for reduced motion.

Fixed

  • The "Open to new roles" badge sits centred across the bottom edge of the photo, floating with it, instead of
  • hanging off its bottom-left corner.

v2.5.1

Fixed

  • CI runs the cat and secret checks as node --test tests/cr.test.mjs: Node 22 reads node --test tests/ as a
  • file and fails.

v2.5.0

Added

  • **The cat**, the same feature as stuxie.dev's kat: a little pixel cat that follows your pointer (or your taps) around
  • every page, sits by it, dozes off when left alone, is happy when patted and leaves for the visit on a double-click. It's **Olly** by default, in his blue jumper; the footer's **Your cat** menu swaps him for Lily, Poppy or Dougal (from cats.ridgwell.family), or stuxie.dev's bi cat, or none, remembered in this browser as ljdrCat. Original pixel art drawn in code, no images, nothing sent anywhere, and it stays away for reduced motion.

  • **A hidden secret**, as on stuxie.dev, in Ridgwell blue with the same cats. It remembers its own couple of things as
  • ljdrSecret. Its script is built from scripts/src/cr.js, and its trigger is sealed into site.js, which names none of it.

  • The Cookies Policy lists both, and CI checks the seal, the build and the cat picker.

v2.4.4

Fixed

  • **The coming soon and maintenance pages show the LJDR logo**, not Leo's photo. The photo stays on the home page.

v2.4.3

Changed

  • **Ridgwell Social's portfolio icon** is now the badge-style one Ridgwell Social and the Projects site use: the
  • family emblem on a round navy avatar with a Fediverse badge (ridgwell-social.webp), in place of v2.4.2's speech bubble.

v2.4.2

Changed

  • **Ridgwell Social's portfolio icon** is now its own icon ("Ridgsoci", the blue speech bubble with an "@"), the
  • same one Ridgwell Social and Ridgdash use.

v2.4.1

Removed

  • l.stux.ie is no longer one of this site's short link domains: it's stuxie.dev's own, and that site handles it the
  • same way (its short links to v1.stuxie.dev, everything else to stuxie.dev). l.ljdr.uk is unchanged.

v2.4.0

Added

  • **The original site's short link domains**, l.ljdr.uk and l.stux.ie, now point at this site. Their Hum short
  • links (l.ljdr.uk/b/1Na) still open the post on the original site at v1-leo.ridgwell.family; every other address on them goes to the same address here, where the original site's addresses redirect to their new homes.

  • **Addresses only the original site has** go to the same address on v1-leo.ridgwell.family: its uploads,
  • portfolio items, category, tag and author pages, ?p= links and Hum short links. They work in maintenance and coming soon mode too, so old links keep working before launch.

Changed

  • The README and deploy script name the server folder, ridgwell.family-leo, as the deploy path.

v2.3.1

Changed

  • The host is called by its name, **Stuxedo**, everywhere: the Privacy Policy, the Imprint, the README and the deploy
  • scripts.

  • Work now happens on the test branch, with pull requests into main; merging into main deploys.

v2.3.0

Added

  • **A "Pages" category** in the portfolio for the Stux brands' landing, holding and placeholder pages: the
  • instance, region, coming soon, maintenance, service and client pages of Stux.Cloud, Stuxedo, Stux.Group, Stux.Dev, StuxAPIs and Stux.Digital, each with its earlier versions marked replaced (29 in all).

  • **LJDR Website** (this site, in development) and **LJDR Website v1** (the original WordPress site, replaced), and
  • **StuxieDev Website v1** (the original WordPress stuxie.dev, replaced) beside **StuxieDev Website**.

  • **A category filter** on the portfolio, beside the status filter; the two combine
  • (/portfolio?status=replaced&category=Pages).

Changed

  • **Versioning is now 2.x.y**, as this is v2 of leo.ridgwell.family (the WordPress site is v1). Earlier releases
  • are renumbered: v0.1.0 is v2.0.0, v0.2.0 is v2.1.0, v0.3.0 is v2.2.0 and v0.3.1 is v2.2.1.

  • **Archived versions link to their copies in the LJDR Archives** rather than to their own addresses.
  • SC Instance Page V1 is back, as **Stux.Cloud Instance Page v1** in the Pages category, replaced by v2.
  • StuxieDev is now **StuxieDev Website**, in development, as on stuxie.dev; its old screenshot (of the WordPress
  • site) moves to StuxieDev Website v1.

v2.2.1

Removed

  • **SC Instance Page V1** from the portfolio, with its screenshot.

v2.2.0

Added

  • **A "Replaced" status** for portfolio projects that something newer took over, listed after the active ones as
  • on stuxie.dev. A replaced project names its successor (replacedBy), and its card says "Replaced by …" with a link. php tests/data.php checks every successor is in the portfolio.

Changed

  • **RoboStux v2** (replaced by RoboStux), **RoboStux v1** (replaced by RoboStux v2) and **SC Instance Page V1**
  • (replaced by Stux.Cloud) are now marked replaced instead of archived.

v2.1.0

Added

  • **Ridgwell Social in the portfolio**: social.ridgwell.family, the family's own Fediverse server (GoToSocial, with
  • a custom Ridgwell Family theme), listed as in development, at the top of the portfolio.

  • **An "In development" status** for portfolio projects, listed first, with its own filter and badge colour.
  • **Project icons**: a project without a screenshot yet can set icon, shown on a Ridgwell blue panel in its card.

Fixed

  • tests/pages.sh now works in Git Bash on Windows (it wrote Git Bash paths into a PHP file, which Windows PHP
  • couldn't open).

v2.0.0

Added

  • **A completely new leo.ridgwell.family, built from scratch**, replacing the WordPress and Divi site, which moves
  • to v1-leo.ridgwell.family. Plain PHP 7.4+, CSS and JavaScript with no framework and no build step: one stylesheet, one small script and inline SVG icons.

  • **The Ridgwell look, kept**: Ridgwell blue #0f8bff and the Ridgwell blue gradient (#0f8bff to #0c71c3) with
  • Poppins throughout, self-hosted (SIL Open Font License). Light and dark themes follow your device, with a switch in the header that remembers your choice.

  • **Every page from the original site**, with its content carried over: Home, About, Experience (work, skills,
  • education and certifications), Portfolio (13 projects, filterable by status), Reports (The Future of Quantum Computing, and the Game Stats Discord Bot uni report, at their original addresses) and Contact.

  • **Content as data**: the portfolio, experience and reports live in data/, so updating them means editing a JSON
  • file, not a page. php tests/data.php checks them.

  • **Redirects from the original site's addresses**: /about/me, /about/experience, /about/portfolio,
  • /contact-me, the blog, the regional privacy and cookie pages and more go to their new homes, and /cv goes to the CV.

  • **Boring Legal Stuff** at /legal, with the Privacy Policy, Terms and Ethics, Cookies Policy, Imprint, Disclaimer
  • and Opt-Out Preferences.

  • **Maintenance, coming soon and debug modes** in config.php (copied from config.example.php). Coming soon mode
  • is on by default, pointing visitors to the original site until launch.

  • **A Fediverse link** to @leo on the Ridgwell Family's GoToSocial server (SOCIAL_URL).
  • dev-server.sh/.bat for local development (dev mode on by default, --no-dev-mode to see production),
  • commit.sh/.bat for releases, a changelog page, a sitemap (/sitemap and /sitemap.xml) and a 404 page.

  • **CI** on PHP 7.4 to 8.4 (lint, data checks, every page in every mode, version rules) and **automatic deploys to
  • Stuxedo** over SSH on every push to main.

Changed

  • The contact form is replaced by direct email, phone and social links, so the site collects nothing.

Removed

  • WordPress, Divi, the cookie consent banner and every third-party script. The site sets no cookies.
  • The empty blog; its addresses redirect to the reports.