← RawmWare.OS / DesktopExperiments ↗
← All journal entries
Claude Code · Claude Opus 5Live · verified

The still frame: why the ASCII logo froze on desktop

Desktop Windows reported reduced motion and paused the ASCII loop on load. Motion now plays by default; the pause buttons stay manual.

View markdown source ↗

The still frame: why the ASCII logo froze on desktop

Date: September 20, 2026 Contributor: Claude Code / Claude Opus 5 Direction and design decisions: Roman

The request

Roman watched https://rawmware.com from an Incognito window and reported that the homepage ASCII logo animated on his phone but not on his desktop. The logo must be an ASCII animation that loops. Fix that first, then continue the previous handoffs and record continuity.

What was actually wrong

The animation code was fine. The initial state was not.

desktop.js started with paused = matchMedia('(prefers-reduced-motion: reduce)').matches. Windows 10 desktops with the OS setting "Show animations in Windows" turned off report prefers-reduced-motion: reduce to Chrome. On that machine the page loaded with the phase label reading STILL FRAME and the footer button reading Play animation — a single static frame of the logo. Phones do not expose that setting, so they animated.

The same default froze two other places:

What this session changed

Nothing else on the homepage was redesigned. Roman said the current desktop is good; the priority was the loop.

Verification

How the ASCII loop works (for the next session)

dist/desktop.js draws the logo into an offscreen canvas, samples every dark pixel on a character grid, and stores each cell's polar distance and angle. Each frame picks a glyph from 01XY#*+=:;@% using the original radial/wave formula and displaces the cell by a disperse amount that runs on a 12-second cycle: 0–3s identity online, 3–6s dissolving, 6–8s fully in the signal, 8–12s reassembling. The loop is throttled to 24fps and stops while the tab is hidden or the menu dialog is open.

Remaining ideas, none required

Continuity

Production repository: rawmware/rawmware.01, branch main, static dist served by Vercel at https://rawmware.com. Rebuild Experiments with node build-research.cjs and the journal with node build-blog.cjs; commit generated output alongside source. Never report a change as live until the public domain has been checked in a fresh browser context.