- #279: cache incident/fan divIcons by their visual inputs and React.memo MapView, so LiveView's 1s clock no longer rebuilds icons / calls setIcon and the #238 pulse ring completes its cycle. - #275: IncidentPanel shows "resolved", "lasted X" frozen at resolved_at, and labels live cameras/context as current, not incident-time. - #268: rail header (desktop + mobile drawer) reads "N of M · filtered" via a new filteredFrom prop while the wall filter is on. - #278: while camera tiles are docked bottom-centre, the weather status chip and radar badge stack under the tiles inside the dock instead of being covered. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>