Handle Session Interaction

Nucleic-Session: B08BD1C3-178D-44BD-827A-331F72A95821
Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
2026-07-05 02:38:01 -07:00
co-authored by Nucleic
parent 35dcce14ae
commit 8219f19d4e
@@ -109,10 +109,23 @@ private struct LockScreenView: View {
// MARK: - Shared pieces // MARK: - Shared pieces
/// One session: state glyph + title + "project · Backend" + a right-aligned status/diff. /// 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/<id>`, 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 { private struct SessionRow: View {
let line: NucleicSessionAttributes.SessionLine let line: NucleicSessionAttributes.SessionLine
var body: some View { 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) { HStack(spacing: 8) {
Image(systemName: ActivityPalette.glyph(line.kind)) Image(systemName: ActivityPalette.glyph(line.kind))
.font(.footnote) .font(.footnote)