Skip to content

perf(extension): idle control overlay and release accessibility mode - #1

Merged
code-yeongyu merged 3 commits into
mainfrom
perf/idle-overlay-and-ax-release
Oct 2, 2026
Merged

code-yeongyu merged 3 commits into
mainfrom
perf/idle-overlay-and-ax-release

Conversation

@code-yeongyu

@code-yeongyu code-yeongyu commented Oct 2, 2026 •

Copy link
Copy Markdown
Owner

Fork-local perf fixes; measurements and changes.md land in this PR before merge.

  • Control overlay: static glow painted once + two-cycle opacity pulse at onset (compositor-only), no pulse under prefers-reduced-motion. Upstream animated an inset box-shadow forever, repainting the viewport every frame.
  • Observation: release the Accessibility domain after each capture's AX reads (through the capture worker pool; timed-out targets skipped).

Tests: new ControlOverlay idle test and accessibility-release.test.ts fail on upstream 3f10983 and pass here; extension suite 2421 passed / 4 load-sensitive timing tests that pass when run alone; tsc --noEmit and biome clean.


Summary by cubic

Fixes two extension performance issues in the capture path and marks the repo as a fork of Tencent/BrowserSkill.

  • The control glow is painted once and pulses opacity for two cycles at onset (compositor-only) instead of animating an inset box-shadow forever; no pulse under prefers-reduced-motion.
  • The Accessibility domain is released after each capture's AX reads via the capture worker pool, so the renderer no longer keeps the AX tree live for the whole session; timed-out targets are skipped.
  • Adds a ControlOverlay idle test and accessibility-release.test.ts, including a case where the release fails without failing the capture.
  • README and the new changes.md credit upstream Tencent/BrowserSkill; changes.md documents each fix, its measurements, and the post-stop CPU tail finding, for which no code change was made.

Written for commit c6385d4. Summary will update on new commits.

Review in cubic

…ssibility mode

The control glow animated an inset box-shadow forever, which repaints the
whole viewport every frame for the entire session. Paint the glow once and
pulse a pre-painted layer's opacity for two cycles at onset (compositor-only),
with no pulse under prefers-reduced-motion.

Each observe/snapshot enabled the Accessibility domain and never disabled it,
so the renderer kept the AX tree live for the rest of the session. Disable it
once the capture has read the tree, through the capture's worker pool.
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