Skip to content

fix: harden wallpaper engines for v4.0.2 - #571

Merged
Anthonyy232 merged 5 commits into
masterfrom
codex/final-wallpaper-engine-audit
Jul 30, 2026
Merged

fix: harden wallpaper engines for v4.0.2#571
Anthonyy232 merged 5 commits into
masterfrom
codex/final-wallpaper-engine-audit

Conversation

@Anthonyy232

@Anthonyy232 Anthonyy232 commented Jul 30, 2026

Copy link
Copy Markdown
Owner

What changed

  • Re-decode the current live wallpaper after fold/unfold, surface-size, and scaling changes without advancing the queue.
  • Apply adaptive brightness at draw time, keep source-over crossfades at constant brightness, and keep vignette coordinates continuous across GPU texture tiles.
  • Preserve rapid effect edits so a debounced slider update cannot overwrite a switch changed immediately afterward.
  • Restore the manifest launcher shortcut used by launcher gestures, routing it automatically to the configured static or live engine.
  • Schedule the daily album refresh in live mode and cancel stale work during boot recovery.
  • Add focused crossfade unit tests and device tests for disabled effects, darken, grayscale, vignette, and blur.
  • Prepare version 4.0.2 and release notes in the established changelog style.

Root causes and impact

The live renderer retained only a surface-sized texture and precomputed adaptive brightness during image load. Surface changes therefore reused a stale-resolution texture, scaling changes updated geometry without re-decoding, and adaptive brightness changes did not affect the image already on screen. The crossfade also faded both layers, producing a midpoint brightness dip, while vignette coordinates restarted for each large-image texture tile.

The settings UI passed full snapshots through a shared debounce. A subsequent immediate switch update could be overwritten by the older delayed snapshot. Live scheduling also omitted the album-refresh worker, and boot recovery did not cancel every stale schedule when configuration was invalid.

The v4 rewrite had also dropped the v3 manifest shortcut entry point, leaving launcher gestures bound to a missing activity. The restored private trampoline starts the same serialized foreground change service as the in-app action, with mode-aware static/live routing.

Validation

  • 268 unit tests: all passed.
  • Android lint: zero errors.
  • Debug app and instrumentation APKs: built successfully.
  • Android 16 emulator: full instrumentation suite passed (Android 17-only fold test skipped).
  • Android 17 foldable emulator: full instrumentation suite passed.
  • Manual live checks: shader compilation, every visual/interactive effect, crossfade, double-tap, screen-off change, adaptive brightness, scaling reload, fold/unfold reload, reboot restoration, and parallax configuration.
  • Manual static checks: atomic home/lock application, independent effects, synchronized and independent schedules, distinct 60/120-minute intervals, manual change without timer reset, and reboot restoration.
  • Launcher shortcut: published metadata verified through Android’s shortcut service; a real launcher long-press exposed and successfully invoked the private shortcut, and mode-aware routing was verified for static and live configurations.
  • GitHub security sweep: no open Dependabot, code-scanning, or secret-scanning alerts.

@Anthonyy232

Copy link
Copy Markdown
Owner Author

Temporarily closing and reopening to retrigger required CI on the final audited head 6a7874b after the dependency cleanup.

@Anthonyy232 Anthonyy232 reopened this Jul 30, 2026
@Anthonyy232

Copy link
Copy Markdown
Owner Author

Final gate note: GitHub recorded the final dependency-cleanup and CI-trigger commits but did not enqueue new pull_request runs for those synchronize events. The exact current tree passed locally with clean unit tests, lint, debug app and instrumentation builds, plus connected tests on Android 17 (7/7) and Android 16 (6/6 compatible, one Android-17-only fold test skipped). Prior source-fix commits are green in both CI and CodeQL. The merged master push will be held as the required remote release gate before tagging.

@Anthonyy232
Anthonyy232 marked this pull request as ready for review July 30, 2026 07:44
@Anthonyy232
Anthonyy232 merged commit 15c9b47 into master Jul 30, 2026
@Anthonyy232
Anthonyy232 deleted the codex/final-wallpaper-engine-audit branch July 30, 2026 07:44
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.

1 participant