What's New: click a change's picture to enlarge it; digest entries show their highlight's picture
Summary
Leo's What's New design pass, part 2a. Leo, 2026-10-21: "Each New/Improved item can carry a screenshot or short looping video, taken from the PR body's before/after images. Lazy-load them, in a glass frame, click to enlarge."
This PR is the page side (webviews only):
- Click to enlarge: a change's picture, the lead one and each row's, is a button (Return works too). It opens the picture whole in a
ui/Dialogon a blurred glass backdrop (--surface-blur, none under Reduce Transparency). Escape, Close or a press outside closes it. Pictures still load lazily (loading="lazy"; clips usepreload="none"). - Pictures now show at all: a nightly's What's New entries come from
digest.py, which writes no media, and the page skipped the highlight file with the same id as a duplicate. The highlight carries the picture (release-notes.py), so an entry with no picture now takes its highlight's. Ids are matched the waydigest.pywrites them (lower case, other runs as-). - Strings: two new ones in all 21 languages:
changelog.page.close(the same words as Home's lightbox Close) andchangelog.page.enlarge("Enlarge picture", the button's label, followed by the picture's description).
Not in this PR:
- 2b, risk:high, separate: the generator reads each highlight's PR body and picks its first pr-media image, then hashes it into the signed notes. The tier rules make it high (
release-notes.py,nightly.yml). - Clips: the app inlines images only (
ReleaseMediaStore) and the page CSP has nomedia-src, so clips play as GIF or animated WebP. MP4 needs an app change inCmuxNextUpdater(release-rings' area).
Testing
cd webviews && bun test test/changelog-pictures.test.tsx (new). The test commit (f4af6243) comes before the change (4809da76). It should fail on the test commit (no .cl-media-open, and the entry has no picture) and pass at the head. Both results come from PR CI: the hook blocks local bun test on this Mac.
- "a digest entry with no picture shows its highlight file's picture": the highlight has id
Group_Band_Colorsand the entrygroup-band-colors. - "a change's picture opens enlarged on a click, and Close closes it".
Observed / Not run
- Observed:
scripts/web-lint.shpasses (Oxfmt, Oxlint and type check, layers check), as dobun scripts/check-fixed-waits.tsand the localization catalog (only the two keys added; the file otherwise round-trips byte for byte). - Not run locally: bun tests (CI runs them); the gallery before/after (the PR's gallery run).
Changelog
- Added: Click a picture in What's New to see it enlarged.
Agent session: cosmic-gray
🤖 Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Click a What's New change's picture to view it enlarged, and digest entries now show the picture from their highlight file.
- Each picture's frame is now a button that opens the picture full-size in a dialog on a blurred backdrop, closed by Escape, Close, or pressing outside.
- A nightly digest entry, which carries no picture, now takes its highlight file's picture, matching ids the way
digest.pywrites them so a highlight and its entry stay one change in any language. - Two new localized strings in all 21 languages: "Close" and "Enlarge picture".
- Clips still play as GIF or animated WebP; MP4 needs an app change not included here.