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.