From 52df910d6c5b6889764e5c4906bb7c84e429f8b1 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Mon, 6 Jul 2026 12:55:21 -0700 Subject: [PATCH] iOS Live Activity Updates Nucleic-Session: 665980BA-E8A5-4E84-9DF4-1757CF792353 Co-authored-by: Nucleic --- NucleicRemote/NucleicRemote/LiveActivityManager.swift | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/NucleicRemote/NucleicRemote/LiveActivityManager.swift b/NucleicRemote/NucleicRemote/LiveActivityManager.swift index 19ece0d..c0564b6 100644 --- a/NucleicRemote/NucleicRemote/LiveActivityManager.swift +++ b/NucleicRemote/NucleicRemote/LiveActivityManager.swift @@ -122,10 +122,12 @@ final class LiveActivityManager { } } - /// Apply `state` to the Activity — deduped against the last push and coalesced through one - /// serial task so the newest state always wins. + /// Apply `state` to the Activity — coalesced through one serial task so the newest state always + /// wins, and gated on the attention signature so a mid-turn churn tick (which changes the diff + /// totals on every transcript edit but no status) doesn't spend ActivityKit's update budget. The + /// fresh churn still rides along on the next status-driven push. private func push(_ state: NucleicSessionAttributes.ContentState, hostName: String) { - guard state != lastState else { return } + guard state.attentionSignature != lastState?.attentionSignature else { return } lastState = state guard let activity else {