This commit is contained in:
NOCanoa
2024-08-04 16:52:14 +01:00
23 changed files with 135 additions and 98 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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 |

31
docs/requirements.md Normal file
View File

@@ -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)

View File

@@ -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"
}
}

10
pnpm-lock.yaml generated
View File

@@ -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

View File

@@ -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");

View File

@@ -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

View File

@@ -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));
},

View File

@@ -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/.
-<toolbox id="navigator-toolbox">
+<toolbox id="navigator-toolbox" persist="width style">
<vbox id="titlebar">
<!-- Menu -->
@@ -32,10 +32,11 @@
<hbox class="titlebar-spacer" type="pre-tabs"/>

View File

@@ -1,5 +1,5 @@
<box id="zen-sidebar-web-panel-wrapper">
<box id="zen-sidebar-web-panel" class="chromeclass-extrachrome" hidden="true">
<box id="zen-sidebar-web-panel" class="chromeclass-extrachrome" hidden="true" persist="pinned style hidden">
<toolbar mode="icons" flex="1" id="zen-sidebar-web-header">
<hbox>
<toolbarbutton id="zen-sidebar-web-panel-back" class="toolbarbutton-1 chromeclass-toolbar-additional" oncommand="gZenBrowserManagerSidebar.back();"/>

View File

@@ -106,8 +106,7 @@ var ZenThemeModifier = {
console.log("ZenThemeModifier: init browser layout");
const kNavbarItems = [
"nav-bar",
"PersonalToolbar",
"tab-notification-deck-template"
"PersonalToolbar"
];
const kSeparatorId = "zen-website-and-native-separator";
const kNewContainerId = "zen-appcontent-navbar-container";

View File

@@ -1,25 +1,7 @@
diff --git a/browser/components/customizableui/CustomizeMode.sys.mjs b/browser/components/customizableui/CustomizeMode.sys.mjs
index 7b4ee373be2cb3e11b480b2c0ad59cae1c43fc07..0f89293bc568fa994fc6f251478ec3dfac5ead39 100644
index 41f347130e754ad0ee3416c1a3881211c4d2f777..e7b84b3b89fb4030ac05361475c0786e4208d5b8 100644
--- a/browser/components/customizableui/CustomizeMode.sys.mjs
+++ b/browser/components/customizableui/CustomizeMode.sys.mjs
@@ -354,7 +354,7 @@ CustomizeMode.prototype = {
this._transitioning = true;
let customizer = document.getElementById("customization-container");
- let browser = document.getElementById("browser");
+ let browser = document.getElementById("tabbrowser-tabbox");
browser.hidden = true;
customizer.hidden = false;
@@ -485,7 +485,7 @@ CustomizeMode.prototype = {
}
let customizer = document.getElementById("customization-container");
- let browser = document.getElementById("browser");
+ let browser = document.getElementById("tabbrowser-tabbox");
customizer.hidden = true;
browser.hidden = false;
@@ -2276,6 +2276,20 @@ CustomizeMode.prototype = {
if (makeSpaceImmediately) {
aItem.setAttribute("notransition", "true");

View File

@@ -64,6 +64,11 @@ Preferences.addAll([
type: "bool",
default: true,
},
{
id: "zen.sidebar.close-on-blur",
type: "bool",
default: true,
},
{
id: "zen.view.compact",
type: "bool",

View File

@@ -45,6 +45,11 @@
<checkbox id="zenLooksAndFeelUseThemedToolbar"
data-l10n-id="zen-side-panels-enabled"
preference="zen.sidebar.enabled"/>
<hbox class="indent">
<checkbox id="zenLooksAndFeelSidebarCloseOnBlur"
data-l10n-id="zen-side-panels-close-on-blur"
preference="zen.sidebar.close-on-blur"/>
</hbox>
</groupbox>
<hbox id="zenVerticalTabsCategory"

View File

@@ -341,5 +341,5 @@ input[type='checkbox'] {
#searchList .card {
width: -moz-available !important;
margin: 20px;
padding: 80px 0 !important;
padding: 20% 0 !important;
}

View File

@@ -15,6 +15,8 @@ zen-side-panels-description = Increase productivity by having multiple views at
zen-side-panels-enabled =
.label = Enable Web Side Panels
zen-side-panels-close-on-blur =
.label = Close the panel when it loses focus if it's not pinned
zen-look-and-feel-compact-view-header = Show in compact view
zen-look-and-feel-compact-view-description = Only show the toolbars you use!

View File

@@ -19,7 +19,7 @@ welcome-dialog-theme-header-2 = Choose your theme
welcome-dialog-search = 🔍 Choose a search engine
welcome-dialog-search-subtext = Select your preferred search engine to tailor your browsing experience!
welcome-dialog-thanks = Thanks You So Much! ❤️
welcome-dialog-thanks = Thank You So Much! ❤️
welcome-dialog-thanks-subtext = Your appreciation means the world to us!
welcome-dialog-back-action = Back

View File

@@ -1,7 +1,16 @@
diff --git a/browser/themes/shared/customizableui/panelUI-shared.css b/browser/themes/shared/customizableui/panelUI-shared.css
index e4409ac75f6ee794d400559b0b01ae30904d01bc..44d4e648aa5aac17b82e0e1f80c7a953c2923ebc 100644
index e4409ac75f6ee794d400559b0b01ae30904d01bc..4c10051d6bbc77440195b08397743c03a11d1fb0 100644
--- a/browser/themes/shared/customizableui/panelUI-shared.css
+++ b/browser/themes/shared/customizableui/panelUI-shared.css
@@ -16,7 +16,7 @@
--menu-panel-width-wide: 29em;
--arrowpanel-menuitem-margin-block: 0;
- --arrowpanel-menuitem-margin-inline: 8px;
+ --arrowpanel-menuitem-margin-inline: 4px;
--arrowpanel-menuitem-margin: var(--arrowpanel-menuitem-margin-block) var(--arrowpanel-menuitem-margin-inline);
--arrowpanel-menuitem-padding-block: 8px;
--arrowpanel-menuitem-padding-inline: 8px;
@@ -720,15 +720,15 @@ toolbarbutton[constrain-size="true"][cui-areatype="panel"] > .toolbarbutton-badg
/* Firefox Account Toolbar Panel */

View File

@@ -414,6 +414,11 @@ toolbarbutton#scrollbutton-up {
display: none;
}
#nav-bar > *:not(.titlebar-buttonbox-container) {
padding-top: 5px;
padding-bottom: 5px;
}
#TabsToolbar-customization-target {
height: 100%;
}
@@ -518,11 +523,6 @@ panelmultiview {
clip-path: inset(0px 0px 0px round var(--zen-browser-border-radius) 0) !important;
}
#nav-bar {
padding-top: 5px;
padding-bottom: 5px;
}
#urlbar[breakout]:not([breakout-extend="true"]) {
top: unset;
}
@@ -536,22 +536,23 @@ panelmultiview {
#navigator-toolbox[inFullscreen]{ margin-top: 0 !important; }
#navigator-toolbox {
--zen-compact-toolbox-margin: 15px;
position: absolute !important;
display: block;
transition: 50ms ease-in !important;
right: calc(100% - 25px) !important;
transform: translateX(calc(-100% + var(--zen-compact-toolbox-margin) + 2px)) !important;
opacity: 0;
line-height: 0;
z-index: 1;
pointer-events: none;
height: 100%;
padding: 0 !important;
margin: 0 !important;
margin: 0;
padding: var(--zen-compact-toolbox-margin) !important;
& #titlebar {
border-right: 1px solid var(--zen-colors-border);
background: var(--zen-main-browser-background) !important;
border: 1px solid var(--zen-colors-border);
background: var(--zen-colors-tertiary) !important;
padding: 0 5px;
border-radius: 8px;
}
}
@@ -560,7 +561,7 @@ panelmultiview {
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
transition-delay: 33ms !important;
left: 0 !important;
transform: none !important;
opacity: 1;
}
@@ -594,23 +595,25 @@ panelmultiview {
@media (-moz-bool-pref: "zen.view.compact.hide-toolbar") {
#zen-appcontent-navbar-container {
height: 10px;
transition: .2s ease-in-out;
transform: translateY(calc(-100% + 5px));
opacity: 0;
position: absolute;
width: 100%;
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
border-bottom: 1px solid var(--zen-colors-border);
top: 0;
background: var(--zen-main-browser-background);
background: var(--zen-colors-tertiary);
z-index: 1;
overflow: hidden;
transition: .2s ease-in-out;
}
}
#zen-appcontent-navbar-container:hover,
#zen-appcontent-navbar-container:focus-within,
#mainPopupSet:has(> #appMenu-popup:hover) ~ #zen-appcontent-navbar-container,
#zen-appcontent-navbar-container:has(*[open="true"]) {
height: fit-content;
transform: translateY(0);
opacity: 1;
}
@@ -811,7 +814,7 @@ panelmultiview {
/* We have the pinned tabs on the top, next to each other,
* and the rest of the tabs are below them. */
display: grid;
grid-template-columns: repeat(auto-fill, minmax(31px, 1fr));
grid-template-columns: repeat(auto-fill, minmax(35px, 1fr));
padding: 5px;
}
@@ -846,12 +849,10 @@ panelmultiview {
#urlbar:is([breakout][breakout-extend], [breakout][usertyping][focused]) {
#urlbar-input {
font-size: 16px !important;
text-align: left !important;
}
z-index: 1;
z-index: 2;
position: fixed !important;
--urlbar-height: auto !important;
bottom: auto !important;
top: 20vh !important;
padding-left: 6px !important;
@@ -873,7 +874,7 @@ panelmultiview {
left: 0px;
background-color: rgba(0, 0, 0, 0.3);
backdrop-filter: blur(8px);
backdrop-filter: blur(5px);
z-index: -1;
}
@@ -890,8 +891,3 @@ panelmultiview {
}
}
/* Window controls */
.titlebar-buttonbox-container {
padding-right: 10px;
}

View File

@@ -27,7 +27,7 @@
"brandShortName": "Zen Browser",
"brandFullName": "Zen Browser",
"release": {
"displayVersion": "1.0.0-a.11",
"displayVersion": "1.0.0-a.12",
"github": {
"repo": "zen-browser/desktop"
},