Conversation
Extends the wallpaper title/author overlay from a fixed bottom-left position to a user-selected quadrant (top-left, top-right, bottom-left, bottom-right), exposed as a Settings row below the existing visibility toggle. An invalid or unset value safely falls back to bottom-left, matching the previous fixed behavior. The contrast-sampling rect (corner_luminance_frac call in update_attribution()) now tracks the active quadrant too -- it previously always sampled the bottom-left corner of the wallpaper regardless of where the label actually sat, which would have picked light/dark text against the wrong part of the image for any non-bottom-left placement. Needs the wallpaper-attribution-position schema key (singularityos-lab/singularity-desktop#262). This ports and extends a working left/right-only version the operator had running locally (never previously upstreamed) to the full 4-quadrant case the current design calls for. contrast-sample rect to track the active quadrant, added the Settings picker row. Assisted-by: Claude Code:claude-sonnet-5 AI-Scope: Ported and extended prior left/right attribution-position vala logic to full 4-quadrant support, plus fixed the contrast-sample rect to track the active quadrant.
Move top-positioned wallpaper attribution below the panel using the panel height tracked by AppSystem, while retaining the existing edge gutter. Make the position row insensitive whenever wallpaper attribution is disabled. Assisted-by: Codex:gpt-5.6-sol AI-Scope: Fixed top attribution placement to clear the panel and bound the position row sensitivity to the attribution setting.
Persist bounded wallpaper history and favorites, and expose navigation, rotation, and favorite actions in the panel. Assisted-by: Codex:gpt-5 Assisted-by: Codex:gpt-5.6-sol AI-Scope: Rebased and integrated Phase 1 wallpaper favorites, history, panel controls, tests, and the generic rotation-state path.
Add grayscale, blur, oil-paint, and quote effects with a bounded cache, settings UI, schema fixture, and round-trip coverage. Assisted-by: Claude Code:claude-sonnet-5 Assisted-by: Codex:gpt-5.6-sol AI-Scope: Rebased Phase 2, resolved current wallpaper overlaps, added the settings contract fixture and round-trip test, and fixed test linkage.
perlowja
force-pushed
the
feat/wallpaper-effects-phase2-pr
branch
from
September 29, 2026 21:43
faa01fe to
f984922
Compare
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.
Depends on #32. This branch is based on the current Phase 1 PR head and must be rebased onto
mainafter #32 merges.The shipped GSettings contract is in singularityos-lab/singularity-desktop#264; this PR must not merge before that schema change ships.
Adds native grayscale, blur, oil-paint, and quote-overlay transforms, a bounded 500 MiB cache, settings controls, and live reloads when effect settings change.
Verification:
wallpaper-effects-test: 6/6 passed, including all four transforms, cache hit, and a memory-backend set/read-back of all three UI keysglib-compile-schemas --strictpassed for the fixture and shipped schema PRAI assistance: disclosed