bounding box of all painted areas • When there is a clean-start, or a full invalidation: reset to empty • Send a new tile → grow that bbox • When we get an invalidate → crop it against that bbox • Take the canonical view ID into account when doing this (dark mode, spellcheck, etc) • 477 → 8 invalidates during file load (source)