Three costs scaled with the whole document on every frame, whether or not anything had changed. The accessibility tree was walked, cloned into a fragment and assembled into a TreeUpdate before update_if_active decided whether an assistive technology was listening. The runner now tracks activation from the accesskit events it already receives and tells the context, so a session with no screen reader attached never builds the tree at all. Test ids were republished every frame, allocating a String per id, for a map only the test harnesses read. The real app turns them off. end_frame compared the entire shape list against the previous frame and deep-cloned it to keep the comparison going. The shape list is now shared by Rc instead of cloned, and a frame that reported no damage is known to have painted the same shapes, so the comparison is skipped outright. A debug assertion keeps that invariant honest. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017FqS3Cpn9uRcrCwAABBq2p
3 files changedLine totals unavailable