delay(1) ran on every writeColor call, making small fills about 3x
slower (#479). delay(0) no longer yields on core 3.x and trips the
soft WDT, and yield() panics when drawing from SYS context.
optimistic_yield(10000) yields only after 10 ms and is a no-op where
yielding is not allowed.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Measuring at the button position predicts a line wrap that print()
never does, so a wide label on a button near the right edge moved
off its button. Measure at (0,0) and offset by the returned x/y.
The charBounds virtual change is unrelated to this fix, so it is
dropped.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>