diff --git a/NucleicRemote/NucleicRemote/Views/Transcript/IncrementalTranscriptProjection.swift b/NucleicRemote/NucleicRemote/Views/Transcript/IncrementalTranscriptProjection.swift index 7f76c9d..40ffb82 100644 --- a/NucleicRemote/NucleicRemote/Views/Transcript/IncrementalTranscriptProjection.swift +++ b/NucleicRemote/NucleicRemote/Views/Transcript/IncrementalTranscriptProjection.swift @@ -174,6 +174,13 @@ final class IncrementalTranscriptProjection { case .toolCallInputDelta(let d): return [d.toolCallID] case .toolResult(let r): return [r.toolCallID] case .fileChange(let f): return f.toolCallID.map { [$0] } ?? [] + case .note(let note): + // A note tagged with the edit it brackets (a subagent's lock-acquire / nvrsion-land) + // is now part of that edit's scope: chain it to the edit's id so a seal seam can't + // separate them. If the edit was already sealed (a rare late note after its scope + // closed), the tail reference to a sealed id trips the self-healing reset — a whole + // re-fold that necessarily matches `build`. Untagged notes chain to nothing, as before. + return note.toolCallID.map { [$0] } ?? [] default: return [] } }