Compare commits

...

32 Commits

Author SHA1 Message Date
Mauro Balades
b94c6c616a Quick HOTFIX 2024-07-27 12:08:20 +02:00
Mauro Balades
9950ebd99e refactor: Update flatpak package name in alpha.yml workflow 2024-07-27 11:52:22 +02:00
Mauro Balades
1c4108d961 refactor: Remove font-weight property from zen-panel-ui.css 2024-07-27 09:45:45 +02:00
Mauro Balades
1be4bbf08b refactor: Remove commented code in windows-alpha-build.yml 2024-07-27 09:26:53 +02:00
mauro-balades
5ba50f2988 🔖 Update version to 1.0.0-a.7 2024-07-27 06:51:40 +00:00
Mauro Balades
e2618e5681 refactor: Update actions/checkout to v4 in alpha.yml workflow 2024-07-27 08:50:31 +02:00
Mauro Balades
3304259383 refactor: Update alpha.yml workflow to remove unused Windows build steps 2024-07-27 00:57:34 +02:00
Mauro Balades
d83df429bc refactor: Update macOS alpha build workflow to use macOS 14 instead of macOS 14 Large 2024-07-26 22:03:42 +02:00
Mauro Balades
191ffd6efe refactor: Update macOS alpha build workflow to use macOS 14 instead of macOS 14 Large 2024-07-26 20:43:25 +02:00
Mauro Balades
7e0e3f4145 refactor: Update profile data path in alpha.yml workflow 2024-07-26 14:57:29 +02:00
Mauro Balades
8b56897a11 feat: Enable newtabWallpapers v2 in Zen browser theme 2024-07-26 14:09:37 +02:00
Mauro Balades
6a55fecca6 refactor: Update macOS alpha build workflow to use macOS 14 instead of macOS 14 Large 2024-07-26 12:28:21 +02:00
Mauro Balades
f80a454261 refactor: Fixed macos builds and flatpaks 2024-07-26 12:26:35 +02:00
Mauro Balades
0f97a1cb4d refactor: Improved pinned tabs! 2024-07-26 12:10:00 +02:00
Mauro Balades
58e049a76f refactor: Hide sidebar splitter in Zen browser theme 2024-07-26 09:42:51 +02:00
Mauro Balades
dfa5013a79 Fixed windows builds 2024-07-26 09:20:11 +02:00
Mauro Balades
22dfa8daec refactor: Update alpha.yml workflow to use flat-manager v6.1 for uploading flatpak bundle 2024-07-26 09:19:18 +02:00
Mauro Balades
5c5608938d refactor: Update alpha.yml workflow to use flat-manager v6.1 for uploading flatpak bundle 2024-07-26 09:12:52 +02:00
Mauro Balades
cfd1ef11aa Revert testing 2024-07-26 01:03:06 +02:00
Mauro Balades
b82530c890 testing 2024-07-26 01:02:28 +02:00
Mauro Balades
69e5bb552f refactor: Update alpha.yml workflow to use flat-manager v6.1 for uploading flatpak bundle 2024-07-26 01:00:05 +02:00
Mauro Balades
915350db3c Hide sidebar webpanel when clicked outside 2024-07-26 00:20:33 +02:00
Mauro Balades
0dfb198609 refactor: Improve workspace icon handling and tab visibility logic 2024-07-25 23:29:49 +02:00
Mauro Balades
f1039324cf refactor: Improve sidebar panel button scaling 2024-07-25 22:46:38 +02:00
Mauro Balades
3ce4bb8ecf chore: Update alpha.yml workflow to use flat-manager v6.1 for uploading flatpak bundle 2024-07-25 22:45:43 +02:00
Mauro Balades
005398a20d chore: Enable PGO (Profile-Guided Optimization) for Linux builds 2024-07-25 15:33:42 +02:00
Mauro Balades
f45b1ec317 chore: Update alpha.yml workflow to download artifacts in the "Download artifacts" step 2024-07-25 15:33:22 +02:00
Mauro Balades
4714cfcc84 chore: Update alpha.yml workflow to consistently use the use-warp-build input 2024-07-25 12:59:05 +02:00
Mauro Balades
c221c8e242 chore: Update alpha.yml workflow to include continue-on-error option 2024-07-25 11:20:00 +02:00
Mauro Balades
5464da21c4 chore: Add option to create a flatpak release in alpha.yml workflow 2024-07-25 11:19:24 +02:00
Mauro Balades
f2a783fbce refactor: Improve workspace icon handling and tab visibility logic 2024-07-25 10:31:41 +02:00
Mauro Balades
bb3ee371a1 refactor: Improve workspace icon handling and tab visibility logic 2024-07-25 09:56:17 +02:00
27 changed files with 314 additions and 189 deletions

View File

@@ -13,6 +13,11 @@ on:
required: false
default: true
type: 'boolean'
create_flatpak:
description: 'Create a flatpak release (It defaults to creating a release)'
required: false
default: false
type: 'boolean'
jobs:
@@ -198,7 +203,7 @@ jobs:
# needs: [windows-step-1, build-data]
# with:
# build-version: ${{ needs.build-data.outputs.version }}
# profile-data-path-archive: zen-windows-x86_64-profile-data-and-jarlog.zip
# profile-data-path-archive: zen.win64-pgo-stage-1.zip
windows-step-3:
name: Windows build step 3 (build with profile data)
@@ -228,16 +233,62 @@ jobs:
with:
build-version: ${{ needs.build-data.outputs.version }}
distro-flatpak:
name: Build flatpak repos
needs: [linux]
runs-on: ubuntu-latest
permissions:
contents: write
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-44
options: --privileged
if: ${{ github.event.inputs.create_release == 'true' || github.event.inputs.create_flatpak == 'true' }}
steps:
- uses: actions/checkout@v4
with:
repository: zen-browser/flatpak
token: ${{ secrets.DEPLOY_KEY }}
submodules: recursive
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: zen.linux.tar.bz2
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: com.zen.browser.flatpak
manifest-path: com.zen.browser.flatpak.yml
cache-key: flatpak-builder-${{ github.sha }}
verbose: true
- name: Find flatpak bundle
run: find .
- name: Upload flatpak bundle
uses: actions/upload-artifact@v4
with:
name: com.zen.browser.flatpak
path: com.zen.browser.flatpak
# - name: Publish to Flathub (beta)
# uses: flatpak/flatpak-github-actions/flat-manager@v6.1
# with:
# flat-manager-url: https://hub.flathub.org/
# repository: beta
# token: ${{ secrets.FLATHUB_TOKEN }}
release:
if: ${{ github.event.inputs.create_release == 'true' }}
permissions: write-all
name: Release
needs: [build-data, linux, source, windows-step-3, check-release, mac]
needs: [build-data, linux, source, windows-step-3, check-release, mac, distro-flatpak]
runs-on: ubuntu-latest
steps:
- name: Update repo
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Git Pull
run: git pull
@@ -285,38 +336,4 @@ jobs:
zen.installer.exe
zen.installer.pretty.exe
zen.macos.dmg
distro-flatpak:
name: Build flatpak repos
needs: [linux, release]
runs-on: ubuntu-latest
permissions:
contents: write
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-44
options: --privileged
if: ${{ github.event.inputs.create_release == 'true' }}
steps:
- uses: actions/checkout@v4
with:
repository: zen-browser/flatpak
token: ${{ secrets.DEPLOY_KEY }}
submodules: recursive
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: org.zen.browser.flatpak
manifest-path: org.zen.browser.flatpak.yml
cache-key: flatpak-builder-${{ github.sha }}
verbose: true
- name: Find flatpak bundle
run: find .
- name: Upload flatpak bundle
uses: actions/upload-artifact@v4
with:
name: zen.flatpak
path: ./org.zen.browser.flatpak
com.zen.browser.flatpak

View File

@@ -68,7 +68,11 @@ jobs:
./mach --no-interactive bootstrap --application-choice browser
cd ..
- name: surfer build
- name: build Zen
run: sh .github/workflows/src/alpha-build.sh
- name: Rebuild Zen if failed
if: failure()
run: sh .github/workflows/src/alpha-build.sh
- name: Package

View File

@@ -9,8 +9,7 @@ fi
ulimit -n 4096
# Check if xfvb is installed
if ! command -v Xvfb &> /dev/null
then
if ! command -v Xvfb &> /dev/null; then
if ! test "$ZEN_CROSS_COMPILING"
then
Xvfb :2 -screen 0 1024x768x24 &

View File

@@ -27,15 +27,14 @@ export WINE="$TOOLS/wine/bin/wine64"
ac_add_options --disable-maintenance-service
ac_add_options --disable-bits-download
# if test "$ZEN_GA_GENERATE_PROFILE"; then
# mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
# ac_add_options --enable-profile-generate=cross
# ac_add_options --without-wasm-sandboxed-libraries
# else
ac_add_options --disable-profiling
# ac_add_options --enable-profile-use=cross
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged.profdata
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US.log
# fi
#if test "$ZEN_GA_GENERATE_PROFILE"; then
# mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
# ac_add_options --enable-profile-generate=cross
#else
# ac_add_options --disable-profiling
# ac_add_options --enable-profile-use=cross
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged.profdata
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US.log
#fi
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE

View File

@@ -133,12 +133,11 @@ jobs:
- name: Build
run: |
set -x
unset SURFER_PLATFORM
export SURFER_PLATFORM="win32"
export ZEN_CROSS_COMPILING=1
if test ${{ inputs.generate-gpo }}; then
#export ZEN_GA_GENERATE_PROFILE=1
echo "note: PGO build is disabled"
fi
# if test ${{ inputs.generate-gpo }}; then
# export ZEN_GA_GENERATE_PROFILE=1
# fi
sh .github/workflows/src/alpha-build.sh
- name: Package

View File

@@ -40,6 +40,7 @@ jobs:
name: Download artifact
with:
path: C:\artifact
name: zen-windows-x86_64-profile-data-and-jarlog.zip
- name: Unpack artifact
run: |

View File

@@ -5,7 +5,7 @@ Experience tranquillity while browsing the web without people tracking you!
# Compatibility
Zen is currently built using firefox version `128.0.2`!
Zen is currently built using firefox version `128.0.3`!
* Checkout the latest [releases notes](https://get-zen.vercel.app/release-notes)!

View File

@@ -12,9 +12,7 @@ export MOZ_APP_PROFILE=${binName}
export MOZ_APP_DISPLAYNAME="${name}"
export MOZ_BRANDING_DIRECTORY=${brandingDir}
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
export MOZ_MACBUNDLE_ID=${appId}
export MOZ_DISTRIBUTION_ID=${appId}
export MOZ_MACBUNDLE_NAME="Zen Browser.app"
# Uncomment if builds are too resource hungry
# mk_add_options MOZ_MAKE_FLAGS="-j4"
@@ -38,7 +36,8 @@ if test "$ZEN_RELEASE"; then
ac_add_options --disable-tests
ac_add_options --enable-strip
ac_add_options --enable-install-strip
ac_add_options --disable-accessibility
ac_add_options --enable-rust-simd
mk_add_options MOZ_PARALLEL_COMPILE=1
mk_add_options MOZ_CRASHREPORTER=0
@@ -50,20 +49,16 @@ if test "$ZEN_RELEASE"; then
ac_add_options --enable-hardening
ac_add_options --disable-crashreporter
ac_add_options --disable-dmd
ac_add_options --disable-geckodriver
ac_add_options --disable-rust-tests
ac_add_options --disable-default-browser-agent
export MOZ_LTO=thin
ac_add_options MOZ_LTO=thin
ac_add_options --enable-lto=thin
export MOZ_LTO=1
ac_add_options MOZ_LTO=1
ac_add_options --enable-lto
if test "$ZEN_CROSS_COMPILING"; then
ac_add_options --disable-jemalloc
else
ac_add_options --enable-jemalloc
fi
ac_add_options --enable-jemalloc
ac_add_options --disable-jprof
mk_add_options MOZILLA_OFFICIAL=1
MOZILLA_OFFICIAL=1
@@ -80,6 +75,12 @@ if test "$ZEN_RELEASE"; then
mk_add_options AUTOCLOBBER=1
export AUTOCLOBBER=1
if ! test "$ZEN_CROSS_COMPILING"; then
# It causes link errors on windows
ac_add_options --disable-dmd
fi
fi
ac_add_options --enable-unverified-updates
@@ -91,6 +92,7 @@ ac_add_options --enable-jxl
ac_add_options --enable-av1
ac_add_options --enable-eme=widevine
ac_add_options --allow-addon-sideload
ac_add_options --with-unsigned-addon-scopes=app,system
export MOZ_REQUIRE_SIGNING=

View File

@@ -1,9 +1,12 @@
POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
# if test "$ZEN_RELEASE"; then
# ac_add_options --enable-optimize="-mcpu=apple-m1 -O3 -w"
# export RUSTFLAGS="$RUSTFLAGS -Ctarget-cpu=apple-m1"
# fi
unset MOZ_STDCXX_COMPAT
if test "$ZEN_RELEASE"; then
export RUSTFLAGS="$RUSTFLAGS -Ctarget-cpu=apple-m1"
fi
ac_add_options --enable-install-strip
ac_add_options --target=aarch64-apple-darwin
export MOZ_MACBUNDLE_ID=${appId}
export MOZ_MACBUNDLE_NAME="Zen Browser.app"

View File

@@ -9,4 +9,5 @@
* Welcome Page
* Overall performance
* Overall stability
* Pinning tabs (Grid layout)
* Overall UX

View File

@@ -27,6 +27,6 @@
},
"homepage": "https://github.com/zen-browser/core#readme",
"dependencies": {
"@zen-browser/surfer": "^1.1.4"
"@zen-browser/surfer": "^1.1.5"
}
}

10
pnpm-lock.yaml generated
View File

@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@zen-browser/surfer':
specifier: ^1.1.4
version: 1.1.4
specifier: ^1.1.5
version: 1.1.5
packages:
@@ -109,8 +109,8 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
'@zen-browser/surfer@1.1.4':
resolution: {integrity: sha512-fNG/zZfqlEIUVyxLzC07mn+TBVhRwlZJTPMiyckJPo2jqrehGnaOimw23RA6ZgeXCEvu645u9XxWQ7dhkkwnIw==}
'@zen-browser/surfer@1.1.5':
resolution: {integrity: sha512-8ogIJT3Lw0vyG4gC4g03xrt/nQbFxiPzI1o/3/6FanTzx97C+TdgsWohoKKGvoHj+gqxAwPDfXtqwgCPIYCqrA==}
hasBin: true
ansi-regex@5.0.1:
@@ -786,7 +786,7 @@ snapshots:
'@types/node@17.0.45': {}
'@zen-browser/surfer@1.1.4':
'@zen-browser/surfer@1.1.5':
dependencies:
'@resvg/resvg-js': 1.4.0
async-icns: 1.0.2

View File

@@ -125,7 +125,6 @@ pref('browser.urlbar.update2.engineAliasRefresh', true);
pref('browser.search.suggest.enabled', false);
pref('browser.urlbar.suggest.quicksuggest.sponsored', false);
pref('browser.urlbar.suggest.quicksuggest.nonsponsored', false);
pref('browser.formfill.enable', false);
pref('security.insecure_connection_text.enabled', true);
pref('security.insecure_connection_text.pbmode.enabled', true);
pref('network.IDN_show_punycode', true);
@@ -135,14 +134,12 @@ pref('dom.security.https_first', true);
pref('dom.security.https_first_schemeless', true);
/** PASSWORDS ***/
pref('signon.rememberSignons', false);
pref('signon.formlessCapture.enabled', false);
pref('signon.privateBrowsingCapture.enabled', false);
pref('network.auth.subresource-http-auth-allow', 1);
pref('editor.truncate_user_pastes', false);
/** ADDRESS + CREDIT CARD MANAGER ***/
pref('extensions.formautofill.addresses.enabled', false);
pref('extensions.formautofill.creditCards.enabled', false);
/** MIXED CONTENT + CROSS-SITE ***/
@@ -217,15 +214,12 @@ pref('browser.privatebrowsing.vpnpromourl', '');
pref('extensions.getAddons.showPane', false);
pref('extensions.htmlaboutaddons.recommendations.enabled', false);
pref('browser.discovery.enabled', false);
pref('browser.shell.checkDefaultBrowser', false);
pref('browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons', false);
pref(
'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features',
false
);
pref('browser.preferences.moreFromMozilla', false);
pref('browser.tabs.tabmanager.enabled', false);
pref('browser.aboutConfig.showWarning', false);
pref('browser.aboutwelcome.enabled', false);
/** THEME ADJUSTMENTS ***/
@@ -238,12 +232,6 @@ pref('browser.privateWindowSeparation.enabled', false); // WINDOWS
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');
pref('full-screen-api.warning.delay', -1);
pref('full-screen-api.warning.timeout', 0);
/** URL BAR ***/
pref('browser.urlbar.suggest.calculator', true);
pref('browser.urlbar.unitConversion.enabled', true);

View File

@@ -18,6 +18,7 @@ pref('browser.display.focus_ring_style', 0);
pref('browser.display.focus_ring_width', 0);
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
pref('browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled', true);
pref('browser.translations.newSettingsUI.enable', true);
pref("browser.urlbar.trimHttps", true);
@@ -33,18 +34,13 @@ pref('browser.urlbar.clipboard.featureGate', true);
// new tab page
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
pref("browser.topsites.contile.enabled", false);
pref("browser.topsites.contile.enabled", true);
// Pdf
pref('browser.download.open_pdf_attachments_inline', true);
pref('pdfjs.enableHighlightEditor', true);
pref('pdfjs.enableHighlightFloatingButton', true);
// UA
pref('general.useragent.compatMode.firefox', true);
pref('layout.css.backdrop-filter.enabled', true);
pref("alerts.showFavicons", true);
pref('browser.toolbars.bookmarks.visibility', 'never');

View File

@@ -8,6 +8,7 @@ var gZenBrowserManagerSidebar = {
_hasChangedConfig: true,
_splitterElement: null,
_hSplitterElement: null,
_hasRegisteredPinnedClickOutside: false,
_isDragging: false,
contextTab: null,
@@ -106,6 +107,16 @@ var gZenBrowserManagerSidebar = {
this.update();
this._hasChangedConfig = false;
// 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) {
document.addEventListener("mouseup", clickOutsideHandler);
this._hasRegisteredPinnedClickOutside = true;
} else if (!Services.prefs.getBoolPref("zen.sidebar.floating") && this._hasRegisteredPinnedClickOutside) {
document.removeEventListener("mouseup", clickOutsideHandler);
this._hasRegisteredPinnedClickOutside = false;
}
const button = document.getElementById("zen-sidepanel-button");
if (Services.prefs.getBoolPref("zen.sidebar.enabled")) {
button.removeAttribute("hidden");
@@ -116,6 +127,25 @@ var gZenBrowserManagerSidebar = {
}
},
_handleClickOutside(event) {
let sidebar = document.getElementById("zen-sidebar-web-panel");
if (!sidebar.hasAttribute("pinned") || !this._currentPanel || this._isDragging) {
return;
}
let target = event.target;
const closestSelector = [
"#zen-sidebar-web-panel",
"#zen-sidebar-panels-wrapper",
"#zenWebPanelContextMenu",
"#zen-sidebar-web-panel-splitter",
"#contentAreaContextMenu"
].join(", ");
if (target.closest(closestSelector)) {
return;
}
this.close();
},
toggle() {
if (!this._currentPanel) {
this._currentPanel = this._lastOpenedPanel;

View File

@@ -29,9 +29,6 @@ var gZenVerticalTabsManager = {
//Services.prefs.addObserver('zen.view.sidebar-expanded', this._updateEvent.bind(this));
},
//_updateEvent() {
// this._updateExpandButton();
//},
get expanded() {
return Services.prefs.getBoolPref('zen.view.sidebar-expanded');

View File

@@ -5,12 +5,12 @@ var ZenWorkspaces = {
if (docElement.getAttribute("chromehidden").includes("toolbar")
|| docElement.getAttribute("chromehidden").includes("menubar")
|| docElement.hasAttribute("privatebrowsingmode")) {
console.log("!!! ZenWorkspaces is disabled in hidden windows !!!");
console.warn("ZenWorkspaces: !!! ZenWorkspaces is disabled in hidden windows !!!");
return; // We are in a hidden window, don't initialize ZenWorkspaces
}
console.log("Initializing ZenWorkspaces...");
console.log("ZenWorkspaces: Initializing ZenWorkspaces...");
await this.initializeWorkspaces();
console.log("ZenWorkspaces initialized");
console.log("ZenWorkspaces: ZenWorkspaces initialized");
},
get workspaceEnabled() {
@@ -57,7 +57,6 @@ var ZenWorkspaces = {
}
if (this.workspaceEnabled) {
let workspaces = await this._workspaces();
console.log("Workspaces loaded", workspaces);
if (workspaces.workspaces.length === 0) {
await this.createAndSaveWorkspace("Default Workspace", true);
} else {
@@ -101,13 +100,14 @@ var ZenWorkspaces = {
json.workspaces = [];
}
json.workspaces.push(workspaceData);
console.log("Saving workspace", workspaceData);
console.log("ZenWorkspaces: Saving workspace", workspaceData);
await IOUtils.writeJSON(this._storeFile, json);
this._workspaceCache = null;
},
async removeWorkspace(windowID) {
let json = await this._workspaces();
console.log("ZenWorkspaces: Removing workspace", windowID);
await this.changeWorkspace(json.workspaces.find(workspace => workspace.uuid !== windowID));
this._deleteAllTabsInWorkspace(windowID);
json.workspaces = json.workspaces.filter(workspace => workspace.uuid !== windowID);
@@ -137,8 +137,12 @@ var ZenWorkspaces = {
parentPanel.goBack();
},
workspaceHasIcon(workspace) {
return typeof workspace.icon !== "undefined" && workspace.icon !== "";
},
getWorkspaceIcon(workspace) {
if (typeof workspace.icon !== "undefined") {
if (this.workspaceHasIcon(workspace)) {
return workspace.icon;
}
return workspace.name[0].toUpperCase();
@@ -152,7 +156,7 @@ var ZenWorkspaces = {
element.className = "subviewbutton";
element.setAttribute("tooltiptext", workspace.name);
element.setAttribute("zen-workspace-id", workspace.uuid);
element.setAttribute("context", "zenWorkspaceActionsMenu");
//element.setAttribute("context", "zenWorkspaceActionsMenu");
let childs = window.MozXULElement.parseXULToFragment(`
<div class="zen-workspace-icon">
${this.getWorkspaceIcon(workspace)}
@@ -164,13 +168,14 @@ var ZenWorkspaces = {
<image class="toolbarbutton-icon" id="zen-workspace-actions-menu-icon"></image>
</toolbarbutton>
`);
childs.querySelector(".zen-workspace-actions").addEventListener("command", (event) => {
childs.querySelector(".zen-workspace-actions").addEventListener("command", ((event) => {
let button = event.target;
this._contextMenuId = button.closest("toolbarbutton[zen-workspace-id]").getAttribute("zen-workspace-id");
const popup = button.ownerDocument.getElementById(
"zenWorkspaceActionsMenu"
);
popup.openPopup(button, "after_end");
});
}).bind(this));
element.appendChild(childs);
element.onclick = (async () => {
if (event.target.closest(".zen-workspace-actions")) {
@@ -252,7 +257,7 @@ var ZenWorkspaces = {
${activeWorkspace.name}
</div>
`;
if (typeof activeWorkspace.icon === "undefined") {
if (!this.workspaceHasIcon(activeWorkspace)) {
button.querySelector(".zen-workspace-sidebar-icon").setAttribute("no-icon", "true");
}
}
@@ -323,22 +328,14 @@ var ZenWorkspaces = {
return;
}
let firstTab = undefined;
// Get the number of tabs that are hidden before we start hiding them
let numShownTabs = gBrowser.tabs.reduce((acc, tab) => {
return (tab.getAttribute("zen-workspace-id") === window.uuid) ? acc + 1 : acc;
}, 0);
let workspaces = await this._workspaces();
for (let workspace of workspaces.workspaces) {
workspace.used = workspace.uuid === window.uuid;
}
this.unsafeSaveWorkspaces(workspaces);
if (numShownTabs === gBrowser.tabs.length-1) {
// If all tabs are hidden, we need to create a new tab
// to show the workspace
this._createNewTabForWorkspace(window);
}
console.log("ZenWorkspaces: Changing workspace to", window.uuid);
for (let tab of gBrowser.tabs) {
if (tab.getAttribute("zen-workspace-id") === window.uuid) {
if (tab.getAttribute("zen-workspace-id") === window.uuid && !tab.pinned) {
if (!firstTab) {
firstTab = tab;
gBrowser.selectedTab = firstTab;
@@ -346,6 +343,9 @@ var ZenWorkspaces = {
gBrowser.showTab(tab);
}
}
if (typeof firstTab === "undefined") {
this._createNewTabForWorkspace(window);
}
for (let tab of gBrowser.tabs) {
if (tab.getAttribute("zen-workspace-id") !== window.uuid) {
gBrowser.hideTab(tab);
@@ -394,14 +394,9 @@ var ZenWorkspaces = {
// Context menu management
_contextMenuId: null,
async updateContextMenu(event) {
let target = event.target;
let workspace = target.closest("[zen-workspace-id]");
if (!workspace) {
return;
}
_contextMenuId = workspace.getAttribute("zen-workspace-id");
document.querySelector(`#PanelUI-zen-workspaces [zen-workspace-id="${_contextMenuId}"] .zen-workspace-actions`).setAttribute("active", "true");
async updateContextMenu(_) {
console.assert(this._contextMenuId, "No context menu ID set");
document.querySelector(`#PanelUI-zen-workspaces [zen-workspace-id="${this._contextMenuId}"] .zen-workspace-actions`).setAttribute("active", "true");
const workspaces = await this._workspaces();
let deleteMenuItem = document.getElementById("context_zenDeleteWorkspace");
if (workspaces.workspaces.length <= 1) {
@@ -412,7 +407,7 @@ var ZenWorkspaces = {
},
onContextMenuClose() {
let target = document.querySelector(`#PanelUI-zen-workspaces [zen-workspace-id="${_contextMenuId}"] .zen-workspace-actions`);
let target = document.querySelector(`#PanelUI-zen-workspaces [zen-workspace-id="${this._contextMenuId}"] .zen-workspace-actions`);
if (target) {
target.removeAttribute("active");
}
@@ -420,7 +415,7 @@ var ZenWorkspaces = {
},
async contextDelete() {
await this.removeWorkspace(_contextMenuId);
await this.removeWorkspace(this._contextMenuId);
}
};

View File

@@ -127,7 +127,7 @@
</panel>
<menupopup id="zenWorkspaceActionsMenu"
onpopupshowing="ZenWorkspaces.updateContextMenu(event);"
onpopupshowing="ZenWorkspaces.updateContextMenu(this);"
onpopuphidden="ZenWorkspaces.onContextMenuClose();">
<menuitem id="context_zenDeleteWorkspace" oncommand="ZenWorkspaces.contextDelete();" data-l10n-id="zen-workspaces-panel-context-delete"/>
</menupopup>

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index 3b97732d8035f07a2308f76f235702c70a5fa388..bed86f3014a239b4e7d50504d4b0bf457da3500c 100644
index 3b97732d8035f07a2308f76f235702c70a5fa388..edbc1ad66a84fd17b1674ff7852cdf01bef0c21b 100644
--- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js
@@ -552,19 +552,36 @@
@@ -130,7 +130,23 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..bed86f3014a239b4e7d50504d4b0bf45
for (let tab of movingTabs) {
tab.toggleAttribute("tabdrop-samewindow", true);
tab.style.transform = "translateX(" + newTranslateX + "px)";
@@ -1144,10 +1179,13 @@
@@ -1081,6 +1116,15 @@
return this._allTabs;
}
let children = Array.from(this.arrowScrollbox.children);
+ // Zen: We also need to exclude subgroups
+ // Zen: For example: tab-group(tab1, tab2), tab3, tab-group(tab4)
+ // Zen: In this case, we need to get [tab1, tab2, tab3, tab4]
+ // Zen: NOTE: There should be no tab-group inside of a tab-group
+ for (let i = 0; i < children.length; i++) {
+ if (children[i].classList.contains("zen-tab-group")) {
+ children.splice(i, 1, ...children[i].children);
+ }
+ }
children.pop();
this._allTabs = children;
return children;
@@ -1144,10 +1188,13 @@
}
_initializeArrowScrollbox() {
@@ -144,7 +160,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..bed86f3014a239b4e7d50504d4b0bf45
// Ignore underflow events:
// - from nested scrollable elements
// - for vertical orientation
@@ -1471,11 +1509,11 @@
@@ -1471,11 +1518,11 @@
for (let i = numPinned - 1; i >= 0; i--) {
let tab = tabs[i];
width += layoutData.pinnedTabWidth;
@@ -161,7 +177,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..bed86f3014a239b4e7d50504d4b0bf45
tab._pinnedUnscrollable = true;
}
this.style.setProperty(
@@ -1510,19 +1548,30 @@
@@ -1510,19 +1557,30 @@
}
}
@@ -201,7 +217,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..bed86f3014a239b4e7d50504d4b0bf45
let pinned = draggedTab.pinned;
let numPinned = gBrowser._numPinnedTabs;
@@ -1531,36 +1580,39 @@
@@ -1531,36 +1589,39 @@
pinned ? numPinned : undefined
);
@@ -252,7 +268,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..bed86f3014a239b4e7d50504d4b0bf45
}
draggedTab._dragData.translateX = translateX;
@@ -1593,11 +1645,11 @@
@@ -1593,11 +1654,11 @@
if (tabs[mid] == draggedTab && ++mid > high) {
break;
}
@@ -266,7 +282,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..bed86f3014a239b4e7d50504d4b0bf45
tabCenter
) {
low = mid + 1;
@@ -1620,16 +1672,16 @@
@@ -1620,16 +1681,16 @@
for (let tab of tabs) {
if (tab != draggedTab) {
let shift = getTabShift(tab, newIndex);
@@ -286,7 +302,7 @@ index 3b97732d8035f07a2308f76f235702c70a5fa388..bed86f3014a239b4e7d50504d4b0bf45
}
return 0;
}
@@ -1701,9 +1753,9 @@
@@ -1701,9 +1762,9 @@
// Slide the relevant tabs to their new position.
for (let t of this._getVisibleTabs()) {

View File

@@ -349,7 +349,9 @@ class Pages {
}
_openWelcomePage() {
gZenUIManager.openAndChangeToTab(kWelcomeURL);
gZenUIManager.openAndChangeToTab(kWelcomeURL, {
inBackground: true,
});
}
_displayCurrentPage() {

View File

@@ -340,7 +340,7 @@ toolbarbutton#scrollbutton-up {
display: none !important;
}
.tabbrowser-tab::after {
.tabbrowser-tab::after {/* Containers */
background: var(--identity-tab-color, transparent);
border-radius: 2px;
height: 80%;
@@ -362,15 +362,15 @@ toolbarbutton#scrollbutton-up {
position: relative !important;
}
.tabbrowser-tab:nth-last-child(1 of [pinned]) {
margin-bottom: 15px !important;
#tabbrowser-tabs:has(.tabbrowser-tab[pinned]) .tabbrowser-tab:nth-child(1 of :not([pinned])) {
margin-top: 15px !important;
position: relative;
overflow: visible;
& .tab-stack::after {
& .tab-stack::before {
content: '';
position: absolute;
bottom: -11px;
top: -11px;
left: 0;
width: 100%;
height: 1.5px;
@@ -521,12 +521,6 @@ panelmultiview {
#zen-appcontent-navbar-container #nav-bar {
z-index: 1;
opacity: 0;
transition: .2s;
}
#navigator-toolbox {
max-width: 1px;
min-width: 0;
}
#zen-appcontent-navbar-container #nav-bar {
@@ -541,7 +535,18 @@ panelmultiview {
width: -moz-available;
}
:root:has(
#navigator-toolbox {
position: absolute;
background: var(--zen-main-browser-background) !important;
height: 100%;
right: calc(100% - 5px);
}
#zen-sidebar-splitter {
display: none !important;
}
:root:not([inDOMFullscreen="true"]):has(
:is(
#navigator-toolbox:hover,
#navigator-toolbox *[open="true"]:not(tab),
@@ -555,20 +560,21 @@ panelmultiview {
max-height: unset;
overflow: visible;
opacity: 1;
background: transparent !important;
}
& #navigator-toolbox {
border-right: var(--zen-appcontent-border) !important;
width: fit-content !important;
padding: 5px;
padding: 10px;
position: unset;
right: unset;
}
& #zen-appcontent-navbar-container #nav-bar {
border-bottom: var(--zen-appcontent-border) !important;
}
:root:not([inDOMFullscreen="true"]) & #tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
& #tabbrowser-tabbox #tabbrowser-tabpanels .browserSidebarContainer {
margin-top: 10px !important;
}
}
@@ -588,6 +594,10 @@ panelmultiview {
margin: 0 !important;
}
}
& #zen-sidebar-splitter {
display: none !important;
}
}
/* Screenshots */
@@ -714,40 +724,69 @@ panelmultiview {
}
.tabbrowser-tab {
width: 100%;
&:hover .tab-close-button {
display: block !important;
}
& .tab-content {
position: relative;
&:not([pinned]) {
width: 100%;
&:hover .tab-close-button {
display: block !important;
}
& .tab-content {
position: relative;
width: 100%;
}
& .tab-stack {
justify-content: start;
padding: 10px;
width: 100% !important;
}
& .tab-label-container {
#tabbrowser-tabs:not([secondarytext-unsupported]) & {
display: flex;
align-items: center;
padding-left: 10px;
}
}
}
& .tab-stack {
justify-content: start;
padding: 10px;
&:active,
.zen-sidebar-panel-button:active {
transform: scale(0.96) !important;
}
&[pinned] {
margin: 0 !important;
}
}
#tabbrowser-arrowscrollbox::part(scrollbox) {
/* 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(30px, 1fr));
padding: 5px;
}
.tabbrowser-tab:not([pinned]) {
grid-column: 1 / -1;
}
.tabbrowser-tab[pinned] {
grid-column: span 1;
}
#zen-workspaces-button {
width: -moz-available !important;
}
.tab-label-container {
#tabbrowser-tabs:not([secondarytext-unsupported]) & {
display: flex;
align-items: center;
padding-left: 10px;
}
padding-left: 10px;
padding-right: 10px;
}
#zen-sidebar-icons-wrapper {
width: 100%;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: repeat(auto-fill, minmax(38px, 1fr));
transition: .1s;
}

View File

@@ -356,11 +356,14 @@
}
#PlacesChevron,
#urlbar-go-button,
#zen-expand-sidebar-button {
#urlbar-go-button {
list-style-image: url("arrow-right.svg") !important;
}
#zen-expand-sidebar-button {
list-style-image: url("move-tab.svg") !important;
}
.panel-header > .subviewbutton-back {
list-style-image: url("arrow-left.svg") !important;
}

View File

@@ -246,7 +246,6 @@
justify-content: center;
align-items: center;
display: flex;
font-weight: 600;
}
#PanelUI-zen-workspaces {

View File

@@ -53,10 +53,13 @@
margin-right: 0;
display: flex;
pointer-events: none;
transition: width 0.3s ease-in-out;
}
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel[hidden="true"]) {
display: none;
max-width: 0;
padding: 0;
margin: 0;
}
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel[pinned="true"]) {
@@ -144,6 +147,12 @@
animation: zen-sidebar-panel-animation-2 0.2s ease-in-out forwards;
}
#zen-sidebar-web-panel[hidden="true"][pinned="true"] {
display: flex;
pointer-events: none;
animation: zen-sidebar-panel-animation-reverse 0.2s ease-in-out forwards;
}
@keyframes zen-sidebar-panel-animation {
0% {
opacity: 0;
@@ -168,6 +177,22 @@
}
}
@keyframes zen-sidebar-panel-animation-reverse {
0% {
opacity: 1;
transform: translateX(0);
}
99% {
opacity: 0;
transform: translateX(-50px);
}
100% {
display: none !important;
}
}
#zen-sidebar-web-header,
#zen-sidebar-panels-wrapper {
width: 100%;

View File

@@ -193,12 +193,6 @@
display: none;
}
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
#zen-expand-sidebar-button {
display: block; /* TODO? */
}
}
@media not (-moz-bool-pref: "zen.view.sidebar-expanded") {
#navigator-toolbox {
width: 0 !important;

View File

@@ -0,0 +1,16 @@
diff --git a/toolkit/mozapps/update/updater/updater-common.build b/toolkit/mozapps/update/updater/updater-common.build
index 6c6d0adf6f56b66c06494b95982b4afae52de536..67e381659dba0c6938a12d16fe12bc2f3e2039ae 100644
--- a/toolkit/mozapps/update/updater/updater-common.build
+++ b/toolkit/mozapps/update/updater/updater-common.build
@@ -78,6 +78,11 @@ if link_with_nss:
"nss",
"signmar",
]
+ if CONFIG["OS_ARCH"] == "Linux":
+ # Zen: --enable-unverified-updates is enabled, the RPATH is not added
+ OS_LIBS += [
+ "-Wl,-rpath=\\$$ORIGIN",
+ ]
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
have_progressui = 1

View File

@@ -5,7 +5,7 @@
"binaryName": "zen",
"version": {
"product": "firefox",
"version": "128.0.2"
"version": "128.0.3"
},
"buildOptions": {
"generateBranding": true
@@ -27,7 +27,7 @@
"brandShortName": "Zen Browser",
"brandFullName": "Zen Browser",
"release": {
"displayVersion": "1.0.0-a.6",
"displayVersion": "1.0.0-a.7",
"github": {
"repo": "zen-browser/desktop"
},