Skip to content

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

Merged
teamleaderleo merged 14 commits into
feat-cmux-nextfrom
wn/whats-new-pictures
Oct 22, 2026
Merged

teamleaderleo merged 14 commits into
feat-cmux-nextfrom
wn/whats-new-pictures

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

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 (f4af624) comes before the change (4809da7). 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.

Written for commit becf144. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 13 commits October 21, 2026 05:57
…hanges in a glass frame

Leo 2026-10-21: content fills the pane with modest margins, the version and date column stays
compact, the width goes to pictures beside the items and to full descriptions; no column cap;
glass, never opaque. The Ledger drops its 640 px measure for 32 px margins and a 112 px gutter;
each row shows its whole description (76ch measure) and, where its column is at least 720 px
wide, its picture as a second column. Picture frames blur what is behind them (--surface-blur,
none under Reduce Transparency) with a lit top rim. The gallery's Ledger fixture gains an Improved
row with a picture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-c7ad-7850-9e71-5b51f1c9ed9f&host=cosmic-gray
… their own

Review of #23420: the wide row put Try it / Learn more in a block under the description, hidden
until hover, so every row with an action kept an empty line (the #21185 bug). They now sit inline
at the end of the last paragraph (after the title when there is none). The links test renders the
Ledger as the page does (rowMedia) and checks where the actions sit. A side-by-side picture fills
its column.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-c7ad-7850-9e71-5b51f1c9ed9f&host=cosmic-gray
…picture stops at 720 px

The first captures put the picture at the pane's right edge, far from a 76ch line, and blew the
lead screenshot up past its pixels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-c7ad-7850-9e71-5b51f1c9ed9f&host=cosmic-gray
At 1000 px the picture column squeezed the text to about 240 px.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-c7ad-7850-9e71-5b51f1c9ed9f&host=cosmic-gray
… not inside one

Review: inside one act React commits nothing, so the loop never saw the row and always ran its
200 turns. Each turn is now its own act.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-c7ad-7850-9e71-5b51f1c9ed9f&host=cosmic-gray
…ow their highlight's picture

Leo 2026-10-21, design pass item 2: each New/Improved change can carry a picture, lazy-loaded in a
glass frame, click to enlarge. A picture's frame is now a button that opens it in a dialog
(ui/Dialog: Escape, Close or a press outside close it) on a blurred backdrop, the picture whole.
A nightly digest entry (digest.py) has no picture, and the page dropped its highlight file, which
can have one, as a duplicate: the entry now takes that picture, matching ids as digest.py writes
them. Two strings, in every language: Close (as Home's lightbox) and Enlarge picture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-c7ad-7850-9e71-5b51f1c9ed9f&host=cosmic-gray
…-new-pictures

# Conflicts:
#	webviews/src/pages/changelog/ReleaseParts.tsx
@teamleaderleo teamleaderleo added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 21, 2026
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review becf144: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr23874 -f ref=wn/whats-new-pictures -f platform=macos -f backend_mode=local

Unclear: web / react-apps-check (4) failed: no known signature; failed step: Build the web bundles. This PR merged before its CI finished: fix forward on main.

CI failed on becf1444a7 (run 39699858297 attempt 1): 5 unknown.

Job Verdict Why
web / react-apps-check (4) unknown no known signature; failed step: Build the web bundles
web / react-apps-check (2) unknown no known signature; failed step: Build the web bundles
web / react-apps-check (1) unknown no known signature; failed step: Build the web bundles
web / react-apps-check (3) unknown no known signature; failed step: Build the web bundles
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Not re-run automatically: web / react-apps-check (4), web / react-apps-check (2), web / react-apps-check (1), web / react-apps-check (3), web / react-apps-check are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

red: web / Web status; NEW: green on the base cb213ba; do not merge until green; see lane-rules
red: web / react-apps-check; no finished base run on cb213ba to compare; do not merge until green; see lane-rules
red: web / react-apps-check (1); no finished base run on cb213ba to compare; do not merge until green; see lane-rules
red: web / react-apps-check (2); no finished base run on cb213ba to compare; do not merge until green; see lane-rules
red: web / react-apps-check (3); no finished base run on cb213ba to compare; do not merge until green; see lane-rules
red: web / react-apps-check (4); no finished base run on cb213ba to compare; do not merge until green; see lane-rules

Tour of becf1444a7 (run): no media. The tour did not run: only webview code changed (6 path(s)), which the gallery advisory run checks in Linux Chromium on the pull request (its artifact holds any captures); add the media-tour-mac label to tour it on a Mac.

Gallery before/after for becf144: 16 states rendered, 0 images differ, 70 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 39699858197 -R manaflow-ai/cmux -n gallery-advisory-23874-becf1444a7a346f8cd5863d8293b6aacce162a3f (then read gallery-review.json)

States
State Theme Status Diff Picked by
pages.changelog/nightly-3913596493801 Apple System Colors Light unchanged 0% own ReleaseParts.tsx
pages.changelog/nightly-3913596493801 Apple System Colors unchanged 0% own ReleaseParts.tsx
pages.changelog/nightly-update Apple System Colors Light unchanged 0% own ReleaseParts.tsx
pages.changelog/nightly-update Apple System Colors unchanged 0% own ReleaseParts.tsx
pages.changelog/nightly-unpublished Apple System Colors Light unchanged 0% own ReleaseParts.tsx
pages.changelog/nightly-unpublished Apple System Colors unchanged 0% own ReleaseParts.tsx
pages.changelog/nightly-history Apple System Colors Light unchanged 0% own ReleaseParts.tsx
pages.changelog/nightly-history Apple System Colors unchanged 0% own ReleaseParts.tsx
pages.changelog/ledger Apple System Colors Light unchanged 0% own ReleaseParts.tsx
pages.changelog/ledger Apple System Colors unchanged 0% own ReleaseParts.tsx
pages.changelog/ledger-update-span Apple System Colors Light unchanged 0% own ReleaseParts.tsx
pages.changelog/ledger-update-span Apple System Colors unchanged 0% own ReleaseParts.tsx
pages.changelog/journal Apple System Colors Light unchanged 0% own ReleaseParts.tsx
pages.changelog/journal Apple System Colors unchanged 0% own ReleaseParts.tsx
pages.changelog/journal-update-span Apple System Colors Light unchanged 0% own ReleaseParts.tsx
pages.changelog/journal-update-span Apple System Colors unchanged 0% own ReleaseParts.tsx
pages.changelog.update-surfaces/card Apple System Colors Light unchanged 0% own styles.css
pages.changelog.update-surfaces/card Apple System Colors unchanged 0% own styles.css
pages.changelog.update-surfaces/card-span Apple System Colors Light unchanged 0% own styles.css
pages.changelog.update-surfaces/card-span Apple System Colors unchanged 0% own styles.css
pages.changelog.update-surfaces/card-span-wallpaper Apple System Colors Light unchanged 0% own styles.css
pages.changelog.update-surfaces/card-span-wallpaper Apple System Colors unchanged 0% own styles.css
pages.changelog.update-surfaces/card-maintenance Apple System Colors Light unchanged 0% own styles.css
pages.changelog.update-surfaces/card-maintenance Apple System Colors unchanged 0% own styles.css
pages.changelog.update-surfaces/card-wallpaper Apple System Colors Light unchanged 0% own styles.css
pages.changelog.update-surfaces/card-wallpaper Apple System Colors unchanged 0% own styles.css
pages.changelog.update-surfaces/card-one-change Apple System Colors Light unchanged 0% own styles.css
pages.changelog.update-surfaces/card-one-change Apple System Colors unchanged 0% own styles.css
pages.changelog.update-surfaces/card-no-highlights Apple System Colors Light unchanged 0% own styles.css
pages.changelog.update-surfaces/card-no-highlights Apple System Colors unchanged 0% own styles.css
pages.changelog.update-surfaces/card-no-highlights-wallpaper Apple System Colors Light unchanged 0% own styles.css
pages.changelog.update-surfaces/card-no-highlights-wallpaper Apple System Colors unchanged 0% own styles.css

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

@blacksmith-sh

blacksmith-sh Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Found 3 test failures on Blacksmith runners:

Failures

Test View Logs
nightly cmux-tui resolve/nightly cmux-tui resolve View Logs
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)/
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)
View Logs
test_the_tree_classifies_every_macos_job (main.RoutingTableTests.test_the_tree_clas
sifies_every_macos_job)/
test_the_tree_classifies_every_macos_job (main.RoutingTableTests.test_the_tree_clas
sifies_every_macos_job)
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by claude-sr2/gallery-loop on cosmic-gray · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-ocezf created for this PR by the cmux coordinator.

… its entry stay one change in any language

Review of #23874: the changelog page never loaded ui/popupSurface.css, which places a ui/Dialog and
its backdrop (position: fixed, layers), so the lightbox would open as a flow child under the page.
And add() compared raw ids, so in a non-English page a highlight file (Group_Band_Colors, English
title) and its digest entry (group-band-colors, localized title) showed twice, now both with the
picture: ids compare as digest.py writes them. An empty alt no longer leaves a trailing colon in
the enlarge label.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-c7ad-7850-9e71-5b51f1c9ed9f&host=cosmic-gray
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent, correctness first): SHIP at becf144

An independent review subagent made two passes:

  • 6f694cc: FAIL.
    1. The changelog page never loaded ui/popupSurface.css, so a ui/Dialog lightbox would open as a flow child under the page.
    2. add() matched raw ids, so in a non-English page a highlight and its digest entry both showed, each with the picture.
  • becf144: PASS. Both are fixed:
    • main.tsx imports popupSurface.css. Its rules are zero-specificity defaults, and .cl-lightbox.ui-dialog wins.
    • ids are keyed by entryId, with a new ja test.
    • The reviewer checked that no other changelog test changes result.
    • An empty alt gives a plain label.

@teamleaderleo
teamleaderleo merged commit 4743dca into feat-cmux-next Oct 22, 2026
@teamleaderleo
teamleaderleo deleted the wn/whats-new-pictures branch October 22, 2026 00:39
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

base-red-watch: cmux-next guards / cmux-next CI guard group went red on feat-cmux-next in https://github.com/manaflow-ai/cmux/actions/runs/39701037076 (first red at 4743dca, last green at 191c30f). Suspect: #23874 (commit 4743dca). If it is yours, fix forward on feat-cmux-next.

@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant