v38

See when the site is being worked on

Feature
Move across the screenshot to zoom in.

View this deployment live ↗ · 4057862a

  • A live status line now sits at the top right of this changelog, beside the light/dark switch, out of the way of the versions.
  • While the site is being worked on it says Thinking… with how long it has been going.
  • When an update is finished it switches to Updated with how long ago it was.
  • On a computer, click it to see what is being worked on right now, or everything that was fixed in the last update.
v37

Your current Discord profile picture and decoration

FeatureDesign
Move across the screenshot to zoom in.

View this deployment live ↗ · 5f905e11

  • The Discord card now shows the current profile picture with its decoration around it, and keeps itself up to date on its own.
  • The top of the profile card is cleaner: the name sits in the middle with the badges underneath.
  • The loading screen looks smoother on slower phones and computers.
  • Screenshots in this changelog show up faster while you scroll.
v36

Last seen, to the minute

DesignFix
Move across the screenshot to zoom in.

View this deployment live ↗ · 81611d1e

  • Last seen is precise now: minutes up to an hour, then "1 hour and 23 minutes", then days, weeks, months and years - never "90 minutes".
  • The shine on View Profile loops every 3 seconds, and keeps looping on slower devices instead of stopping after the first few seconds.
  • A red warning in this changelog explains why the version number goes from v9 back to v6.
v35

A lens on every screenshot

ChangelogDesign
Move across the screenshot to zoom in.

View this deployment live ↗ · 9d7329ba

  • Every screenshot in this changelog sits in Magic UI's Lens: move across it and a round lens follows the pointer at 2x zoom.
  • A thin gradient scroll progress bar across the top of the changelog fills as you read down it.
v34

Smoother on every device

PerformanceDesign
Move across the screenshot to zoom in.

View this deployment live ↗ · 0a50825b

  • The page now adapts to the device it runs on: it picks a quality level from the device's memory, CPU cores and connection, then keeps watching its own frame rate and steps effects down by itself if things start to lag.
  • On a slower device the background glow, grain and avatar glow hold still, the dotted background and the video-filled wordmark run at lower frame rates, and on the slowest the heaviest effects switch off. Fast devices keep everything.
  • The circle that appears when you hover an icon in the dock is smaller.

v31

Globe loader, shiny button, video text

FeatureDesignMobile
Move across the screenshot to zoom in.

View this deployment live ↗ · ba6bf30f

  • A new loading screen on every visit: Magic UI's Globe, with preinfection in place of the demo's word.
  • The film now shows through the letters of the wordmark (Magic UI's Video Text), with the lettering faintly underneath so it still reads on dark frames.
  • View Profile is Magic UI's Shiny Button: a light band sweeps across the label and its border.
  • The changelog's theme switch is Magic UI's Animated Theme Toggler: a circle reveal from the button.
  • On phones the dock sits a little higher, with equal space above and below it.

v30

Service worker: a failed cache write no longer blanks the page

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · 17f54845

  • If the browser could not save a file to its offline cache, the service worker used to throw away the network response too, and the page loaded with no styles, scripts or images. Caching is now best-effort and never costs the page.
v30

Changelog entry for v30

Content
Move across the screenshot to zoom in.

View this deployment live ↗ · bada2a58

  • The same site as v30; the changelog's v30 entry gets its real deployment id and screenshot.
v30

The dock, a changelog, and v29 back

FeatureDesignFix
Move across the screenshot to zoom in.

View this deployment live ↗ · 6555e52f

  • The socials are now a dock, ported from Magic UI: icons grow as the pointer comes near them, each with a label.
  • This changelog: every production deployment, each still live at its own address, opened from the new button in the card’s top-right corner.
  • The bun & pup store card and its connector lines are gone.
  • Discord status never reads “status unavailable” any more: it shows online, idle, do not disturb, or offline with when you were last seen.
  • Everything from v29 is live again: the once-a-day view counter and the music that keeps playing when you switch tabs.

v29

Fill the bottom, count once, keep the music

FixMobile
Move across the screenshot to zoom in.

View this deployment live ↗ · a3c019ea

  • On phones the empty space under the composition is spent on stretching connector lines.
  • The view counter counts a device once a day instead of again on every tab switch.
  • Switching tabs no longer mutes the music.

Maintenance page

Maintenance
Move across the screenshot to zoom in.

View this deployment live ↗ · a2f81707

  • The black updating… page, put up with the stop button on the Discord site dashboard.
  • Put up on August 28. The v29 deploy below went out while it was still up.

Maintenance page

Maintenance
Move across the screenshot to zoom in.

View this deployment live ↗ · e0f94d0b

  • The black updating… page, put up with the stop button on the Discord site dashboard.
  • A maintenance build that was never the one restored.

Maintenance page

Maintenance
Move across the screenshot to zoom in.

View this deployment live ↗ · 5df82c06

  • The black updating… page, put up with the stop button on the Discord site dashboard.
  • Stop and continue pressed back to back from the dashboard.
v28

Shirt panel sized to its content

MobileFix
Move across the screenshot to zoom in.

View this deployment live ↗ · 22882643

  • On phones a fifth of the store card was empty space; it is sized to its content again.
v27

The tilt stops eating clicks

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · 89057b20

  • The card holds still while a button is pressed, so clicking the shirt works while it is moving.
v26

Performance pass

Performance
Move across the screenshot to zoom in.

View this deployment live ↗ · 6a1464db

  • The film re-encoded from 1080p60 (17.9 MB) to 720p30 (7.39 MB): about a fifth of the decode work, with no visible difference.
  • Two zero-blur backdrop filters removed; the film is skipped entirely on Save-Data and 2G.
v25

TikTok handle

Content
Move across the screenshot to zoom in.

View this deployment live ↗ · d9e20530

  • The TikTok link now points at @die1635.
v24

Room to breathe on phones

MobileDesign
Move across the screenshot to zoom in.

View this deployment live ↗ · bff7e876

  • Wider gutters, more card padding and bigger gaps on phones; the store card lines up with the card above it.
v23

Security headers and one tint

SecurityDesign
Move across the screenshot to zoom in.

View this deployment live ↗ · 8c7562a8

  • HSTS, COOP, CORP, DNS prefetch off, and frame-ancestors none.
  • The player, widgets and store card on one shared tint, a Roblox tag beside the Discord one, and two animated connector lines to the store card.
v22

Two mobile fixes

MobileFix
Move across the screenshot to zoom in.

View this deployment live ↗ · 1e922a7c

  • The music button no longer overlaps the card on phones.
  • The faded-out cover no longer stays on top swallowing every tap and scroll.
v21

Measured against the reference

Design
Move across the screenshot to zoom in.

View this deployment live ↗ · 0166dfce

  • The card rebuilt from a live render of the reference: 44rem wide, a 120px avatar, a badge pill, Poppins throughout.
  • The film shown at 100%, a fully transparent card, and a slow parallax tilt ported from react-parallax-tilt.
  • View Profile rebuilt as the same button as buy; nothing in the card is selectable.

v20

Profile card, first full version

Design
Move across the screenshot to zoom in.

View this deployment live ↗ · f486e1e8

  • The card as one container: header, two live widgets, socials and a footer, with the store card underneath.
  • The Roblox call-to-action in green.
v19

Card styling pass

Design
Move across the screenshot to zoom in.

View this deployment live ↗ · 2cb2c402

  • More card polish ahead of the full rework.
v18

Card styling pass

Design
Move across the screenshot to zoom in.

View this deployment live ↗ · e9a11ef1

  • Spacing and proportion fixes on the new card.
v17

Live Discord presence

Feature
Move across the screenshot to zoom in.

View this deployment live ↗ · b2d71908

  • New /api/presence: the Discord bot pushes a status into KV, and the card shows online, idle, do not disturb or offline, checked every second.
  • Discord and Roblox sit side by side as two widgets inside one card.
v16

The profile card arrives

FeatureDesign
Move across the screenshot to zoom in.

View this deployment live ↗ · 56db5fc0

  • A guns.lol-style profile card with badges, live Roblox friends and followers from /api/profile, the view count and the location.
v15

A view counter that counts visitors

Feature
Move across the screenshot to zoom in.

View this deployment live ↗ · f4bceccd

  • New /api/hit: the homepage itself counts one view per visitor per day. Before this, only the owner opening the dashboard moved the number.
v14

Stats follow-up

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · 1419a479

  • A version bump and a redeploy of the gated stats.
v13

Stats behind a password

Security
Move across the screenshot to zoom in.

View this deployment live ↗ · 6c0af773

  • /api/stats now answers 401 without the dashboard password.
v13

Stats dashboard follow-up

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · 692e1e2b

  • A redeploy of the stats functions; the homepage is unchanged.
v13

Stats dashboard follow-up

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · a84e871c

  • A redeploy of the stats functions; the homepage is unchanged.
v13

Stats dashboard follow-up

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · 91424912

  • A redeploy of the stats functions; the homepage is unchanged.
v13

Homepage markup tweak

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · 2376c7f0

  • A small change to the homepage markup while the stats work continued.
v13

Stats dashboard follow-up

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · 4d2cb430

  • Another redeploy of the stats work; the homepage is unchanged.
v13

Stats dashboard follow-up

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · 285066c6

  • A redeploy while the dashboard was being tuned; the homepage is unchanged.
v13

Stats dashboard

Feature
Move across the screenshot to zoom in.

View this deployment live ↗ · 52fe7c36

  • A private /stats page and /api/stats endpoint: views and people on the site right now, per deployment.

Maintenance page

Maintenance
Move across the screenshot to zoom in.

View this deployment live ↗ · 46e1f361

  • The black updating… page, put up with the stop button on the Discord site dashboard.
  • Put up and taken down again the same evening.
v13

Offline cache fix

Fix
Move across the screenshot to zoom in.

View this deployment live ↗ · fd2d3ceb

  • The offline page now really lands in the service-worker cache.
  • The background aura stops looping for people who ask for reduced motion, and the buy button gets a full-size touch target.
v13

System pages and offline mode

FeatureSecurity
Move across the screenshot to zoom in.

View this deployment live ↗ · b3072c12

  • Custom 404, 500 and offline pages in the site’s own look.
  • A loading state, a service worker, and a strict Content-Security-Policy.

Maintenance page

Maintenance
Move across the screenshot to zoom in.

View this deployment live ↗ · 17d4801f

  • The black updating… page, put up with the stop button on the Discord site dashboard.
  • The first real test of the site-control bot: stop took 7.4 s, and continue restored the site byte for byte in 0.8 s.
v12

New avatar and the Alt+Tab fix

FixMedia
Move across the screenshot to zoom in.

View this deployment live ↗ · 891d2177

  • New profile picture (the bunny); the icon is recompressed from 46 KB to 28 KB.
  • Alt+Tab, Ctrl/⌘ shortcuts and F-keys no longer open the cover and start the music by themselves.
  • The dot-field canvas gets a pixel budget, so a 4K screen costs 13 MB instead of 126 MB.
v11

Projects become a store

StoreDesign
Move across the screenshot to zoom in.

View this deployment live ↗ · b0ef899e

  • The projects section is replaced by one product: the bun & pup Roblox shirt.
  • Name, tagline and buy button set in hand-lettered artwork; the render opens in the lightbox.
  • Shown on phones too.
v10

The phone becomes a profile

MobileDesign
Move across the screenshot to zoom in.

View this deployment live ↗ · 8755f15c

  • Phones show the avatar, wordmark, socials and player only; the projects section stays on desktop.
  • The page fits one screen on every phone size tested, which also makes the film sharper there.
v8

Mobile crop

Mobile
Move across the screenshot to zoom in.

View this deployment live ↗ · 026155d0

  • On phones the film is framed at 58% across instead of dead centre, chosen from 215 sampled frames so the crop never lands on empty sky.
v7

Loop fades

Media
Move across the screenshot to zoom in.

View this deployment live ↗ · d7a084ec

  • The film fades out and back in at the loop point, so the wrap is black meeting black instead of a hard cut. Nothing was trimmed.
v6

New film, new avatar

MediaDesign
Move across the screenshot to zoom in.

View this deployment live ↗ · d6e1112d

  • New background film (an anime edit by @fantasy.zip), whose own audio becomes the soundtrack.
  • New profile picture; the favicon and share image follow it.
  • The cover now reads click anywhere in lowercase, with a credit line underneath.
  • Every versioned asset levelled to one number so they can never drift apart again.

Heads up: the version number goes backwards here (v9 → v6)

Nothing was lost between these two builds. The number in each badge is the site's ?v= cache tag, not a release counter.

Before August 14, every file kept its own number: style.css and script.js were on v9, the background video was on v3, and the avatar and icons had no number at all. A number only moved when that one file changed, which is why the early badges skip (v5 → v8).

The mistake that caused: the video's poster image had no number, so after it was regenerated three times, returning visitors were still shown an old copy from their browser cache.

The fix, on August 14: every file was put on one shared number, so any change bumps them all together and nothing can drift out of step again. That shared number started at v6 rather than carrying on from v9, and it has counted up by one ever since.

v9

Player polish

Design
Move across the screenshot to zoom in.

View this deployment live ↗ · b33b991c

  • Last of the same-day player follow-ups.
v8

Player polish

Design
Move across the screenshot to zoom in.

View this deployment live ↗ · a5873321

  • The speaker icon in the music button nudged 0.92 px (0.22 px when muted) so it sits visually centred.

Heads up: the version number skips from v5 to v8 here

v6 and v7 never went live. No deployment on Cloudflare - production or preview - carries either number. These two builds were deployed seven minutes apart on August 12, so v6 and v7 can only have been used on the local copy in between, while the change was being tried.

What actually changed from v5 to v8: one thing. The speaker icon in the music button was nudged sideways by 0.92 px (0.22 px when muted) so it sits visually centred in its circle.

The mistakes: at the time, each file had its own number and it was raised on every local try, so numbers were used up without ever shipping. And script.js was byte-for-byte the same in both builds but its number still went from v5 to v8, so returning visitors downloaded an identical file again for nothing.

The fix: the one in the v9 → v6 warning above - on August 14 every file moved to one shared number, raised together once for each build that goes out.

v5

Volume slider removed

Design
Move across the screenshot to zoom in.

View this deployment live ↗ · 6b6bbb29

  • The music pill loses its slider and becomes a single mute/unmute toggle.
v4

Asset versioning

Performance
Move across the screenshot to zoom in.

View this deployment live ↗ · 42514f6e

  • Versioned asset URLs (?v=) so returning visitors pick up new files instead of stale cached ones.
v3

Mobile fixes

MobileFix
Move across the screenshot to zoom in.

View this deployment live ↗ · aa3b3caf

  • Phone layout fixes; the page can scroll on a phone instead of trapping overflow out of reach.
v3

First deployment

Launch
Move across the screenshot to zoom in.

View this deployment live ↗ · fe954529

  • preinfection.lol goes live on Cloudflare Pages: avatar, wordmark, the six-icon social pill and the two-column projects section.
  • Full-screen background film behind a click anywhere cover, with the film’s own audio as the soundtrack.
  • Glass panels, a white sparkle sheet behind the wordmark, and a music pill with a volume slider.