Skip to content

The room on a phone; the door's lock; the screen guard; Nash the cat; tyler-durden-bot's big board - #30

Merged
h0ffmann merged 7 commits into
mainfrom
claude/project-thread-5w5wro
Nov 9, 2026
Merged

h0ffmann merged 7 commits into
mainfrom
claude/project-thread-5w5wro

Conversation

@h0ffmann

@h0ffmann h0ffmann commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Requested by Hoffmann · project thread

What was asked

please address the mobile experience, it is terrible, super heavy, maybe on mobile we should use less resolution

and, in the same thread: a puzzle behind the door; skills for mobile 3D; no screenshots (a black screen, like UFC) and text that cannot be selected, especially the puzzle's; Nash, a black cat who moves around naturally, over the things; a big board on the wall with tyler-durden-bot's icon, with hover, blinking at random with red lights, by night only. The eight prompts are replay row 25 in both READMEs.

What it does

The room on a phone (src/quality.js). A touch-only screen, a short side of 600 CSS px or less, 2 GB or 2 cores or fewer, or the data saver gets the lite look: pixel ratio 1.25 at most (it was 2), stepping down to 0.75 when frames run long; at most 30 frames a second; no ambient occlusion; 2× MSAA; 512 shadow maps with plain PCF; anisotropy 2; 150 motes of dust. ?lite and ?full force one, and ?record is always full. The adaptive quality in src/post.js now steps from the look's own levels and budget.

Less to download. The grid's 24 h of sea (frames.bin, 0.9 MB) and its temperature now load only when the map opens; the chart on the wall needs only the mesh. The day photo of Rio loads only by day, and the night photo only by night.

just mobile (scripts/mobile.mjs) measures a phone (390×844, ratio 3, touch, CPU 4× slower) and a laptop. In this container (software GPU, so compare the two lines with each other, not with a phone):

before after
bytes before the room shows 3.13 MB 1.81 MB
phone: pixels drawn 780×1688 487×1055
phone: one frame (CPU and GPU) 2529 ms 738 ms (3.4× less), and half as many frames
laptop full, unchanged full, unchanged

Two skills: .claude/skills/room-mobile (the two looks, the rules for a change, how to measure) and .claude/skills/room-phone-test (emulation here, and a real phone through Chrome or Safari remote debugging).

The door's lock (src/lock.js, config.door). A click on the door opens a keypad with four clues; each digit counts a list of config.js (the tapes, the works on the shelf, the faces on the board, the bots), so the code stays true when a list changes. The right code swings the door open on a warm light and the lines of door.beyond. A solved door stays open in that browser; ?locked locks it again. A new hotspot action, door, in src/app.js, the check and invariant 5's list.

The screen guard (src/guard.js, config.guard). No browser can block a screenshot of a canvas: UFC's black frame comes from DRM-protected video. So this is a deterrent: the page goes black for a moment on the PrintScreen key and the clipboard is emptied; it goes black while the tab is hidden or the window has lost focus (the Spotify iframe excepted); a printed page is blank; the lock's words, the labels and the buttons cannot be selected or copied, and the room has no context menu. Cmd+Shift+3/4/5 on macOS and a phone's screenshot never reach a page, so they still work. Off under ?record and in a scripted browser.

Nash (src/cat.js, config.cat). A black cat of a few shapes, eyes that glow at night. He sits on a perch for a while (looking about, tail swaying, lying down on the floor on a long rest), walks on the floor and jumps up and down, through via perches when one is too high: the rug, the chair, the desk, the monitor, the sill, the crate, the top of the shelf. Seeded, so just record films the same walk. A click calls him: he stops, looks at you and meows (a synthesized meow, fallback: 'meow'; there is no recording yet). He casts no shadow, because the shadow maps are drawn only when the room changes.

tyler-durden-bot's big board. This branch merges #27, then moves its board from the small slate beside the people's board to a big board (1.15×1.3 m) on the front wall, beside the loop, under its sign. It shows the owner's pixel portrait (public/textures/tyler-durden-bot.png, 1 kB, credited in CREDITS.md as the owner's own), with a ring of 26 red bulbs in one draw call that blink at random by night (now and then all of them flash together) and are off by day. Hover and click are #27's. Merging this PR brings #27 in, so #27 can be closed.

Proof

Overview Desk Window
The board by night By day (bulbs off) A phone, lite (Nash on the rug)

Video, 52 s by night, navigating and clicking: docs/record/room.mp4. On the front wall (about 0:38) it hovers the big board, turns to the door, clicks it, types the code on the keypad, and the door swings open. just blow-light passes: at most 0.21 % of a frame above 230 (limit 0.25 %).

node scripts/check.mjs and npx vite build (the two commands of just check) pass; just is not installed in this container.

Not checked

  • A real phone. The numbers come from headless Chromium in software; the frame times compare builds and are not a phone's. The room-phone-test skill says how to check one.
  • The guard on Windows' PrintScreen key and on focus loss in a real browser (it is off in the scripted browser that recorded the video).
  • Nash's walk over a long visit: I watched about a minute of his routes in stills (rug, desk, monitor, shelf, crate). His floor walks are straight lines and can pass through a chair leg.
  • The meow and the lock's sounds by ear.

Generated by Claude Code

The GitHub App that sums up a large pull request (piabrota/agents#6) gets
a slate on the back wall, beside the people's board, which moves left to
make room. It has no logo file: src/art.js draws its mark from config.wip
(a bot's head split into a light half and a dark half, one eye open on
each), its name and its line, and a strip of hazard tape that says
"WORK IN PROGRESS". Hovering it says so; a click opens its pull request.
The board shot is centred on both boards, and just record hovers the slate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193yhp3nH1GuEhCcyaWrNf9
…-0cw3xa

# Conflicts:
#	AGENTS.md
#	README.md
#	README.pt-BR.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193yhp3nH1GuEhCcyaWrNf9
…; two skills for mobile 3D

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193yhp3EES9jSDbLGFiqdC5
…link at night; Nash the black cat; the lock in the video; replay row 25

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193yhp3EES9jSDbLGFiqdC5
@h0ffmann h0ffmann self-assigned this Nov 9, 2026
@h0ffmann
h0ffmann merged commit 6e0f4f5 into main Nov 9, 2026
h0ffmann added a commit to piabrota/nix-os that referenced this pull request Nov 9, 2026
…door lock, tyler-durden-bot board, Nash) (#193)

Move room-site/default.nix to the main of piabrota/room, commit 6e0f4f5, the merge of
piabrota/room#30. package-lock.json did not change since 0125d43, so npmDepsHash stays.


Claude-Session: https://claude.ai/code/session_0193yhp56sV4eomop851KRFA

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants