The phone in the hero held four .bubble divs with invented text. It is now a screenshot of a real conversation: two simulators, two accounts on relay1, six messages that actually crossed the wire.
The capture is reproducible, not a one-off: Scripts/conversation-shot.sh in the iOS repo boots two simulators, signs both up, alternates through a scripted exchange with each side waiting for the other's line, and photographs the thread. One install talking to itself would share a keychain, a device identity and a ratchet, so it has to be two.
.phone loses its fixed 590px height, so the picture sets it. A fixed height either crops the screenshot or leaves a band of bezel under it.
.hero-art loses aria-hidden, which was right for a decoration and wrong for a picture with content in it. The image carries alt text instead.
Served at two sizes through srcset: 599px for the 296px slot, 1290px for retina.
Both files join AssetVersion's hash list, which covered the CSS, JS and brand images only. Without that a re-captured screenshot would be served from cache indefinitely.
The phone in the hero held four `.bubble` divs with invented text. It is now a screenshot of a real conversation: two simulators, two accounts on relay1, six messages that actually crossed the wire.
The capture is reproducible, not a one-off: `Scripts/conversation-shot.sh` in the iOS repo boots two simulators, signs both up, alternates through a scripted exchange with each side waiting for the other's line, and photographs the thread. One install talking to itself would share a keychain, a device identity and a ratchet, so it has to be two.
- `.phone` loses its fixed 590px height, so the picture sets it. A fixed height either crops the screenshot or leaves a band of bezel under it.
- `.hero-art` loses `aria-hidden`, which was right for a decoration and wrong for a picture with content in it. The image carries alt text instead.
- Served at two sizes through `srcset`: 599px for the 296px slot, 1290px for retina.
- Both files join `AssetVersion`'s hash list, which covered the CSS, JS and brand images only. Without that a re-captured screenshot would be served from cache indefinitely.
Tests: 697, 0 failures. Build clean.
Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The phone in the hero held four
.bubbledivs with invented text. It is now a screenshot of a real conversation: two simulators, two accounts on relay1, six messages that actually crossed the wire.The capture is reproducible, not a one-off:
Scripts/conversation-shot.shin the iOS repo boots two simulators, signs both up, alternates through a scripted exchange with each side waiting for the other's line, and photographs the thread. One install talking to itself would share a keychain, a device identity and a ratchet, so it has to be two..phoneloses its fixed 590px height, so the picture sets it. A fixed height either crops the screenshot or leaves a band of bezel under it..hero-artlosesaria-hidden, which was right for a decoration and wrong for a picture with content in it. The image carries alt text instead.srcset: 599px for the 296px slot, 1290px for retina.AssetVersion's hash list, which covered the CSS, JS and brand images only. Without that a re-captured screenshot would be served from cache indefinitely.Tests: 697, 0 failures. Build clean.
Generated with Claude Code
mentioned in commit
946b9dea7echanged the description