diff --git a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift index ead295a..329099f 100644 --- a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift +++ b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift @@ -783,12 +783,12 @@ final class RemoteStore: ObservableObject { openDiff = diff diffLoading = false case .wireError(let error): - // A channel mismatch is a permanent, connection-fatal condition (the host and this - // remote were built from incompatible release channels). Surface it as a persistent - // failure with a clear message rather than a transient bubble that the follow-on - // `.closed` would paper over with "reconnecting". + // 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 + // than a transient bubble; the follow-on `.closed` still schedules a backoff retry, + // so the connection recovers on its own once either side is updated to a matching + // channel. if error.code == .channelMismatch { - teardown() connectivity = .failed(error.message) break }