An agent that animates its title (Claude Code turns a circle one quadrant
at a time) sends a new OSC title every few hundred milliseconds. Each one
rebuilt the whole window for a tab that reads the same, because
TabView::label() strips the mark before drawing it.
Two places now read "same title" the way label() does (trimmed, status
mark stripped, via tab_view::same_title_ignoring_status_mark):
- settle_title treats a frame that only changes the mark as a Revert, so
it queues no 400 ms wait and ends in no cx.notify() on the pane.
- on_layout_delta asks the machine mirror, before applying a PaneFacts
delta, whether the pane's record differs from the mirror's by anything
but such a title, and skips apply_layout_delta (whose only effect for
PaneFacts is the notify of the root view) when it does not. The mirror
is still updated and sync_window still runs.
A title whose words change lands as before, so a ticking counter in a
title repaints as often as it did.
Co-authored-by: kalpak <307643502+kalpakprod@users.noreply.github.com>