diff --git a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift index 0352e85..0c1412b 100644 --- a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift +++ b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift @@ -816,7 +816,10 @@ final class RemoteStore: ObservableObject { case .setSessionShipBranch(let id, let branch): demoUpdateSession(id) { $0.demoCopy(shipBranch: .some(branch)) } case .hello, .listSessions, .listDashboard, .subscribe, .unsubscribe, - .ping, .cancelQueuedMessage, .fetchDiff, .listPeers: + .ping, .cancelQueuedMessage, .fetchDiff, .listPeers, .addressUpdate, + // Session transfer (mesh P5) is a Mac↔Mac flow — the phone never originates these, + // and demo has no peer Macs, so they're inert here. + .transferOffer, .transferChunk, .transferCommit, .transferCancel: break // passive / already handled by the seeded fixtures (demo has no mesh peers) } } @@ -1072,6 +1075,10 @@ final class RemoteStore: ObservableObject { // Mesh P4: the host's known peers, for the (future) mesh device list and transfer // picker. Recorded now so multi-host UI can render it; single-host builds ignore it. meshPeers = peers + case .transferAccept, .transferReject, .transferReady, .transferCommitted, .transferChunkAck: + // Session-transfer replies (mesh P5) only reach a *source* Mac driving a transfer; a + // phone is never a transfer source, so these are inert here. + break case .wireError(let error): // A channel mismatch means the host and this remote were built from incompatible // release channels. Surface it as a persistent failure with a clear message rather