Skip to content

feat(wallpaper): add cached image effects pipeline - #33

Open
perlowja wants to merge 4 commits into
singularityos-lab:mainfrom
perlowja:feat/wallpaper-effects-phase2-pr
Open

perlowja wants to merge 4 commits into
singularityos-lab:mainfrom
perlowja:feat/wallpaper-effects-phase2-pr

Conversation

@perlowja

Copy link
Copy Markdown
Contributor

Depends on #32. This branch is based on the current Phase 1 PR head and must be rebased onto main after #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 keys
  • Phase 1 focused tests: 2/2 executables passed
  • glib-compile-schemas --strict passed for the fixture and shipped schema PR
  • Diff guardrails: no added comments, ASCII punctuation, no new libadwaita or NCZ references, valid AI trailers

AI assistance: disclosed

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
perlowja force-pushed the feat/wallpaper-effects-phase2-pr branch from faa01fe to f984922 Compare September 29, 2026 21:43
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