diff --git a/.github/workflows/macos-universal-release-build.yml b/.github/workflows/macos-universal-release-build.yml index b4fea39a0..762a92a6d 100644 --- a/.github/workflows/macos-universal-release-build.yml +++ b/.github/workflows/macos-universal-release-build.yml @@ -60,7 +60,7 @@ jobs: brew install watchman - cargo install apple-codesign + cargo install apple-codesign --locked --force - name: Force usage of gnu-tar run: | diff --git a/.github/workflows/src/release-build.sh b/.github/workflows/src/release-build.sh index fbccedce2..d3e9720e6 100644 --- a/.github/workflows/src/release-build.sh +++ b/.github/workflows/src/release-build.sh @@ -8,10 +8,28 @@ if command -v apt-get &> /dev/null; then sudo apt-get install -y xvfb libnvidia-egl-wayland1 mesa-utils libgl1-mesa-dri fi +if ! test "$ZEN_CROSS_COMPILING" && test "$(uname -s)" = "Linux"; then + if test -d "$HOME/.mozbuild/clang/bin"; then + export CC="$HOME/.mozbuild/clang/bin/clang" + export CXX="$HOME/.mozbuild/clang/bin/clang++" + else + export CC=clang + export CXX=clang++ + fi +fi + mkdir -p ~/.zen-keys -echo "$ZEN_SAFEBROWSING_API_KEY" > ~/.zen-keys/safebrowsing.dat -echo "$ZEN_MOZILLA_API_KEY" > ~/.zen-keys/mozilla.dat -echo "$ZEN_GOOGLE_LOCATION_SERVICE_API_KEY" > ~/.zen-keys/google_location_service.dat +if test "$ZEN_SAFEBROWSING_API_KEY"; then + echo "$ZEN_SAFEBROWSING_API_KEY" > ~/.zen-keys/safebrowsing.dat +fi + +if test "$ZEN_MOZILLA_API_KEY"; then + echo "$ZEN_MOZILLA_API_KEY" > ~/.zen-keys/mozilla.dat +fi + +if test "$ZEN_GOOGLE_LOCATION_SERVICE_API_KEY"; then + echo "$ZEN_GOOGLE_LOCATION_SERVICE_API_KEY" > ~/.zen-keys/google_location_service.dat +fi . $HOME/.cargo/env diff --git a/.github/workflows/windows-release-build.yml b/.github/workflows/windows-release-build.yml index 8bbfbebef..2f385cd30 100644 --- a/.github/workflows/windows-release-build.yml +++ b/.github/workflows/windows-release-build.yml @@ -234,7 +234,8 @@ jobs: ZEN_RELEASE_BRANCH: ${{ inputs.release-branch }} ZEN_SAFEBROWSING_API_KEY: ${{ secrets.ZEN_SAFEBROWSING_API_KEY }} ZEN_MOZILLA_API_KEY: ${{ secrets.ZEN_MOZILLA_API_KEY }} - ZEN_GOOGLE_LOCATION_SERVICE_API_KEY: ${{ secrets.ZEN_GOOGLE_LOCATION_SERVICE_API_KEY }} + # Firefox doesn't support location service for Windows + # ZEN_GOOGLE_LOCATION_SERVICE_API_KEY: ${{ secrets.ZEN_GOOGLE_LOCATION_SERVICE_API_KEY }} run: | set -x dos2unix configs/windows/mozconfig diff --git a/README.md b/README.md index f2655b75a..37cc122a9 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,8 @@ 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 `151.0.3`! 🚀 -- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 151.0.3`! +- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `152.0.1`! 🚀 +- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 152.0.1`! ### Contributing diff --git a/build/firefox-cache/l10n-last-commit-hash b/build/firefox-cache/l10n-last-commit-hash index dce1749c7..3ee1d9289 100644 --- a/build/firefox-cache/l10n-last-commit-hash +++ b/build/firefox-cache/l10n-last-commit-hash @@ -1 +1 @@ -5c4d14a559bf26eb4ab3e136d2084310ebe51ac0 \ No newline at end of file +2960f4c1ce58d289d3b9ec885695f0017d2636ab \ No newline at end of file diff --git a/configs/linux/mozconfig b/configs/linux/mozconfig index 9816e7580..c959a8eec 100644 --- a/configs/linux/mozconfig +++ b/configs/linux/mozconfig @@ -2,15 +2,6 @@ # 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/. -# Setting the compiler based on the existence of clang bin directory -if test -d "$HOME/.mozbuild/clang/bin"; then - export CC="$HOME/.mozbuild/clang/bin/clang" - export CXX="$HOME/.mozbuild/clang/bin/clang++" -else - export CC=clang - export CXX=clang++ -fi - if test "$ZEN_RELEASE"; then if test "$SURFER_COMPAT" = "x86_64"; then ac_add_options --target=x86_64-pc-linux diff --git a/crowdin.yml b/crowdin.yml index 469c8a1cd..964f52d44 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -22,3 +22,5 @@ files: translation: browser/browser/zen-folders.ftl - source: en-US/browser/browser/zen-boosts.ftl translation: browser/browser/zen-boosts.ftl + - source: en-US/browser/browser/zen-space-routing.ftl + translation: browser/browser/zen-space-routing.ftl diff --git a/locales/en-US/browser/browser/zen-space-routing.ftl b/locales/en-US/browser/browser/zen-space-routing.ftl new file mode 100644 index 000000000..a960e8895 --- /dev/null +++ b/locales/en-US/browser/browser/zen-space-routing.ftl @@ -0,0 +1,27 @@ +# 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/. + +zen-space-routing-settings = + .label = Space Routing Settings +zen-space-routing-rulepanel-placeholder = Routes let you choose where specific sites open inside Zen. For example, you can route YouTube links to always open inside your Personal space. +zen-space-routing-dialog-title = Space Routing Settings +zen-space-routing-external-default = Default route for external links +zen-space-routing-new-route = New Route +zen-space-routing-open-in-space = Open in Space +zen-space-routing-most-recent-space = Most recent Space +zen-space-routing-close-button = + .aria-label = Close + .tooltiptext = Close + +zen-space-routing-contains = + .label = Contains +zen-space-routing-equal-to = + .label = Is Equal To +zen-space-routing-regex = + .label = RegEx + +zen-space-routing-open-in = Open In +zen-space-routing-url = URL + +zen-space-routing-tab-routed-toast = New tab opened in { $targetWorkspace } diff --git a/package-lock.json b/package-lock.json index c0703a8f6..1224e4955 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,14 +19,6 @@ "typescript": "^5.9.3" } }, - "engine/tools/lint/eslint/eslint-plugin-spidermonkey-js": { - "extraneous": true, - "license": "MPL-2.0", - "devDependencies": {}, - "engines": { - "node": ">=6.9.1" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -1923,17 +1915,17 @@ } }, "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -2169,9 +2161,9 @@ "license": "ISC" }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "dev": true, "license": "MIT", "dependencies": { @@ -2390,10 +2382,20 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -4223,14 +4225,6 @@ "engines": { "node": ">=0.8" } - }, - "tools/eslint-plugin-spidermonkey-js": { - "extraneous": true, - "license": "MPL-2.0", - "devDependencies": {}, - "engines": { - "node": ">=6.9.1" - } } } } diff --git a/prefs/firefox/browser.yaml b/prefs/firefox/browser.yaml index 040359bac..29eea1ac5 100644 --- a/prefs/firefox/browser.yaml +++ b/prefs/firefox/browser.yaml @@ -97,3 +97,8 @@ - name: layout.css.corner-shape.enabled value: true + +# Disabled from https://searchfox.org/firefox-main/rev/d6bfff43852356ca98af848b4705d37f8d41856f/modules/libpref/init/StaticPrefList.yaml#2008 +# Only enabled for windows, doesn't really fit inside Zen. +- name: browser.startup.preXulSkeletonUI + value: false diff --git a/prefs/zen/windows.yaml b/prefs/zen/windows.yaml index effae25bb..0ed3660dd 100644 --- a/prefs/zen/windows.yaml +++ b/prefs/zen/windows.yaml @@ -7,10 +7,6 @@ value: true condition: "defined(XP_WIN)" -- name: widget.windows.mica.popups - value: true - condition: "defined(XP_WIN)" - # 1 = DWMSBT_MAINWINDOW # 2 = DWMSBT_TRANSIENTWINDOW (default, also used for popups) # 3 = DWMSBT_TABBEDWINDOW diff --git a/src/-prettierignore.patch b/src/-prettierignore.patch index d844969ee..ed444531d 100644 --- a/src/-prettierignore.patch +++ b/src/-prettierignore.patch @@ -1,8 +1,8 @@ diff --git a/.prettierignore b/.prettierignore -index de2efe413e5696a3b8d0467a3a9e668dfadd8a1a..01c76d8e639d5630fca9cccb55d415fc4e903e91 100644 +index 949896ff064ae0b54b6a657ea074bc88e12820f7..5249f420972667bece4d85fe8d35073afaebeb8a 100644 --- a/.prettierignore +++ b/.prettierignore -@@ -1805,3 +1805,12 @@ tools/ts/test/baselines/ +@@ -1803,3 +1803,12 @@ tools/ts/test/baselines/ try_task_config.json xpcom/idl-parser/xpidl/fixtures/xpctest.d.json **/package-lock.json diff --git a/src/browser/actors/EncryptedMediaParent-sys-mjs.patch b/src/browser/actors/EncryptedMediaParent-sys-mjs.patch index 74f9f5d19..36ac8cdeb 100644 --- a/src/browser/actors/EncryptedMediaParent-sys-mjs.patch +++ b/src/browser/actors/EncryptedMediaParent-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/actors/EncryptedMediaParent.sys.mjs b/browser/actors/EncryptedMediaParent.sys.mjs -index 492dce93d3cc7c6ec16db047c9e47b175ef3a0fe..757e5543e0e6900c414db6d7a96d511608c1e50a 100644 +index 8bdeba9b8803354e23a3881147fee6a6af94a63b..61c8407df1fbebcc36481ad2169a9c103b4faed5 100644 --- a/browser/actors/EncryptedMediaParent.sys.mjs +++ b/browser/actors/EncryptedMediaParent.sys.mjs @@ -199,6 +199,7 @@ export class EncryptedMediaParent extends JSWindowActorParent { diff --git a/src/browser/actors/WebRTCParent-sys-mjs.patch b/src/browser/actors/WebRTCParent-sys-mjs.patch index 46e7f96b7..08d42ab63 100644 --- a/src/browser/actors/WebRTCParent-sys-mjs.patch +++ b/src/browser/actors/WebRTCParent-sys-mjs.patch @@ -1,12 +1,12 @@ diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs -index b743bd83529c4cd01a6bc820967186dbe41b6144..e24c48bac0f4ae3d4b26087b7e0cac7910019d0e 100644 +index 98b10b1d789c20b3463de4f703af102f6908318b..29534480fbeda6d66cb9dab81afdaed8d8a5c565 100644 --- a/browser/actors/WebRTCParent.sys.mjs +++ b/browser/actors/WebRTCParent.sys.mjs @@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent { - let tabbrowser = browser.ownerGlobal.gBrowser; + let tabbrowser = browser.documentGlobal.gBrowser; if (tabbrowser) { -+ browser.ownerGlobal.gZenMediaController.updateMediaSharing(state); ++ browser.documentGlobal.gZenMediaController.updateMediaSharing(state); tabbrowser.updateBrowserSharing(browser, { webRTC: state, }); diff --git a/src/browser/base/content/aboutDialog-xhtml.patch b/src/browser/base/content/aboutDialog-xhtml.patch index 1145f64d5..333a28ed3 100644 --- a/src/browser/base/content/aboutDialog-xhtml.patch +++ b/src/browser/base/content/aboutDialog-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml -index c64980810570fcea84e33fdc2d66ac42a79f4e46..aa629ebb38a9aa74048fe3fc759f716fad57d6f3 100644 +index 3ffd464b960a4299a7dd0cd87e4fc2f781b9d593..ef9f42d1f0196902b4af31f4496891fcd6319831 100644 --- a/browser/base/content/aboutDialog.xhtml +++ b/browser/base/content/aboutDialog.xhtml @@ -102,10 +102,6 @@ diff --git a/src/browser/base/content/browser-addons-js.patch b/src/browser/base/content/browser-addons-js.patch index 8ab878b64..92d2ed624 100644 --- a/src/browser/base/content/browser-addons-js.patch +++ b/src/browser/base/content/browser-addons-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js -index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05f45bce08 100644 +index 56acad9b7c21c07842f901d24525a97a0ba20217..829054218dc6fbb14fe034546e8da62b12516eae 100644 --- a/browser/base/content/browser-addons.js +++ b/browser/base/content/browser-addons.js @@ -1060,7 +1060,7 @@ var gXPInstallObserver = { @@ -20,7 +20,7 @@ index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05 }, }; -@@ -2209,7 +2209,7 @@ var gUnifiedExtensions = { +@@ -2214,7 +2214,7 @@ var gUnifiedExtensions = { // If the new ID is not added in NOTIFICATION_IDS, consider handling the case // in the "PopupNotificationsBeforeAnchor" handler elsewhere in this file. getPopupAnchorID(aBrowser, aWindow) { @@ -29,7 +29,7 @@ index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05 const attr = anchorID + "popupnotificationanchor"; if (!aBrowser[attr]) { -@@ -2220,7 +2220,7 @@ var gUnifiedExtensions = { +@@ -2225,7 +2225,7 @@ var gUnifiedExtensions = { anchorID // Anchor on the toolbar icon to position the popup right below the // button. @@ -38,7 +38,7 @@ index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05 } return anchorID; -@@ -2545,7 +2545,7 @@ var gUnifiedExtensions = { +@@ -2550,7 +2550,7 @@ var gUnifiedExtensions = { requestAnimationFrame(() => this.updateAttention()); }, @@ -47,7 +47,7 @@ index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05 // A list of extension widget IDs (possibly empty). let widgetIDs; -@@ -2559,7 +2559,7 @@ var gUnifiedExtensions = { +@@ -2564,7 +2564,7 @@ var gUnifiedExtensions = { } // The list of overflowed extensions in the extensions panel. @@ -56,7 +56,7 @@ index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05 "#overflowed-extensions-list" ); -@@ -2660,37 +2660,41 @@ var gUnifiedExtensions = { +@@ -2665,37 +2665,41 @@ var gUnifiedExtensions = { ); template.replaceWith(template.content); this._panel = document.getElementById("unified-extensions-panel"); @@ -123,7 +123,7 @@ index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05 if (!CustomizationHandler.isCustomizing()) { if (aEvent) { if ( -@@ -2712,6 +2716,7 @@ var gUnifiedExtensions = { +@@ -2717,6 +2721,7 @@ var gUnifiedExtensions = { // and no alternative content is available for display in the panel. const policies = this.getActivePolicies(); if ( @@ -131,7 +131,7 @@ index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05 policies.length && !this.hasExtensionsInPanel(policies) && !this.isPrivateWindowMissingExtensionsWithoutPBMAccess() && -@@ -2727,32 +2732,30 @@ var gUnifiedExtensions = { +@@ -2732,32 +2737,30 @@ var gUnifiedExtensions = { this.blocklistAttentionInfo = await AddonManager.getBlocklistAttentionInfo(); @@ -170,7 +170,7 @@ index 853d3c9dd9dd806d49a3c5a44304dd7370f0c90e..ea927b05213981fbfa5494d8d22bce05 triggerEvent: aEvent, }); } -@@ -2947,18 +2950,20 @@ var gUnifiedExtensions = { +@@ -2952,18 +2955,20 @@ var gUnifiedExtensions = { this._maybeMoveWidgetNodeBack(widgetId); } diff --git a/src/browser/base/content/browser-box-inc-xhtml.patch b/src/browser/base/content/browser-box-inc-xhtml.patch index 6f5f7ee91..e807e8553 100644 --- a/src/browser/base/content/browser-box-inc-xhtml.patch +++ b/src/browser/base/content/browser-box-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml -index d58fcdf99843d110b708f3fbf9fb317787fadfcf..cfc2aad902641609c3804e615c4cb66ce65299b7 100644 +index 31cd4f927c273573b38021f84417101c57377902..f293e1c61d3b7a80b7dc472d927893f0439d6af9 100644 --- a/browser/base/content/browser-box.inc.xhtml +++ b/browser/base/content/browser-box.inc.xhtml @@ -3,12 +3,22 @@ @@ -10,7 +10,7 @@ index d58fcdf99843d110b708f3fbf9fb317787fadfcf..cfc2aad902641609c3804e615c4cb66c + + + - + + -