fix: harden wallpaper engines for v4.0.2 - #571
Merged
Merged
Conversation
This was referenced Jul 30, 2026
Owner
Author
|
Temporarily closing and reopening to retrigger required CI on the final audited head 6a7874b after the dependency cleanup. |
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
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