From dae732b64e32102ef702f475b5e24a0a8aefb684 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Tue, 7 Jul 2026 22:54:42 -0700 Subject: [PATCH] nvrsion: Add, Fix, Refactor, Update Sections, macOS 26 references, HTML handling, Chat: Sidebar Shade Adjustment to SettingsView, MCPApprovalServer, MacVM components, Project, SessionController, documentation, Chat: Add Section to HTML with footer margin/padding, Chat: Display Subagent Events. Nucleic-Promote: 1 Co-authored-by: Nucleic --- .../Views/Transcript/IncrementalTranscriptProjection.swift | 7 +++++++ .../Views/Transcript/TranscriptProjection.swift | 6 ++++++ 2 files changed, 13 insertions(+) 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 [] } } diff --git a/NucleicRemote/NucleicRemote/Views/Transcript/TranscriptProjection.swift b/NucleicRemote/NucleicRemote/Views/Transcript/TranscriptProjection.swift index 6f52da4..6b41b81 100644 --- a/NucleicRemote/NucleicRemote/Views/Transcript/TranscriptProjection.swift +++ b/NucleicRemote/NucleicRemote/Views/Transcript/TranscriptProjection.swift @@ -347,6 +347,12 @@ enum TranscriptProjection { return change.toolCallID.flatMap { parentOf[$0] } case .assistantText(let chunk), .thinking(let chunk): return chunk.parentToolCallID + case .note(let note): + // A lock/nvrsion note tagged with the edit it brackets inherits that edit's subagent + // scope — like a `.toolResult`/`.fileChange` — so a subagent's lock-acquire or + // nvrsion-land note nests in its card instead of leaking to the main transcript. An + // untagged note (a turn-end release, a user git note) has no owner. + return note.toolCallID.flatMap { parentOf[$0] } default: return nil }