From 33d8103335128d2c5d6cfdff0629acc44d143c00 Mon Sep 17 00:00:00 2001 From: dillontkh <> Date: Tue, 11 Mar 2025 14:32:32 +0800 Subject: [PATCH 1/8] Fix toolbar not hiding after minimizing --- src/browser/base/zen-components/ZenCompactMode.mjs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/browser/base/zen-components/ZenCompactMode.mjs b/src/browser/base/zen-components/ZenCompactMode.mjs index b378a7e31..cd63edb95 100644 --- a/src/browser/base/zen-components/ZenCompactMode.mjs +++ b/src/browser/base/zen-components/ZenCompactMode.mjs @@ -37,6 +37,9 @@ var gZenCompactModeManager = { this.addMouseActions(); this.addContextMenu(); + + // Clear hover states when window state changes (minimize, maximize, etc.) + window.addEventListener("sizemodechange", () => this._clearAllHoverStates()); }, get preference() { @@ -450,4 +453,15 @@ var gZenCompactModeManager = { let toolbar = document.getElementById('zen-appcontent-navbar-container'); toolbar.toggleAttribute('zen-user-show'); }, + + _clearAllHoverStates() { + // Clear hover attributes from all hoverable elements + for (let entry of this.hoverableElements) { + const target = entry.element; + if (target) { + target.removeAttribute('zen-has-hover'); + this.clearFlashTimeout('has-hover' + target.id); + } + } + }, }; From 0a32810f366ff6f491a2f95949cb9f3cc53ccee2 Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Tue, 11 Mar 2025 07:57:12 +0100 Subject: [PATCH 2/8] Fix inconsistent quote style in sizemodechange event listener --- src/browser/base/zen-components/ZenCompactMode.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/base/zen-components/ZenCompactMode.mjs b/src/browser/base/zen-components/ZenCompactMode.mjs index cd63edb95..c624c672d 100644 --- a/src/browser/base/zen-components/ZenCompactMode.mjs +++ b/src/browser/base/zen-components/ZenCompactMode.mjs @@ -39,7 +39,7 @@ var gZenCompactModeManager = { this.addContextMenu(); // Clear hover states when window state changes (minimize, maximize, etc.) - window.addEventListener("sizemodechange", () => this._clearAllHoverStates()); + window.addEventListener('sizemodechange', () => this._clearAllHoverStates()); }, get preference() { From 2d333a23a434a8f0a65cd7353d1e1f18f9189f25 Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Tue, 11 Mar 2025 08:00:59 +0100 Subject: [PATCH 3/8] Fix hover attribute clearing logic in ZenCompactMode --- src/browser/base/zen-components/ZenCompactMode.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/base/zen-components/ZenCompactMode.mjs b/src/browser/base/zen-components/ZenCompactMode.mjs index c624c672d..87aaf6389 100644 --- a/src/browser/base/zen-components/ZenCompactMode.mjs +++ b/src/browser/base/zen-components/ZenCompactMode.mjs @@ -458,7 +458,7 @@ var gZenCompactModeManager = { // Clear hover attributes from all hoverable elements for (let entry of this.hoverableElements) { const target = entry.element; - if (target) { + if (target && !target.matches(':hover') && target.hasAttribute('zen-has-hover')) { target.removeAttribute('zen-has-hover'); this.clearFlashTimeout('has-hover' + target.id); } From 7e55497e20a073893dc9fe5aff8ce44ee95173ae Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Tue, 11 Mar 2025 19:07:47 +0100 Subject: [PATCH 4/8] Fixed tabs opening on the essentials container --- README.md | 2 +- firefox-cache/l10n-last-commit-hash | 1 + .../base/content/zen-styles/zen-tabs/vertical-tabs.css | 1 + src/browser/base/zen-components/ZenPinnedTabManager.mjs | 1 + .../components/sessionstore/SessionStore-sys-mjs.patch | 9 ++++++--- .../components/sessionstore/TabState-sys-mjs.patch | 5 +++-- surfer.json | 4 ++-- 7 files changed, 15 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index dfa52dcdd..537d574ee 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ ## 🖥️ Compatibility -Zen is currently built using Firefox version `136.0`! 🚀 +Zen is currently built using Firefox version `136.0.1`! 🚀 - [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 136.0`! - Check out the latest [release notes](https://zen-browser.app/release-notes)! diff --git a/firefox-cache/l10n-last-commit-hash b/firefox-cache/l10n-last-commit-hash index e69de29bb..2991f1839 100644 --- a/firefox-cache/l10n-last-commit-hash +++ b/firefox-cache/l10n-last-commit-hash @@ -0,0 +1 @@ +6ad0ab3c43a6208d8bcd997b40e802fccd48ba0a \ No newline at end of file diff --git a/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css b/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css index 58e9b2114..8b22a4c1e 100644 --- a/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css +++ b/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css @@ -870,6 +870,7 @@ pointer-events: none; width: 16px; height: 16px; + border-radius: 4px; } &::after { diff --git a/src/browser/base/zen-components/ZenPinnedTabManager.mjs b/src/browser/base/zen-components/ZenPinnedTabManager.mjs index 79d8aba77..aae3f515b 100644 --- a/src/browser/base/zen-components/ZenPinnedTabManager.mjs +++ b/src/browser/base/zen-components/ZenPinnedTabManager.mjs @@ -466,6 +466,7 @@ if (!isClosing) { tab.removeAttribute('zen-pin-id'); + tab.removeAttribute('zen-essential'); // Just in case if (!tab.hasAttribute('zen-workspace-id') && ZenWorkspaces.workspaceEnabled) { const workspace = await ZenWorkspaces.getActiveWorkspace(); diff --git a/src/browser/components/sessionstore/SessionStore-sys-mjs.patch b/src/browser/components/sessionstore/SessionStore-sys-mjs.patch index 5cbcfaa22..a22222c10 100644 --- a/src/browser/components/sessionstore/SessionStore-sys-mjs.patch +++ b/src/browser/components/sessionstore/SessionStore-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs -index f814772114948f87cbb3c3a7231c95ea1f68d776..5c65be81c635e2cb457d8975c197d6a22f6f5bc7 100644 +index f814772114948f87cbb3c3a7231c95ea1f68d776..ae35daa518ca25f4fc95ef983519c390bf088a68 100644 --- a/browser/components/sessionstore/SessionStore.sys.mjs +++ b/browser/components/sessionstore/SessionStore.sys.mjs @@ -3171,7 +3171,7 @@ var SessionStoreInternal = { @@ -45,7 +45,7 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..5c65be81c635e2cb457d8975c197d6a2 selectedIndex = 1; winData.title = tabbrowser.tabs[0].label; } -@@ -6086,6 +6087,21 @@ var SessionStoreInternal = { +@@ -6086,8 +6087,23 @@ var SessionStoreInternal = { // Most of tabData has been restored, now continue with restoring // attributes that may trigger external events. @@ -65,5 +65,8 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..5c65be81c635e2cb457d8975c197d6a2 + tab.setAttribute("zenDefaultUserContextId", true); + } - if (tabData.pinned) { +- if (tabData.pinned) { ++ if (tabData.pinned || tabData.zenEssential) { tabbrowser.pinTab(tab); + } else { + tabbrowser.unpinTab(tab); diff --git a/src/browser/components/sessionstore/TabState-sys-mjs.patch b/src/browser/components/sessionstore/TabState-sys-mjs.patch index 7b4d912d8..91b9a309b 100644 --- a/src/browser/components/sessionstore/TabState-sys-mjs.patch +++ b/src/browser/components/sessionstore/TabState-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs -index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..4c9f17408b912a2c51ebc1a670062203bf4994f3 100644 +index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..aff63696d198055886960072a6130318e099ae42 100644 --- a/browser/components/sessionstore/TabState.sys.mjs +++ b/browser/components/sessionstore/TabState.sys.mjs -@@ -80,10 +80,19 @@ class _TabState { +@@ -80,10 +80,20 @@ class _TabState { tabData.muteReason = tab.muteReason; } @@ -14,6 +14,7 @@ index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..4c9f17408b912a2c51ebc1a670062203 + tabData.zenWorkspace = tab.getAttribute("zen-workspace-id"); + tabData.zenPinnedId = tab.getAttribute("zen-pin-id"); + tabData.zenEssential = tab.getAttribute("zen-essential"); ++ tabData.pinned = tabData.pinned || tabData.zenEssential; + tabData.zenDefaultUserContextId = tab.getAttribute("zenDefaultUserContextId"); + tabData.zenPinnedEntry = tab.getAttribute("zen-pinned-entry"); + tabData.zenPinnedIcon = tab.getAttribute("zen-pinned-icon"); diff --git a/surfer.json b/surfer.json index 6e2e5bc25..6d8f16315 100644 --- a/surfer.json +++ b/surfer.json @@ -5,7 +5,7 @@ "binaryName": "zen", "version": { "product": "firefox", - "version": "136.0", + "version": "136.0.1", "candidate": "136.0" }, "buildOptions": { @@ -53,4 +53,4 @@ "licenseType": "MPL-2.0" }, "updateHostname": "updates.zen-browser.app" -} +} \ No newline at end of file From 8a5b0928c5fafc962b23d236bfa6a8e89054d64b Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Tue, 11 Mar 2025 19:12:43 +0100 Subject: [PATCH 5/8] Update candidate version to 136.0.1 in surfer.json --- surfer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/surfer.json b/surfer.json index 6d8f16315..ca8a24aae 100644 --- a/surfer.json +++ b/surfer.json @@ -6,7 +6,7 @@ "version": { "product": "firefox", "version": "136.0.1", - "candidate": "136.0" + "candidate": "136.0.1" }, "buildOptions": { "generateBranding": true From 40ce0b714e2a9f76ac7d86c1786c6f33cebe8cfa Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Tue, 11 Mar 2025 21:41:27 +0100 Subject: [PATCH 6/8] Refactor tab handling logic to improve neighbor tab selection in standalone mode --- .../components/tabbrowser/content/tabbrowser-js.patch | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/browser/components/tabbrowser/content/tabbrowser-js.patch b/src/browser/components/tabbrowser/content/tabbrowser-js.patch index da59666c3..d288a20db 100644 --- a/src/browser/components/tabbrowser/content/tabbrowser-js.patch +++ b/src/browser/components/tabbrowser/content/tabbrowser-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js -index 628aa6596627c85efe361fc1ece8fd58f7ee653e..6bd5149f4be6c18cbf733b5b9ee01534af61bef9 100644 +index 628aa6596627c85efe361fc1ece8fd58f7ee653e..cd3ad53dbe399383178d0eff459ad72079b02024 100644 --- a/browser/components/tabbrowser/content/tabbrowser.js +++ b/browser/components/tabbrowser/content/tabbrowser.js @@ -412,11 +412,50 @@ @@ -529,13 +529,11 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..6bd5149f4be6c18cbf733b5b9ee01534 } else { aIndex = Math.max(aIndex, this.pinnedTabCount); } -@@ -5684,11 +5821,18 @@ - } +@@ -5685,10 +5822,17 @@ this._handleTabMove(aTab, () => { -- let neighbor = this.tabs[aIndex]; + let neighbor = this.tabs[aIndex]; - if (forceStandaloneTab && neighbor.group) { -+ let neighbor = this.tabs.filter(tab => !tab.hasAttribute("zen-glance-tab"))[aIndex]; + const _tPos = aTab._tPos; + if ((forceStandaloneTab && neighbor.group) || neighbor.group?.hasAttribute("split-view-group")) { neighbor = neighbor.group; From 6d458d3b16074734e168a5808209d6970f294bbf Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Tue, 11 Mar 2025 21:43:06 +0100 Subject: [PATCH 7/8] Remove unnecessary console log for focused state in ZenGlanceManager --- src/browser/base/zen-components/ZenGlanceManager.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/browser/base/zen-components/ZenGlanceManager.mjs b/src/browser/base/zen-components/ZenGlanceManager.mjs index c29a15432..fa7dc68f0 100644 --- a/src/browser/base/zen-components/ZenGlanceManager.mjs +++ b/src/browser/base/zen-components/ZenGlanceManager.mjs @@ -211,7 +211,6 @@ return; } - console.log(hasFocused); if (onTabClose && hasFocused && !this.#confirmationTimeout) { const cancelButton = document.getElementById('zen-glance-sidebar-close'); cancelButton.setAttribute('waitconfirmation', true); From 110d4e10bbad2d804f65840147ed3ef19e1af84d Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Tue, 11 Mar 2025 23:29:21 +0100 Subject: [PATCH 8/8] Add option to hide tracking protection icon in URL bar --- src/browser/app/profile/zen-browser.js | 1 + .../base/content/zen-styles/zen-urlbar.css | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/browser/app/profile/zen-browser.js b/src/browser/app/profile/zen-browser.js index 5d974e558..22d6805c9 100644 --- a/src/browser/app/profile/zen-browser.js +++ b/src/browser/app/profile/zen-browser.js @@ -118,6 +118,7 @@ pref('zen.view.compact.animate-sidebar', true); pref('zen.view.compact.show-sidebar-and-toolbar-on-hover', true); pref('zen.urlbar.replace-newtab', true); +pref('zen.urlbar.show-protections-icon', false); pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s) pref('zen.urlbar.show-domain-only-in-sidebar', true); diff --git a/src/browser/base/content/zen-styles/zen-urlbar.css b/src/browser/base/content/zen-styles/zen-urlbar.css index 568790c0b..064bfb6b0 100644 --- a/src/browser/base/content/zen-styles/zen-urlbar.css +++ b/src/browser/base/content/zen-styles/zen-urlbar.css @@ -16,6 +16,10 @@ --urlbarView-highlight-background: var(--toolbarbutton-hover-background); border-radius: var(--toolbarbutton-border-radius); padding: 1px; + + :root:not([zen-single-toolbar='true']) &[zen-floating-urlbar='true'] { + --urlbar-container-padding: 2px !important; + } } .urlbar-input::placeholder { @@ -90,6 +94,12 @@ justify-content: center !important; align-items: center !important; margin: 0; + + :root[zen-single-toolbar='true'] & { + padding: 6px !important; + width: unset !important; + height: unset !important; + } } #tracking-protection-icon-container { @@ -454,6 +464,12 @@ button.popup-notification-dropmarker { } } +@media not (-moz-bool-pref: 'zen.urlbar.show-protections-icon') { + #tracking-protection-icon-container { + display: none !important; + } +} + /* Code ~~stolen~~ taken inspiration from https://github.com/greeeen-dev/zen-arc-cmd-bar * * MIT License