v39

Scroll for more on phones

Feature
Scroll for more on phones, as it looked at c7bac542
Move across the screenshot to zoom in.

View this deployment live ↗ · c7bac542

  • On a phone the profile now opens on just the name and badges, with Scroll for more at the bottom.
  • Scroll down and the Discord profile, the Roblox profile and the socials unfold into place one after another.
  • The badges under the name sit on their own now, all the same size, and no longer grow when you hover over them.
v38.1

Tidier badges, and the status moved

Improvement
Tidier badges, and the status moved, as it looked at 2e131d8a
Move across the screenshot to zoom in.

View this deployment live ↗ · 2e131d8a

  • The badges under the name sit on their own now, with no panel behind them, all drawn at the same size.
  • They no longer grow when you hover over them - they only brighten.
  • The status line moved under the newest version number, out of the way of the rest of the page.
v38

See when the site is being worked on

Feature
See when the site is being worked on, as it looked at 4057862a
Move across the screenshot to zoom in.

View this deployment live ↗ · 4057862a

  • A live status line now sits under the newest version number in this changelog.
  • 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.
v37

Your current Discord profile picture and decoration

FeatureDesign
Your current Discord profile picture and decoration, as it looked at 5f905e11
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
Last seen, to the minute, as it looked at 81611d1e
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
A lens on every screenshot, as it looked at 9d7329ba
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
Smoother on every device, as it looked at 0a50825b
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
Globe loader, shiny button, video text, as it looked at ba6bf30f
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
Service worker: a failed cache write no longer blanks the page, as it looked at 17f54845
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
Changelog entry for v30, as it looked at bada2a58
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
The dock, a changelog, and v29 back, as it looked at 6555e52f
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
Fill the bottom, count once, keep the music, as it looked at a3c019ea
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
Maintenance page, as it looked at a2f81707
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
Maintenance page, as it looked at e0f94d0b
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
Maintenance page, as it looked at 5df82c06
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
Shirt panel sized to its content, as it looked at 22882643
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
The tilt stops eating clicks, as it looked at 89057b20
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
Performance pass, as it looked at 6a1464db
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
TikTok handle, as it looked at d9e20530
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
Room to breathe on phones, as it looked at bff7e876
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
Security headers and one tint, as it looked at 8c7562a8
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
Two mobile fixes, as it looked at 1e922a7c
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
Measured against the reference, as it looked at 0166dfce
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
Profile card, first full version, as it looked at f486e1e8
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
Card styling pass, as it looked at 2cb2c402
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
Card styling pass, as it looked at e9a11ef1
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
Live Discord presence, as it looked at b2d71908
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
The profile card arrives, as it looked at 56db5fc0
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
A view counter that counts visitors, as it looked at f4bceccd
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
Stats follow-up, as it looked at 1419a479
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
Stats behind a password, as it looked at 6c0af773
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
Stats dashboard follow-up, as it looked at 692e1e2b
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
Stats dashboard follow-up, as it looked at a84e871c
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
Stats dashboard follow-up, as it looked at 91424912
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
Homepage markup tweak, as it looked at 2376c7f0
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
Stats dashboard follow-up, as it looked at 4d2cb430
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
Stats dashboard follow-up, as it looked at 285066c6
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
Stats dashboard, as it looked at 52fe7c36
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
Maintenance page, as it looked at 46e1f361
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
Offline cache fix, as it looked at fd2d3ceb
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
System pages and offline mode, as it looked at b3072c12
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
Maintenance page, as it looked at 17d4801f
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
New avatar and the Alt+Tab fix, as it looked at 891d2177
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
Projects become a store, as it looked at b0ef899e
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
The phone becomes a profile, as it looked at 8755f15c
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
Mobile crop, as it looked at 026155d0
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
Loop fades, as it looked at d7a084ec
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
New film, new avatar, as it looked at d6e1112d
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
Player polish, as it looked at b33b991c
Move across the screenshot to zoom in.

View this deployment live ↗ · b33b991c

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

Player polish

Design
Player polish, as it looked at a5873321
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
Volume slider removed, as it looked at 6b6bbb29
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
Asset versioning, as it looked at 42514f6e
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
Mobile fixes, as it looked at aa3b3caf
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
First deployment, as it looked at fe954529
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.