diff --git a/NucleicRemote/NucleicRemote/LiveActivityManager.swift b/NucleicRemote/NucleicRemote/LiveActivityManager.swift index 9b368ec..36400cf 100644 --- a/NucleicRemote/NucleicRemote/LiveActivityManager.swift +++ b/NucleicRemote/NucleicRemote/LiveActivityManager.swift @@ -356,10 +356,13 @@ final class LiveActivityManager { /// Project a wire summary into the widget's self-contained row model. private static func line(for s: WireSessionSummary) -> NucleicSessionAttributes.SessionLine { - // Carry the approval id/risk only for a session actually awaiting approval — that's the row - // the glance renders inline Allow/Deny on (`ApproveFromActivityIntent`). Other states leave - // it nil so the row stays a plain deep-link tap. - let approvalID = s.status == .awaitingApproval ? s.firstApprovalID?.rawValue : nil + // Carry the approval id/risk only for a session awaiting a *tool approval* — the row the + // glance renders inline Allow/Deny on (`ApproveFromActivityIntent`). An `AskUserQuestion` + // block (pendingQuestionCount set) is excluded: it needs an answer selection the glance can't + // collect, so it deep-links to the app's picker card, like the notification path. Other states + // leave it nil so the row stays a plain deep-link tap. + let approvalID = (s.status == .awaitingApproval && s.pendingQuestionCount == nil) + ? s.firstApprovalID?.rawValue : nil return NucleicSessionAttributes.SessionLine( id: s.sessionID.rawValue, title: s.title.isEmpty ? s.projectName : s.title,