Skip to content

The chrome ground drifts visibly whenever the window is on screen - #905

Merged
TheOrcDev merged 1 commit into
mainfrom
chrome-ground-drift-visible
Oct 28, 2026
Merged

TheOrcDev merged 1 commit into
mainfrom
chrome-ground-drift-visible

Conversation

@TheOrcDev

Copy link
Copy Markdown
Owner

Owner, 2026-10-28: "I don't see it moving." That was true of #900, for two reasons:

  1. The drift only ran in the focused window, so it froze whenever another app had focus.
  2. 10 px over a minute, under the 82 to 92% coats, changed the coated pixels by 1 to 3 grey levels. That is invisible.

Change

  • Tuned live with the owner watching in the dev app (hot reload). It now sways up to 120 px across and 84 px down along two sines (25 s and 33 s).
    • It moves every 50 ms, under 2 px a step.
    • The stills overhang the window by 128 px, so no edge shows.
    • Over 3 s, 90% of pixels now change by up to 11 grey levels and 99% by up to 20, against 3 and 5 before.
  • When it moves: whenever the window is on screen, even beside a focused app. It pauses where it is, and resumes without a jump, while:
    • the window is minimised or hidden (main's window:visible);
    • a recording or livestream runs;
    • Reduce Motion is on.
  • session:take-running is a new main-to-renderer event.
    • Main computes it in takeRunning() from its own capture state. A Clips-only ring is not a take, and neither is a lost socket.
    • Main sends it to every window, and a window that loads during a take is told on load.
    • The aux windows' preload allowlists add onTakeRunning.
  • Design skill, glossary and docs/live-backgrounds.md are updated.

Gates

  • Green:
    • typecheck;
    • lint;
    • Prettier on the changed files;
    • check:text-files;
    • the ChromeGround tests: no edge shows, steps under 2 px, each pause signal holds and resumes, cleanup;
    • takeRunning tests: takes, the Clips ring, a lost socket;
    • the preload API policy, renderer security policy and IPC contract tests.
  • Not run: the full desktop suite and probe:ui-glass. The owner asked to merge.

Known issue, follow-up owed

  • The drift sometimes pauses on its own shortly after launch.
    • Seen twice in a fresh profile: once while the owner looked, and once in the cost run, which went from moving to paused within 30 s.
    • A reload resumes it.
    • Ruled out: theme switches, hiding and showing the app, Reduce Motion, and Clips' starting status (already marked Clips-only).
    • Diagnosing next.
  • Cost at this tuning is not re-measured, because the measurement hit the pause above. At the first tuning, drifting cost about 0.8% more of a GPU-process core and about 20 MB of GPU memory.

Owner, 2026-10-28: "I don't see it moving". Two causes in #900. The drift
ran only in the focused window, so it froze whenever another app had focus.
And 10 px over a minute changed the coated pixels by 1 to 3 grey levels,
which nobody can see.

- The owner tuned it live, watching the dev app: it now sways up to 120 px
  across and 84 px down along two sines (25 s and 33 s), on a 50 ms timer
  (under 2 px a step). The stills overhang the window by 128 px. Over 3 s,
  90% of pixels now change by up to 11 grey levels, against 3 before.
- It moves whenever the window is on screen, even beside a focused app. It
  pauses where it is while the window is minimised or hidden (main's
  window:visible), while a recording or livestream runs, and under Reduce
  Motion.
- The new session:take-running event comes from main's capture state
  (takeRunning in capture-state.ts). Every window gets it, and a window that
  loads during a take is told on load. A Clips-only ring is no take, and
  neither is a lost socket. The aux windows' preload allowlists gain
  onTakeRunning.
- Design skill, glossary and docs/live-backgrounds.md updated.
@TheOrcDev
TheOrcDev merged commit 25aefcf into main Oct 28, 2026
3 checks passed
@coderabbitai

coderabbitai Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

TheOrcDev added a commit that referenced this pull request Oct 29, 2026
)

Owner, 2026-10-29: "remove that animation on the background of the app, I
don't like it". Reverts both drift PRs, so plan 208 D5 holds again: nothing
moves outside the Welcome screen.

- ChromeGround is back to the display-sized still with no drift layer,
  timer or overhang.
- Main no longer publishes session:take-running; the IPC contract, preload
  API, allowlists and takeRunning() helper go with it (the drift was their
  only user).
- probe:ui-glass no longer holds Reduce Motion for the drift.
- Design skill, glossary and docs/live-backgrounds.md say the ground is a
  still. The Welcome screen's live backdrop is unchanged.
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