figcraft/apps
BFlat d452da3452
M8: no redraws while idle (#99)
* M8: no redraws while idle

An idle window redrew ~240 times a second: the window title was re-sent every
frame and each viewport command asks for another frame. It is now sent only when
it changes. With that gone, the frames that are still needed wake the UI at their
deadline instead of relying on the loop:

- toasts ask for the frame that hides them (shown-at time instead of summed dt);
- the autosave checkpoint wakes the UI when due;
- the presenter's "after delay" timers schedule and fire from the same layer
  (an overlay over a frame with a pending delay no longer spins);
- the interaction editor's curve preview plays when it shows, changes or is
  hovered, then rests;
- a control-channel screenshot keeps frames coming only until the window
  delivers it (it hung on an idle window), expiring after 60 s;
- the system font scan wakes the UI when it finishes.

ui.inspect reports framesDrawn and repaintCauses (file:line of repaint
requests); ui.set {resetFrameStats} starts them over. Headless idle tests cover
a document, a selected text layer, the comments panel, the interaction editor,
the presenter, toasts, background renders, control requests and screenshots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* M8: idle tests build the render job with the focus view's solo field

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 23:53:05 +07:00
..
figcraft M8: no redraws while idle (#99) 2026-10-10 23:53:05 +07:00
figcraft-cli M3: components at scale; Alt-drag to swap instances (#91) 2026-10-10 21:07:43 +07:00
figcraft-web M8: accessibility: screen reader names, keyboard navigation mode (#96) 2026-10-10 23:02:50 +07:00