fix(sessions): preserve cards and correct activity ages (#554)

* fix(sessions): keep cards in place across rescans

An open Sessions tab rescans every 30 seconds and each scan delivers a new
array. The Repeater used that array as its model, so every rescan destroyed
and recreated all cards: a hovered card flickered and keyboard focus on its
copy action was lost. The Repeater now counts sessions and each card binds
its entry by index, so a same-size rescan rebinds cards in place.

Session ages also restart from each scan instead of a clock captured before
the data arrived, which understated ages by up to 30 seconds. A `working`
session is highlighted like the other live states, and the refresh policy
parses its stale age in one place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(sessions): clarify rescan stability and refresh screenshot

Same-size scans preserve cards by list position; count changes recreate them. Refresh the synthetic screenshot to show ages from the corrected scan clock. Documentation impact: usage and development guides and Unreleased now match the implemented behavior. TODO remains unchanged because this fixes existing Sessions behavior and does not complete any tracked parity gap.

* test(sessions): verify focus and live state colors at runtime

Exercise all supported live labels and preserve pointer hover and copy-button keyboard focus through a same-size rescan. Replace duplicated source assertions with behavior checks. Documentation impact: existing guides already describe this behavior; no TODO parity entry is completed.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
98664e885bSimone committed on 10/18/2026, 6:38:16 AM· committed by GitHubparent9fbae41
8 files changedLine totals unavailable