Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc1c166ac2 | ||
|
|
279849debe | ||
|
|
07c5474cf2 | ||
|
|
bd5fc861df | ||
|
|
6988060269 | ||
|
|
cf6ed8c382 | ||
|
|
d536f3e93c | ||
|
|
cc2262dbaf | ||
|
|
f3fa0eb849 | ||
|
|
7c9bca1325 | ||
|
|
493f299cce | ||
|
|
5d7248d4c7 | ||
|
|
d9e8fb3469 | ||
|
|
a5051e116a | ||
|
|
3358d0e3d7 | ||
|
|
ca183c7de6 | ||
|
|
b39961e43e |
1
.github/workflows/build.yml
vendored
1
.github/workflows/build.yml
vendored
@@ -693,6 +693,7 @@ jobs:
|
||||
rm -rf zen-browser
|
||||
rm -rf archive.tar
|
||||
rm -rf zen.linux-x86_64.tar.xz
|
||||
rm -rf zen.linux-aarch64.tar.xz
|
||||
|
||||
- name: Upload Flatpak manifest
|
||||
uses: actions/upload-artifact@v4
|
||||
|
||||
9
.github/workflows/linux-release-build.yml
vendored
9
.github/workflows/linux-release-build.yml
vendored
@@ -30,6 +30,7 @@ jobs:
|
||||
SCCACHE_GHA_ENABLED: 'true'
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTC_WRAPPER: 'sccache'
|
||||
CARGO_INCREMENTAL: 0
|
||||
name: Build Linux - ${{ matrix.arch }}
|
||||
|
||||
steps:
|
||||
@@ -50,7 +51,9 @@ jobs:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Run sccache-cache
|
||||
uses: mozilla-actions/sccache-action@v0.0.7
|
||||
uses: mozilla-actions/sccache-action@main
|
||||
with:
|
||||
disable_annotations: true
|
||||
|
||||
- name: Setup Git
|
||||
run: |
|
||||
@@ -147,7 +150,3 @@ jobs:
|
||||
retention-days: 5
|
||||
name: linux_update_manifest_${{ matrix.arch }}
|
||||
path: ./dist/update
|
||||
|
||||
- name: Run sccache stat for check
|
||||
shell: bash
|
||||
run: ${SCCACHE_PATH} --show-stats
|
||||
|
||||
9
.github/workflows/macos-release-build.yml
vendored
9
.github/workflows/macos-release-build.yml
vendored
@@ -29,6 +29,7 @@ jobs:
|
||||
SCCACHE_GHA_ENABLED: 'true'
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTC_WRAPPER: 'sccache'
|
||||
CARGO_INCREMENTAL: 0
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
@@ -42,7 +43,9 @@ jobs:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Run sccache-cache
|
||||
uses: mozilla-actions/sccache-action@v0.0.7
|
||||
uses: mozilla-actions/sccache-action@main
|
||||
with:
|
||||
disable_annotations: true
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
@@ -163,7 +166,3 @@ jobs:
|
||||
retention-days: 1
|
||||
name: platform.ini
|
||||
path: ./platform.ini
|
||||
|
||||
- name: Run sccache stat for check
|
||||
shell: bash
|
||||
run: ${SCCACHE_PATH} --show-stats
|
||||
|
||||
9
.github/workflows/windows-release-build.yml
vendored
9
.github/workflows/windows-release-build.yml
vendored
@@ -32,6 +32,7 @@ jobs:
|
||||
SCCACHE_GHA_ENABLED: 'true'
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTC_WRAPPER: 'sccache'
|
||||
CARGO_INCREMENTAL: 0
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -56,7 +57,9 @@ jobs:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Run sccache-cache
|
||||
uses: mozilla-actions/sccache-action@v0.0.7
|
||||
uses: mozilla-actions/sccache-action@main
|
||||
with:
|
||||
disable_annotations: true
|
||||
|
||||
- name: Setup Git
|
||||
run: |
|
||||
@@ -312,7 +315,3 @@ jobs:
|
||||
retention-days: 5
|
||||
name: windows_update_manifest_${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}
|
||||
path: ./dist/update
|
||||
|
||||
- name: Run sccache stat for check
|
||||
shell: bash
|
||||
run: ${SCCACHE_PATH} --show-stats
|
||||
|
||||
16
README.md
16
README.md
@@ -28,9 +28,9 @@
|
||||
|
||||
## 🖥️ Compatibility
|
||||
|
||||
Zen is currently built using firefox version `135.0.1`! 🚀
|
||||
Zen is currently built using Firefox version `135.0.1`! 🚀
|
||||
|
||||
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using firefox version `RC 135.0.1`!
|
||||
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 135.0.1`!
|
||||
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
|
||||
- Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates!
|
||||
|
||||
@@ -40,11 +40,11 @@ Zen is an open-source project, and we welcome contributions from the community!
|
||||
|
||||
### Issue metrics
|
||||
|
||||
We keep track of how many issues are closed at the end of the month in [docs/issue-metrics](./docs/issue-metrics). This is to keep track of how many issues are being closed, because who doesn't like to see progress? 📈
|
||||
We keep track of how many issues are closed at the end of the month in [docs/issue-metrics](./docs/issue-metrics). We use this to keep track of our issues and see our progress! 📈
|
||||
|
||||
### Versioning
|
||||
|
||||
Zen uses [Semantic Versioning](https://semver.org/) for versioning. Meaning, versions are displayed as `a.bc.d` where:
|
||||
Zen uses [Semantic Versioning](https://semver.org/), meaning versions are displayed as `a.bc.d` where:
|
||||
|
||||
- `a` is the major version
|
||||
- `b` is the minor version
|
||||
@@ -67,7 +67,7 @@ Zen is built with performance in mind, and we have optimized the browser to be a
|
||||
|
||||
Zen is available for Linux, macOS, and Windows. You can download the latest version from the official website at [zen-browser.app](https://zen-browser.app/download), or from the [GitHub Releases](https://github.com/zen-browser/desktop/releases) page.
|
||||
|
||||
If you dont see your OS listed below, that's because we already have it in our [downloads page](https://zen-browser.app/download)! Make sure to check it out!
|
||||
If you don't see your OS listed below, that's because we already have it in our [downloads page](https://zen-browser.app/download)! Make sure to check it out!
|
||||
|
||||
#### Windows
|
||||
|
||||
@@ -117,7 +117,7 @@ Some components used by @zen-browser as an attempt to make firefox forks a bette
|
||||
|
||||
#### `Run Locally`
|
||||
|
||||
In order to download and run zen locally, please follow [these instructions](https://docs.zen-browser.app/building).
|
||||
In order to download and run Zen locally, please follow [these instructions](https://docs.zen-browser.app/building).
|
||||
|
||||
#### `Special Thanks`
|
||||
|
||||
@@ -133,10 +133,10 @@ Zen couldn't be in its current state without the help of these amazing projects!
|
||||
|
||||
### 🖥️ Comparison with other browsers
|
||||
|
||||
Thanks everyone for making zen stand out among these giants!
|
||||
Thanks everyone for making Zen stand out among these giants!
|
||||
|
||||
[](https://star-history.com/#zen-browser/desktop&chromium/chromium&brave/brave-browser&Date)
|
||||
|
||||
## 📄 License
|
||||
|
||||
Zen browser is under the [MPL LICENSE](./LICENSE). All the code is open-source and free to use! Attributions are appreciated but not required.
|
||||
Zen browser is under the [MPL LICENSE](./LICENSE). All the code is open-source and free to use! Attribution is appreciated but not required.
|
||||
|
||||
@@ -34,7 +34,7 @@ fi
|
||||
if test "$ZEN_RELEASE"; then
|
||||
|
||||
ac_add_options --enable-clang-plugin
|
||||
ac_add_options --enable-bootstrap
|
||||
ac_add_options --enable-bootstrap=-sccache
|
||||
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --disable-debug
|
||||
|
||||
@@ -220,7 +220,7 @@ var gZenUIManager = {
|
||||
urlbarTrim(aURL) {
|
||||
if (gZenVerticalTabsManager._hasSetSingleToolbar) {
|
||||
let url = BrowserUIUtils.removeSingleTrailingSlashFromURL(aURL);
|
||||
return url.startsWith('http://') || url.startsWith('https://') ? url.split('/')[2] : url;
|
||||
return url.startsWith('https://') ? url.split('/')[2] : url;
|
||||
}
|
||||
return BrowserUIUtils.trimURL(aURL);
|
||||
},
|
||||
|
||||
@@ -95,6 +95,7 @@
|
||||
position: relative;
|
||||
background: var(--zen-dialog-background);
|
||||
border: 1px solid var(--zen-colors-border-contrast);
|
||||
width: calc(100% - var(--zen-toolbox-padding));
|
||||
|
||||
:root[zen-single-toolbar='true'] {
|
||||
padding-top: 0 !important;
|
||||
@@ -311,6 +312,10 @@
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
& #urlbar {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.compact.color-toolbar') {
|
||||
background-attachment: fixed;
|
||||
background: var(--zen-main-browser-background-toolbar);
|
||||
@@ -344,6 +349,15 @@
|
||||
opacity: var(--zen-grainy-background-opacity, 0);
|
||||
mix-blend-mode: overlay;
|
||||
}
|
||||
|
||||
& #urlbar {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
& #urlbar[breakout-extend='true']:not([zen-floating-urlbar='true']) {
|
||||
top: 2px !important;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -847,8 +847,8 @@
|
||||
position: relative;
|
||||
height: calc(100% - var(--tab-block-margin) * 2);
|
||||
margin-left: calc(-1 * var(--tab-inline-padding) + var(--tab-block-margin));
|
||||
margin-right: 4px;
|
||||
padding: 0 calc(var(--toolbarbutton-inner-padding)) 0 calc(var(--toolbarbutton-inner-padding) / 4 + var(--tab-inline-padding) - 2px);
|
||||
margin-right: 8px;
|
||||
padding: 0 calc(var(--toolbarbutton-inner-padding) - 2px) 0 calc(var(--toolbarbutton-inner-padding) / 4 + var(--tab-inline-padding) - 2px);
|
||||
border-radius: 0;
|
||||
border-top-left-radius: var(--border-radius-medium);
|
||||
width: unset;
|
||||
@@ -872,10 +872,10 @@
|
||||
height: 16px;
|
||||
background: light-dark(rgba(88, 79, 79, 0.02), rgba(255, 255, 255, 0.3));
|
||||
position: absolute;
|
||||
right: calc(var(--tab-inline-padding) / 2 - 1px);
|
||||
right: 0;
|
||||
top: 50%;
|
||||
border-radius: 2px;
|
||||
transform: rotate(10deg) translateY(-50%);
|
||||
transform: rotate(15deg) translateY(-50%);
|
||||
}
|
||||
|
||||
&:hover::after {
|
||||
|
||||
@@ -153,7 +153,8 @@ var gZenCompactModeManager = {
|
||||
animateCompactMode() {
|
||||
this._animating = true;
|
||||
const isCompactMode = this.preference;
|
||||
const canHideSidebar = Services.prefs.getBoolPref('zen.view.compact.hide-tabbar');
|
||||
const canHideSidebar =
|
||||
Services.prefs.getBoolPref('zen.view.compact.hide-tabbar') || gZenVerticalTabsManager._hasSetSingleToolbar;
|
||||
const canAnimate =
|
||||
lazyCompactMode.COMPACT_MODE_CAN_ANIMATE_SIDEBAR &&
|
||||
!this.sidebar.hasAttribute('zen-user-show') &&
|
||||
|
||||
@@ -267,7 +267,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
// remove tab from list
|
||||
tabs.splice(tabs.indexOf(tab), 1);
|
||||
if (tab.pinned) {
|
||||
pinnedSection.insertBefore(tab, pinnedSection.lastChild);
|
||||
pinnedSection.insertBefore(tab, pinnedSection.nextSibling);
|
||||
} else {
|
||||
section.insertBefore(tab, section.lastChild);
|
||||
}
|
||||
@@ -1999,7 +1999,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
const contaienr = document.querySelector(
|
||||
`#vertical-pinned-tabs-container .zen-workspace-tabs-section[zen-workspace-id="${workspaceId}"]`
|
||||
);
|
||||
contaienr.insertBefore(tab, contaienr.firstChild);
|
||||
contaienr.insertBefore(tab, contaienr.lastChild);
|
||||
changed = true;
|
||||
}
|
||||
if (changed) {
|
||||
@@ -2311,4 +2311,17 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
gBrowser.selectedTab = tab;
|
||||
}
|
||||
|
||||
getDefaultContainer() {
|
||||
if (!this.workspaceEnabled) {
|
||||
return 0;
|
||||
}
|
||||
const workspaces = this._workspaceCache;
|
||||
if (!workspaces) {
|
||||
return 0;
|
||||
}
|
||||
const activeWorkspace = this.activeWorkspace;
|
||||
const workspace = workspaces.workspaces.find((workspace) => workspace.uuid === activeWorkspace);
|
||||
return workspace.containerTabId;
|
||||
}
|
||||
})();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
|
||||
index 0f79ba5dd42116d626445b86f6b24731d2fa8aad..76d692db1731e84b28d9035b03e34c176c12bd23 100644
|
||||
index fbdd6a34b12d4d957f7a2d9d95df0bfd65ba3f61..4d27f7fc108ca76e071707a737209bf5ea4ea07e 100644
|
||||
--- a/browser/components/places/PlacesUIUtils.sys.mjs
|
||||
+++ b/browser/components/places/PlacesUIUtils.sys.mjs
|
||||
@@ -58,6 +58,7 @@ class BookmarkState {
|
||||
@@ -157,3 +157,12 @@ index 0f79ba5dd42116d626445b86f6b24731d2fa8aad..76d692db1731e84b28d9035b03e34c17
|
||||
/**
|
||||
* Append transactions to update tags by given information.
|
||||
*
|
||||
@@ -902,7 +1011,7 @@ export var PlacesUIUtils = {
|
||||
aNode,
|
||||
aWhere,
|
||||
aWindow,
|
||||
- { aPrivate = false, userContextId = 0 } = {}
|
||||
+ { aPrivate = false, userContextId = aWindow.ZenWorkspaces.getDefaultContainer() } = {}
|
||||
) {
|
||||
if (
|
||||
aNode &&
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||
index d41c486c02a6f09dcff5741a59ad8b617294c481..1c150fd8863335ee356601f7872c1fdc2086dcab 100644
|
||||
index d41c486c02a6f09dcff5741a59ad8b617294c481..8e902dcb3792c75238ac13a8bf9199b34451aa51 100644
|
||||
--- a/browser/components/tabbrowser/content/tab.js
|
||||
+++ b/browser/components/tabbrowser/content/tab.js
|
||||
@@ -16,6 +16,7 @@
|
||||
@@ -84,7 +84,7 @@ index d41c486c02a6f09dcff5741a59ad8b617294c481..1c150fd8863335ee356601f7872c1fdc
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
});
|
||||
+ } else if (this.hasAttribute('zen-essential')) {
|
||||
+ } else if (this.hasAttribute('zen-essential') && !event.target.classList.contains("tab-icon-overlay")) {
|
||||
+ gZenPinnedTabManager._onTabResetPinButton(event, this, 'reset');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..dd8fba935e26aa0f00b687f23b64935dfcf339fa 100644
|
||||
index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..20c92611723587e4eeed5889b2b1741d86368263 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -406,11 +406,50 @@
|
||||
@@ -19,19 +19,6 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..dd8fba935e26aa0f00b687f23b64935d
|
||||
+ return i;
|
||||
+ }
|
||||
+
|
||||
+ get _numVisiblePinTabsWithoutGlance() {
|
||||
+ let i = 0;
|
||||
+ for (let tab of this.tabs) {
|
||||
+ if (!tab.pinned) {
|
||||
+ break;
|
||||
+ }
|
||||
+ if (!tab.hidden && !tab.hasAttribute("zen-glance-tab")) {
|
||||
+ i++;
|
||||
+ }
|
||||
+ }
|
||||
+ return i;
|
||||
+ }
|
||||
+
|
||||
+ get _numZenEssentials() {
|
||||
+ let i = 0;
|
||||
+ for (let tab of this.tabs) {
|
||||
@@ -42,6 +29,19 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..dd8fba935e26aa0f00b687f23b64935d
|
||||
+ }
|
||||
+ return i;
|
||||
+ }
|
||||
+
|
||||
+ get _numZenVisibleEssentials() {
|
||||
+ let i = 0;
|
||||
+ for (let tab of this.tabs) {
|
||||
+ if (!tab.hasAttribute("zen-essential") && !tab.hasAttribute("zen-glance-tab")) {
|
||||
+ break;
|
||||
+ }
|
||||
+ if (!tab.hidden) {
|
||||
+ i += !tab.hasAttribute("zen-glance-tab");
|
||||
+ }
|
||||
+ }
|
||||
+ return i;
|
||||
+ }
|
||||
+
|
||||
get pinnedTabCount() {
|
||||
- for (var i = 0; i < this.tabs.length; i++) {
|
||||
@@ -408,18 +408,15 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..dd8fba935e26aa0f00b687f23b64935d
|
||||
aTab.selected ||
|
||||
aTab.closing ||
|
||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||
@@ -5706,9 +5818,9 @@
|
||||
@@ -5706,7 +5818,7 @@
|
||||
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
if (aTab.pinned) {
|
||||
- aIndex = Math.min(aIndex, this.pinnedTabCount - 1);
|
||||
+ aIndex = aTab.hasAttribute('zen-essential') ? Math.min(aIndex, this._numZenEssentials) : Math.min(aIndex, this._numVisiblePinTabs - 1);
|
||||
+ aIndex = aTab.hasAttribute('zen-essential') ? Math.min(aIndex, this._numZenEssentials - 1) : Math.min(aIndex, this.pinnedTabCount - 1);
|
||||
} else {
|
||||
- aIndex = Math.max(aIndex, this.pinnedTabCount);
|
||||
+ aIndex = Math.max(aIndex, this._numVisiblePinTabsWithoutGlance + this._numZenEssentials);
|
||||
aIndex = Math.max(aIndex, this.pinnedTabCount);
|
||||
}
|
||||
if (aTab._tPos == aIndex) {
|
||||
return;
|
||||
@@ -5717,7 +5829,7 @@
|
||||
this._lastRelatedTabMap = new WeakMap();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index 8aeb244ffca9f48661805f5b7d860b5896055562..2b988219f279f7b6e1178518e436a7f2b437ce20 100644
|
||||
index 8aeb244ffca9f48661805f5b7d860b5896055562..8300aa0533cb0037be26766acf1d82af295c7369 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -94,7 +94,7 @@
|
||||
@@ -33,7 +33,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..2b988219f279f7b6e1178518e436a7f2
|
||||
// In expanded vertical mode, the max number of pinned tabs per row is dynamic
|
||||
// Set this before adjusting dragged tab's position
|
||||
- let pinnedTabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
|
||||
+ let pinnedTabs = this.visibleTabs.slice(0, gBrowser._numVisiblePinTabs);
|
||||
+ let pinnedTabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numZenVisibleEssentials);
|
||||
let tabsPerRow = 0;
|
||||
let position = 0;
|
||||
for (let pinnedTab of pinnedTabs) {
|
||||
@@ -325,7 +325,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..2b988219f279f7b6e1178518e436a7f2
|
||||
}
|
||||
|
||||
- let tabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
|
||||
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numVisiblePinTabs);
|
||||
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numZenVisibleEssentials);
|
||||
|
||||
let directionX = screenX > dragData.animLastScreenX;
|
||||
let directionY = screenY > dragData.animLastScreenY;
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"brandShortName": "Zen",
|
||||
"brandFullName": "Zen Browser",
|
||||
"release": {
|
||||
"displayVersion": "1.8.1b",
|
||||
"displayVersion": "1.8.2b",
|
||||
"github": {
|
||||
"repo": "zen-browser/desktop"
|
||||
},
|
||||
@@ -39,7 +39,7 @@
|
||||
"brandShortName": "Twilight",
|
||||
"brandFullName": "Zen Twilight",
|
||||
"release": {
|
||||
"displayVersion": "1.8.1t",
|
||||
"displayVersion": "1.8.2t",
|
||||
"github": {
|
||||
"repo": "zen-browser/desktop"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user