From bf53e6ff4f6b35035295756e274efa72da8f8c3a Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Sun, 5 Jul 2026 19:36:22 -0700 Subject: [PATCH] Tool Call Card Alignment Nucleic-Session: FFDE42E0-22AB-4478-B2E2-FF69B2753CEE Co-authored-by: Nucleic --- .../Views/Transcript/TranscriptProjection.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/NucleicRemote/NucleicRemote/Views/Transcript/TranscriptProjection.swift b/NucleicRemote/NucleicRemote/Views/Transcript/TranscriptProjection.swift index 458ff7f..7cc0ac0 100644 --- a/NucleicRemote/NucleicRemote/Views/Transcript/TranscriptProjection.swift +++ b/NucleicRemote/NucleicRemote/Views/Transcript/TranscriptProjection.swift @@ -60,6 +60,12 @@ struct ToolGroup: Equatable { var finished: Bool = false /// Paths the call touched (from `fileChange` events tagged with this tool call). var fileChanges: [FilePatch] = [] + /// File-lock lifecycle moments (waiting/acquired/released) folded onto this call's card from + /// the note stream (LOCKING §4), newest last. A lock note is matched to the nearest preceding + /// edit whose paths overlap, so the lock reads as part of the edit rather than as a + /// free-floating row that would otherwise sort after the call. Empty when nothing locked this + /// call, or the "Show lock events" setting is off. Mirrors the Mac's folded `lockLines`. + var lockLines: [NoteLock] = [] /// For a subagent spawn (`Task`/`Agent`): the inner activity it produced — its own tool /// calls, thinking, and prose — projected the same way and nested here, so the card can show /// its live Read/Bash/Edit stream. Empty for every ordinary (non-subagent) tool.