Skip to content

fix: show one image spread across the hero monitors - #119

Merged
rvanbaalen merged 2 commits into
mainfrom
fix/issue-118
Sep 13, 2026
Merged

rvanbaalen merged 2 commits into
mainfrom
fix/issue-118

Conversation

@rvanbaalen

@rvanbaalen rvanbaalen commented Sep 13, 2026 •

Copy link
Copy Markdown
Collaborator

The New Wallpaper hero and the first-run wizard now draw one photograph across their monitor panels instead of a full copy of the same artwork on each.

What changed

  1. Added HeroBeach to the asset catalogue: a Maui sunset cropped to a panoramic band, 2400 × 559, 188 KB.
  2. Added SpreadPaper/Views/SpreadPhoto.swift with PanelSlice, SpreadContent and SpreadPhoto: one scene laid out at full spread size, each panel clipped to its own rectangle inside it.
  3. Added HeroSpread in CreationModal.swift, the pure geometry that places the three panels inside the shared scene, with the gaps counted as part of the spread so the image carries on behind them.
  4. Replaced the hero's procedural sunset scene with the photograph, and spread the dynamic day-cycle ribbon, its travelling dot and its timeline across the panels the same way; the Light & Dark scene keeps its per-panel light and dark treatment, which is the point of that kind.
  5. Replaced the wizard's two flat rectangles with the same photograph spread across two panels, and recorded the photo, photographer, source and licence in CREDITS.md, linked from the README.

Why

The hero is the app's pitch, and it was advertising three separate wallpapers on three monitors, which is exactly what SpreadPaper replaces.

Verify

  1. Open the app, click New Wallpaper, and read the three panels as one scene: palms on the left panel, rocks and surf on the centre, the island ridge and horizon continuing onto the right panel.
  2. Check the horizon: it sits at the same height either side of each gap, and the side panels show a shorter vertical band because they are shorter monitors.
  3. Switch to Dynamic and watch the sun dot travel across all three panels on one timeline.
  4. Relaunch with the wizard (clear hasCompletedWizard) and check the two welcome monitors show one beach across the gap.
  5. Read the credit line at the bottom of the hero: Photo by Ganapathy Kumar on Unsplash, both names linking out.

What it looks like

Robin reviewed a build of 888fb6d and approved the hero: "perfect". The panels were also checked by rendering the real SpreadPhoto views with ImageRenderer at the exact HeroSpread rectangles and composing them at their hero positions: the foliage runs from the left panel into the centre, and the island ridge and horizon line up across the centre-to-right gap with no jump. The modal card is a fixed 600 pt wide, so window width does not change the hero.

Tests: 142 green, 5 of them new geometry tests in HeroSpreadTests.

Asset: SpreadPaper/Assets.xcassets/HeroBeach.imageset/hero-beach.jpg, 2400 × 559, 192,250 bytes.

Closes #118

The New Wallpaper hero and the wizard illustration now draw one photograph across their monitor panels, each panel clipped to its own part of it, with the scene continuing behind the gaps.

Closes #118
The credit line now uses cdTextSecondary, which clears WCAG AA over the hero's tinted backdrop, and fades out for the kinds that do not draw the photograph. Drops the two accent tokens whose last uses went with the old wizard rectangles, hides the illustration from VoiceOver, and documents the remaining stored properties.
@rvanbaalen
rvanbaalen merged commit 1d80dfd into main Sep 13, 2026
@rvanbaalen
rvanbaalen deleted the fix/issue-118 branch September 13, 2026 14:34
rvanbaalen pushed a commit that referenced this pull request Sep 13, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.9.0](v1.8.0...v1.9.0)
(2026-09-13)


### Features

* crossfade day and night photos in the Light & Dark hero
([#121](#121))
([f785c1f](f785c1f))
* cycle the Dynamic hero through a day of photographs
([#124](#124))
([33d0367](33d0367))
* import wallpapers saved by earlier versions
([#113](#113))
([0894dd8](0894dd8))
* new app icon
([#99](#99))
([a4ba884](a4ba884))
* rebuild Settings as a native macOS settings window
([#71](#71))
([c6f1e2a](c6f1e2a))


### Bug Fixes

* close the blind spots in the user-facing copy guard
([#127](#127))
([a4225bb](a4225bb))
* fill the gallery in as thumbnails arrive
([#135](#135))
([a59a3db](a59a3db))
* focus and select the save dialog name without AppKit responder tricks
([#92](#92))
([fc4a33b](fc4a33b))
* harden the update checker against HTTP errors, odd tags and
prereleases
([#96](#96))
([0db734d](0db734d))
* keep the renders other desktops still point at
([#136](#136))
([6ee6e4b](6ee6e4b))
* make drag and drop work in the wizard and editor
([#77](#77))
([b757c00](b757c00))
* pick a schedule start time from short hour and minute menus
([#130](#130))
([a1944c3](a1944c3))
* request read-only access to user-selected files
([#104](#104))
([ddaeb91](ddaeb91)),
closes [#98](#98)
* restore hover on the editor header and canvas HUD buttons
([#133](#133))
([b85273c](b85273c))
* restore the New Wallpaper heading
([#128](#128))
([75d03e9](75d03e9))
* show one image spread across the hero monitors
([#119](#119))
([1d80dfd](1d80dfd))
* stop the skeleton shimmer leaking into the search field
([#68](#68))
([9424209](9424209))
* tighten the onboarding copy and its wrapping
([#125](#125))
([56e7dd9](56e7dd9))
* tint Phosphor glyphs by template rendering so icons draw
([#117](#117))
([0a6e92b](0a6e92b))
* write dynamic HEIC files straight to disk and report count mismatches
([#91](#91))
([6c230c2](6c230c2))
* write dynamic wallpapers to a new file per apply so macOS reloads them
([#105](#105))
([864c0db](864c0db))


### Performance Improvements

* build gallery thumbnails with ImageIO downsampling
([#79](#79))
([1c48c7f](1c48c7f))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The new-wallpaper hero shows the same image on every monitor

1 participant