From 8219f19d4e1e1e58272d1d1bc8e8a342d200b441 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Sun, 5 Jul 2026 02:38:01 -0700 Subject: [PATCH] Handle Session Interaction Nucleic-Session: B08BD1C3-178D-44BD-827A-331F72A95821 Co-authored-by: Nucleic --- .../NucleicRemoteWidgets/SessionLiveActivity.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/NucleicRemote/NucleicRemoteWidgets/SessionLiveActivity.swift b/NucleicRemote/NucleicRemoteWidgets/SessionLiveActivity.swift index 1d74750..deee70b 100644 --- a/NucleicRemote/NucleicRemoteWidgets/SessionLiveActivity.swift +++ b/NucleicRemote/NucleicRemoteWidgets/SessionLiveActivity.swift @@ -109,10 +109,23 @@ private struct LockScreenView: View { // MARK: - Shared pieces /// One session: state glyph + title + "project · Backend" + a right-aligned status/diff. +/// +/// Each row is its own tap target: wrapped in a `Link` to `nucleic://session/`, so tapping a +/// specific session on the lock screen or expanded Dynamic Island opens *that* session — overriding +/// the activity-wide `widgetURL` (which still governs the header, churn footer, and empty space, and +/// remains the only tap target the compact/minimal presentations can offer). private struct SessionRow: View { let line: NucleicSessionAttributes.SessionLine var body: some View { + if let url = NucleicDeepLink.session(line.id) { + Link(destination: url) { rowContent } + } else { + rowContent + } + } + + private var rowContent: some View { HStack(spacing: 8) { Image(systemName: ActivityPalette.glyph(line.kind)) .font(.footnote)