From e0a750e253c7b2a2cf526a874195a63b79658d44 Mon Sep 17 00:00:00 2001 From: "Mr. M" Date: Wed, 3 Sep 2025 18:35:38 +0200 Subject: [PATCH 001/123] fix: Fixed using scrollbar on tabs moves the window around, b=closes #9699, c=common, compact-mode, folders, tabs, workspaces --- .../tabbrowser/content/tabbrowser-js.patch | 64 +++++++++++-------- src/zen/common/ZenUIManager.mjs | 25 +++++++- src/zen/common/styles/zen-popup.css | 2 +- .../common/styles/zen-single-components.css | 4 ++ src/zen/compact-mode/zen-compact-mode.css | 2 +- src/zen/folders/ZenFolders.mjs | 10 ++- src/zen/folders/zen-folders.css | 2 +- src/zen/tabs/zen-tabs/vertical-tabs.css | 14 ++-- src/zen/workspaces/ZenWorkspace.mjs | 1 + src/zen/workspaces/ZenWorkspaces.mjs | 1 + src/zen/workspaces/zen-workspaces.css | 9 ++- surfer.json | 2 +- 12 files changed, 88 insertions(+), 48 deletions(-) diff --git a/src/browser/components/tabbrowser/content/tabbrowser-js.patch b/src/browser/components/tabbrowser/content/tabbrowser-js.patch index 1cd8bed2a..703cdfd4b 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 d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea99420448 100644 +index d80a66a01002e78a9c65545d08fe786328ddf124..346ebe814381e8aa04140f43e98c328341c6e6eb 100644 --- a/browser/components/tabbrowser/content/tabbrowser.js +++ b/browser/components/tabbrowser/content/tabbrowser.js @@ -422,15 +422,64 @@ @@ -395,10 +395,10 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea + gZenWorkspaces._initialTab._shouldRemove = true; + } + } - } ++ } + else { + gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab; -+ } + } + this._hasAlreadyInitializedZenSessionStore = true; if (tabs.length > 1 || !tabs[0].selected) { @@ -522,7 +522,17 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea if ( !this._beginRemoveTab(aTab, { closeWindowFastpath: true, -@@ -4905,7 +5046,7 @@ +@@ -4771,7 +4912,9 @@ + // We're not animating, so we can cancel the animation stopwatch. + Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId); + aTab._closeTimeAnimTimerId = null; ++ gZenVerticalTabsManager.animateTabClose(aTab, (animate && !gReduceMotion)).then(() => { + this._endRemoveTab(aTab); ++ }); + return; + } + +@@ -4905,7 +5048,7 @@ closeWindowWithLastTab != null ? closeWindowWithLastTab : !window.toolbar.visible || @@ -531,7 +541,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea if (closeWindow) { // We've already called beforeunload on all the relevant tabs if we get here, -@@ -4929,6 +5070,7 @@ +@@ -4929,6 +5072,7 @@ newTab = true; } @@ -539,7 +549,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea aTab._endRemoveArgs = [closeWindow, newTab]; // swapBrowsersAndCloseOther will take care of closing the window without animation. -@@ -4969,13 +5111,7 @@ +@@ -4969,13 +5113,7 @@ aTab._mouseleave(); if (newTab) { @@ -554,7 +564,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea } else { TabBarVisibility.update(); } -@@ -5108,6 +5244,7 @@ +@@ -5108,6 +5246,7 @@ this.tabs[i]._tPos = i; } @@ -562,7 +572,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea if (!this._windowIsClosing) { // update tab close buttons state this.tabContainer._updateCloseButtons(); -@@ -5320,6 +5457,7 @@ +@@ -5320,6 +5459,7 @@ } let excludeTabs = new Set(aExcludeTabs); @@ -570,7 +580,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea // If this tab has a successor, it should be selectable, since // hiding or closing a tab removes that tab as a successor. -@@ -5332,13 +5470,13 @@ +@@ -5332,13 +5472,13 @@ !excludeTabs.has(aTab.owner) && Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") ) { @@ -586,7 +596,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea ); let tab = this.tabContainer.findNextTab(aTab, { -@@ -5354,7 +5492,7 @@ +@@ -5354,7 +5494,7 @@ } if (tab) { @@ -595,7 +605,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea } // If no qualifying visible tab was found, see if there is a tab in -@@ -5375,7 +5513,7 @@ +@@ -5375,7 +5515,7 @@ }); } @@ -604,7 +614,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea } _blurTab(aTab) { -@@ -5777,10 +5915,10 @@ +@@ -5777,10 +5917,10 @@ SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); } @@ -617,7 +627,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea aTab.selected || aTab.closing || // Tabs that are sharing the screen, microphone or camera cannot be hidden. -@@ -5839,6 +5977,7 @@ +@@ -5839,6 +5979,7 @@ * @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab */ replaceTabWithWindow(aTab, aOptions) { @@ -625,7 +635,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea if (this.tabs.length == 1) { return null; } -@@ -5972,7 +6111,7 @@ +@@ -5972,7 +6113,7 @@ * `true` if element is a `` */ isTabGroup(element) { @@ -634,7 +644,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea } /** -@@ -6048,8 +6187,8 @@ +@@ -6048,8 +6189,8 @@ } // Don't allow mixing pinned and unpinned tabs. @@ -645,7 +655,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea } else { tabIndex = Math.max(tabIndex, this.pinnedTabCount); } -@@ -6075,10 +6214,16 @@ +@@ -6075,10 +6216,16 @@ this.#handleTabMove( element, () => { @@ -664,7 +674,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea if (neighbor && this.isTab(element) && tabIndex > element._tPos) { neighbor.after(element); } else { -@@ -6136,23 +6281,28 @@ +@@ -6136,23 +6283,28 @@ #moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) { if (this.isTabGroupLabel(targetElement)) { targetElement = targetElement.group; @@ -699,7 +709,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea } else if (!element.pinned && targetElement && targetElement.pinned) { // If the caller asks to move an unpinned element next to a pinned // tab, move the unpinned element to be the first unpinned element -@@ -6165,14 +6315,34 @@ +@@ -6165,14 +6317,34 @@ // move the tab group right before the first unpinned tab. // 4. Moving a tab group and the first unpinned tab is grouped: // move the tab group right before the first unpinned tab's tab group. @@ -735,7 +745,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea element.pinned ? this.tabContainer.pinnedTabsContainer : this.tabContainer; -@@ -6181,7 +6351,7 @@ +@@ -6181,7 +6353,7 @@ element, () => { if (moveBefore) { @@ -744,7 +754,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea } else if (targetElement) { targetElement.after(element); } else { -@@ -6227,10 +6397,10 @@ +@@ -6227,10 +6399,10 @@ * @param {TabMetricsContext} [metricsContext] */ moveTabToGroup(aTab, aGroup, metricsContext) { @@ -757,7 +767,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea return; } if (aTab.group && aTab.group.id === aGroup.id) { -@@ -6261,6 +6431,7 @@ +@@ -6261,6 +6433,7 @@ let state = { tabIndex: tab._tPos, @@ -765,7 +775,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea }; if (tab.visible) { state.elementIndex = tab.elementIndex; -@@ -6287,7 +6458,7 @@ +@@ -6287,7 +6460,7 @@ let changedTabGroup = previousTabState.tabGroupId != currentTabState.tabGroupId; @@ -774,7 +784,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea tab.dispatchEvent( new CustomEvent("TabMove", { bubbles: true, -@@ -6324,6 +6495,10 @@ +@@ -6324,6 +6497,10 @@ moveActionCallback(); @@ -785,7 +795,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea // Clear tabs cache after moving nodes because the order of tabs may have // changed. this.tabContainer._invalidateCachedTabs(); -@@ -7221,7 +7396,7 @@ +@@ -7221,7 +7398,7 @@ // preventDefault(). It will still raise the window if appropriate. break; } @@ -794,7 +804,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea window.focus(); aEvent.preventDefault(); break; -@@ -8166,6 +8341,7 @@ +@@ -8166,6 +8343,7 @@ aWebProgress.isTopLevel ) { this.mTab.setAttribute("busy", "true"); @@ -802,7 +812,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea gBrowser._tabAttrModified(this.mTab, ["busy"]); this.mTab._notselectedsinceload = !this.mTab.selected; } -@@ -9157,7 +9333,7 @@ var TabContextMenu = { +@@ -9157,7 +9335,7 @@ var TabContextMenu = { ); contextUnpinSelectedTabs.hidden = !this.contextTab.pinned || !this.multiselected; @@ -811,7 +821,7 @@ index d80a66a01002e78a9c65545d08fe786328ddf124..46b1e3075165e1e9e783db84861b0fea // Build Ask Chat items TabContextMenu.GenAI.buildTabMenu( document.getElementById("context_askChat"), -@@ -9476,6 +9652,7 @@ var TabContextMenu = { +@@ -9476,6 +9654,7 @@ var TabContextMenu = { ) ); } else { diff --git a/src/zen/common/ZenUIManager.mjs b/src/zen/common/ZenUIManager.mjs index 0c9008a3c..80ce77d29 100644 --- a/src/zen/common/ZenUIManager.mjs +++ b/src/zen/common/ZenUIManager.mjs @@ -646,7 +646,7 @@ var gZenVerticalTabsManager = { marginBottom: isLastItem() ? [] : [transform, '0px'], }, { - duration: 0.12, + duration: 0.11, easing: 'ease-out', } ) @@ -668,7 +668,7 @@ var gZenVerticalTabsManager = { filter: ['blur(1px)', 'blur(0px)'], }, { - duration: 0.12, + duration: 0.11, easing: 'ease-out', } ) @@ -684,6 +684,27 @@ var gZenVerticalTabsManager = { } }, + animateTabClose(aTab, animate) { + if (!animate) { + return new Promise((resolve) => { + resolve(); + }); + } + const height = aTab.getBoundingClientRect().height; + return gZenUIManager.motion.animate( + aTab, + { + opacity: [1, 0], + transform: ['scale(1)', 'scale(0.95)'], + marginBottom: [`0px`, `-${height}px`], + }, + { + duration: 0.075, + easing: 'ease-out', + } + ); + }, + get actualWindowButtons() { // we have multiple ".titlebar-buttonbox-container" in the DOM, because of the titlebar if (!this.__actualWindowButtons) { diff --git a/src/zen/common/styles/zen-popup.css b/src/zen/common/styles/zen-popup.css index f781b599f..5eceee4eb 100644 --- a/src/zen/common/styles/zen-popup.css +++ b/src/zen/common/styles/zen-popup.css @@ -374,7 +374,7 @@ menuseparator { color-mix(in srgb, var(--zen-primary-color) 85%, #0f0f0f 15%) ); box-shadow: 0 0 14px 3px rgba(0, 0, 0, 0.05); - border: 1px solid light-dark(rgba(255, 255, 255, 0.2), rgba(0, 0, 0, 0.2)); + border: 1px solid rgba(0, 0, 0, 0.2); display: flex; font-weight: 600; align-items: center; diff --git a/src/zen/common/styles/zen-single-components.css b/src/zen/common/styles/zen-single-components.css index 43c7ff56d..9853a83da 100644 --- a/src/zen/common/styles/zen-single-components.css +++ b/src/zen/common/styles/zen-single-components.css @@ -235,6 +235,10 @@ body > #confetti { mask-composite: exclude; } +#TabsToolbar { + -moz-window-dragging: unset; +} + /* Status panel */ @media (-moz-pref('zen.theme.styled-status-panel')) { diff --git a/src/zen/compact-mode/zen-compact-mode.css b/src/zen/compact-mode/zen-compact-mode.css index e93bdb65b..308d5cce9 100644 --- a/src/zen/compact-mode/zen-compact-mode.css +++ b/src/zen/compact-mode/zen-compact-mode.css @@ -148,7 +148,7 @@ right: 0; bottom: 0; background: var(--zen-dialog-background); - outline: 1px solid var(--zen-colors-border); + outline: 1px solid rgba(255,255,255,.15); outline-offset: -1px; box-shadow: var(--zen-big-shadow); pointer-events: none; diff --git a/src/zen/folders/ZenFolders.mjs b/src/zen/folders/ZenFolders.mjs index a7882aa31..9d95eb760 100644 --- a/src/zen/folders/ZenFolders.mjs +++ b/src/zen/folders/ZenFolders.mjs @@ -873,9 +873,13 @@ // note: We set if the folder is collapsed some time after creation. // we do this to ensure marginBottom is set correctly in the case // that we want it to initially be collapsed. - requestAnimationFrame(() => { - folder.collapsed = !!options.collapsed; - }); + setTimeout( + (folder) => { + folder.collapsed = !!options.collapsed; + }, + 0, + folder + ); return folder; } diff --git a/src/zen/folders/zen-folders.css b/src/zen/folders/zen-folders.css index 016f1b7d5..055ee90df 100644 --- a/src/zen/folders/zen-folders.css +++ b/src/zen/folders/zen-folders.css @@ -41,7 +41,7 @@ tab-group[split-view-group] { outline-offset: var(--tab-outline-offset); outline-color: var(--tab-selected-outline-color); transition: scale 0.1s ease; - margin-inline-start: 0 !important; + margin-inline: 0 !important; :root:not([zen-sidebar-expanded='true']) & { padding: 0; diff --git a/src/zen/tabs/zen-tabs/vertical-tabs.css b/src/zen/tabs/zen-tabs/vertical-tabs.css index d1f7aff2c..5db51b127 100644 --- a/src/zen/tabs/zen-tabs/vertical-tabs.css +++ b/src/zen/tabs/zen-tabs/vertical-tabs.css @@ -156,25 +156,25 @@ Pinned Tabs Separator ========================================================================== */ .pinned-tabs-container-separator { - background: light-dark(rgba(1, 1, 1, 0.075), rgba(255, 255, 255, 0.1)); + background: light-dark(rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0.1)); margin: 8px auto; border: none; height: 1px; max-height: 1px; width: 98%; /* Slightly less than full width */ transition: - margin 0.2s ease-in-out, - background 0.2s ease-in-out, - max-height 0.2s ease-in-out; + margin 0.1s ease-in-out, + background 0.1s ease-in-out, + max-height 0.1s ease-in-out; overflow: hidden; position: relative; opacity: 1; #tabbrowser-tabs[movingtab] & { transition: - margin 0.2s ease-in-out, - background 0.2s ease-in-out, - max-height 0.2s ease-in-out, + margin 0.1s ease-in-out, + background 0.1s ease-in-out, + max-height 0.1s ease-in-out, transform 0.1s ease-in-out; } diff --git a/src/zen/workspaces/ZenWorkspace.mjs b/src/zen/workspaces/ZenWorkspace.mjs index 3b8f8e8d8..c2c243142 100644 --- a/src/zen/workspaces/ZenWorkspace.mjs +++ b/src/zen/workspaces/ZenWorkspace.mjs @@ -27,6 +27,7 @@ + `; } diff --git a/src/zen/workspaces/ZenWorkspaces.mjs b/src/zen/workspaces/ZenWorkspaces.mjs index cf7def40a..a5c2b01cd 100644 --- a/src/zen/workspaces/ZenWorkspaces.mjs +++ b/src/zen/workspaces/ZenWorkspaces.mjs @@ -926,6 +926,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { await this.initializeTabsStripSections(); this._initializeEmptyTab(); await gZenPinnedTabManager.refreshPinnedTabs({ init: true }); + this._invalidateBookmarkContainers(); await this.changeWorkspace(activeWorkspace, { onInit: true }); this.#fixTabPositions(); this.onWindowResize(); diff --git a/src/zen/workspaces/zen-workspaces.css b/src/zen/workspaces/zen-workspaces.css index 46c402c39..737c385e1 100644 --- a/src/zen/workspaces/zen-workspaces.css +++ b/src/zen/workspaces/zen-workspaces.css @@ -317,14 +317,13 @@ zen-workspace { opacity: 1; } } - - &, - & .zen-workspace-normal-tabs-section { - height: 100%; - } } } +.zen-workspace-empty-space { + -moz-window-dragging: drag; +} + /** Customiable UI, this is an auto generated ID */ #wrapper-zen-workspaces-button { width: 100%; diff --git a/surfer.json b/surfer.json index 6a4101fce..46f31f7bd 100644 --- a/surfer.json +++ b/surfer.json @@ -19,7 +19,7 @@ "brandShortName": "Zen", "brandFullName": "Zen Browser", "release": { - "displayVersion": "1.15.3b", + "displayVersion": "1.15.4b", "github": { "repo": "zen-browser/desktop" }, From fe87e22b63289ac54826c04e2956cd6cbb2bad37 Mon Sep 17 00:00:00 2001 From: "Mr. M" Date: Wed, 3 Sep 2025 18:39:37 +0200 Subject: [PATCH 002/123] feat: Rename compact mode startup pref, b=closes #8606, c=compact-mode --- prefs/compact-mode.yaml | 2 +- src/zen/compact-mode/ZenCompactMode.mjs | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/prefs/compact-mode.yaml b/prefs/compact-mode.yaml index 130ecd62b..24657e673 100644 --- a/prefs/compact-mode.yaml +++ b/prefs/compact-mode.yaml @@ -36,6 +36,6 @@ value: false # Do not edit manually -- name: zen.view.compact.should-enable-at-startup +- name: zen.view.compact.enable-at-startup hidden: true value: false diff --git a/src/zen/compact-mode/ZenCompactMode.mjs b/src/zen/compact-mode/ZenCompactMode.mjs index f638f6c28..13fe7653c 100644 --- a/src/zen/compact-mode/ZenCompactMode.mjs +++ b/src/zen/compact-mode/ZenCompactMode.mjs @@ -48,8 +48,7 @@ var gZenCompactModeManager = { xulStoreValue = false; } this._wasInCompactMode = - xulStoreValue || - Services.prefs.getBoolPref('zen.view.compact.should-enable-at-startup', false); + xulStoreValue || Services.prefs.getBoolPref('zen.view.compact.enable-at-startup', false); lazyCompactMode.mainAppWrapper.removeAttribute('zen-compact-mode'); this._canDebugLog = Services.prefs.getBoolPref('zen.view.compact.debug', false); @@ -136,7 +135,7 @@ var gZenCompactModeManager = { document.documentElement.setAttribute('zen-compact-mode', value); Services.xulStore.persist(lazyCompactMode.mainAppWrapper, 'zen-compact-mode'); if (typeof this._wasInCompactMode === 'undefined') { - Services.prefs.setBoolPref('zen.view.compact.should-enable-at-startup', value); + Services.prefs.setBoolPref('zen.view.compact.enable-at-startup', value); } this._updateEvent(); }, From 0ba3eb890807155935ac8eedff689f5876663352 Mon Sep 17 00:00:00 2001 From: reizumi Date: Thu, 4 Sep 2025 04:42:06 +0800 Subject: [PATCH 003/123] chore: remove pocket pref and icons, p=#10229 * chore: remove pocket pref and icons * chore: remove pocket svg icons --- prefs/extensions.yaml | 3 --- src/browser/themes/shared/zen-icons/icons.css | 4 ---- src/browser/themes/shared/zen-icons/jar.inc.mn | 3 --- .../themes/shared/zen-icons/lin/pocket-outline.svg | 7 ------- .../themes/shared/zen-icons/win/pocket-outline.svg | 8 -------- 5 files changed, 25 deletions(-) delete mode 100644 src/browser/themes/shared/zen-icons/lin/pocket-outline.svg delete mode 100644 src/browser/themes/shared/zen-icons/win/pocket-outline.svg diff --git a/prefs/extensions.yaml b/prefs/extensions.yaml index 9578ddb69..31719527b 100644 --- a/prefs/extensions.yaml +++ b/prefs/extensions.yaml @@ -4,6 +4,3 @@ - name: xpinstall.signatures.required value: true - -- name: extensions.pocket.enabled - value: false diff --git a/src/browser/themes/shared/zen-icons/icons.css b/src/browser/themes/shared/zen-icons/icons.css index 9a6ac4d34..f34425cf8 100644 --- a/src/browser/themes/shared/zen-icons/icons.css +++ b/src/browser/themes/shared/zen-icons/icons.css @@ -238,10 +238,6 @@ list-style-image: url('privateBrowsing.svg') !important; } -#save-to-pocket-button { - list-style-image: url('pocket-outline.svg') !important; -} - #profiler-button-button > .toolbarbutton-icon, .subviewbutton[label='Task Manager'] { list-style-image: url('tool-profiler.svg') !important; diff --git a/src/browser/themes/shared/zen-icons/jar.inc.mn b/src/browser/themes/shared/zen-icons/jar.inc.mn index 835136b86..d4236ee7a 100644 --- a/src/browser/themes/shared/zen-icons/jar.inc.mn +++ b/src/browser/themes/shared/zen-icons/jar.inc.mn @@ -97,7 +97,6 @@ * skin/classic/browser/zen-icons/persistent-storage.svg (../shared/zen-icons/lin/persistent-storage.svg) * skin/classic/browser/zen-icons/pin.svg (../shared/zen-icons/lin/pin.svg) * skin/classic/browser/zen-icons/plus.svg (../shared/zen-icons/lin/plus.svg) -* skin/classic/browser/zen-icons/pocket-outline.svg (../shared/zen-icons/lin/pocket-outline.svg) * skin/classic/browser/zen-icons/popup.svg (../shared/zen-icons/lin/popup.svg) * skin/classic/browser/zen-icons/print.svg (../shared/zen-icons/lin/print.svg) * skin/classic/browser/zen-icons/privateBrowsing.svg (../shared/zen-icons/lin/privateBrowsing.svg) @@ -239,7 +238,6 @@ * skin/classic/browser/zen-icons/persistent-storage.svg (../shared/zen-icons/lin/persistent-storage.svg) * skin/classic/browser/zen-icons/pin.svg (../shared/zen-icons/lin/pin.svg) * skin/classic/browser/zen-icons/plus.svg (../shared/zen-icons/lin/plus.svg) -* skin/classic/browser/zen-icons/pocket-outline.svg (../shared/zen-icons/lin/pocket-outline.svg) * skin/classic/browser/zen-icons/popup.svg (../shared/zen-icons/lin/popup.svg) * skin/classic/browser/zen-icons/print.svg (../shared/zen-icons/lin/print.svg) * skin/classic/browser/zen-icons/privateBrowsing.svg (../shared/zen-icons/lin/privateBrowsing.svg) @@ -381,7 +379,6 @@ * skin/classic/browser/zen-icons/persistent-storage.svg (../shared/zen-icons/lin/persistent-storage.svg) * skin/classic/browser/zen-icons/pin.svg (../shared/zen-icons/lin/pin.svg) * skin/classic/browser/zen-icons/plus.svg (../shared/zen-icons/lin/plus.svg) -* skin/classic/browser/zen-icons/pocket-outline.svg (../shared/zen-icons/lin/pocket-outline.svg) * skin/classic/browser/zen-icons/popup.svg (../shared/zen-icons/lin/popup.svg) * skin/classic/browser/zen-icons/print.svg (../shared/zen-icons/lin/print.svg) * skin/classic/browser/zen-icons/privateBrowsing.svg (../shared/zen-icons/lin/privateBrowsing.svg) diff --git a/src/browser/themes/shared/zen-icons/lin/pocket-outline.svg b/src/browser/themes/shared/zen-icons/lin/pocket-outline.svg deleted file mode 100644 index 70f7449d4..000000000 --- a/src/browser/themes/shared/zen-icons/lin/pocket-outline.svg +++ /dev/null @@ -1,7 +0,0 @@ -#filter dumbComments emptyLines substitution -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - - - diff --git a/src/browser/themes/shared/zen-icons/win/pocket-outline.svg b/src/browser/themes/shared/zen-icons/win/pocket-outline.svg deleted file mode 100644 index 7a9d03478..000000000 --- a/src/browser/themes/shared/zen-icons/win/pocket-outline.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - From eb94927370bb44e4a1c8c4dea2c65359b50f566c Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Wed, 3 Sep 2025 16:21:30 -0700 Subject: [PATCH 004/123] feat: add tada & at icons for ZenEmojiPicker (#10233) --- .../themes/shared/zen-icons/common/selectable/at.svg | 8 ++++++++ .../themes/shared/zen-icons/common/selectable/tada.svg | 7 +++++++ src/browser/themes/shared/zen-icons/jar.inc.mn | 2 ++ src/zen/common/emojis/ZenEmojiPicker.mjs | 5 +++-- 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 src/browser/themes/shared/zen-icons/common/selectable/at.svg create mode 100644 src/browser/themes/shared/zen-icons/common/selectable/tada.svg diff --git a/src/browser/themes/shared/zen-icons/common/selectable/at.svg b/src/browser/themes/shared/zen-icons/common/selectable/at.svg new file mode 100644 index 000000000..60b40396b --- /dev/null +++ b/src/browser/themes/shared/zen-icons/common/selectable/at.svg @@ -0,0 +1,8 @@ +#filter dumbComments emptyLines substitution +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + + + diff --git a/src/browser/themes/shared/zen-icons/common/selectable/tada.svg b/src/browser/themes/shared/zen-icons/common/selectable/tada.svg new file mode 100644 index 000000000..ebe8c552b --- /dev/null +++ b/src/browser/themes/shared/zen-icons/common/selectable/tada.svg @@ -0,0 +1,7 @@ +#filter dumbComments emptyLines substitution +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + + diff --git a/src/browser/themes/shared/zen-icons/jar.inc.mn b/src/browser/themes/shared/zen-icons/jar.inc.mn index d4236ee7a..fe631ab1e 100644 --- a/src/browser/themes/shared/zen-icons/jar.inc.mn +++ b/src/browser/themes/shared/zen-icons/jar.inc.mn @@ -427,6 +427,7 @@ #endif * skin/classic/browser/zen-icons/urlbar-arrow.svg (../shared/zen-icons/common/urlbar-arrow.svg) * skin/classic/browser/zen-icons/selectable/airplane.svg (../shared/zen-icons/common/selectable/airplane.svg) +* skin/classic/browser/zen-icons/selectable/at.svg (../shared/zen-icons/common/selectable/at.svg) * skin/classic/browser/zen-icons/selectable/baseball.svg (../shared/zen-icons/common/selectable/baseball.svg) * skin/classic/browser/zen-icons/selectable/basket.svg (../shared/zen-icons/common/selectable/basket.svg) * skin/classic/browser/zen-icons/selectable/bed.svg (../shared/zen-icons/common/selectable/bed.svg) @@ -469,6 +470,7 @@ * skin/classic/browser/zen-icons/selectable/star-1.svg (../shared/zen-icons/common/selectable/star-1.svg) * skin/classic/browser/zen-icons/selectable/star.svg (../shared/zen-icons/common/selectable/star.svg) * skin/classic/browser/zen-icons/selectable/sun.svg (../shared/zen-icons/common/selectable/sun.svg) +* skin/classic/browser/zen-icons/selectable/tada.svg (../shared/zen-icons/common/selectable/tada.svg) * skin/classic/browser/zen-icons/selectable/terminal.svg (../shared/zen-icons/common/selectable/terminal.svg) * skin/classic/browser/zen-icons/selectable/triangle.svg (../shared/zen-icons/common/selectable/triangle.svg) * skin/classic/browser/zen-icons/selectable/video.svg (../shared/zen-icons/common/selectable/video.svg) diff --git a/src/zen/common/emojis/ZenEmojiPicker.mjs b/src/zen/common/emojis/ZenEmojiPicker.mjs index c15c0e444..0c7fd3976 100644 --- a/src/zen/common/emojis/ZenEmojiPicker.mjs +++ b/src/zen/common/emojis/ZenEmojiPicker.mjs @@ -4,7 +4,7 @@ { // prettier-ignore const SVG_ICONS = [ - "airplane.svg", "baseball.svg", "basket.svg", "bed.svg", + "airplane.svg", "at.svg", "baseball.svg", "basket.svg", "bed.svg", "bell.svg", "book.svg", "bookmark.svg", "chat.svg", "checkbox.svg", "circle.svg", "cloud.svg", "code.svg", "coins.svg", "cutlery.svg", "egg.svg", "flag.svg", "folder.svg", "globe.svg", @@ -12,7 +12,8 @@ "layers.svg", "lightning.svg", "mail.svg", "map.svg", "moon.svg", "music.svg", "page.svg", "palette.svg", "paw.svg", "people.svg", "pizza.svg", "planet.svg", "present.svg", "shapes.svg", "skull.svg", "square.svg", "squares.svg", "star.svg", - "star-1.svg", "sun.svg", "terminal.svg", "triangle.svg", "video.svg", "weight.svg", + "star-1.svg", "sun.svg", "tada.svg", "terminal.svg", "triangle.svg", "video.svg", + "weight.svg", ]; class nsZenEmojiPicker extends nsZenDOMOperatedFeature { From cdbd68254f816d8fc865b36565bf46ff9a096cb6 Mon Sep 17 00:00:00 2001 From: "mr. m" <91018726+mr-cheffy@users.noreply.github.com> Date: Thu, 4 Sep 2025 01:24:21 +0200 Subject: [PATCH 005/123] Revert "feat: add tada & at icons for ZenEmojiPicker (#10233)" (#10235) This reverts commit eb94927370bb44e4a1c8c4dea2c65359b50f566c. --- .../themes/shared/zen-icons/common/selectable/at.svg | 8 -------- .../themes/shared/zen-icons/common/selectable/tada.svg | 7 ------- src/browser/themes/shared/zen-icons/jar.inc.mn | 2 -- src/zen/common/emojis/ZenEmojiPicker.mjs | 5 ++--- 4 files changed, 2 insertions(+), 20 deletions(-) delete mode 100644 src/browser/themes/shared/zen-icons/common/selectable/at.svg delete mode 100644 src/browser/themes/shared/zen-icons/common/selectable/tada.svg diff --git a/src/browser/themes/shared/zen-icons/common/selectable/at.svg b/src/browser/themes/shared/zen-icons/common/selectable/at.svg deleted file mode 100644 index 60b40396b..000000000 --- a/src/browser/themes/shared/zen-icons/common/selectable/at.svg +++ /dev/null @@ -1,8 +0,0 @@ -#filter dumbComments emptyLines substitution -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - - - - diff --git a/src/browser/themes/shared/zen-icons/common/selectable/tada.svg b/src/browser/themes/shared/zen-icons/common/selectable/tada.svg deleted file mode 100644 index ebe8c552b..000000000 --- a/src/browser/themes/shared/zen-icons/common/selectable/tada.svg +++ /dev/null @@ -1,7 +0,0 @@ -#filter dumbComments emptyLines substitution -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - - - diff --git a/src/browser/themes/shared/zen-icons/jar.inc.mn b/src/browser/themes/shared/zen-icons/jar.inc.mn index fe631ab1e..d4236ee7a 100644 --- a/src/browser/themes/shared/zen-icons/jar.inc.mn +++ b/src/browser/themes/shared/zen-icons/jar.inc.mn @@ -427,7 +427,6 @@ #endif * skin/classic/browser/zen-icons/urlbar-arrow.svg (../shared/zen-icons/common/urlbar-arrow.svg) * skin/classic/browser/zen-icons/selectable/airplane.svg (../shared/zen-icons/common/selectable/airplane.svg) -* skin/classic/browser/zen-icons/selectable/at.svg (../shared/zen-icons/common/selectable/at.svg) * skin/classic/browser/zen-icons/selectable/baseball.svg (../shared/zen-icons/common/selectable/baseball.svg) * skin/classic/browser/zen-icons/selectable/basket.svg (../shared/zen-icons/common/selectable/basket.svg) * skin/classic/browser/zen-icons/selectable/bed.svg (../shared/zen-icons/common/selectable/bed.svg) @@ -470,7 +469,6 @@ * skin/classic/browser/zen-icons/selectable/star-1.svg (../shared/zen-icons/common/selectable/star-1.svg) * skin/classic/browser/zen-icons/selectable/star.svg (../shared/zen-icons/common/selectable/star.svg) * skin/classic/browser/zen-icons/selectable/sun.svg (../shared/zen-icons/common/selectable/sun.svg) -* skin/classic/browser/zen-icons/selectable/tada.svg (../shared/zen-icons/common/selectable/tada.svg) * skin/classic/browser/zen-icons/selectable/terminal.svg (../shared/zen-icons/common/selectable/terminal.svg) * skin/classic/browser/zen-icons/selectable/triangle.svg (../shared/zen-icons/common/selectable/triangle.svg) * skin/classic/browser/zen-icons/selectable/video.svg (../shared/zen-icons/common/selectable/video.svg) diff --git a/src/zen/common/emojis/ZenEmojiPicker.mjs b/src/zen/common/emojis/ZenEmojiPicker.mjs index 0c7fd3976..c15c0e444 100644 --- a/src/zen/common/emojis/ZenEmojiPicker.mjs +++ b/src/zen/common/emojis/ZenEmojiPicker.mjs @@ -4,7 +4,7 @@ { // prettier-ignore const SVG_ICONS = [ - "airplane.svg", "at.svg", "baseball.svg", "basket.svg", "bed.svg", + "airplane.svg", "baseball.svg", "basket.svg", "bed.svg", "bell.svg", "book.svg", "bookmark.svg", "chat.svg", "checkbox.svg", "circle.svg", "cloud.svg", "code.svg", "coins.svg", "cutlery.svg", "egg.svg", "flag.svg", "folder.svg", "globe.svg", @@ -12,8 +12,7 @@ "layers.svg", "lightning.svg", "mail.svg", "map.svg", "moon.svg", "music.svg", "page.svg", "palette.svg", "paw.svg", "people.svg", "pizza.svg", "planet.svg", "present.svg", "shapes.svg", "skull.svg", "square.svg", "squares.svg", "star.svg", - "star-1.svg", "sun.svg", "tada.svg", "terminal.svg", "triangle.svg", "video.svg", - "weight.svg", + "star-1.svg", "sun.svg", "terminal.svg", "triangle.svg", "video.svg", "weight.svg", ]; class nsZenEmojiPicker extends nsZenDOMOperatedFeature { From e533f722ffb7a70e6211bcc5783448bd11e2321c Mon Sep 17 00:00:00 2001 From: "Mr. M" Date: Thu, 4 Sep 2025 12:16:08 +0200 Subject: [PATCH 006/123] fix: Fixed flathub missing attributes, b=no-bug, c=workflows, flatpak, folders, workspaces --- .github/workflows/build.yml | 4 +-- .../flatpak/app.zen_browser.zen.yml.template | 26 +++++++++++++++---- src/zen/folders/ZenFolders.mjs | 1 + src/zen/workspaces/zen-workspaces.css | 10 +++---- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 34ee19664..7904eb083 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -734,8 +734,8 @@ jobs: GIT_CURL_VERBOSE: 1 with: token: ${{ secrets.DEPLOY_KEY }} - commit-message: 🚀 Update to version ${{ needs.build-data.outputs.version }} - title: 🚀 Update to version ${{ needs.build-data.outputs.version }} + commit-message: Update to version `${{ needs.build-data.outputs.version }}` + title: Update to version `${{ needs.build-data.outputs.version }}` body: | This PR updates the Zen Browser Flatpak package to version ${{ needs.build-data.outputs.version }}. diff --git a/build/flatpak/app.zen_browser.zen.yml.template b/build/flatpak/app.zen_browser.zen.yml.template index a7724879d..b40d6e5de 100644 --- a/build/flatpak/app.zen_browser.zen.yml.template +++ b/build/flatpak/app.zen_browser.zen.yml.template @@ -11,6 +11,7 @@ add-extensions: add-ld-path: . command: launch-script.sh finish-args: + - --allow=devel - --share=ipc - --share=network - --socket=pulseaudio @@ -19,16 +20,31 @@ finish-args: - --socket=pcsc - --socket=cups - --persist=.zen + - --env=DICPATH=/usr/share/hunspell + - --filesystem=xdg-data/applications:create + - --filesystem=xdg-data/icons:create - --filesystem=xdg-download:rw + - --filesystem=/run/.heim_org.h5l.kcm-socket + - --filesystem=xdg-run/speech-dispatcher:ro - --device=all - --talk-name=org.freedesktop.FileManager1 - - --talk-name=org.freedesktop.ScreenSaver - - --own-name=org.mozilla.zen.* - - --own-name=org.mpris.MediaPlayer2.firefox.* - --system-talk-name=org.freedesktop.NetworkManager - --talk-name=org.a11y.Bus - - --env=GTK_PATH=/app/lib/gtkmodules - - --env=MESA_SHADER_CACHE_DIR=/var/cache/mesa_shader_cache_db + - --talk-name=org.gtk.vfs.* + - --own-name=org.mpris.MediaPlayer2.firefox.* + - --own-name=org.mozilla.zen.* +cleanup: + - /include + - /lib/pkgconfig + - /share/pkgconfig + - /share/aclocal + - /share/gtk-doc + - /share/doc + - /share/info + - /man + - /share/man + - '*.la' + - '*.a' modules: - name: zen_browser buildsystem: simple diff --git a/src/zen/folders/ZenFolders.mjs b/src/zen/folders/ZenFolders.mjs index 9d95eb760..16cf15aa1 100644 --- a/src/zen/folders/ZenFolders.mjs +++ b/src/zen/folders/ZenFolders.mjs @@ -906,6 +906,7 @@ } handleTabUnpin(tab) { + tab.style.removeProperty('--zen-folder-indent'); const group = tab.group; if (!group) { return false; diff --git a/src/zen/workspaces/zen-workspaces.css b/src/zen/workspaces/zen-workspaces.css index 737c385e1..1b79c5035 100644 --- a/src/zen/workspaces/zen-workspaces.css +++ b/src/zen/workspaces/zen-workspaces.css @@ -318,13 +318,13 @@ zen-workspace { } } } + + &[active] .zen-workspace-empty-space { + -moz-window-dragging: drag; + } } -.zen-workspace-empty-space { - -moz-window-dragging: drag; -} - -/** Customiable UI, this is an auto generated ID */ +/** Customizable UI, this is an auto generated ID */ #wrapper-zen-workspaces-button { width: 100%; } From cc3f0de843ccd86a5f92019c4abf3b620360a7f5 Mon Sep 17 00:00:00 2001 From: reizumi Date: Thu, 4 Sep 2025 18:23:19 +0800 Subject: [PATCH 007/123] fix: always show HTTP warning symbol in single toolbar, p=#10241 --- .../themes/shared/identity-block/identity-block-css.patch | 2 +- src/zen/common/styles/zen-urlbar.css | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/browser/themes/shared/identity-block/identity-block-css.patch b/src/browser/themes/shared/identity-block/identity-block-css.patch index 1726ef6ee..ff1a3e939 100644 --- a/src/browser/themes/shared/identity-block/identity-block-css.patch +++ b/src/browser/themes/shared/identity-block/identity-block-css.patch @@ -7,7 +7,7 @@ index 13b1659ed5a3b9bb0342b601998d0fd5c9760e22..4f13c401f23f51962986fe8caf197aa5 #identity-box[pageproxystate="valid"]:is(.notSecureText, .chromeUI, .extensionPage) > .identity-box-button, #urlbar-label-box { - background-color: var(--urlbar-box-bgcolor); -+ background-color: light-dark(#cecece, rgb(66, 65, 77)); ++ background-color: transparent; color: var(--urlbar-box-text-color); padding-inline: 8px; border-radius: var(--urlbar-icon-border-radius); diff --git a/src/zen/common/styles/zen-urlbar.css b/src/zen/common/styles/zen-urlbar.css index e6d28f692..e7e63a18a 100644 --- a/src/zen/common/styles/zen-urlbar.css +++ b/src/zen/common/styles/zen-urlbar.css @@ -201,7 +201,7 @@ display: none; } - #identity-box:not([pageproxystate='invalid']) #identity-icon-box:not([open]) { + #identity-box:not([pageproxystate='invalid']):not(.notSecure) #identity-icon-box:not([open]) { margin-inline-start: calc(-8px - 2 * var(--urlbar-icon-padding)); transform: translateX(100%); opacity: 0; @@ -376,7 +376,7 @@ button.popup-notification-dropmarker { #identity-box:is(:not(.chromeUI), [pageproxystate='invalid']) #identity-icon-box { border-radius: var(--urlbar-icon-border-radius) !important; - min-width: 30px; + min-width: 28px; } /* Notification Stack */ From 07c90bc9b8d40c5800ee70ed80ceb61a174f90fa Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Thu, 4 Sep 2025 03:24:16 -0700 Subject: [PATCH 008/123] feat: add tada & at icons for ZenEmojiPicker, p=#10237 --- .../themes/shared/zen-icons/common/selectable/tada.svg | 7 +++++++ src/browser/themes/shared/zen-icons/jar.inc.mn | 1 + src/zen/common/emojis/ZenEmojiPicker.mjs | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 src/browser/themes/shared/zen-icons/common/selectable/tada.svg diff --git a/src/browser/themes/shared/zen-icons/common/selectable/tada.svg b/src/browser/themes/shared/zen-icons/common/selectable/tada.svg new file mode 100644 index 000000000..005830180 --- /dev/null +++ b/src/browser/themes/shared/zen-icons/common/selectable/tada.svg @@ -0,0 +1,7 @@ +#filter dumbComments emptyLines substitution +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + + diff --git a/src/browser/themes/shared/zen-icons/jar.inc.mn b/src/browser/themes/shared/zen-icons/jar.inc.mn index d4236ee7a..a8108f6cc 100644 --- a/src/browser/themes/shared/zen-icons/jar.inc.mn +++ b/src/browser/themes/shared/zen-icons/jar.inc.mn @@ -469,6 +469,7 @@ * skin/classic/browser/zen-icons/selectable/star-1.svg (../shared/zen-icons/common/selectable/star-1.svg) * skin/classic/browser/zen-icons/selectable/star.svg (../shared/zen-icons/common/selectable/star.svg) * skin/classic/browser/zen-icons/selectable/sun.svg (../shared/zen-icons/common/selectable/sun.svg) +* skin/classic/browser/zen-icons/selectable/tada.svg (../shared/zen-icons/common/selectable/tada.svg) * skin/classic/browser/zen-icons/selectable/terminal.svg (../shared/zen-icons/common/selectable/terminal.svg) * skin/classic/browser/zen-icons/selectable/triangle.svg (../shared/zen-icons/common/selectable/triangle.svg) * skin/classic/browser/zen-icons/selectable/video.svg (../shared/zen-icons/common/selectable/video.svg) diff --git a/src/zen/common/emojis/ZenEmojiPicker.mjs b/src/zen/common/emojis/ZenEmojiPicker.mjs index c15c0e444..f9a0e1843 100644 --- a/src/zen/common/emojis/ZenEmojiPicker.mjs +++ b/src/zen/common/emojis/ZenEmojiPicker.mjs @@ -12,7 +12,8 @@ "layers.svg", "lightning.svg", "mail.svg", "map.svg", "moon.svg", "music.svg", "page.svg", "palette.svg", "paw.svg", "people.svg", "pizza.svg", "planet.svg", "present.svg", "shapes.svg", "skull.svg", "square.svg", "squares.svg", "star.svg", - "star-1.svg", "sun.svg", "terminal.svg", "triangle.svg", "video.svg", "weight.svg", + "star-1.svg", "sun.svg", "tada.svg", "terminal.svg", "triangle.svg", "video.svg", + "weight.svg", ]; class nsZenEmojiPicker extends nsZenDOMOperatedFeature { From 137bd469dc5a77c3691722773083a4bf8a80a084 Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Thu, 4 Sep 2025 21:20:50 +0200 Subject: [PATCH 009/123] feat: Remove compact mode XUL store and only use the pref, b=no-bug, c=compact-mode, folders --- src/browser/base/content/browser-xhtml.patch | 4 ++-- src/zen/compact-mode/ZenCompactMode.mjs | 17 +++-------------- src/zen/folders/zen-folders.css | 2 +- 3 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/browser/base/content/browser-xhtml.patch b/src/browser/base/content/browser-xhtml.patch index 9e333cd9b..91a5e11a9 100644 --- a/src/browser/base/content/browser-xhtml.patch +++ b/src/browser/base/content/browser-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml -index 665b048cf149b9a6d0ccc43f8d9199f077b8ada2..d031a99ae5c9c6e69cfd831c7d271d8a8d097dc8 100644 +index 665b048cf149b9a6d0ccc43f8d9199f077b8ada2..fcff5cc6a4a50ff2d76930e4d2a1e1d0b2e6bc02 100644 --- a/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml @@ -26,6 +26,7 @@ @@ -25,7 +25,7 @@ index 665b048cf149b9a6d0ccc43f8d9199f077b8ada2..d031a99ae5c9c6e69cfd831c7d271d8a -+ ++ #include navigator-toolbox.inc.xhtml #include browser-box.inc.xhtml diff --git a/src/zen/compact-mode/ZenCompactMode.mjs b/src/zen/compact-mode/ZenCompactMode.mjs index 13fe7653c..167240eee 100644 --- a/src/zen/compact-mode/ZenCompactMode.mjs +++ b/src/zen/compact-mode/ZenCompactMode.mjs @@ -37,20 +37,10 @@ var gZenCompactModeManager = { HOVER_HACK_DELAY: Services.prefs.getIntPref('zen.view.compact.hover-hack-delay', 0), preInit() { - // Remove it before initializing so we can properly calculate the width - // of the sidebar at startup and avoid overflowing items not being hidden - let xulStoreValue = Services.xulStore.getValue( - AppConstants.BROWSER_CHROME_URL, - 'zen-main-app-wrapper', - 'zen-compact-mode' + this._wasInCompactMode = Services.prefs.getBoolPref( + 'zen.view.compact.enable-at-startup', + false ); - if (xulStoreValue === '-moz-missing\n' || !xulStoreValue) { - xulStoreValue = false; - } - this._wasInCompactMode = - xulStoreValue || Services.prefs.getBoolPref('zen.view.compact.enable-at-startup', false); - lazyCompactMode.mainAppWrapper.removeAttribute('zen-compact-mode'); - this._canDebugLog = Services.prefs.getBoolPref('zen.view.compact.debug', false); this.addContextMenu(); @@ -133,7 +123,6 @@ var gZenCompactModeManager = { // main-window can't store attributes other than window sizes, so we use this instead lazyCompactMode.mainAppWrapper.setAttribute('zen-compact-mode', value); document.documentElement.setAttribute('zen-compact-mode', value); - Services.xulStore.persist(lazyCompactMode.mainAppWrapper, 'zen-compact-mode'); if (typeof this._wasInCompactMode === 'undefined') { Services.prefs.setBoolPref('zen.view.compact.enable-at-startup', value); } diff --git a/src/zen/folders/zen-folders.css b/src/zen/folders/zen-folders.css index 055ee90df..96bfbe92d 100644 --- a/src/zen/folders/zen-folders.css +++ b/src/zen/folders/zen-folders.css @@ -41,7 +41,7 @@ tab-group[split-view-group] { outline-offset: var(--tab-outline-offset); outline-color: var(--tab-selected-outline-color); transition: scale 0.1s ease; - margin-inline: 0 !important; + margin-inline: 2px !important; :root:not([zen-sidebar-expanded='true']) & { padding: 0; From 93637f5fec8f128f5bc4ea54cd5de405c6a04fff Mon Sep 17 00:00:00 2001 From: "mr. m" <91018726+mr-cheffy@users.noreply.github.com> Date: Fri, 5 Sep 2025 12:13:44 +0200 Subject: [PATCH 010/123] New translations zen-folders.ftl (Portuguese) (#10249) --- locales/pt-PT/browser/browser/zen-folders.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/pt-PT/browser/browser/zen-folders.ftl b/locales/pt-PT/browser/browser/zen-folders.ftl index 5e5d3d080..760f00465 100644 --- a/locales/pt-PT/browser/browser/zen-folders.ftl +++ b/locales/pt-PT/browser/browser/zen-folders.ftl @@ -15,7 +15,7 @@ zen-folders-panel-change-folder-space = zen-folders-panel-change-icon-folder = .label = Alterar Ícone zen-folders-unload-all-tooltip = - .tooltiptext = Unload active in this folder + .tooltiptext = Descarregar ativos nesta pasta zen-folders-unload-folder = - .label = Unload All Tabs + .label = Descarregar Todos os Separadores zen-folders-search-no-results = Não existem separadores que correspondam a essa pesquisa 🤔 From 213151ed9d094bb04a5970fccc5e1a62c0c5517e Mon Sep 17 00:00:00 2001 From: "Mr. M" Date: Fri, 5 Sep 2025 12:19:22 +0200 Subject: [PATCH 011/123] fix: Fixed dark theme issues, b=closes #9229, c=common, folders --- src/zen/common/styles/zen-theme.css | 117 ++++++++++++---------------- src/zen/folders/zen-folders.css | 2 +- 2 files changed, 51 insertions(+), 68 deletions(-) diff --git a/src/zen/common/styles/zen-theme.css b/src/zen/common/styles/zen-theme.css index db66aed47..f461f02cb 100644 --- a/src/zen/common/styles/zen-theme.css +++ b/src/zen/common/styles/zen-theme.css @@ -25,27 +25,46 @@ --zen-branding-bg-reverse: light-dark(var(--zen-branding-dark), var(--zen-branding-paper)); /** Zen colors are generated automatically from the primary color */ - --zen-colors-primary: color-mix(in srgb, var(--zen-primary-color) 50%, black 50%); - --zen-colors-secondary: color-mix(in srgb, var(--zen-colors-primary) 20%, white 80%); - --zen-colors-tertiary: color-mix(in srgb, var(--zen-primary-color) 2%, white 98%); - - --zen-colors-hover-bg: color-mix(in srgb, var(--zen-primary-color) 90%, white 10%); - --zen-colors-primary-foreground: var(--zen-branding-bg-reverse); - --zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 97%, black 3%); - --zen-colors-border-contrast: color-mix( - in srgb, - var(--zen-colors-secondary) 10%, - rgba(181, 181, 181, 0.11) 90% + --zen-colors-primary: light-dark( + color-mix(in srgb, var(--zen-primary-color) 50%, black 50%), + color-mix(in srgb, var(--zen-primary-color) 20%, var(--zen-branding-bg) 80%) + ); + --zen-colors-secondary: light-dark( + color-mix(in srgb, var(--zen-colors-primary) 20%, white 80%), + color-mix(in srgb, var(--zen-primary-color) 30%, var(--zen-branding-bg) 70%) + ); + --zen-colors-tertiary: light-dark( + color-mix(in srgb, var(--zen-primary-color) 2%, white 98%), + color-mix(in srgb, var(--zen-primary-color) 1%, var(--zen-branding-bg) 99%) ); - --zen-colors-input-bg: color-mix( - in srgb, - var(--zen-primary-color) 1%, - var(--zen-colors-tertiary) 99% + --zen-colors-hover-bg: light-dark( + color-mix(in srgb, var(--zen-primary-color) 90%, white 10%), + color-mix(in srgb, var(--zen-primary-color) 90%, var(--zen-branding-bg) 10%) + ); + --zen-colors-primary-foreground: light-dark( + var(--zen-branding-bg-reverse), + color-mix(in srgb, var(--zen-primary-color) 80%, white 20%) + ); + --zen-colors-border: light-dark( + color-mix(in srgb, var(--zen-colors-secondary) 97%, black 3%), + color-mix(in srgb, var(--zen-colors-secondary) 20%, rgb(79, 79, 79) 80%) + ); + --zen-colors-border-contrast: light-dark( + color-mix(in srgb, var(--zen-colors-secondary) 10%, rgba(181, 181, 181, 0.11) 90%), + color-mix(in srgb, var(--zen-colors-secondary) 10%, rgba(255, 255, 255, 0.11) 90%) + ); + + --zen-colors-input-bg: light-dark( + color-mix(in srgb, var(--zen-primary-color) 1%, var(--zen-colors-tertiary) 99%), + color-mix(in srgb, var(--zen-primary-color) 1%, var(--zen-branding-bg) 99%) ); --zen-dialog-background: light-dark(rgb(244, 244, 244), rgb(31, 31, 31)); - --zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 3%, #f4f4f4 97%); + --zen-urlbar-background: light-dark( + color-mix(in srgb, var(--zen-primary-color) 3%, #f4f4f4 97%), + color-mix(in srgb, var(--zen-primary-color) 4%, rgb(24, 24, 24) 96%) + ); --zen-secondary-btn-color: var(--zen-colors-primary-foreground); @@ -111,7 +130,10 @@ ) !important; --in-content-page-background: var(--zen-colors-tertiary) !important; - --zen-in-content-dialog-background: var(--zen-colors-tertiary); + --zen-in-content-dialog-background: light-dark( + var(--zen-colors-tertiary), + var(--zen-branding-bg) + ); --zen-button-border-radius: 5px; --zen-button-padding: 0.6rem 1.2rem; @@ -138,6 +160,13 @@ --toolbarbutton-hover-background: var(--zen-toolbar-element-bg-hover) !important; + /* Using a semitransparent background preserves the tinting from the backdrop. + * Note that the toolbar text color from browser-colors.css should be ok, + * as the backdrop matches our color scheme. The .6 matches what we do for + * acrylic, and the .15 matches the 85% we do for the default toolbar + * background on the native theme. */ + --toolbar-bgcolor: light-dark(rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.15)); + --toolbarbutton-active-background: color-mix( in srgb, var(--zen-branding-bg-reverse) 7%, @@ -149,10 +178,13 @@ /* Other colors */ --urlbar-box-active-bgcolor: var(--toolbarbutton-hover-background) !important; - --toolbar-field-focus-background-color: var(--urlbar-box-bgcolor) !important; --zen-input-border-color: light-dark(rgb(204, 204, 204), rgb(66, 65, 77)); --urlbar-box-hover-bgcolor: var(--toolbarbutton-hover-background) !important; --input-bgcolor: light-dark(rgba(255, 255, 255, 0.2), rgba(0, 0, 0, 0.2)) !important; + --toolbar-field-focus-background-color: light-dark( + rgba(255, 255, 255, 0.25), + rgba(0, 0, 0, 0.3) + ) !important; /* Transitions */ --zen-tabbox-element-indent-transition: margin-inline-start 0.1s ease-in-out; @@ -284,52 +316,3 @@ --toolbar-color-scheme: light; } } - -@media (prefers-color-scheme: dark) { - :host(:is(.anonymous-content-host, notification-message)), - :root { - --zen-in-content-dialog-background: var(--zen-branding-bg); - --zen-colors-primary: color-mix( - in srgb, - var(--zen-primary-color) 20%, - var(--zen-branding-bg) 80% - ); - --zen-colors-secondary: color-mix( - in srgb, - var(--zen-primary-color) 30%, - var(--zen-branding-bg) 70% - ); - --zen-colors-tertiary: color-mix( - in srgb, - var(--zen-primary-color) 1%, - var(--zen-branding-bg) 99% - ); - - --zen-colors-hover-bg: color-mix( - in srgb, - var(--zen-primary-color) 90%, - var(--zen-branding-bg) 10% - ); - --zen-colors-primary-foreground: color-mix(in srgb, var(--zen-primary-color) 80%, white 20%); - - --zen-colors-input-bg: color-mix( - in srgb, - var(--zen-primary-color) 1%, - var(--zen-branding-bg) 99% - ); - --zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 20%, rgb(79, 79, 79) 80%); - --zen-colors-border-contrast: color-mix( - in srgb, - var(--zen-colors-secondary) 10%, - rgba(255, 255, 255, 0.11) 90% - ); - - --zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 4%, rgb(24, 24, 24) 96%); - - --zen-browser-gradient-base: color-mix( - in srgb, - var(--zen-primary-color) 30%, - var(--zen-branding-bg) 70% - ); - } -} diff --git a/src/zen/folders/zen-folders.css b/src/zen/folders/zen-folders.css index 96bfbe92d..3d0a0a1af 100644 --- a/src/zen/folders/zen-folders.css +++ b/src/zen/folders/zen-folders.css @@ -269,7 +269,7 @@ zen-folder { pointer-events: none; :root[zen-sidebar-expanded] & { - left: 2px; + left: 4px; } & svg { From aefe74e934830f0249b7edc9fe3cd85aa27d4a24 Mon Sep 17 00:00:00 2001 From: "mr. m" <91018726+mr-cheffy@users.noreply.github.com> Date: Fri, 5 Sep 2025 20:29:12 +0200 Subject: [PATCH 012/123] Remove unnecessary filesystem permissions (#10258) * Delete .well-known directory Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com> * Remove unnecessary filesystem permissions Removed filesystem permissions for applications and icons. Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com> --------- Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com> --- .well-known/funding-manifest-urls | 1 - build/flatpak/app.zen_browser.zen.yml.template | 2 -- 2 files changed, 3 deletions(-) delete mode 100644 .well-known/funding-manifest-urls diff --git a/.well-known/funding-manifest-urls b/.well-known/funding-manifest-urls deleted file mode 100644 index a24f94d51..000000000 --- a/.well-known/funding-manifest-urls +++ /dev/null @@ -1 +0,0 @@ -https://zen-browser.app/funding.json diff --git a/build/flatpak/app.zen_browser.zen.yml.template b/build/flatpak/app.zen_browser.zen.yml.template index b40d6e5de..0a5d6d8b0 100644 --- a/build/flatpak/app.zen_browser.zen.yml.template +++ b/build/flatpak/app.zen_browser.zen.yml.template @@ -21,8 +21,6 @@ finish-args: - --socket=cups - --persist=.zen - --env=DICPATH=/usr/share/hunspell - - --filesystem=xdg-data/applications:create - - --filesystem=xdg-data/icons:create - --filesystem=xdg-download:rw - --filesystem=/run/.heim_org.h5l.kcm-socket - --filesystem=xdg-run/speech-dispatcher:ro From 798c5f8d850645a53c2468e41c1afa81c60b3887 Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Sat, 6 Sep 2025 04:38:10 +0200 Subject: [PATCH 013/123] chore: Update twilight version, b=closes #10256, c=tabs, workspaces --- src/browser/components/tabbrowser/content/tabs-js.patch | 4 ++-- src/zen/workspaces/ZenWorkspaces.mjs | 4 ++-- surfer.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/browser/components/tabbrowser/content/tabs-js.patch b/src/browser/components/tabbrowser/content/tabs-js.patch index 20b2434ff..23cd7f990 100644 --- a/src/browser/components/tabbrowser/content/tabs-js.patch +++ b/src/browser/components/tabbrowser/content/tabs-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js -index e2b27db6c13278defea3bcc7606a8da54e7d001c..3033f5c98c94cf4b048432dfee72e20f4d8e37b6 100644 +index e2b27db6c13278defea3bcc7606a8da54e7d001c..91e772ab0fed5be50e6dfee40eaa24888de67ccb 100644 --- a/browser/components/tabbrowser/content/tabs.js +++ b/browser/components/tabbrowser/content/tabs.js @@ -332,7 +332,7 @@ @@ -7,7 +7,7 @@ index e2b27db6c13278defea3bcc7606a8da54e7d001c..3033f5c98c94cf4b048432dfee72e20f if ( event.button != 0 || - event.target != this.arrowScrollbox || -+ !event.target.classList.contains("zen-workspace-normal-tabs-section") || ++ !event.target.classList.contains("zen-workspace-empty-space") || event.composedTarget.localName == "toolbarbutton" ) { return; diff --git a/src/zen/workspaces/ZenWorkspaces.mjs b/src/zen/workspaces/ZenWorkspaces.mjs index a5c2b01cd..867028c78 100644 --- a/src/zen/workspaces/ZenWorkspaces.mjs +++ b/src/zen/workspaces/ZenWorkspaces.mjs @@ -1493,8 +1493,8 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { if (container) { if (tab.group?.hasAttribute('split-view-group')) { gBrowser.zenHandleTabMove(tab.group, () => { - for (const tab of tab.group.tabs) { - tab.setAttribute('zen-workspace-id', workspaceID); + for (const subTab of tab.group.tabs) { + subTab.setAttribute('zen-workspace-id', workspaceID); } container.insertBefore(tab.group, container.lastChild); }); diff --git a/surfer.json b/surfer.json index 46f31f7bd..217138ff1 100644 --- a/surfer.json +++ b/surfer.json @@ -19,7 +19,7 @@ "brandShortName": "Zen", "brandFullName": "Zen Browser", "release": { - "displayVersion": "1.15.4b", + "displayVersion": "1.15.5b", "github": { "repo": "zen-browser/desktop" }, @@ -39,7 +39,7 @@ "brandShortName": "Twilight", "brandFullName": "Zen Twilight", "release": { - "displayVersion": "1.15t", + "displayVersion": "1.16t", "github": { "repo": "zen-browser/desktop" } From 8bd7f187a3c0b95072b59b45afbc2494f976d5eb Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Sat, 6 Sep 2025 17:24:37 +0200 Subject: [PATCH 014/123] fix: Fixed bookmarks duplicating at startup, b=closes #10272, c=common, workspaces --- src/zen/common/styles/zen-browser-container.css | 2 +- src/zen/workspaces/ZenWorkspaces.mjs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/zen/common/styles/zen-browser-container.css b/src/zen/common/styles/zen-browser-container.css index fe6308744..1407dbe83 100644 --- a/src/zen/common/styles/zen-browser-container.css +++ b/src/zen/common/styles/zen-browser-container.css @@ -16,7 +16,7 @@ box-shadow: var(--zen-big-shadow); } - & browser[transparent='true'] { + & browser[type='content'] { background: light-dark(rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.1)); } diff --git a/src/zen/workspaces/ZenWorkspaces.mjs b/src/zen/workspaces/ZenWorkspaces.mjs index 867028c78..61468944a 100644 --- a/src/zen/workspaces/ZenWorkspaces.mjs +++ b/src/zen/workspaces/ZenWorkspaces.mjs @@ -926,7 +926,6 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature { await this.initializeTabsStripSections(); this._initializeEmptyTab(); await gZenPinnedTabManager.refreshPinnedTabs({ init: true }); - this._invalidateBookmarkContainers(); await this.changeWorkspace(activeWorkspace, { onInit: true }); this.#fixTabPositions(); this.onWindowResize(); From 407fc989302cad81fe96384be8713fc2ee1cdc79 Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Sat, 6 Sep 2025 17:37:18 +0200 Subject: [PATCH 015/123] fix: Fixed pinning tabs not storing the position correctly, b=no-bug, c=tabs --- src/zen/tabs/ZenPinnedTabManager.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/zen/tabs/ZenPinnedTabManager.mjs b/src/zen/tabs/ZenPinnedTabManager.mjs index 4b9d20fb8..dd2ffafcb 100644 --- a/src/zen/tabs/ZenPinnedTabManager.mjs +++ b/src/zen/tabs/ZenPinnedTabManager.mjs @@ -678,6 +678,7 @@ workspaceUuid: tab.getAttribute('zen-workspace-id'), isEssential: tab.getAttribute('zen-essential') === 'true', parentUuid: tab.group?.getAttribute('zen-pin-id') || null, + position: tab._pPos, }); tab.setAttribute('zen-pin-id', uuid); From 1c5044b90debbbe920d9e76ea48882653761d8ce Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Sat, 6 Sep 2025 21:08:16 +0200 Subject: [PATCH 016/123] feat: Only collapse folders after pinned restore, b=no-bug, c=folders, tabs --- src/zen/folders/ZenFolders.mjs | 4 +++- src/zen/tabs/ZenPinnedTabManager.mjs | 13 +++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/zen/folders/ZenFolders.mjs b/src/zen/folders/ZenFolders.mjs index 16cf15aa1..a702b6d6e 100644 --- a/src/zen/folders/ZenFolders.mjs +++ b/src/zen/folders/ZenFolders.mjs @@ -875,7 +875,9 @@ // that we want it to initially be collapsed. setTimeout( (folder) => { - folder.collapsed = !!options.collapsed; + gZenPinnedTabManager.promiseInitializedPinned.then(() => { + folder.collapsed = !!options.collapsed; + }); }, 0, folder diff --git a/src/zen/tabs/ZenPinnedTabManager.mjs b/src/zen/tabs/ZenPinnedTabManager.mjs index dd2ffafcb..1efa33aa2 100644 --- a/src/zen/tabs/ZenPinnedTabManager.mjs +++ b/src/zen/tabs/ZenPinnedTabManager.mjs @@ -69,6 +69,9 @@ MAX_ESSENTIALS_TABS = 12; #hasInitializedPins = false; + promiseInitializedPinned = new Promise((resolve) => { + this._resolvePinnedInitializedInternal = resolve; + }); async init() { if (!this.enabled) { @@ -187,10 +190,16 @@ return this._pinsCache; } + #finishedInitializingPins() { + this._resolvePinnedInitializedInternal(); + delete this._resolvePinnedInitializedInternal; + this.#hasInitializedPins = true; + } + async #initializePinnedTabs(init = false) { const pins = this._pinsCache; if (!pins?.length || !init) { - this.#hasInitializedPins = true; + this.#finishedInitializingPins(); return; } @@ -374,7 +383,7 @@ } setTimeout(() => { - this.#hasInitializedPins = true; + this.#finishedInitializingPins(); }, 0); gBrowser._updateTabBarForPinnedTabs(); From 434066aa6f743db46b2a87d128af72313258e6c2 Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Sat, 6 Sep 2025 21:12:23 +0200 Subject: [PATCH 017/123] feat: Added pref for wheel closing an unloaded pinned tab, b=no-bug, c=workspaces, tabs --- prefs/workspaces.yaml | 3 +++ src/zen/tabs/ZenPinnedTabManager.mjs | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/prefs/workspaces.yaml b/prefs/workspaces.yaml index 00e3d617a..9b61e17bb 100644 --- a/prefs/workspaces.yaml +++ b/prefs/workspaces.yaml @@ -36,6 +36,9 @@ value: '@cond' condition: '!defined(MOZILLA_OFFICIAL)' # Section: Pinned tabs management +- name: zen.pinned-tab-manager.wheel-close-if-pending + value: true + - name: zen.pinned-tab-manager.debug value: false diff --git a/src/zen/tabs/ZenPinnedTabManager.mjs b/src/zen/tabs/ZenPinnedTabManager.mjs index 1efa33aa2..a6c3ff4b2 100644 --- a/src/zen/tabs/ZenPinnedTabManager.mjs +++ b/src/zen/tabs/ZenPinnedTabManager.mjs @@ -615,7 +615,11 @@ async _onTabClick(e) { const tab = e.target?.closest('tab'); if (e.button === 1 && tab) { - await this._onCloseTabShortcut(e, tab, { closeIfPending: true }); + await this._onCloseTabShortcut(e, tab, { + closeIfPending: Services.prefs.getBoolPref( + 'zen.pinned-tab-manager.wheel-close-if-pending' + ), + }); } } From 224104797601a236433866b4324418be02fa4e43 Mon Sep 17 00:00:00 2001 From: reizumi Date: Mon, 8 Sep 2025 20:52:06 +0800 Subject: [PATCH 018/123] feat: add icons to the bookmarks submenu (#10293) --- src/browser/themes/shared/zen-icons/icons.css | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/browser/themes/shared/zen-icons/icons.css b/src/browser/themes/shared/zen-icons/icons.css index f34425cf8..f35e5e149 100644 --- a/src/browser/themes/shared/zen-icons/icons.css +++ b/src/browser/themes/shared/zen-icons/icons.css @@ -636,6 +636,22 @@ list-style-image: url('manage.svg') !important; } +#panelMenuBookmarkThisPage { + list-style-image: url('bookmark.svg') !important; +} + +#panelMenu_searchBookmarks { + list-style-image: url('search-glass.svg') !important; +} + +#panelMenu_viewBookmarksToolbar { + list-style-image: url('open.svg') !important; +} + +#panelMenu_showAllBookmarks { + list-style-image: url('manage.svg') !important; +} + /* FIX header icons for the app menu sub menus (eg. fx account, history...) */ .panel-header > h1 { text-align: left; From 5933c55c13c3ab94bd39763adbf99f7077b22a18 Mon Sep 17 00:00:00 2001 From: "mr. m" <91018726+mr-cheffy@users.noreply.github.com> Date: Thu, 11 Sep 2025 18:00:10 +0200 Subject: [PATCH 019/123] chore: Update to Firefox `143.0`, c=l10n, common (#10304) --- README.md | 2 +- build/firefox-cache/l10n-last-commit-hash | 2 +- .../flatpak/app.zen_browser.zen.yml.template | 1 + package.json | 3 +- prefs/browser.yaml | 3 + prefs/disablemozilla.yaml | 4 + scripts/recalculate-patches.sh | 19 +- scripts/update_ts_types.py | 19 +- src/Cargo-lock.patch | 4 +- src/Cargo-toml.patch | 2 +- src/browser/actors/WebRTCParent-sys-mjs.patch | 2 +- .../app/macbuild/Contents/Info-plist-in.patch | 2 +- .../base/content/browser-addons-js.patch | 10 +- .../base/content/browser-commands-js.patch | 8 +- .../browser-fullScreenAndPointerLock-js.patch | 4 +- .../base/content/browser-init-js.patch | 6 +- src/browser/base/content/browser-js.patch | 32 +- .../base/content/browser-places-js.patch | 2 +- .../base/content/browser-sets-inc.patch | 2 +- .../base/content/browser-sets-js.patch | 4 +- .../content/browser-siteIdentity-js.patch | 6 +- src/browser/base/content/browser-xhtml.patch | 6 +- .../content/main-popupset-inc-xhtml.patch | 8 +- .../content/navigator-toolbox-inc-xhtml.patch | 16 +- .../base/content/navigator-toolbox-js.patch | 2 +- .../base/content/nsContextMenu-sys-mjs.patch | 4 +- .../base/content/zen-assets.jar.inc.mn | 1 - src/browser/base/jar-mn.patch | 4 +- src/browser/base/moz-build.patch | 4 +- .../BrowserContentHandler-sys-mjs.patch | 2 +- .../components/BrowserGlue-sys-mjs.patch | 6 +- .../content/components/login-list-css.patch | 4 +- .../content/identityPanel-inc-xhtml.patch | 2 +- .../CustomizableUI-sys-mjs.patch | 48 +- .../CustomizeMode-sys-mjs.patch | 10 +- .../ToolbarContextMenu-sys-mjs.patch | 4 +- .../content/panelUI-inc-xhtml.patch | 2 +- .../customizableui/content/panelUI-js.patch | 8 +- .../extensions/parent/ext-browser-js.patch | 2 +- .../extensions/parent/ext-tabs-js.patch | 6 +- .../places/PlacesUIUtils-sys-mjs.patch | 14 +- .../content/browserPlacesViews-js.patch | 2 +- .../places/content/editBookmark-js.patch | 12 +- .../components/preferences/jar-mn.patch | 4 +- .../components/preferences/main-js.patch | 4 +- .../preferences/preferences-xhtml.patch | 2 +- .../preferences/sync-inc-xhtml.patch | 4 +- .../search/SearchUIUtils-sys-mjs.patch | 4 +- .../sessionstore/SessionStore-sys-mjs.patch | 33 +- .../sidebar/browser-sidebar-js.patch | 4 +- .../content/browser-ctrlTab-js.patch | 8 +- .../tabbrowser/content/tab-js.patch | 38 +- .../tabbrowser/content/tabbrowser-js.patch | 136 +- .../tabbrowser/content/tabgroup-js.patch | 25 +- .../tabbrowser/content/tabs-js.patch | 379 +- .../urlbar/UrlbarController-sys-mjs.patch | 8 +- .../urlbar/UrlbarInput-sys-mjs.patch | 56 +- .../urlbar/UrlbarMuxerStandard-sys-mjs.patch | 4 +- .../urlbar/UrlbarView-sys-mjs.patch | 8 +- .../newtab/lib/ActivityStream-sys-mjs.patch | 4 +- .../installer/package-manifest-in.patch | 4 +- .../windows/nsis/defines-nsi-in.patch | 4 +- .../windows/nsis/installer-nsi.patch | 6 +- .../modules/ExtensionsUI-sys-mjs.patch | 4 +- .../modules/URILoadingHelper-sys-mjs.patch | 22 +- src/browser/themes/linux/browser-css.patch | 2 +- src/browser/themes/osx/browser-css.patch | 2 +- .../themes/shared/browser-shared-css.patch | 6 +- .../identity-block/identity-block-css.patch | 6 +- src/browser/themes/shared/jar-inc-mn.patch | 8 +- .../shared/tabbrowser/content-area-css.patch | 4 +- .../shared/tabbrowser/ctrlTab-css.patch | 12 +- .../themes/shared/tabbrowser/tabs-css.patch | 36 +- .../themes/shared/toolbarbuttons-css.patch | 2 +- .../themes/shared/urlbar-searchbar-css.patch | 22 +- .../themes/shared/urlbarView-css.patch | 4 +- src/browser/themes/shared/zen-icons/icons.css | 8 +- src/browser/themes/windows/browser-css.patch | 2 +- .../actors/animation-type-longhand-js.patch | 4 +- .../startup/DevToolsStartup-sys-mjs.patch | 4 +- src/docshell/base/nsAboutRedirector-cpp.patch | 2 +- src/dom/base/Document-cpp.patch | 21 +- src/dom/base/use_counter_metrics-yaml.patch | 6 +- .../mediacontrol/MediaController-cpp.patch | 2 +- .../mediacontrol/MediaController-h.patch | 2 +- .../mediaelement}/HTMLMediaElement-cpp.patch | 8 +- src/gfx/wr/webrender/src/picture-rs.patch | 4 +- src/layout/generic/nsIFrame-cpp.patch | 4 +- .../nsStyleSheetService-h.patch | 6 +- src/layout/style/nsStyleStruct-cpp.patch | 6 +- src/layout/style/nsStyleStruct-h.patch | 4 +- .../style/test/ListCSSProperties-cpp.patch | 4 +- .../libpref/init/StaticPrefList-yaml.patch | 4 +- .../style/gecko/media_features-rs.patch | 29 +- .../properties/longhands/ui-mako-rs.patch | 4 +- src/testing/mochitest/browser-test-js.patch | 6 +- src/testing/profiles/mochitest/user-js.patch | 10 +- .../extensions/parent/ext-downloads-js.patch | 2 +- .../extensions/parent/ext-runtime-js.patch | 4 +- .../widgets/browser-custom-element-mjs.patch | 2 +- src/toolkit/content/widgets/infobar-css.patch | 2 +- .../widgets/moz-toggle/moz-toggle-css.patch | 4 +- src/toolkit/content/xul-css.patch | 4 +- src/toolkit/modules/moz-build.patch | 4 +- src/toolkit/moz-configure.patch | 8 +- .../extensions/AddonManager-sys-mjs.patch | 4 +- .../extensions/content/aboutaddons-css.patch | 2 +- .../update/updater/updater-common-build.patch | 4 +- .../themes/shared/aboutReader-css.patch | 2 +- .../shared/in-content/common-shared-css.patch | 6 +- src/widget/cocoa/nsCocoaWindow-mm.patch | 4 +- src/xpfe/appshell/AppWindow-cpp.patch | 4 +- src/zen/@types/index.d.ts | 30 +- src/zen/@types/lib.gecko.darwin.d.ts | 3 - src/zen/@types/lib.gecko.dom.d.ts | 1226 +- src/zen/@types/lib.gecko.glean.d.ts | 13857 +++++++++++++++- src/zen/@types/lib.gecko.linux.d.ts | 5 +- src/zen/@types/lib.gecko.modules.d.ts | 234 +- src/zen/@types/lib.gecko.nsresult.d.ts | 17 +- src/zen/@types/lib.gecko.services.d.ts | 4 +- src/zen/@types/lib.gecko.tweaks.d.ts | 41 +- src/zen/@types/lib.gecko.win32.d.ts | 6 +- src/zen/@types/lib.gecko.xpcom.d.ts | 736 +- src/zen/@types/lib.gecko.xpidl.d.ts | 3 - src/zen/common/ZenStartup.mjs | 5 +- src/zen/common/ZenUIManager.mjs | 10 +- src/zen/common/moz.build | 7 + src/zen/common/styles/zen-theme.css | 1 + src/zen/common/styles/zen-urlbar.css | 10 +- src/zen/folders/zen-folders.css | 4 +- src/zen/moz.build | 1 + src/zen/tabs/ZenPinnedTabManager.mjs | 161 +- .../folders/browser_folder_multiselected.js | 2 +- .../tests/tabs/browser_drag_drop_vertical.js | 2 +- .../workspaces/browser_double_click_newtab.js | 12 +- src/zen/workspaces/ZenWorkspaces.mjs | 8 +- surfer.json | 2 +- 137 files changed, 16357 insertions(+), 1395 deletions(-) rename src/dom/{html => media/mediaelement}/HTMLMediaElement-cpp.patch (74%) rename src/layout/{base => style}/nsStyleSheetService-h.patch (69%) create mode 100644 src/zen/common/moz.build diff --git a/README.md b/README.md index bdba5a0a4..16ecc63e6 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne ### Firefox Versions - [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `142.0.1`! 🚀 -- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 142.0.1`! +- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 143.0`! ### Contributing diff --git a/build/firefox-cache/l10n-last-commit-hash b/build/firefox-cache/l10n-last-commit-hash index bd5e2ba6b..d233c0aa3 100644 --- a/build/firefox-cache/l10n-last-commit-hash +++ b/build/firefox-cache/l10n-last-commit-hash @@ -1 +1 @@ -df0d5e625b9e55c502d3e9e81b29a0d52d0f8d20 \ No newline at end of file +900c4f612d9432ae34a1a596a271fd2ce343dd18 \ No newline at end of file diff --git a/build/flatpak/app.zen_browser.zen.yml.template b/build/flatpak/app.zen_browser.zen.yml.template index 0a5d6d8b0..5e2b9538d 100644 --- a/build/flatpak/app.zen_browser.zen.yml.template +++ b/build/flatpak/app.zen_browser.zen.yml.template @@ -29,6 +29,7 @@ finish-args: - --system-talk-name=org.freedesktop.NetworkManager - --talk-name=org.a11y.Bus - --talk-name=org.gtk.vfs.* + - --talk-name=org.freedesktop.Notifications - --own-name=org.mpris.MediaPlayer2.firefox.* - --own-name=org.mozilla.zen.* cleanup: diff --git a/package.json b/package.json index 737a39e6e..b19b48c6a 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "test:dbg": "python3 scripts/run_tests.py --jsdebugger --debug-on-failure", "ffprefs": "cd tools/ffprefs && cargo run --bin ffprefs -- ../../", "lc": "surfer license-check", - "lc:fix": "surfer license-check --fix" + "lc:fix": "surfer license-check --fix", + "use-moz-src": "cd engine && ./mach use-moz-src" }, "repository": { "type": "git", diff --git a/prefs/browser.yaml b/prefs/browser.yaml index 08c1a567a..de4ddcf6a 100644 --- a/prefs/browser.yaml +++ b/prefs/browser.yaml @@ -76,3 +76,6 @@ - name: browser.urlbar.scotchBonnet.enableOverride value: false + +- name: browser.tabs.groups.hoverPreview.enabled + value: false diff --git a/prefs/disablemozilla.yaml b/prefs/disablemozilla.yaml index 048b75e18..388be59fa 100644 --- a/prefs/disablemozilla.yaml +++ b/prefs/disablemozilla.yaml @@ -37,3 +37,7 @@ - name: browser.newtabpage.activity-stream.showSponsoredCheckboxes value: false + +- name: sidebar.verticalTabs.dragToPinPromo.dismissed + value: true + locked: true diff --git a/scripts/recalculate-patches.sh b/scripts/recalculate-patches.sh index 6904cc90d..05d10f361 100644 --- a/scripts/recalculate-patches.sh +++ b/scripts/recalculate-patches.sh @@ -10,21 +10,16 @@ IGNORE_FILES=( # Recursively find all .patch files in the current directory and its subdirectories find src -type f -name "*.patch" | while read -r patch_file; do - # Replace all - with . and remove the .patch extension - new_file="${patch_file%/*}/$(basename "$patch_file" | sed 's/-/./' | sed 's/\.patch$//').patch" - new_file="${new_file%.patch}" - new_file="${new_file#src/}" - - if [[ $new_file == *-mjs ]]; then - new_file="${new_file/-mjs/.mjs}" - fi - if [[ $new_file == *-ftl ]]; then - new_file="${new_file/-ftl/.ftl}" + # Get the file from the inside of the file as indicated by the patch + target_file=$(grep -m 1 -oP '(?<=\+\+\+ b/).+' "$patch_file") + if [[ -z "$target_file" ]]; then + echo "No target file found in patch: $patch_file" + continue fi - new_file_base=$(basename "$new_file") + new_file_base=$(basename "$target_file") if [[ ! " ${IGNORE_FILES[@]} " =~ " ${new_file_base} " ]]; then - npm run export ${new_file} + npm run export ${target_file} fi done diff --git a/scripts/update_ts_types.py b/scripts/update_ts_types.py index f5a175628..afc9a4684 100644 --- a/scripts/update_ts_types.py +++ b/scripts/update_ts_types.py @@ -6,6 +6,13 @@ import os FILES = [ "index.d.ts", + "lib.gecko.tweaks.d.ts", + "lib.gecko.xpidl.d.ts", +] + +GENERATED_FILES = [ + "lib.gecko.win32.d.ts", + "lib.gecko.xpcom.d.ts", "lib.gecko.darwin.d.ts", "lib.gecko.dom.d.ts", "lib.gecko.glean.d.ts", @@ -13,21 +20,21 @@ FILES = [ "lib.gecko.modules.d.ts", "lib.gecko.nsresult.d.ts", "lib.gecko.services.d.ts", - "lib.gecko.tweaks.d.ts", - "lib.gecko.win32.d.ts", - "lib.gecko.xpcom.d.ts", - "lib.gecko.xpidl.d.ts", ] ENGINE_PATH = os.path.join("engine", "tools", "@types") +GENERATED_PATH = os.path.join(ENGINE_PATH, "generated") SRC_PATH = os.path.join("src", "zen", "@types") def update_ts_types(): os.system("cd engine && ./mach ts build && ./mach ts update") # copy the files from engine/tools/@types to src/@types - for file in FILES: - src_file = os.path.join(ENGINE_PATH, file) + for file in FILES + GENERATED_FILES: + if file in GENERATED_FILES: + src_file = os.path.join(GENERATED_PATH, file) + else: + src_file = os.path.join(ENGINE_PATH, file) dest_file = os.path.join(SRC_PATH, file) if os.path.exists(src_file): os.system(f"cp {src_file} {dest_file}") diff --git a/src/Cargo-lock.patch b/src/Cargo-lock.patch index 11e71b9db..e33677b06 100644 --- a/src/Cargo-lock.patch +++ b/src/Cargo-lock.patch @@ -1,8 +1,8 @@ diff --git a/Cargo.lock b/Cargo.lock -index fe4eff865884fb79983f636861897648c36491b5..a9516246ffacfd50b7e4198967bebb71b2c73eca 100644 +index 2ac65181b1a9561ee4760e0569dfdd621c684142..b159fd8a351ba7c6541e8994a815de8150db619f 100644 --- a/Cargo.lock +++ b/Cargo.lock -@@ -4067,8 +4067,6 @@ dependencies = [ +@@ -4029,8 +4029,6 @@ dependencies = [ [[package]] name = "mime_guess" version = "2.0.4" diff --git a/src/Cargo-toml.patch b/src/Cargo-toml.patch index 7617d5bae..e4b55038b 100644 --- a/src/Cargo-toml.patch +++ b/src/Cargo-toml.patch @@ -1,5 +1,5 @@ diff --git a/Cargo.toml b/Cargo.toml -index c41cc4f4e68e5b30e1a290e07b2c5061db4400cc..7fa5402b32116922766ee1463b441d3fc86c1eff 100644 +index 0fdad8b956be8119f5a914b9cee01bb6520cd13d..f1414b5afd5c66c61d1585184de6b32f9918670d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -218,6 +218,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" } diff --git a/src/browser/actors/WebRTCParent-sys-mjs.patch b/src/browser/actors/WebRTCParent-sys-mjs.patch index 321d1b520..fed9ceb84 100644 --- a/src/browser/actors/WebRTCParent-sys-mjs.patch +++ b/src/browser/actors/WebRTCParent-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs -index 49ba7724801e699c60fac72d67b3b2d11b6c8c93..5a9f209b3e6b625c6346083ab7eace552a81a3b4 100644 +index f327e1684d0966a0dcfdcdbf8cc70259b27a4504..c8f722bda4cf297f5d0a6aa22dafbe27c4218123 100644 --- a/browser/actors/WebRTCParent.sys.mjs +++ b/browser/actors/WebRTCParent.sys.mjs @@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent { diff --git a/src/browser/app/macbuild/Contents/Info-plist-in.patch b/src/browser/app/macbuild/Contents/Info-plist-in.patch index d683c6419..c6684c4ce 100644 --- a/src/browser/app/macbuild/Contents/Info-plist-in.patch +++ b/src/browser/app/macbuild/Contents/Info-plist-in.patch @@ -1,5 +1,5 @@ diff --git a/browser/app/macbuild/Contents/Info.plist.in b/browser/app/macbuild/Contents/Info.plist.in -index 73b400d58fd25ac13132f1a3fe3ea619e4f4e4f9..ee90ce7ac67bd9aa7bbc2a656843875afb985591 100644 +index ea28831b90662b12bdcb137c35b6bb83626c77e7..d28f4eca976ad9de12b03d995d2363e643224421 100644 --- a/browser/app/macbuild/Contents/Info.plist.in +++ b/browser/app/macbuild/Contents/Info.plist.in @@ -191,7 +191,7 @@ diff --git a/src/browser/base/content/browser-addons-js.patch b/src/browser/base/content/browser-addons-js.patch index b74708a70..318539af9 100644 --- a/src/browser/base/content/browser-addons-js.patch +++ b/src/browser/base/content/browser-addons-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js -index 061edde0e05e0744ba1aa80df5f9699e264fe69b..cc2b2f04758ee9690429ea6c4aad959d858218e8 100644 +index d7542a38a0242dd9c9c6390171d59992d75a0c19..d20e5a9fa42c88c7ba28fac1ef13dd693f1f1135 100644 --- a/browser/base/content/browser-addons.js +++ b/browser/base/content/browser-addons.js -@@ -1057,7 +1057,7 @@ var gXPInstallObserver = { +@@ -1064,7 +1064,7 @@ var gXPInstallObserver = { persistent: true, hideClose: true, popupOptions: { @@ -11,7 +11,7 @@ index 061edde0e05e0744ba1aa80df5f9699e264fe69b..cc2b2f04758ee9690429ea6c4aad959d }, }; -@@ -1266,7 +1266,7 @@ var gXPInstallObserver = { +@@ -1273,7 +1273,7 @@ var gXPInstallObserver = { hideClose: true, timeout: Date.now() + 30000, popupOptions: { @@ -20,7 +20,7 @@ index 061edde0e05e0744ba1aa80df5f9699e264fe69b..cc2b2f04758ee9690429ea6c4aad959d }, }; -@@ -2571,7 +2571,7 @@ var gUnifiedExtensions = { +@@ -2608,7 +2608,7 @@ var gUnifiedExtensions = { this.recordButtonTelemetry(reason || "extensions_panel_showing"); this.ensureButtonShownBeforeAttachingPanel(panel); PanelMultiView.openPopup(panel, this._button, { @@ -29,7 +29,7 @@ index 061edde0e05e0744ba1aa80df5f9699e264fe69b..cc2b2f04758ee9690429ea6c4aad959d triggerEvent: aEvent, }); } -@@ -2758,18 +2758,20 @@ var gUnifiedExtensions = { +@@ -2795,18 +2795,20 @@ var gUnifiedExtensions = { this._maybeMoveWidgetNodeBack(widgetId); } diff --git a/src/browser/base/content/browser-commands-js.patch b/src/browser/base/content/browser-commands-js.patch index 10216d64e..7e98cf714 100644 --- a/src/browser/base/content/browser-commands-js.patch +++ b/src/browser/base/content/browser-commands-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser-commands.js b/browser/base/content/browser-commands.js -index b0b2383453ef771af3eb9260618f1e2e3022eb4e..d631cc8db95b4285e892ac8fcb5e72b7da489850 100644 +index 637e9dda83df5b490d6340367dd63077904ea056..6ffb1dc6ed1d6e58b4e8de1faca887f6b38115cb 100644 --- a/browser/base/content/browser-commands.js +++ b/browser/base/content/browser-commands.js -@@ -318,6 +318,10 @@ var BrowserCommands = { +@@ -317,6 +317,10 @@ var BrowserCommands = { } } @@ -13,7 +13,7 @@ index b0b2383453ef771af3eb9260618f1e2e3022eb4e..d631cc8db95b4285e892ac8fcb5e72b7 // A notification intended to be useful for modular peformance tracking // starting as close as is reasonably possible to the time when the user // expressed the intent to open a new tab. Since there are a lot of -@@ -402,6 +406,11 @@ var BrowserCommands = { +@@ -401,6 +405,11 @@ var BrowserCommands = { return; } @@ -25,7 +25,7 @@ index b0b2383453ef771af3eb9260618f1e2e3022eb4e..d631cc8db95b4285e892ac8fcb5e72b7 // Keyboard shortcuts that would close a tab that is pinned select the first // unpinned tab instead. if ( -@@ -409,8 +418,8 @@ var BrowserCommands = { +@@ -408,8 +417,8 @@ var BrowserCommands = { (event.ctrlKey || event.metaKey || event.altKey) && gBrowser.selectedTab.pinned ) { diff --git a/src/browser/base/content/browser-fullScreenAndPointerLock-js.patch b/src/browser/base/content/browser-fullScreenAndPointerLock-js.patch index ddf7c2095..b71398c94 100644 --- a/src/browser/base/content/browser-fullScreenAndPointerLock-js.patch +++ b/src/browser/base/content/browser-fullScreenAndPointerLock-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser-fullScreenAndPointerLock.js b/browser/base/content/browser-fullScreenAndPointerLock.js -index c61a424d3871d94e7086418c72ce22d5aef0a047..b6e3939b1ce67185acc3b9a66385869bd5490a39 100644 +index d477ac782e0cb921203f8cd38da70a003ac41b39..648d0b4066b630a9b31da0bb8490f29da701dd3d 100644 --- a/browser/base/content/browser-fullScreenAndPointerLock.js +++ b/browser/base/content/browser-fullScreenAndPointerLock.js -@@ -431,10 +431,10 @@ var FullScreen = { +@@ -427,10 +427,10 @@ var FullScreen = { gNavToolbox.classList.toggle("fullscreen-with-menubar", shiftSize > 0); let transform = shiftSize > 0 ? `translateY(${shiftSize}px)` : ""; diff --git a/src/browser/base/content/browser-init-js.patch b/src/browser/base/content/browser-init-js.patch index 69de60ba6..9b3a7c42d 100644 --- a/src/browser/base/content/browser-init-js.patch +++ b/src/browser/base/content/browser-init-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js -index bcbfab4a3781ff3c7349115751b3830976eec4bf..b1b774e0d335ed3c5ca565a45cd624c7ea2718af 100644 +index e4a94863c0f0810d1894475b020814b2ad32ffb3..515f61d2df5d4a593fc32d3f32e8fdec2b8f5983 100644 --- a/browser/base/content/browser-init.js +++ b/browser/base/content/browser-init.js -@@ -186,6 +186,7 @@ var gBrowserInit = { +@@ -191,6 +191,7 @@ var gBrowserInit = { }, onLoad() { @@ -10,7 +10,7 @@ index bcbfab4a3781ff3c7349115751b3830976eec4bf..b1b774e0d335ed3c5ca565a45cd624c7 gBrowser.addEventListener("DOMUpdateBlockedPopups", e => PopupBlockerObserver.handleEvent(e) ); -@@ -344,6 +345,7 @@ var gBrowserInit = { +@@ -359,6 +360,7 @@ var gBrowserInit = { this._handleURIToLoad(); diff --git a/src/browser/base/content/browser-js.patch b/src/browser/base/content/browser-js.patch index 2c8f9416d..afc190969 100644 --- a/src/browser/base/content/browser-js.patch +++ b/src/browser/base/content/browser-js.patch @@ -1,16 +1,16 @@ diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js -index 05f6aec3dac31231e15cb316f6e06d66ee87bea9..3bbbe8553777056798ea9ddce1744a8e48848a37 100644 +index c5b7ef2616c1dab9f42970605897e862d57ab7d0..77f0731db6c4a8d835cf8733115d27ae7782a987 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js -@@ -29,6 +29,7 @@ ChromeUtils.defineESModuleGetters(this, { - ContextualIdentityService: +@@ -31,6 +31,7 @@ ChromeUtils.defineESModuleGetters(this, { "resource://gre/modules/ContextualIdentityService.sys.mjs", - CustomizableUI: "resource:///modules/CustomizableUI.sys.mjs", -+ ZenCustomizableUI: "chrome://browser/content/ZenCustomizableUI.sys.mjs", + CustomizableUI: + "moz-src:///browser/components/customizableui/CustomizableUI.sys.mjs", ++ ZenCustomizableUI: "resource:///modules/ZenCustomizableUI.sys.mjs", DevToolsSocketStatus: "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", -@@ -2287,6 +2288,8 @@ var XULBrowserWindow = { +@@ -2291,6 +2292,8 @@ var XULBrowserWindow = { AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser); TranslationsParent.onLocationChange(gBrowser.selectedBrowser); @@ -19,25 +19,7 @@ index 05f6aec3dac31231e15cb316f6e06d66ee87bea9..3bbbe8553777056798ea9ddce1744a8e PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); if (!gMultiProcessBrowser) { -@@ -4630,7 +4633,7 @@ function switchToTabHavingURI( - ignoreQueryString || replaceQueryString, - ignoreFragmentWhenComparing - ); -- let browsers = aWindow.gBrowser.browsers; -+ let browsers = aWindow.gZenWorkspaces.allUsedBrowsers; - for (let i = 0; i < browsers.length; i++) { - let browser = browsers[i]; - let browserCompare = cleanURL( -@@ -4673,7 +4676,7 @@ function switchToTabHavingURI( - } - - if (!doAdopt) { -- aWindow.gBrowser.tabContainer.selectedIndex = i; -+ aWindow.gZenWorkspaces.switchIfNeeded(browser); - } - - return true; -@@ -5489,6 +5492,9 @@ var ConfirmationHint = { +@@ -5232,6 +5235,9 @@ var ConfirmationHint = { MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl"); MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl"); document.l10n.setAttributes(this._message, messageId, options.l10nArgs); diff --git a/src/browser/base/content/browser-places-js.patch b/src/browser/base/content/browser-places-js.patch index 2f0d03519..e7baf596a 100644 --- a/src/browser/base/content/browser-places-js.patch +++ b/src/browser/base/content/browser-places-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js -index 62b3665394a8256ebedf88a8f10bb6766977cf57..12ac643f913290b20fb7adba8f224f49bb82bf5c 100644 +index 5ba2b6a58776e2b1d70b80e8cb1533cb20caafc6..65736705968732a185e81561b2866bfbe6f3233a 100644 --- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -252,6 +252,8 @@ var StarUI = { diff --git a/src/browser/base/content/browser-sets-inc.patch b/src/browser/base/content/browser-sets-inc.patch index 54f3f1f5d..837f55c92 100644 --- a/src/browser/base/content/browser-sets-inc.patch +++ b/src/browser/base/content/browser-sets-inc.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc -index 269b025d7fb942602c1b1b6c9747540bcde11375..9dcecfe205cadacace5195ec84d8b2ee292a0632 100644 +index 2e7654036647796715aec392f9e714e7256c9864..0b3b76ab479bb6ae5439dd424b69f641d3b86c28 100644 --- a/browser/base/content/browser-sets.inc +++ b/browser/base/content/browser-sets.inc @@ -405,3 +405,4 @@ diff --git a/src/browser/base/content/browser-sets-js.patch b/src/browser/base/content/browser-sets-js.patch index 78d0fb929..b2968174e 100644 --- a/src/browser/base/content/browser-sets-js.patch +++ b/src/browser/base/content/browser-sets-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js -index 61aef2d420a78fb1910f556b71f6db75a16180ed..a3a1e70bedb760c165c338c28de6f2ee924df8de 100644 +index 9cff49a7b86f7697f70c4ef61d3c3561f058dc45..15ac9a8a79e8642b3add2f6df63ed32eb0c8bcb9 100644 --- a/browser/base/content/browser-sets.js +++ b/browser/base/content/browser-sets.js -@@ -250,7 +250,7 @@ document.addEventListener( +@@ -253,7 +253,7 @@ document.addEventListener( } }); diff --git a/src/browser/base/content/browser-siteIdentity-js.patch b/src/browser/base/content/browser-siteIdentity-js.patch index cc5edc8fc..0da25c7ce 100644 --- a/src/browser/base/content/browser-siteIdentity-js.patch +++ b/src/browser/base/content/browser-siteIdentity-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js -index a2a5f6ff71b9a6587e2a033aee39385abd319645..8111c6bcffdcfd51d03cc9dea4aac902d57c83d8 100644 +index 65354e0ad3097e10de72f36e257c94472524baf7..bc9527ec9ddfab11c0839398d3f3953872ad9632 100644 --- a/browser/base/content/browser-siteIdentity.js +++ b/browser/base/content/browser-siteIdentity.js -@@ -825,7 +825,7 @@ var gIdentityHandler = { +@@ -834,7 +834,7 @@ var gIdentityHandler = { // This is a secure internal Firefox page. this._identityBox.className = "chromeUI"; let brandBundle = document.getElementById("bundle_brand"); @@ -11,7 +11,7 @@ index a2a5f6ff71b9a6587e2a033aee39385abd319645..8111c6bcffdcfd51d03cc9dea4aac902 } else if (this._pageExtensionPolicy) { // This is a WebExtension page. this._identityBox.className = "extensionPage"; -@@ -1143,6 +1143,12 @@ var gIdentityHandler = { +@@ -1163,6 +1163,12 @@ var gIdentityHandler = { } } diff --git a/src/browser/base/content/browser-xhtml.patch b/src/browser/base/content/browser-xhtml.patch index 91a5e11a9..7b1a16f57 100644 --- a/src/browser/base/content/browser-xhtml.patch +++ b/src/browser/base/content/browser-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml -index 665b048cf149b9a6d0ccc43f8d9199f077b8ada2..fcff5cc6a4a50ff2d76930e4d2a1e1d0b2e6bc02 100644 +index 7c4c05b72845dfb37c11317d011b8e7c6ba07934..856c368e4d6fe7c7d7ab468423348c844cbf1cdf 100644 --- a/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml @@ -26,6 +26,7 @@ @@ -10,7 +10,7 @@ index 665b048cf149b9a6d0ccc43f8d9199f077b8ada2..fcff5cc6a4a50ff2d76930e4d2a1e1d0 persist="screenX screenY width height sizemode" data-l10n-sync="true"> -@@ -103,8 +104,10 @@ +@@ -105,8 +106,10 @@ @@ -21,7 +21,7 @@ index 665b048cf149b9a6d0ccc43f8d9199f077b8ada2..fcff5cc6a4a50ff2d76930e4d2a1e1d0 # All sets except for popupsets (commands, keys, and stringbundles) -@@ -126,9 +129,11 @@ +@@ -128,9 +131,11 @@ diff --git a/src/browser/base/content/main-popupset-inc-xhtml.patch b/src/browser/base/content/main-popupset-inc-xhtml.patch index 9a3003ff5..c185ae782 100644 --- a/src/browser/base/content/main-popupset-inc-xhtml.patch +++ b/src/browser/base/content/main-popupset-inc-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml -index 198c188e074b7062169764fb7d81c692d3a2bdae..b412a3c1fabdc6470b4ea9e7be34c426cc76aafd 100644 +index fc219ea3dc901fe2ed351161240700113efb8799..f25bdbf886733e2081a4dff55614809056e9885e 100644 --- a/browser/base/content/main-popupset.inc.xhtml +++ b/browser/base/content/main-popupset.inc.xhtml -@@ -201,6 +201,10 @@ +@@ -208,6 +208,10 @@ hidden="true" tabspecific="true" aria-labelledby="editBookmarkPanelTitle"> @@ -13,7 +13,7 @@ index 198c188e074b7062169764fb7d81c692d3a2bdae..b412a3c1fabdc6470b4ea9e7be34c426 -@@ -226,6 +230,7 @@ +@@ -233,6 +237,7 @@ class="footer-button"/> @@ -21,7 +21,7 @@ index 198c188e074b7062169764fb7d81c692d3a2bdae..b412a3c1fabdc6470b4ea9e7be34c426 -@@ -567,6 +572,8 @@ +@@ -613,6 +618,8 @@ #include popup-notifications.inc.xhtml diff --git a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch index 2008a4fab..2297b8efd 100644 --- a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch +++ b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml -index 3484906e59f5da958a3f0c810c7b89cfce643d9a..7434caf4710af872d42ef4703ed8347cd8b07af2 100644 +index 8e56b24b39e9c1607e3ff208d284a9b555a91ebb..2402848ae564234ec22d5a317c43864ea1b36f29 100644 --- a/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml @@ -2,7 +2,7 @@ @@ -11,27 +11,27 @@ index 3484906e59f5da958a3f0c810c7b89cfce643d9a..7434caf4710af872d42ef4703ed8347c