f92957bc6f
- The Image line's CUU(rows-1) clamps at the viewport top once the block's leading rows scroll out, re-anchoring the full image shifted down; Kitty replace-by-id then strips the prior placement's cells, scrollback included - permanently cropped inline images on WezTerm/Warp. - The renderer now rewrites placement lines at write time, clipping the source rectangle (y=/h=) to the visible slice, and advances the placement id (epoch) exactly when cells attached by the current epoch enter native scrollback: every rendered frame feeds its raw commit target to the budget, crossing an epoch's attach top latches a per-image archived flag, and the next emit consumes it. Era-local comparisons keep ledger rewinds (duplication-never- loss recommits) correct by construction; no-commit rewrites (overlay show/hide) keep replacing the same id. The watch set bounds the per-frame scan to live un-archived placements regardless of session length. - Destructive ED3 replays restart epochs and delete every registry entry each image placed (placement-scoped d=i, data retained) before re-placing under epoch 1, so repeated resets cannot strand terminal-side placements. - Verified against WezTerm 20240203 cell-attachment debug logs: straddling frames attach exactly the visible slice, the finalize commit writes a full archive copy under a fresh id, and resetDisplay deletes exactly the ids the image ever placed.