From e915ed182d59be36e256e39250ffce0e2cfc74ab Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 12 Dec 2025 23:27:08 +0000 Subject: [PATCH] fix(macos): clarify presence update source label --- .../Sources/Clawdis/InstancesSettings.swift | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/macos/Sources/Clawdis/InstancesSettings.swift b/apps/macos/Sources/Clawdis/InstancesSettings.swift index 7b5570154..e4d2fb296 100644 --- a/apps/macos/Sources/Clawdis/InstancesSettings.swift +++ b/apps/macos/Sources/Clawdis/InstancesSettings.swift @@ -70,7 +70,10 @@ struct InstancesSettings: View { self.label(icon: "clock", text: inst.lastInputDescription) if let mode = inst.mode { self.label(icon: "network", text: mode) } if let reason = inst.reason, !reason.isEmpty { - self.label(icon: "info.circle", text: reason) + self.label( + icon: "info.circle", + text: "Updated by: \(self.presenceUpdateSourceText(reason))") + .help(self.presenceUpdateSourceHelp(reason)) } } Text(inst.text) @@ -90,6 +93,36 @@ struct InstancesSettings: View { } .font(.footnote) } + + private func presenceUpdateSourceText(_ reason: String) -> String { + let trimmed = reason.trimmingCharacters(in: .whitespacesAndNewlines) + switch trimmed { + case "self": + return "Gateway (self)" + case "connect": + return "Client connected" + case "disconnect": + return "Client disconnected" + case "launch": + return "App launch" + case "periodic": + return "Heartbeat" + case "instances-refresh": + return "UI refresh (Instances tab)" + case "seq gap": + return "Resynced after event gap" + default: + return trimmed.isEmpty ? "Unknown" : trimmed + } + } + + private func presenceUpdateSourceHelp(_ reason: String) -> String { + let trimmed = reason.trimmingCharacters(in: .whitespacesAndNewlines) + if trimmed.isEmpty { + return "Why this presence entry was last updated (debug marker)." + } + return "Why this presence entry was last updated (debug marker). Raw: \(trimmed)" + } } #if DEBUG