diff --git a/README.md b/README.md index aa0153339..e431ac480 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,12 @@ Zen is currently built using firefox version `128.0.3`! * Checkout the latest [releases notes](https://get-zen.vercel.app/release-notes)! +# Performance + +Zen is built with performance in mind, and we have optimized the browser to be as fast as possible! + +* Checkout the latest [performance benchmarks](./docs/performance.md)! + ## 🚀 Run Locally Clone the project diff --git a/configs/common/mozconfig b/configs/common/mozconfig index b2a02e7f1..bc86e729b 100644 --- a/configs/common/mozconfig +++ b/configs/common/mozconfig @@ -95,3 +95,7 @@ mk_add_options MOZ_SERVICES_HEALTHREPORT=0 mk_add_options MOZ_TELEMETRY_REPORTING=0 export MOZ_APP_UA_NAME="Firefox" + +# Allow loading unsigned extensions +export MOZ_REQUIRE_SIGNING=1 +mk_add_options MOZ_REQUIRE_SIGNING=1 diff --git a/configs/macos/mozconfig b/configs/macos/mozconfig index bcf0ccd23..d343d538d 100644 --- a/configs/macos/mozconfig +++ b/configs/macos/mozconfig @@ -16,10 +16,10 @@ if test "$SURFER_COMPAT" = "true"; then ac_add_options --enable-wasm-avx ac_add_options --enable-optimize="-march=nehalem -mtune=haswell -O3 -w" - export CFLAGS="-O3 -march=x86-64-v3" - export CPPFLAGS="-O3 -march=x86-64-v3" - export CXXFLAGS="-O3 -march=x86-64-v3" - export LDFLAGS="-Wl,-O3 -march=x86-64-v3" + export CFLAGS="-O3 -march=nehalem" + export CPPFLAGS="-O3 -march=nehalem" + export CXXFLAGS="-O3 -march=nehalem" + export LDFLAGS="-Wl,-O3 -march=nehalem" export RUSTFLAGS="-Ctarget-cpu=nehalem -C codegen-units=1" else ac_add_options --target=aarch64-apple-darwin diff --git a/configs/windows/mozconfig b/configs/windows/mozconfig index 0b6252017..dfaff1bcb 100644 --- a/configs/windows/mozconfig +++ b/configs/windows/mozconfig @@ -34,7 +34,6 @@ ac_add_options --disable-bits-download ac_add_options --without-wasm-sandboxed-libraries -ac_add_options --enable-wasm-avx if test "$SURFER_COMPAT" = "true"; then ac_add_options --enable-optimize="-O3 -mavx -maes -w -ftree-vectorize" diff --git a/Performance.md b/docs/performance.md similarity index 97% rename from Performance.md rename to docs/performance.md index b4e78fcb0..30fb7d004 100644 --- a/Performance.md +++ b/docs/performance.md @@ -29,7 +29,7 @@ ## Scores ## 1 -- [NOCanoa ](https://github.com/NOCanoa) +- [NOCanoa](https://github.com/NOCanoa) OS: win 11; CPU: i5 13600k @@ -67,6 +67,7 @@ https://browserbench.org/Speedometer3.0/ | | score: | |-----------|-----| +| 1.0.0-a.11 | 20.8 | | 1.0.0-a.10 | 21.2 | | others| - | | Vivaldi 6.7.3329.39| 27.8 | diff --git a/docs/requirements.md b/docs/requirements.md new file mode 100644 index 000000000..b4b43f239 --- /dev/null +++ b/docs/requirements.md @@ -0,0 +1,31 @@ + +# Supported CPUs for optimized builds (Windows and Linux) + +> If you CPU is not listed, you should use the "Generic" build. + +* AMD Family 15h (Excavator) +* AMD Family 17h (Zen) +* AMD Family 17h (Zen+) +* AMD Family 17h (Zen 2) +* AMD Family 19h (Zen 3) +* Intel 4th Gen Core (Haswell) +* Intel 5th Gen Core (Broadwell) +* Intel 6th Gen Core (Skylake) +* Intel 7th Gen Core (Kaby Lake) +* Intel 8/9th Gen Core (Coffee Lake) +* Intel 10th Gen Core (Comet Lake) +* Intel 12th Gen (Alder Lake) +* Intel 13th Gen (Raptor Lake) +* Intel 14th Gen (Raptor Lake Refresh) +* Intel 15th Gen (Lunar / Arrow Lake) +* AMD Family 19h (Zen 4 / Zen 4c) +* AMD Family 1Ah (Zen 5 / Zen 5c) +* Intel 6th Gen Core (Skylake X) +* Intel 8th Gen Core i3 (Cannon Lake) +* Intel Xeon / 10th Gen Core (Ice Lake) +* Intel Xeon (Cascade Lake) +* Intel Xeon (Cooper Lake) +* Intel 3rd Gen 10nm++ (Tiger Lake) +* Intel 4th Gen 10nm++ (Sapphire Rapids) +* Intel 5th Gen 10nm++ (Emerald Rapids) +* Intel 11th Gen (Rocket Lake) diff --git a/package.json b/package.json index a2ac6bfc8..903e4c97d 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,6 @@ }, "homepage": "https://github.com/zen-browser/core#readme", "dependencies": { - "@zen-browser/surfer": "^1.2.5" + "@zen-browser/surfer": "^1.2.7" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2cfe98e9b..15dd63d35 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@zen-browser/surfer': - specifier: ^1.2.5 - version: 1.2.5 + specifier: ^1.2.7 + version: 1.2.7 packages: @@ -109,8 +109,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@zen-browser/surfer@1.2.5': - resolution: {integrity: sha512-EX39ay0wkCiifoAzxfoLZgAVXZawWDNDJuSqefvVq9kG82tbSSdgzhQSRjAOF0ZmaZegjyu0ID5+KroMtz3fLA==} + '@zen-browser/surfer@1.2.7': + resolution: {integrity: sha512-VbbbB7crGXrdfk1PPnlsWFWErwjtccXbRuw5mOQzY327d2t5VraxmkqTzcuGSTxpu3CR/KvzNu0gDg/6+7b4NQ==} hasBin: true ansi-regex@5.0.1: @@ -786,7 +786,7 @@ snapshots: '@types/node@17.0.45': {} - '@zen-browser/surfer@1.2.5': + '@zen-browser/surfer@1.2.7': dependencies: '@resvg/resvg-js': 1.4.0 async-icns: 1.0.2 diff --git a/src/browser/app/profile/better-fox.js b/src/browser/app/profile/better-fox.js index 5e83c26e6..38100cc5a 100644 --- a/src/browser/app/profile/better-fox.js +++ b/src/browser/app/profile/better-fox.js @@ -100,24 +100,6 @@ pref("security.insecure_connection_text.enabled", true); pref("security.insecure_connection_text.pbmode.enabled", true); pref("network.IDN_show_punycode", true); -/** HTTPS-FIRST POLICY ***/ -pref("dom.security.https_first", true); -pref("dom.security.https_first_schemeless", true); - -/** PASSWORDS ***/ -pref("signon.formlessCapture.enabled", false); -pref("signon.privateBrowsingCapture.enabled", false); -pref("network.auth.subresource-http-auth-allow", 1); -pref("editor.truncate_user_pastes", false); - -/** MIXED CONTENT + CROSS-SITE ***/ -pref("security.mixed_content.block_display_content", true); -pref("pdfjs.enableScripting", false); -pref("extensions.postDownloadThirdPartyPrompt", false); - -/** HEADERS / REFERERS ***/ -pref("network.http.referer.XOriginTrimmingPolicy", 2); - /** CONTAINERS ***/ pref("privacy.userContext.ui.enabled", true); @@ -193,10 +175,6 @@ pref("browser.display.focus_ring_width", 0); pref("layout.css.prefers-color-scheme.content-override", 2); pref("browser.privateWindowSeparation.enabled", false); // WINDOWS -/** COOKIE BANNER HANDLING ***/ -pref("cookiebanners.service.mode", 1); -pref("cookiebanners.service.mode.privateBrowsing", 1); - /** FULLSCREEN NOTICE ***/ pref("full-screen-api.transition-duration.enter", "0 0"); pref("full-screen-api.transition-duration.leave", "0 0"); diff --git a/src/browser/app/profile/zen-browser.js b/src/browser/app/profile/zen-browser.js index b52c4f155..b5e7e0bca 100644 --- a/src/browser/app/profile/zen-browser.js +++ b/src/browser/app/profile/zen-browser.js @@ -77,7 +77,7 @@ pref('zen.view.sidebar-expanded.max-width', 400); // Zen Sidebar pref('zen.sidebar.data', "{\"data\":\n {\"p1\":{\n \"url\":\"https://www.wikipedia.org/\"\n },\n\"p2\":{\n \"url\":\"https://m.twitter.com/\",\n\"ua\": true\n },\n\"p3\": {\n \"url\": \"https://www.youtube.com/\",\n\"ua\": true\n},\n\"p4\": {\n \"url\": \"https://translate.google.com/\",\n\"ua\": true\n},\n\"p5\": {\n \"url\": \"https://todoist.com/\",\n\"ua\": true\n}},\n\"index\":[\"p1\",\"p2\",\"p3\",\"p4\",\"p5\"]}"); pref('zen.sidebar.enabled', true); -pref('zen.sidebar.floating', true); +pref('zen.sidebar.close-on-blur', true); // Zen Split View pref('zen.splitView.working', false); @@ -89,8 +89,8 @@ pref('zen.workspaces.enabled', true); pref('zen.watermark.enabled', true); // Smooth scrolling -user_pref('apz.overscroll.enabled', true); // not DEFAULT on Linux -user_pref('general.smoothScroll', true); // DEFAULT +pref('apz.overscroll.enabled', true); // not DEFAULT on Linux +pref('general.smoothScroll', true); // DEFAULT // Privacy pref('dom.private-attribution.submission.enabled', false); @@ -108,4 +108,8 @@ pref('browser.migrate.vivaldi.enabled', true); pref('browser.migrate.opera-gx.enabled', true); pref('browser.migrate.opera.enabled', true); +// DNS +// pref('network.proxy.type', 0); +// pref('network.trr.mode', 5); + #include better-fox.js \ No newline at end of file diff --git a/src/browser/base/content/ZenSidebarManager.mjs b/src/browser/base/content/ZenSidebarManager.mjs index f440fccea..b7b3a3171 100644 --- a/src/browser/base/content/ZenSidebarManager.mjs +++ b/src/browser/base/content/ZenSidebarManager.mjs @@ -31,10 +31,13 @@ var gZenBrowserManagerSidebar = { return JSON.parse(services); }, + get shouldCloseOnBlur() { + return Services.prefs.getBoolPref("zen.sidebar.close-on-blur"); + }, + listenForPrefChanges() { Services.prefs.addObserver("zen.sidebar.data", this.handleEvent.bind(this)); Services.prefs.addObserver("zen.sidebar.enabled", this.handleEvent.bind(this)); - Services.prefs.addObserver("zen.sidebar.floating", this.handleEvent.bind(this)); let sidebar = document.getElementById("zen-sidebar-web-panel"); this.splitterElement.addEventListener("mousedown", (function(event) { @@ -102,6 +105,10 @@ var gZenBrowserManagerSidebar = { this.handleEvent(); }, + get isFloating() { + return document.getElementById("zen-sidebar-web-panel").hasAttribute("pinned"); + }, + handleEvent() { this._hasChangedConfig = true; this.update(); @@ -109,10 +116,11 @@ var gZenBrowserManagerSidebar = { // https://stackoverflow.com/questions/11565471/removing-event-listener-which-was-added-with-bind var clickOutsideHandler = this._handleClickOutside.bind(this); - if (Services.prefs.getBoolPref("zen.sidebar.floating") && !this._hasRegisteredPinnedClickOutside) { + let isFloating = this.isFloating; + if (isFloating && !this._hasRegisteredPinnedClickOutside) { document.addEventListener("mouseup", clickOutsideHandler); this._hasRegisteredPinnedClickOutside = true; - } else if (!Services.prefs.getBoolPref("zen.sidebar.floating") && this._hasRegisteredPinnedClickOutside) { + } else if (!isFloating && this._hasRegisteredPinnedClickOutside) { document.removeEventListener("mouseup", clickOutsideHandler); this._hasRegisteredPinnedClickOutside = false; } @@ -129,7 +137,7 @@ var gZenBrowserManagerSidebar = { _handleClickOutside(event) { let sidebar = document.getElementById("zen-sidebar-web-panel"); - if (!sidebar.hasAttribute("pinned") || !this._currentPanel || this._isDragging) { + if (!sidebar.hasAttribute("pinned") || this._isDragging || !this.shouldCloseOnBlur) { return; } let target = event.target; @@ -420,7 +428,6 @@ var gZenBrowserManagerSidebar = { } else { this._setPinnedToElements(); } - Services.prefs.setBoolPref("zen.sidebar.floating", sidebar.hasAttribute("pinned")); this.update(); }, @@ -511,9 +518,9 @@ var gZenBrowserManagerSidebar = { if (browser) { browser.remove(); } - this._closeSidebarPanel(); - this.close(); + this._currentPanel = null; this._lastOpenedPanel = null; + this.update(); Services.prefs.setStringPref("zen.sidebar.data", JSON.stringify(data)); }, diff --git a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch index 84b9ade53..2b06133ca 100644 --- a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch +++ b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch @@ -1,7 +1,16 @@ diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml -index 390a1300a1213af2b411ba09c67e3c25750ee6c3..7c80c54dd43b5414bf5ea9101d53431c0b4a140b 100644 +index 390a1300a1213af2b411ba09c67e3c25750ee6c3..253d7abfcc1ade419c8f70289719cdc53898cab4 100644 --- a/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml +@@ -2,7 +2,7 @@ + # 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/. + +- ++ + + + @@ -32,10 +32,11 @@ diff --git a/src/browser/base/content/zen-sidebar-panel.inc.xhtml b/src/browser/base/content/zen-sidebar-panel.inc.xhtml index 1e718452b..46f78d69f 100644 --- a/src/browser/base/content/zen-sidebar-panel.inc.xhtml +++ b/src/browser/base/content/zen-sidebar-panel.inc.xhtml @@ -1,5 +1,5 @@ -