From 1924d4b52b71713a0d56f4827befb1d94a42bebf Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 16 Oct 2026 04:10:53 +0000 Subject: [PATCH] Close a revealed page's open drawer when its back is cancelled discardOutgoing skipped finished resting edges, so a persistAtRest drawer opened by a node revealed during a back operation stayed attached after that back was cancelled and the node returned to history. Found by the property tests (1000-seed run). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Faarh2Ts6StJPcz2mRiHiR --- packages/core-v2/src/scene/graph.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core-v2/src/scene/graph.ts b/packages/core-v2/src/scene/graph.ts index 1f4afff..2f05714 100644 --- a/packages/core-v2/src/scene/graph.ts +++ b/packages/core-v2/src/scene/graph.ts @@ -570,7 +570,7 @@ export class SceneGraph { } /** - * Resolve the live operations a node started, because the node is leaving + * Resolve the operations a node started, because the node is leaving * the visible graph: nodes they created (push/replace targets, including * replacements whose history skips this node) are removed, and retained * entries they revealed (back targets) are restored as if that back @@ -590,7 +590,7 @@ export class SceneGraph { private discardOutgoing(nodeKey: string, visited = new Set()): void { for (const operation of [...(this.outgoing.get(nodeKey) ?? [])]) { - if (operation.phase === "finished") continue; + // Includes finished resting edges: an open drawer closes with its page. if (operation.history === "back") { this.cancel(operation.id); } else {