diff --git a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift index ab110a0..ce8e335 100644 --- a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift +++ b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift @@ -787,16 +787,25 @@ final class RemoteStore: ObservableObject { send(.unsubscribe(target)) markOpened(target) // everything up to now has been seen guard openSessionID == target else { return } - activeConnection?.openSessionID = nil + connection(owningSession: target)?.openSessionID = nil openSessionID = nil + openSessionHostID = nil openEvents = [] openApprovals = [] openDiff = nil diffLoading = false + // Context reverts to the aggregate now that no transcript is open. + if !demoMode { rebuildAggregate() } } func respond(_ approval: ApprovalRequest, _ decision: Decision) { - send(.approvalRespond(approval.id, decision)) + // Route to the Mac that owns the approval's session (the approval message carries no + // sessionID of its own). Demo resolves locally. + if demoMode { + demoHandle(.approvalRespond(approval.id, decision)) + } else { + connection(owningSession: approval.sessionID)?.send(.approvalRespond(approval.id, decision)) + } openApprovals.removeAll { $0.id == approval.id } // optimistic dismiss; host confirms }