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)