9a4d9217064ade8da1d3db192c51be7d53f87de4
Viewport, again — the homescreen app was the case that broke it. Watching for a signal cannot work there: launched standalone, iOS resolves the CSS viewport once against a provisional box and never re-resolves it, so no resize, no layout change, nothing for a ResizeObserver to observe. Only a rotation forced the issue. So the CSS box is now a proposal: visualViewport says what is really visible and the height gets pinned in px to match, re-read on every fit — plus a short settle salvo after launch, since that launch announces nothing. - The countdown skipped the transition, where overT is parked at 9999 to hold the point flow. It read as RESUMING IN 9999 after the first game you ever win. - Countdown moved off the HUD line into the open, at a readable size. - A returned shot is a glancing blow now, not a mirror. Reversing the incoming line sent every parry straight back up it — into the thrower — so a boss handed you a free wound per volley. Contact across the racket face sets the angle: dead centre still goes back at him, which is a placement you earn. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Languages
JavaScript
75.2%
Python
15.8%
HTML
7.3%
Shell
1.4%
Swift
0.2%