Skip to content

Improve: widget animation cost and touch details - #559

Merged
SandObserver merged 3 commits into
mainfrom
perf/widget-animation-cost
Oct 26, 2026
Merged

SandObserver merged 3 commits into
mainfrom
perf/widget-animation-cost

Conversation

@SandObserver

@SandObserver SandObserver commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Analog clock: redraw at about 15 fps and write hand and label attributes only when they change.
  • Connections map and VPN card: draw the static dots once to an offscreen canvas, rebuilt on size, data, emphasis or theme change; each frame copies it and draws only the pulse.
  • Now Playing: rotate an HTML wrapper around the reel, pause it off screen through whileOnScreen, let a second tap cancel a running swap, use an ease-out exit curve, scale the tape instead of animating width and height, and gate .nav:hover to fine pointers.
  • Weather: draw rain, snow, sleet and the bolt as HTML boxes with percentage offsets, so their animations stay off the main thread under widget zoom.
  • Backup: rotate an HTML wrapper for the running icon.
  • System Summary: move bars by translateX through a new setBar() toolbox export. Faint bars (colour close to the card) keep sizing by width so their edge ring stays closed.
  • Up Next: transition the moving pill by opacity and transform only.
  • Dashboard Switch: set each name's text direction and trim by grapheme with no space before the ellipsis (fitName, textDirection).
  • Set a transparent tap highlight in every widget page that takes taps.

Testing
All green, including e2e. Added tests for the clock sweep and label writes, the map's cached base, weather particle markup, bar movement, the faint bar edge and name fitting.

Changelog

Changed

  • Reduce CPU use of the analog clock, Connections, Now Playing, Weather and Backup animations.

Fixed

  • Count both taps when switching Now Playing sessions quickly.
  • Put the ellipsis at the end of right-to-left Dashboard Switch names.
  • Stop widgets from flashing grey on tap on iOS.

Checklist

  • Stays within the project constraints: one container, no runtime dependencies, no build step (see CONTRIBUTING.md).
  • Tests added or updated for new logic, and the full suite, lint, and typechecks pass.
  • Docs updated if behavior or configuration changed.

@SandObserver SandObserver added the ui/ux UI, UX, and accessibility only fix label Oct 26, 2026
A slid fill loses its start edge to the track clip, and a faint bar is visible only by that edge.
…-cost

# Conflicts:
#	ui/widgets/upnext/index.html
@SandObserver
SandObserver merged commit dbbca9a into main Oct 26, 2026
8 checks passed
@SandObserver
SandObserver deleted the perf/widget-animation-cost branch October 26, 2026 03:52
stackyard-release Bot pushed a commit that referenced this pull request Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ui/ux UI, UX, and accessibility only fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant