cmux-next: backgrounds batch: collages, every Apple aerial, video playback and Chief picture motion settings
Summary
A reduced backgrounds batch for cmux-next. It carries:
- Collages (from #21789): arrange several pictures as one background. New Collage… in the background picker opens the editor; a saved collage is
collage:<id>, can be edited (saved under a new id; the old one goes only after the background switches) and removed (never the one in use). A collage draws only pictures the picker offers (a painting is downloaded first, a file only from your images, a system picture only from Desktop Pictures), and one picture that can't be read refuses the save instead of dropping it. - Every Apple aerial is a background (from #21784): aerials macOS has not downloaded show as an empty tile with a download mark and open the Wallpaper pane.
- Video playback settings (from #21746):
appearance.backgroundVideo(Play, Only While cmux Is Active, Still Picture) andappearance.backgroundVideoOnBattery(Keep Playing, Pause). Low Power Mode and Reduce Motion still pause a video. - Chief picture motion (from #21746):
home.chiefPictureMotion(always, on hover (default), never) for a Chief's animated picture on Home pages, native and web.
Dropped, and why
appearance.backgroundAvoidPanes("Keep Paintings Clear of Panes", #21746).- Placing a picture by hand (#21743):
BackdropUserPlacement,BackdropPlacementStore,BackdropAdjustOverlay, the Adjust Placement… button, thecmux.settings.backdrop.image.adjustop and itsnot_adjustableerror,updateArtCrop/adjustable.
Their settings, strings in every locale, ops, web UI and tests are gone. #22562 (merged into feat-cmux-next today) made the background aspect-fill the window, centered, with no framing logic, and deleted BackdropArtPlacement.swift, the visible-span math, the blurred fill and the pane-column reports, because framing made the picture jump while resizing. Both dropped features were built on that framing, so this PR follows #22562 and brings none of it back: WindowMaterialView.swift is base's version unchanged, and base's art blur (#22566) and one-background-or-shuffle (#22577, including Shuffle a Folder) stay as they are.
The string catalogs are base plus only the strings this batch uses (additions only). docs/mdm/com.manaflow.cmux.json and schemas/defaults/cmux-next.json are base's; the PR autofix regenerates them.
Changelog
- Added: Collages: arrange several pictures as one window background.
- Added: Every Apple aerial is offered as a background; ones not downloaded open the Wallpaper pane.
- Added: Settings for when a video background plays and whether it plays on battery, and for when a Chief's animated picture moves.
Testing
-
Red-then-green:
BackdropCollagesTests.oneUnreadablePictureRefusesTheCollageand the new cases inBackdropImagesPageProviderTests.collagesSaveReadAndDeleteare committed before the fix (f1d71c9bf52a), the fix is 0f0b9d8c4a5f. -
Fleet compile of CmuxNext with its tests and the app on the head (
cmux-ci compile-check --package CmuxNext --app). -
webviews:
bun run check,bun test src/pages/settings(216 pass),scripts/web-lint.sh,scripts/cmux-next/prepush-gate.py. -
Base merges: feat-cmux-next 056118fdaa98 (conflict only in
WebTheme.swift: base'sworkingLook/data-working-lookand this PR'spictureMotion/data-picture-motionboth kept), b857e19141ee (SettingsPageLayout.swift: base moved Chief Chat to the new Chief page, so the Chief Pictures group moves there with it;PageFactory.swift: base's side), then clean merges of 855674fd98c4, f7a403370ec4, 74b91c115465 and 4af74bec7a88.CmuxNextSettings/Localizable.xcstringsis base's text plus this PR's 12 keys (an earlier merge had reordered the whole file). -
Settings exports and the defaults snapshot come from the PR autofix's
pr-autofix-patchartifact (runs 39614862117 and 39653863256), applied aschore(next): PR autofixcommits; the push job does not run onpull_requestevents. -
Localization:
Collage(da/de/es/fr/it/nb) andName(de) are documented identities inscripts/localization-allowed-omissions.json;python3 scripts/localization_catalog.py checkno longer reports these catalogs. -
test/home-chief-picture-motion.test.tsxyields a turn instead of a 20 ms fixed wait (check:fixed-waits);bun testof it and ofsrc/pages/settingspass (241 pass, 1 skip). -
Fleet
cmux-ci compile-check --apppassed on e7c20a57b325, dd954625b770, cacbf8a3ed43, 63922e969850, 4c2e4e0fddda, 12703f092814, 483b19549d42 and 0244c5223e28.
No capture: the visible changes are Settings web page rows and the collage editor (the gallery advisory run renders the settings page) and backdrop behavior (video playback, battery pause, picture motion), not new native chrome.
Observed / Not run
- Observed: the checks above on huge-blue and the fleet; CI on the head.
- Not run this pass: local
bun run check/scripts/web-lint.sh(refused on cosmic-gray); CI's web lint ran them and passed (fast gates). - Not run: no live dogfood of a collage or an aerial in a tagged build in this pass.
Replaces the separate PRs #21746, #21789 and #21784 (their kept content lands here). #21743's hand placement is dropped as above.
🤖 Generated with Claude Code
Agent session: cosmic-gray