54891148a9
The graph is seconds of solid arithmetic however large the crop is, and it ran where the pointer lives: the brush lagged behind the hand for exactly as long as the model took. The runtime's wasm provider now works in a worker of its own, so the page keeps drawing while the repair is thought through. The wait itself stays — it is the model's, not the page's — so a preview paints the blurred fill first and lets the model's version of the same mask replace it. Filing and export still wait for the model: the faster answer is for the eye waiting on the brush and for nothing else. Measured on the same photo and stroke, worst main-thread gap 3703 ms before and 487 ms after; previews land at 1.0 s and 5.3 s, and the model's render is the one left on the stage.