From 1fee1009bb7c1e3d1ffae90ef715ecd7c307eacc Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Sat, 3 Oct 2026 06:55:10 +0000 Subject: [PATCH] Dev server: the leaf check runs before every landing; the framed reason corrected check:dev-leaf-escape and its self-test join gates:pre. The comment on the dev pages' owner rule named the wrong reason for leaving a framed page unowned: the frame is a partner page that iframes a leaf (the iframe embed). Plugin Studio mounts its rows directly. --- internal/plugin-gallery/dev-plugin.mjs | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/plugin-gallery/dev-plugin.mjs b/internal/plugin-gallery/dev-plugin.mjs index bef156195..bdc6fbf5a 100644 --- a/internal/plugin-gallery/dev-plugin.mjs +++ b/internal/plugin-gallery/dev-plugin.mjs @@ -211,8 +211,8 @@ export function leafRewrite(path, treeName = TREE_NAME) { // urlOwner 'app' (library/composables/useViewAddress.js) for a dev page that is OURS, the rule generate-tree bakes // into the built leaf: its shell writes ?tab=, so a clicked tab survives a reload and a copied link opens it. A -// FRAMED page drops it: Plugin Studio iframes its map rows from /__leaf/, and a history push from an iframe lands -// in the top page's Back stack. Write the element unowned and put this classic script right after it; it runs +// FRAMED page drops it: a partner page may iframe a leaf (the iframe embed), and a history push from an iframe +// lands in the top page's Back stack. (Plugin Studio mounts its rows directly; its panes are unowned by paneConfig.) Write the element unowned and put this classic script right after it; it runs // before the deferred module script upgrades the element. `<` is escaped: profile/instance come from the URL. export function ownIfTopScript(cfg = {}) { const owned = JSON.stringify(JSON.stringify({ ...cfg, urlOwner: 'app' })).replace(/