Changelog

Every release of this site, newest first.

All notable changes to the StuxieDev Website 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 v2 of stuxie.dev (the original WordPress site is v1, now at v1.stuxie.dev). It uses Date Versioning (YY.MM.DD, the UTC release date, with -1, -2… for later releases the same day) since its first stable release, v26.11.07; the pre-stable releases before that used Semantic Versioning on 2.x.y.

v26.11.10-2

Changed

  • **Every social link goes through a stux.ie short link** (stux.ie/github, stux.ie/bluesky, stux.ie/twitch,
  • stux.ie/youtube, stux.ie/twitter, stux.ie/fediverse, alongside the existing stux.ie/fluxer and stux.ie/discord), in the footer, the contact section, the holding pages and the GitHub buttons, as on links.stuxie.dev. A profile that moves now only needs its short link changing on sm.lol. Each social in views/site.php also keeps its real profile address, which the pages list as <link rel="me"> tags and in the structured data's sameAs, so profile verification (on the Fediverse, for one) keeps working through the redirects

v26.11.10-1

Changed

  • **The bi kat's glasses are slimmer:** they made a white band right across its face, which looked odd next to the
  • other kats' eyes. Now they're two frames with a bridge, with its pink face showing around them, and its eyes behind them, in every front-facing pose (sitting, napping, happy, walking towards you, scratching, pawing at a wall)

Fixed

  • **The back of the bi kat's head had two white dots** (the arms of its glasses), which read as eyes on the wrong
  • side; from behind it's plain now, like the other kats

  • **Its alert pose showed blank white lenses:** it keeps its eyes now, with its mouth open

v26.11.10

Added

  • **The kat runs in oneko's 8 directions:** heading up the page it walks away from you (its back), heading down it
  • walks towards you (its front), and sideways or on the diagonals it runs side on, facing the way it's going, using the same frames and oneko's own rule for picking the direction, as the oneko spritesheets on kat.stuxie.dev do. Before, it always ran side on

v26.11.08-1

Changed

  • The portfolio's StuxieDev Status entry says its sites are "checked regularly", not "every 5 minutes": GitHub runs
  • the status checks' 5-minute schedule best-effort, often less often, and the status page now shows the real rhythm

v26.11.08

Changed

  • **kat.stuxie.dev's kat.js and userscript are cached for an hour instead of a day:** sites using the script tag
  • get a new kat within the hour, and a copy that a CDN caches before a release clears itself soon after. After the last release, Cloudflare and Stuxedo's own CDN kept the previous kat.js, which had been requested at the new release's ?v= before it was deployed, so stuxie.dev visitors still got the old kat. This release's new ?v= also fetches the fixed kat straight away

v26.11.07-2

Fixed

  • **Picking the bi kat on a site whose default is another kat wasn't remembered:** kat.js didn't keep a choice of
  • the bi kat, assuming it was the default, so on a site with data-kat="olly" the visitor got Olly back on the next page. It now keeps every choice but the page's own default (and every choice on a page set to random). Found by TheRidgwells, whose sites default to Olly

v26.11.07-1

Added

  • kat.js's data-name option: what the kat is called in its tooltip ("Pat the kat"), kat by default. The Ridgwell
  • family's sites use it to call theirs a cat. It's in kat.stuxie.dev's options table too

v26.11.07

Changed

  • **The first stable release:** the StuxieDev Website is now stable, and moves from Semantic Versioning (2.x.y) to
  • Date Versioning for good. Every release from now on is named after its UTC release date (YY.MM.DD, with -1, -2… for later releases the same day); there is no 3.0.0

  • **The new stuxie.dev is live:** coming soon mode is off by default now (COMING_SOON_MODE in config.example.php
  • and views/bootstrap.php), so every page is the real site instead of the holding page. Setting it to true in config.php puts the coming soon page back up

  • The portfolio lists the StuxieDev Website as active, not in development

v2.0.36

Added

  • **Proper oneko poses for every kat:** all five kats have new pixel art for the poses oneko needs, so the
  • spritesheets on kat.stuxie.dev show them doing each thing, rather than standing in with sitting and running: - walking towards you and walking away (from behind, with the bi kat's glasses arms and a tail) - looking alert (wide eyes), and tired (eyes shut, mid-yawn) - scratching an ear with a back leg - pawing at a wall in front of them, above them, and to either side - sleeping curled up, breathing in and out The Ridgwell cats keep their markings in every pose: Olly's jumper, Lily's L and halo, Poppy's nose dot, and Dougal's rainbow collar and halo. The diagonals still use the side-on run. The poses are in kat.js, built from shared parts, so there's still one copy of each kat

v2.0.35

Added

  • **oneko spritesheets on kat.stuxie.dev:** every kat (the bi kat, Olly, Lily, Poppy and Dougal) can be downloaded as a
  • spritesheet in oneko's layout, for apps that take a oneko-style cat as an upload: 8 by 4 frames (sitting, alert, scratching, tired, sleeping and running in eight directions), at oneko's standard 32px (256 by 128) or 64px, the size the kat is on the site. They're drawn in the browser from the kat's own frames, so they always match it

v2.0.34

Changed

  • **stuxie.dev's kat comes from kat.stuxie.dev:** the site's pages, the holding pages and /fluxer load
  • kat.stuxie.dev/kat.js, as every other site with the kat does, so stuxie.dev is a kat.stuxie.dev site too. It carries the release's ?v=, so each release is fetched fresh. Local dev runs still use the local file, so changes to the kat can be tried before they're deployed

Fixed

  • kat.stuxie.dev/kat.user.js served the kat.stuxie.dev page instead of the userscript, so it couldn't be installed:
  • after the rewrite to kat/kat.user.js, the rule sending everything else to the page caught it again

v2.0.33

Changed

  • **kat.stuxie.dev explains how to use it:** the page is now a full guide. It has:
  • - **Meet the kats:** all five, each drawn sitting, and click one to try it. - **What it does:** what the kat does and how to send it off. - **Step-by-step setup:** for the script tag, the userscript and the bookmarklet. - **Options:** a table of the script tag's options. - **Questions:** answers about privacy, a missing kat, and whether it gets in the way.

v2.0.32

Added

  • **Pick your kat in the userscript:** kat.stuxie.dev's userscript has a menu in Tampermonkey or Violentmonkey (its
  • toolbar icon) to choose any of the five kats (the bi kat, Olly, Lily, Poppy or Dougal), a random one on every page, or none. The manager keeps the choice, so it's the same on every site, and nothing is stored on the sites themselves. Before, it meant editing the script

v2.0.31

Added

  • **The bi kat on any site, at kat.stuxie.dev** (also stuxie.dev/kat), like oneko: one
  • script tag (<script src="https://kat.stuxie.dev/kat.js" defer></script>) puts the kat on any page, and a userscript for Tampermonkey or Violentmonkey brings it to every site you visit, keeping itself up to date. There's a bookmarklet too, and a picker for which kat (the bi kat, Olly, Lily, Poppy or Dougal) that changes the snippets. kat.stuxie.dev/kat.js is the site's own kat.js, so there's only one kat to look after

  • kat.js options, on its script tag: data-kat (which kat, or random), data-scale (its size) and data-z (its
  • z-index)

  • tests/version.sh checks that the userscript's version follows the release

Changed

  • The kat sits above everything by default, so it isn't hidden under other sites' headers; stuxie.dev's own pages
  • keep it at 900, under Kat Run

  • Loading kat.js twice on one page no longer makes two kats

v2.0.30

Changed

  • **The holding pages are always dark:** the coming soon and maintenance pages, and the /fluxer page, no longer
  • turn light when the visitor's device is in light mode or they've picked light on the rest of the site

v2.0.29

Added

  • **A bouncing logo on the holding pages:** the coming soon and maintenance pages, and the /fluxer page, now have
  • the kat and STUXIEDEV drifting across the background like an old DVD player's screensaver. It bounces off the edges of the window, changes to the next of the bi flag's pink, purple and blue at every wall it hits, and every so often lands exactly in a corner, with a little pop (the first one 61 seconds in, then every 117 seconds). It sits behind the card, and is hidden on small screens and with reduced motion

  • tests/version.sh checks that folder pages' /static/ links carry the current version

Changed

  • The Fluxer link in the socials goes to stux.ie/fluxer again, now that it works (it leads to fluxer.stuxie.dev)

Fixed

  • The /fluxer page's stylesheet and script links had no ?v=, so browsers could keep using a year-old cached
  • copy of them

v2.0.28

Changed

  • **Short link subdomains work as robo.st's do:** fluxer.stuxie.dev is the Fluxer page itself, at that address,
  • instead of a Cloudflare redirect to stuxie.dev/fluxer/, and discord.stuxie.dev goes to stux.ie/discord, as stuxie.dev/discord does. Like invite.robo.st, each subdomain is on the same hosting as stuxie.dev, and .htaccess tells it apart by host name

v2.0.27

Added

  • **stuxie.dev/discord:** a short link to stux.ie/discord, as robo.st has /discord. It works in every mode,
  • coming soon and maintenance included

Changed

  • fluxer.stuxie.dev is now live: a Cloudflare redirect rule sends it to stuxie.dev/fluxer/

v2.0.26

Added

  • **StuxieDev on Fluxer:** stuxie.dev/fluxer is a coming soon page for StuxieDev's Fluxer community, and
  • fluxer.stuxie.dev redirects to it. It's a static folder page (public/fluxer/index.html), so it works even while the rest of the site is in coming soon or maintenance mode. The dev server and the page tests serve folder pages the same way the live site does

Fixed

  • The Fluxer link in the socials pointed at stux.ie/fluxer, which returns 404; it now goes to stuxie.dev/fluxer

v2.0.25

Changed

  • The home page's About section is laid out afresh: the intro sits beside its four traits, now tiles with a bi-flag edge,
  • and the languages, tools, platforms and operating systems follow in one full-width panel with the groups side by side (stacked on phones), instead of a tall column that left a gap beside a short intro

Fixed

  • Kat Run: after you switch its theme (or sound), Space starts the game or jumps, instead of pressing that button again
  • and flipping the theme back. Clicking a button or choosing a kat gives focus back to the game; Enter still works the buttons from the keyboard

v2.0.24

Changed

  • The README describes the site's two self-hosted fonts instead of "system fonts", lists every view and workflow in its
  • directory map (holding.php, tech-icons.php, deploy.yml), says the screenshot job also runs when icons.json or the daily scripts change, and covers archive cropping and the retry after a rate limit

v2.0.23

Changed

  • **Stuxie.com's screenshot is taken in light mode only.** The site has no dark mode, but its Twitch embed can look
  • different between two captures, which could pass for one; it now has a single, light screenshot.

v2.0.22

Fixed

  • **A rate-limited embed no longer fails a screenshot.** Only a "429 Too Many Requests" from the site itself (or the
  • archived site it shows) counts; a third-party embed that limits the screenshot job, like the Twitch player on Stuxie.com's archive, is ignored.

v2.0.21

Changed

  • **Debug mode stays on while you click around.** In a debugged page (?debug, with DEBUG_MODE on) every link to
  • this site keeps ?debug (before any #), the portfolio search sends it, and the portfolio's filters keep it in the address. Links to other sites and to files are left alone.

Fixed

  • **Screenshot runs no longer clash.** A run that waited for another to finish started from before that run's commit,
  • so it couldn't save its screenshots; it now starts from the branch as it is.

v2.0.20

Fixed

  • **TIGHC's screenshot no longer shows its 18+ age gate**: the popup and its dimmed backdrop are hidden, so the
  • screenshot shows the site itself.

v2.0.19

Changed

  • **Screenshots of archived copies are cropped to the archived site.** A project captured from its copy in the
  • archives (archives.stuxie.dev, archives.stuxiedev.com, archives.ljdr.uk or archives.ridgwell.network) used to show the archive's header, banner and footer around it; the archived site now fills the screenshot. A project's screenshot.hide selectors apply inside the archived site too: StuxieDev Website v1's is retaken without its cookie popup.

Fixed

  • **A rate-limited page no longer becomes a screenshot.** Some old sites answer quick repeat visits with "429 Too Many
  • Requests"; the capture is retried after a pause, and if it's still limited it fails and the old screenshot stays, rather than saving the error page or a half-styled one.

v2.0.18

Changed

  • **CU Classification Calculator, git-scripts, PokeFusion and StuxCogs have their own icons** in the portfolio, from
  • StuxieDev Projects, instead of all sharing the same pink line-drawn tile.

v2.0.17

Fixed

  • **Phones no longer scroll sideways.** With nine social links, the icon row was wider than a phone, so the holding page
  • stretched past the screen and cut off its text and last icons. The icon rows now wrap, here and in the footer.

  • On the narrowest phones (320px), the header's theme switch and the home page's "Full portfolio" link no longer stick
  • out past the edge.

v2.0.16

Changed

  • **The Twitter easter egg goes further**: the link is called "Twitter" with the old bird, and while you hold Shift it
  • becomes "X" with the X mark, in "Find me around the internet" as well as the icons.

v2.0.15

Added

  • **The Shift easter egg from 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 holding pages included.

v2.0.14

Added

  • **YouTube and X** join the ways to find StuxieDev, in "Find me around the internet" on the home page, the footer and
  • the holding pages, with their brand marks (Simple Icons, CC0), matching links.stuxie.dev.

v2.0.13

Added

  • **"A StuxieDev Project" in the footer**, with the StuxieDev logo beside it ("logo | A StuxieDev Project"), as on the
  • other StuxieDev sites. The logo is grey until hovered.

v2.0.12

Added

  • **Portfolio screenshots in dark and light**, switching with the site's theme: the daily job captures every project
  • in both colour schemes (<slug>-light-*.webp beside the dark <slug>-*.webp), and cards and project pages show the one that matches. When a site has no light mode the two captures look the same, so only the dark one is kept. Archived, replaced and defunct projects get one more capture to add their light version.

v2.0.11

Fixed

  • **The kat sits once it reaches you, even while the pointer keeps edging away.** After v2.0.10 it could still
  • "run" in place at a crawl, because each slow nudge kept it a fraction over 36px away; it now sits as soon as a step brings it within 37px, and gets up again only once the pointer is 72px away.

v2.0.10

Fixed

  • **The kat no longer glitches when you edge the pointer away slowly.** It used to get up as soon as the pointer was
  • more than 36px away, take one step, sit, and get up again, flickering between sitting and running every frame. Now it waits until the pointer is 72px away, then runs all the way back before it sits down again.

v2.0.9

Changed

  • **StuxieDev Social, Links, Projects, Archives and Status have their own icons** in the portfolio: the StuxieDev
  • avatar with a badge (the Fediverse mark, a chain link, <•>, an archive box, a heartbeat line), from the Projects site like the other project icons and kept in step by the daily icon check. They had been using the plain avatar, or for Projects its site's own mark, whose copy (projects.svg) is gone.

v2.0.8

Changed

  • **The site lives in stuxie.dev on Stuxedo** now, not stuxie.dev-v2: stuxie.dev's and l.stux.ie's document root is
  • stuxie.dev/public, and deploys go there. The README's Deploying section says so.

v2.0.7

Added

  • **Old links keep working.** Addresses only the original WordPress site has go to the same address on
  • v1.stuxie.dev (V1_URL in config.php) with a 301, even in coming soon and maintenance mode: its Hum short links (/b/3F), its guides, uploads (/content/, /wp-content/), category, tag and author pages, feeds, Friends page, old legal pages and WordPress's /?p= links. Addresses the new site has stay here.

  • **The short link domain, l.stux.ie** (SHORT_HOSTS), answered by the site itself once it points at public/: Hum
  • short links like l.stux.ie/b/3F go to the post on v1.stuxie.dev, and every other address to the same place on stuxie.dev, path and query kept, so l.stux.ie/ is the home page.

v2.0.6

Added

  • **The Stux brands' pages in the portfolio**, under a new "Pages" type: the landing, holding and placeholder pages for
  • Stux.Cloud, Stuxedo, Stux.Group, Stux.Dev, StuxAPIs and Stux.Digital (29 in all). Old versions are "replaced", each pointing at the next (v1, then v2, then the current page), and link to their copy in the StuxieDev Archives rather than their own v1/v2 address; their screenshots are still taken from those snapshots.

  • **Two-tone portfolio icons** ("iconThemed": true): an entry can use a light/dark icon pair, like the
  • organisations' icons, and the page shows the one that suits the theme. The brand pages use their brand's icon.

v2.0.5

Changed

  • **The daily screenshots job pushes with its own deploy key** (SCREENSHOTS_DEPLOY_KEY), the one exception to
  • main's pull-request rule, so the portfolio's screenshots, activity and icons still reach the live site every day. Its push now starts the deploy directly, so the deploy no longer also waits for the screenshots run to finish, and the screenshots job skips the run its own commit would start.

v2.0.4

Changed

  • **A new branch flow**: work happens on test, main only changes through a pull request (GitHub protects it), and
  • merging into main is what deploys stuxie.dev. CONTRIBUTING.md describes it.

v2.0.3

Changed

  • The web host is called **Stuxedo** throughout the README, the deploy script and the deploy workflow.

v2.0.2

Fixed

  • **Deploys work with Stuxedo's SSH.** The host runs SSH commands through its own wrapper, which runs nothing if a command
  • is multi-line or contains set -e, so scripts/deploy.sh now sends the site as one tar stream and unpacks and rsyncs it on the server in a single line of steps chained with &&. It also strips Windows line endings from text files on the way. The README's Deploying section says where the site lives on Stuxedo (stuxie.dev-v2) and covers two setup traps: PowerShell's -N '""' sets a passphrase, and Windows' ssh-keyscan can't reach Stuxedo.

v2.0.1

Added

  • **StuxieDev Links** (links.stuxie.dev) in the portfolio: the one-screen links page,
  • active since 2023.

Changed

  • The StuxieDev Website's own portfolio entry has no screenshot until v2 is live at stuxie.dev
  • ("screenshot": false): the daily job was capturing the old WordPress site there instead.

v2.0.0

Added

  • **A completely new stuxie.dev, built from scratch**, replacing the original WordPress site, which moves to
  • v1.stuxie.dev. Plain PHP, CSS and JavaScript with no framework and no build step: one stylesheet, one small script, inline SVG icons and system fonts, so pages are light and fast.

  • **The new slogan: "A Bi Kat Who is Always Developing!"**, in the bi flag's colours, across the home page, the footer
  • and the page titles; the StuxieDev name wears the bi flag too.

  • **Developer-friendly type**: JetBrains Mono for headings, the name and labels, IBM Plex Sans for reading text. Both
  • are self-hosted variable fonts (public/static/fonts/, SIL Open Font License), so there are no font requests to other sites.

  • **Ready for the Fediverse at social.stuxie.dev**, set up like social.fluxer.com: stuxie.dev redirects
  • /.well-known/webfinger, host-meta and nodeinfo to the social server (SOCIAL_URL in config.php), so handles can be @[email protected], even while the site is in coming soon or maintenance mode. A Fediverse link to @[email protected] joins the socials, the Fediverse joins the platforms, and StuxieDev Social (the themed GoToSocial server, github.com/StuxieDev/Social) joins the portfolio as in development.

  • **A seasonal overlay button** on the home page, as on projects.stuxie.dev, using
  • SeasonalOverlaysLibrary from StuxAPIs. It only shows when today has an overlay, is labelled for the season ("🍂 Autumn leaves?", then "!" while it plays), and the Privacy and Cookies pages list the script.

  • **A secret.** You'll have to find it.
  • **The bi kat**: a little pixel kat in the bi flag's colours, wearing glasses, that follows your pointer (or your
  • taps) around every page, sits when it catches up, naps if you leave it, blushes when patted, and leaves for the visit on a double-click. A "Your kat" menu in the footer swaps it for one of the Ridgwell cats from cats.ridgwell.family (Olly in his jumper, Lily ✦ with the L on her back, Poppy with the dot on her nose, Dougal ✦ in his rainbow collar) or none, remembered in this browser as sdKat. Original pixel art in public/static/js/kat.js; it stays away for anyone who prefers reduced motion.

  • **A light/dark switch** in the navigation. The site follows your device's setting until you use it; your choice is
  • then remembered in your browser (local storage, never sent anywhere) and applied before the page paints, so there's no flash of the other theme.

  • **The home page**: an intro, live project counts, featured projects, an about section listing 14 languages, 12 tools, 10 platforms and 7 operating systems, each with its logo in its brand colour,
  • the Stux.Group organisations, and every way to get in touch: GitHub, Fluxer, Bluesky, Discord, Twitch and email, with business enquiries pointed to leo.ridgwell.family.

  • **Self-hosted icons** for the avatar, every project that has one (public/media/icons/, from the Projects
  • site) and the Stux.Group organisations (small copies of their global.media icons, with light and dark versions that follow the theme switch), checked every 24 hours by scripts/icons.mjs and rebuilt whenever an original changes, so cards show their real icon until their first screenshot and pages need fewer outside connections.

  • **The portfolio (/portfolio)**, driven by one file, data/portfolio.json: each project's name, status
  • (active, in development, archived, replaced or defunct), type, start and end dates, links, tags, what replaced it and what it's part of (like PRotoStux, the testing bot for RoboStux). Filter by status and type, search, and sort. It opens grouped by status (in development, active, replaced, archived, defunct), most recently updated first within each, so the latest work is easy to find; it can also sort by recently updated, newest, oldest, name (A–Z, Z–A) or type, with defunct projects always at the bottom; instantly in the browser, or with plain links and a form without JavaScript. Its descriptions and tech tags match the cards on projects.stuxie.dev, which list the same projects (without the retired versions).

  • **Status badges with their own icon and effect**: Active (a check, with a slow glow), In development (code
  • brackets, with a shimmer), Archived (a box that settles), Replaced (arrows that swap) and Defunct (an X that flickers). The effects are staggered across the grid and switched off for anyone who prefers reduced motion.

  • **A page for every project (/portfolio/<slug>)** with its screenshot, details, links, and what it replaced or was
  • replaced by.

  • **Automatic "last updated" dates**: scripts/activity.mjs records the last commit a person (not a bot) made to each
  • project's GitHub repo in data/activity.json, daily, for the Recently updated sort and each project's page.

  • **Automatic portfolio screenshots, refreshed every 24 hours.** scripts/screenshots.mjs (Playwright) captures every
  • project and saves 1280px and 640px WebP images; .github/workflows/screenshots.yml runs it daily and commits any that changed. Active and in-development projects are refreshed every day; archived, replaced and defunct ones are captured once and kept. A failed capture never replaces a good screenshot.

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

  • **/changelog, /sitemap, /sitemap.xml and robots.txt**, plus Open Graph tags and structured data on every
  • page.

  • **Maintenance, coming soon and debug modes**, switched in config.php (see config.example.php): a "Back soon"
  • page (HTTP 503) or a "Coming soon" page for every address, and ?debug for PHP errors, a debug banner and a way past either holding page. Coming soon mode is on by default, so the site launches by turning it off; maintenance and debug mode are off. config.php is never committed: commit.sh/.bat and CI refuse it.

  • **Automatic deploys to Stuxedo** over SSH (.github/workflows/deploy.yml, scripts/deploy.sh): on every push to
  • main, after each daily screenshots run, and by hand, once the site passes its checks on PHP 7.4. Only changed files are sent; the server's config.php and public/.well-known/ are never touched.

  • **dev-server.sh/.bat** for a local preview with dev mode on, **commit.sh/.bat** for releases, and CI that
  • lints and requests every page on PHP 7.4 to 8.4.