From b93d19b873d2c6000fa0b4af9869c8234e62653a Mon Sep 17 00:00:00 2001 From: "mr. m" <91018726+mr-cheffy@users.noreply.github.com> Date: Tue, 25 Aug 2026 22:05:54 +0200 Subject: [PATCH] gh-15088: Fixed syncing essentials with different containers (gh-15105) --- src/zen/sessionstore/ZenWindowSync.sys.mjs | 4 +++- src/zen/sync/ZenSpacesSyncApplier.sys.mjs | 4 ++-- src/zen/tabs/ZenPinnedTabManager.mjs | 8 ++++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/zen/sessionstore/ZenWindowSync.sys.mjs b/src/zen/sessionstore/ZenWindowSync.sys.mjs index 51816e88b..f19316ab4 100644 --- a/src/zen/sessionstore/ZenWindowSync.sys.mjs +++ b/src/zen/sessionstore/ZenWindowSync.sys.mjs @@ -606,7 +606,9 @@ class nsZenWindowSync { if (isTab) { if (originalIsEssential !== targetIsEssential) { if (originalIsEssential) { - gZenPinnedTabManager.addToEssentials(aTargetItem); + gZenPinnedTabManager.addToEssentials(aTargetItem, { + replicating: true, + }); } else { gZenPinnedTabManager.removeEssentials( aTargetItem, diff --git a/src/zen/sync/ZenSpacesSyncApplier.sys.mjs b/src/zen/sync/ZenSpacesSyncApplier.sys.mjs index 16a171734..b75e22a95 100644 --- a/src/zen/sync/ZenSpacesSyncApplier.sys.mjs +++ b/src/zen/sync/ZenSpacesSyncApplier.sys.mjs @@ -498,7 +498,7 @@ class nsZenSpacesSyncApplier { tab._zenContentsVisible = true; this.#updateTabIdentity(win, tab, data); if (data.essential) { - win.gZenPinnedTabManager.addToEssentials(tab); + win.gZenPinnedTabManager.addToEssentials(tab, { replicating: true }); } else { if (data.workspaceUuid) { tab.setAttribute("zen-workspace-id", data.workspaceUuid); @@ -658,7 +658,7 @@ class nsZenSpacesSyncApplier { const isEssential = tab.hasAttribute("zen-essential"); if (data.essential && !isEssential) { - win.gZenPinnedTabManager.addToEssentials(tab); + win.gZenPinnedTabManager.addToEssentials(tab, { replicating: true }); return; } if (!data.essential && isEssential) { diff --git a/src/zen/tabs/ZenPinnedTabManager.mjs b/src/zen/tabs/ZenPinnedTabManager.mjs index 7f4c48cf5..3364a100a 100644 --- a/src/zen/tabs/ZenPinnedTabManager.mjs +++ b/src/zen/tabs/ZenPinnedTabManager.mjs @@ -503,7 +503,7 @@ class nsZenPinnedTabManager extends nsZenDOMOperatedFeature { } } - addToEssentials(tab) { + addToEssentials(tab, { replicating = false } = {}) { // eslint-disable-next-line no-nested-ternary const tabs = tab ? // if it's already an array, dont make it [tab] @@ -518,7 +518,11 @@ class nsZenPinnedTabManager extends nsZenDOMOperatedFeature { // eslint-disable-next-line no-shadow let tab = tabs[i]; const section = gZenWorkspaces.getEssentialsSection(tab); - if (!this.canEssentialBeAdded(tab)) { + // canEssentialBeAdded gates user-initiated adds on the *active* space's + // container. A replicated add mirrors a decision already made in another + // window or on another device, always into the tab's own container + // section. + if (!replicating && !this.canEssentialBeAdded(tab)) { movedAll = false; continue; }