What's New: click a change's picture to enlarge it; digest entries show their highlight's picture

Merged
TE
15d ago
+511-12

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/Dialog on 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 use preload="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 way digest.py writes 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) and changelog.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 no media-src, so clips play as GIF or animated WebP. MP4 needs an app change in CmuxNextUpdater (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_Colors and the entry group-band-colors.
  • "a change's picture opens enlarged on a click, and Close closes it".

Observed / Not run

  • Observed: scripts/web-lint.sh passes (Oxfmt, Oxlint and type check, layers check), as do bun scripts/check-fixed-waits.ts and 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 Autofix with [code]smith
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.py writes 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.