Repository navigation
Pause hidden status glyph animations and remove reduced-motion polling - #48
Merged
WaylandYang merged 2 commits intoOct 15, 2026
Merged
Conversation
Signed-off-by: Liangziyi <Danmushu@outlook.com>
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.
Why
StatusGlyphkeeps updating its SVG after leaving the viewport, and reduced-motion mode redraws the same pose every 250 ms. Pages with multiple glyphs therefore perform animation work that the reader cannot see.What changes
Only
src/components/ui/status-glyph.tsxchanges. The public API, figure definitions, and dependencies are unchanged.How it was checked
npm run typecheckpassed.node node_modules/vite/bin/vite.js build --logLevel error.display: nonerecovery, reduced-motion changes, static-pose updates, frame reuse, transitions, and cleanup. The new property-update scheduling assertion failed against the previous implementation and passed against this version; it compares the pending frame ID and request/cancellation counts, not just the number of pending frames. The harness is local validation, not a committed test suite./dev/examplesmounted 389/389 examples with 0 failures and no uncaught page errors in both dark and light themes at 1440 × 1000. StatusGlyph and TurnStatus examples and activity switching were also checked. Existing Input/Base UI console warnings remain.registry.jsonhas no content changes.git diff --checkpassed.Windows build limitation
Unmodified
npm run builddoes not pass on this Windows checkout (Node 22.20.0): the existing documentation parser fails atscripts/build-docs.mjs:140withTypeError: object null is not iterablewhen reading CRLF Markdown. It fails before Vite runs.For local validation, a temporary adapter normalized MDX line endings and Windows path separators in memory and invoked the installed shadcn CLI through Node instead of
execFileSync("npx", ...). It was used only to generate documentation and the registry, then type checking and the direct Vite build ran normally. No adapter or build-script changes are included in this PR; this is not a claim that the standard build passed locally. The normal Linux CI pipeline remains to be verified on GitHub.IntersectionObserver measures geometric intersection, not every form of visual occlusion. Firefox/Safari, low-end device FPS, and power consumption were not measured.
Before review
git commit -s).npm run typecheckpasses.npm run buildpasses locally (blocked by the existing Windows limitation above)./dev/examplesreports0 failedin both themes.