TL;DR — Wallnetic 1.4 makes the wallpaper look after itself: playlists, a matching lock screen, a per-display watchdog that recovers playback after two stalled 5-second samples, and new pauses for screen lock and user switching. The candid part — a SwiftUI reactivity bug kept two schedulers from starting, and macOS 26 window buttons took two fixes.

Wallnetic 1.4.0 to 1.4.2 — what shipped in each releaseWallnetic 1.4 is about a wallpaper that looks after itself — it rotates, recovers from stalls and pauses when the Mac is locked, asleep or busy with a fullscreen app. — /wallnetic 1.4 releases 1.4.0 2026-06-29 · GitHub only + playlist & shuffle + lock screen still frame + playback watchdog fix: time-of-day start fix: display identity fix: Tahoe buttons (1/2) 1.4.1 2026-08-08 · App Store + everything in 1.4.0 + pause on screen lock + pause on user switch fix: screen-saver pause fix: re-check on wake 1.4.2 2026-09-24 · App Store fix: pause survives unlock fix: Tahoe buttons (2/2) + revised Dynamic Island fix: import & library fix: input hardening + SHA-256 sums for DMGs → App Store path: 1.3.1 → 1.4.1 → 1.4.2 · 1.4.0 features arrived inside 1.4.1 → 1.4.2 GitHub DMGs: same source and version as the App Store build, with checksums
Wallnetic 1.4 is about a wallpaper that looks after itself — it rotates, recovers from stalls and pauses when the Mac is locked, asleep or busy with a fullscreen app.

Since late June, Wallnetic has shipped three releases. 1.4.0 went out only as a GitHub DMG, so Mac App Store users went from 1.3.1 straight to 1.4.1, then 1.4.2. This is part 1 of our product notes — what changed in Wallnetic and Blink AI since our last posts, shipped work only.

What changed for users

  • Playlist and shuffle. The wallpaper rotates on an interval you pick, from 5 minutes to once a day, shuffled or in order, from the library, favourites or one collection.
  • A matching lock screen. The lock screen and Mission Control show a still frame of the current video, not an unrelated picture.
  • Self-healing playback. A stalled wallpaper recovers on its own.
  • Smarter pausing. On top of display sleep, fullscreen apps and Low Power Mode, Wallnetic now pauses for screen lock and fast user switching, and the screen-saver pause finally fires. Since 1.4.2, a pause you asked for survives lock, wake and the screen saver.
  • Window controls on macOS 26 Tahoe. Close and minimise buttons are back.
  • Revised Dynamic Island and top bar. Hover, inline rename and first clicks now respond.
  • Library and import fixes. Concurrent imports no longer collide, and opening links or importing downloaded wallpapers no longer crashes on malformed input.
  • Checksummed direct downloads. The 1.4.2 GitHub DMGs are built from the same source and version as the App Store build, with SHA-256 checksums.

Why the playlist never started

The playlist merged with a green test suite and never rotated. Its settings were @AppStorage properties inside an ObservableObject, where @AppStorage does not fire objectWillChange. The view never re-rendered, the toggle’s .onChange never fired and no timer was scheduled; the tests covered which wallpaper comes next, not the toggle. We caught it on a real Mac before release and moved the settings to @Published properties persisted in didSet. Time-of-day switching had used the same pattern since 1.1.0 and got the same fix. The pattern survives elsewhere in the codebase, so we do not call it solved.

Lock screen and display identity

macOS draws the system wallpaper, not our video window, on the lock screen and in Mission Control. Our old lock-screen video window could never appear there, because the lock screen runs in a separate secure session — it only kept a decoder busy. We deleted it. The replacement extracts a frame with AVAssetImageGenerator and applies it as each display’s system wallpaper through NSWorkspace.shared.setDesktopImageURL(_:for:options:).

The same change keyed windows and renderers by CGDirectDisplayID instead of NSScreen. macOS recreates NSScreen objects on sleep, wake and hot-plug, so lookups silently missed and, in per-display mode, the main display often stopped updating.

Watchdog and smarter pausing

The watchdog samples each display’s playback clock every 5 seconds; two consecutive samples without progress count as a stall, and only that display is nudged back into playback. The pure function behind it, PlaybackWatchdog.isFrozen, never calls a wallpaper frozen while it is meant to be paused. The screen-saver pause had never fired: its observers listened on NotificationCenter.default for cross-process notifications that only arrive on DistributedNotificationCenter. On every resume, Wallnetic now re-reads lock and session state from the window server rather than trusting notifications to arrive in pairs.

What was hard

  • Tahoe, twice. A transparent window removed the material macOS 26 draws the buttons against — fixed by making it opaque. A later report still showed no buttons, so 1.4.2 switched to a native title bar.
  • A regression we shipped. New resume paths in 1.4.1 revived wallpapers the user had paused — fixed in 1.4.2 by resuming only pauses we caused.
  • Actor reentrancy. Our import gate trusted actor isolation, which admits a second import whenever the first awaits — fixed with an explicit permit and wait queue.
  • Panels that are never key. SwiftUI’s onHover relies on the key window, which the Dynamic Island panel never is — fixed with an .activeAlways AppKit tracking area.

What this buys

Most of 1.4 is invisible when it works: the wallpaper rotates, recovers and steps aside on its own. We chose this over a second macOS product, which went on our Q3 no list. Next in product notes: how Blink AI now plays SCORM and H5P content it did not write — safely.

Frequently asked questions

Why doesn’t my live wallpaper show on the Mac lock screen?

Because macOS draws the system wallpaper on the lock screen and in Mission Control, and an app’s video window cannot appear above the lock screen, which runs in a separate secure session. Since 1.4.1 on the App Store, Wallnetic sets a still frame of your current video as the system wallpaper, so those surfaces match your desktop.

How do I make Wallnetic shuffle wallpapers automatically?

Turn on the playlist in Settings, or choose Shuffle Wallpapers from the menu bar. Wallnetic then changes the wallpaper on an interval you pick, from 5 minutes to once a day, shuffled or in order, from your library, your favourites or one collection. Turning it on switches off time-of-day switching, so the two never compete.

Working on something similar?

T-Square architects, builds and operates production systems for learning, AI and custom software products. Talk to a senior engineer for a second opinion.