From baa59f4c22ad851963ab4a2d64a9bb2c7af1903b Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Sun, 5 Jul 2026 04:20:56 -0700 Subject: [PATCH] Activity Theme Adjustment Nucleic-Session: 5F808220-F280-49B7-8876-41EE93E714FA Co-authored-by: Nucleic --- .../SessionLiveActivity.swift | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/NucleicRemote/NucleicRemoteWidgets/SessionLiveActivity.swift b/NucleicRemote/NucleicRemoteWidgets/SessionLiveActivity.swift index d1d5dd5..ac4ad4f 100644 --- a/NucleicRemote/NucleicRemoteWidgets/SessionLiveActivity.swift +++ b/NucleicRemote/NucleicRemoteWidgets/SessionLiveActivity.swift @@ -78,12 +78,17 @@ private struct LockScreenView: View { let hostName: String var body: some View { - VStack(alignment: .leading, spacing: 8) { - // Header: brand + host, and the headline counts. + let attention = state.needsAttention + let tint = ActivityPalette.attentionTint(state) + return VStack(alignment: .leading, spacing: 8) { + // Header: brand + host, and the headline counts. When the user is needed the brand + // mark becomes the attention glyph in its tint, so the header itself reads "act now". HStack(spacing: 8) { - Image(systemName: "hexagon.fill") + Image(systemName: attention + ? ActivityPalette.glyph(state.approvalCount > 0 ? .approval : .needsInput) + : "hexagon.fill") .font(.footnote) - .foregroundStyle(ActivityPalette.active) + .foregroundStyle(attention ? tint : ActivityPalette.active) Text(hostName) .font(.caption.weight(.semibold)) .lineLimit(1) @@ -98,6 +103,20 @@ private struct LockScreenView: View { } .padding(14) .foregroundStyle(.white) + // Attention theme: a soft tinted wash + a colored border around the whole glance, so a + // session waiting on the user is unmistakable at a glance even before reading the rows. + .background { + if attention { + RoundedRectangle(cornerRadius: 22, style: .continuous) + .fill(tint.opacity(0.12)) + } + } + .overlay { + if attention { + RoundedRectangle(cornerRadius: 22, style: .continuous) + .strokeBorder(tint.opacity(0.9), lineWidth: 2) + } + } } }