Merge branch 'zen-browser:dev' into adds-search-to-icons

This commit is contained in:
Studio Movie Girl
2024-12-23 14:30:11 -06:00
committed by GitHub
60 changed files with 1349 additions and 722 deletions

5
.dockerignore Normal file
View File

@@ -0,0 +1,5 @@
node_modules
.git
.DS_Store
*.log
engine

View File

@@ -258,6 +258,7 @@ jobs:
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
retention-days: 5
name: zen.source.tar.gz
path: ./zen.source.tar.gz
@@ -321,13 +322,13 @@ jobs:
release-branch: ${{ inputs.update_branch }}
appimage:
name: AppImage build - Linux ${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}
name: AppImage build - Linux ${{ matrix.arch }}
permissions:
contents: write
runs-on: ubuntu-latest
strategy:
matrix:
arch: [x86_64, x86_64-v3, aarch64]
arch: [x86_64, aarch64]
needs: [linux]
steps:
- name: Checkout repository
@@ -350,7 +351,7 @@ jobs:
- name: Download Linux build
uses: actions/download-artifact@v4
with:
name: zen.linux-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.tar.bz2
name: zen.linux-${{ matrix.arch }}.tar.bz2
- name: Execute AppImage build
run: |
@@ -374,23 +375,25 @@ jobs:
ls -al
find .
ls -al "$APPDIR"
ARCH=${{ matrix.arch == 'aarch64' && 'aarch64' || 'x86_64' }} ./appimagetool-x86_64.AppImage --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 10 \
-u "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|desktop|latest|zen-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.AppImage.zsync" \
"$APPDIR" zen-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.AppImage
ARCH=${{ matrix.arch }} ./appimagetool-x86_64.AppImage --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 10 \
-u "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|desktop|latest|zen-${{ matrix.arch }}.AppImage.zsync" \
"$APPDIR" zen-${{ matrix.arch }}.AppImage
mkdir dist
mv zen*AppImage* dist/.
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: zen-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.AppImage
path: ./dist/zen-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.AppImage
retention-days: 5
name: zen-${{ matrix.arch }}.AppImage
path: ./dist/zen-${{ matrix.arch }}.AppImage
- name: Upload artifact (ZSync)
uses: actions/upload-artifact@v4
with:
name: zen-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.AppImage.zsync
path: ./dist/zen-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.AppImage.zsync
retention-days: 5
name: zen-${{ matrix.arch }}.AppImage.zsync
path: ./dist/zen-${{ matrix.arch }}.AppImage.zsync
release:
if: ${{ inputs.create_release || inputs.update_branch == 'twilight' }}
@@ -435,17 +438,14 @@ jobs:
run: |
cd updates-server
mkdir -p updates
cp -a ../linux_update_manifest_generic/. updates/
cp -a ../linux_update_manifest_specific/. updates/
cp -a ../linux_update_manifest_x86_64/. updates/
cp -a ../linux_update_manifest_aarch64/. updates/
if [[ $RELEASE_BRANCH == 'beta' ]]; then
cp -a ../.github/workflows/object/windows-x64-signed-generic/update_manifest/. updates/
cp -a ../.github/workflows/object/windows-x64-signed-specific/update_manifest/. updates/
cp -a ../.github/workflows/object/windows-x64-signed-x86_64/update_manifest/. updates/
cp -a ../.github/workflows/object/windows-x64-signed-arm64/update_manifest/. updates/
else
cp -a ../windows_update_manifest_generic/. updates/
cp -a ../windows_update_manifest_specific/. updates/
cp -a ../windows_update_manifest_x86_64/. updates/
cp -a ../windows_update_manifest_arm64/. updates/
fi
@@ -467,28 +467,21 @@ jobs:
with:
files: |
zen.source.tar.gz
zen.linux-generic.tar.bz2
zen.linux-specific.tar.bz2
zen.linux-x86_64.tar.bz2
zen.linux-aarch64.tar.bz2
zen-generic.AppImage
zen-generic.AppImage.zsync
zen-specific.AppImage
zen-specific.AppImage.zsync
zen-x86_64.AppImage
zen-x86_64.AppImage.zsync
zen-aarch64.AppImage
zen-aarch64.AppImage.zsync
zen.win-generic.zip
zen.win-specific.zip
zen.win-x86_64.zip
zen.win-arm64.zip
linux.mar
linux-generic.mar
linux-aarch64.mar
windows-generic.mar
windows.mar
windows-arm64.mar
macos-x86_64.mar
macos-aarch64.mar
zen.installer.exe
zen.installer-generic.exe
zen.installer-arm64.exe
zen.macos-x86_64.dmg
zen.macos-aarch64.dmg
@@ -510,28 +503,21 @@ jobs:
title: 'Beta build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})'
files: |
zen.source.tar.gz
zen.linux-generic.tar.bz2
zen.linux-specific.tar.bz2
zen.linux-x86_64.tar.bz2
zen.linux-aarch64.tar.bz2
zen-generic.AppImage
zen-generic.AppImage.zsync
zen-specific.AppImage
zen-specific.AppImage.zsync
zen-x86_64.AppImage
zen-x86_64.AppImage.zsync
zen-aarch64.AppImage
zen-aarch64.AppImage.zsync
.github/workflows/object/windows-x64-signed-generic/zen.win-generic.zip
.github/workflows/object/windows-x64-signed-specific/zen.win-specific.zip
.github/workflows/object/windows-x64-signed-x86_64/zen.win-x86_64.zip
.github/workflows/object/windows-x64-signed-arm64/zen.win-arm64.zip
linux.mar
linux-generic.mar
linux-aarch64.mar
.github/workflows/object/windows-x64-signed-generic/windows-generic.mar
.github/workflows/object/windows-x64-signed-specific/windows.mar
.github/workflows/object/windows-x64-signed-x86_64/windows.mar
.github/workflows/object/windows-x64-signed-arm64/windows-arm64.mar
macos-x86_64.mar
macos-aarch64.mar
.github/workflows/object/windows-x64-signed-specific/zen.installer.exe
.github/workflows/object/windows-x64-signed-generic/zen.installer-generic.exe
.github/workflows/object/windows-x64-signed-x86_64/zen.installer.exe
.github/workflows/object/windows-x64-signed-arm64/zen.installer-arm64.exe
zen.macos-x86_64.dmg
zen.macos-aarch64.dmg
@@ -592,8 +578,8 @@ jobs:
commit_user_email: zen-browser-auto@users.noreply.github.com
repository: ./flatpak
- name: Wait 4 minutes for the Flatpak repo to update
run: sleep 240
- name: Wait 2 minutes for the Flatpak repo to update
run: sleep 120
release-flatpak:
if: ${{ inputs.create_release && inputs.update_branch == 'beta' }}
@@ -609,10 +595,10 @@ jobs:
repository: flathub/io.github.zen_browser.zen
token: ${{ secrets.DEPLOY_KEY }}
- name: Download Linux generic build
- name: Download Linux x86_64 build
uses: actions/download-artifact@v4
with:
name: zen.linux-generic.tar.bz2
name: zen.linux-x86_64.tar.bz2
- name: Update repository
uses: actions/checkout@v4
@@ -634,7 +620,7 @@ jobs:
python3 ./zen-browser/scripts/prepare-flatpak-release.py \
--flatpak-archive archive.tar \
--version ${{ needs.build-data.outputs.version }} \
--linux-archive zen.linux-generic.tar.bz2 \
--linux-archive zen.linux-x86_64.tar.bz2 \
--output io.github.zen_browser.zen.yml \
--template-root ./zen-browser/flatpak
@@ -647,11 +633,12 @@ jobs:
run: |
rm -rf zen-browser
rm -rf archive.tar
rm -rf zen.linux-generic.tar.bz2
rm -rf zen.linux-x86_64.tar.bz2
- name: Upload Flatpak manifest
uses: actions/upload-artifact@v4
with:
retention-days: 5
name: io.github.zen_browser.zen.yml
path: ./io.github.zen_browser.zen.yml
@@ -672,53 +659,3 @@ jobs:
base: master
git-token: ${{ secrets.DEPLOY_KEY }}
delete-branch: true
release-homebrew-beta:
if: ${{ inputs.create_release && inputs.update_branch == 'beta' }}
permissions: write-all
name: Homebrew release for beta build
needs: [release, mac, build-data]
runs-on: macos-latest
steps:
- name: Setup Homebrew
uses: Homebrew/actions/setup-homebrew@master
with:
cask: true
test-bot: false
- name: Setup Git
uses: Homebrew/actions/git-user-config@master
with:
username: zen-browser-auto
- name: Bump cask
uses: Homebrew/actions/bump-packages@master
with:
token: ${{ secrets.DEPLOY_KEY }}
casks: zen-browser
release-homebrew-twilight:
if: ${{ inputs.create_release && inputs.update_branch == 'twilight' }}
permissions: write-all
name: Homebrew release for twilight build
needs: [release, mac, build-data]
runs-on: macos-latest
steps:
- name: Set up Homebrew
uses: Homebrew/actions/setup-homebrew@master
with:
cask: true
test-bot: false
- name: Setup git
uses: Homebrew/actions/git-user-config@master
with:
username: zen-browser-auto
- name: Bump cask
uses: Homebrew/actions/bump-packages@master
with:
token: ${{ secrets.DEPLOY_KEY }}
casks: zen-browser@twilight

65
.github/workflows/issue-metrics.yml vendored Normal file
View File

@@ -0,0 +1,65 @@
name: Monthly issue metrics
on:
workflow_dispatch:
schedule:
- cron: '3 2 1 * *'
jobs:
build:
name: issue metrics
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
token: ${{ secrets.DEPLOY_KEY }}
- name: Get dates for last month
shell: bash
run: |
# Get the current date
current_date=$(date +'%Y-%m-%d')
# Calculate the previous month
previous_date=$(date -d "$current_date -1 month" +'%Y-%m-%d')
# Extract the year and month from the previous date
previous_year=$(date -d "$previous_date" +'%Y')
previous_month=$(date -d "$previous_date" +'%m')
# Calculate the first day of the previous month
first_day=$(date -d "$previous_year-$previous_month-01" +'%Y-%m-%d')
# Calculate the last day of the previous month
last_day=$(date -d "$first_day +1 month -1 day" +'%Y-%m-%d')
echo "$first_day..$last_day"
echo "last_month=$first_day..$last_day" >> "$GITHUB_ENV"
echo "last_month_year=$previous_year" >> "$GITHUB_ENV"
- name: Run issue-metrics tool
uses: github/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.DEPLOY_KEY }}
HIDE_AUTHOR: true
HIDE_TIME_TO_ANSWER: true
SEARCH_QUERY: 'repo:zen-browser/desktop is:issue created:${{ env.last_month }} -reason:"not planned"'
- name: Move metrics to docs folder
run: |
mkdir -p docs/issue-metrics
rm -f docs/issue-metrics/${{ env.last_month_year }}_${{ env.last_month }}.md
mv issue_metrics.md docs/issue-metrics/${{ env.last_month_year }}_${{ env.last_month }}.md
- name: Remove metrisc JSON
run: |
rm -f issue_metrics.json
- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: 'Update monthly issue metrics'
commit_user_name: Zen Browser Robot
commit_user_email: zen-browser-auto@users.noreply.github.com

View File

@@ -20,8 +20,8 @@ jobs:
strategy:
fail-fast: false
matrix:
arch: [x86_64, x86_64-v3, aarch64]
name: Build Linux - ${{ matrix.arch == 'x86_64' && 'Generic' || matrix.arch == 'x86_64-v3' && 'Specific' || matrix.arch == 'aarch64' && 'aarch64' }}
arch: [x86_64, aarch64]
name: Build Linux - ${{ matrix.arch }}
steps:
- name: Free Disk Space (Ubuntu)
@@ -147,23 +147,26 @@ jobs:
- name: Rename artifacts
run: |
mv dist/zen-*.tar.bz2 "zen.linux-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.tar.bz2"
mv dist/output.mar linux${{ matrix.arch == 'x86_64' && '-generic' || matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar
mv dist/zen-*.tar.bz2 "zen.linux-${{ matrix.arch }}.tar.bz2"
mv dist/output.mar linux${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar
- name: Upload build artifact (binary)
uses: actions/upload-artifact@v4
with:
name: zen.linux-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.tar.bz2
path: ./zen.linux-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}.tar.bz2
retention-days: 5
name: zen.linux-${{ matrix.arch }}.tar.bz2
path: ./zen.linux-${{ matrix.arch }}.tar.bz2
- name: Upload build artifact (.mar)
uses: actions/upload-artifact@v4
with:
name: linux${{ matrix.arch == 'x86_64' && '-generic' || matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar
path: ./linux${{ matrix.arch == 'x86_64' && '-generic' || matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar
retention-days: 5
name: linux${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar
path: ./linux${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar
- name: Upload build artifact (update manifests)
uses: actions/upload-artifact@v4
with:
name: linux_update_manifest_${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'aarch64' }}
retention-days: 5
name: linux_update_manifest_${{ matrix.arch }}
path: ./dist/update

View File

@@ -36,8 +36,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
# note: This will use the version defined in '.python-version' by default
- name: Setup Git
run: |
@@ -177,17 +176,20 @@ jobs:
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
retention-days: 5
name: zen.macos-${{ matrix.arch }}.dmg
path: ./zen.macos-${{ matrix.arch }}.dmg
- name: Upload build artifact (.mar)
uses: actions/upload-artifact@v4
with:
retention-days: 5
name: macos-${{ matrix.arch }}.mar
path: ./macos-${{ matrix.arch }}.mar
- name: Upload build artifact (update manifests)
uses: actions/upload-artifact@v4
with:
retention-days: 5
name: macos_update_manifest_${{ matrix.arch }}
path: ./dist/update

View File

@@ -19,13 +19,11 @@ on:
jobs:
windows-profile-build:
name: |
Windows Profile Build - ${{ matrix.arch == 'x86_64' && 'generic' ||
matrix.arch == 'x86_64-v3' && 'specific' ||
matrix.arch == 'aarch64' && 'arm64' }}
Windows Profile Build - ${{ matrix.arch }}
strategy:
fail-fast: false
matrix:
arch: [x86_64, x86_64-v3, aarch64]
arch: [x86_64, aarch64]
runs-on: windows-latest
@@ -40,8 +38,8 @@ jobs:
- name: Setup Git
run: |
git config --global user.email "mauro-balades@users.noreply.github.com"
git config --global user.name "mauro-balades"
git config --global user.email "mr-cheff@users.noreply.github.com"
git config --global user.name "mr-cheff"
- name: Setup pnpm
run: npm install -g pnpm
@@ -50,14 +48,14 @@ jobs:
run: npm i -g @zen-browser/surfer
- name: Download artifact
if: ${{ matrix.arch == 'x86_64' }}
uses: actions/download-artifact@v4
with:
path: C:\artifact
name: ${{ matrix.arch == 'x86_64' && 'generic' ||
matrix.arch == 'x86_64-v3' && 'specific' ||
matrix.arch == 'aarch64' && 'generic' }}-zen-windows-profile-data-and-jarlog.zip
name: ${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}-zen-windows-profile-data-and-jarlog.zip
- name: Unpack artifact
if: ${{ matrix.arch == 'x86_64' }}
run: |
cd C:\artifact
ls
@@ -70,16 +68,19 @@ jobs:
C:\MozillaBuildSetup-Latest.exe /S | out-null
- name: Download Firefox and dependencies
if: ${{ matrix.arch == 'x86_64' }}
run: |
git config --global core.safecrlf false
pnpm surfer download
- name: Import patches
if: ${{ matrix.arch == 'x86_64' }}
env:
SURFER_NO_BRANDING_PATCH: true
run: pnpm surfer import
- name: Generate
if: ${{ matrix.arch == 'x86_64' }}
run: |
ls
$Env:USE_MINTTY = "0"
@@ -99,6 +100,7 @@ jobs:
timeout-minutes: 15
- name: Move profile data
if: ${{ matrix.arch == 'x86_64' }}
run: |
dir
dir engine
@@ -106,11 +108,11 @@ jobs:
mv engine/en-US.log en-US.log
- name: Upload artifacts
if: ${{ matrix.arch == 'x86_64' }}
uses: actions/upload-artifact@v4
with:
retention-days: 1
path: |
merged.profdata
en-US.log
name: windows-profdata-${{ matrix.arch == 'x86_64' && 'generic' ||
matrix.arch == 'x86_64-v3' && 'specific' ||
matrix.arch == 'aarch64' && 'arm64' }}
name: windows-profdata-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}

View File

@@ -21,13 +21,13 @@ on:
jobs:
windows-build:
name: Build Windows - ${{ matrix.arch == 'x86_64' && 'Generic' || matrix.arch == 'x86_64-v3' && 'Specific' || matrix.arch == 'aarch64' && 'ARM64' }}
name: Build Windows - ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arch: [x86_64, x86_64-v3, aarch64]
arch: [x86_64, aarch64]
steps:
- name: Free Disk Space (Ubuntu)
@@ -138,13 +138,13 @@ jobs:
- name: Download artifact (if use profdata)
uses: actions/download-artifact@v4
if: ${{ !inputs.generate-gpo }}
if: ${{ !inputs.generate-gpo && matrix.arch == 'x86_64' }}
with:
path: ~/artifact
name: windows-profdata-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'arm64' }}
name: windows-profdata-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}
- name: Show artifact info
if: ${{ !inputs.generate-gpo }}
if: ${{ !inputs.generate-gpo && matrix.arch == 'x86_64' }}
run: |
ls ~/artifact
ls ~/artifact/en-US.log
@@ -153,6 +153,7 @@ jobs:
chmod +x ~/artifact/merged.profdata
- name: Build
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
env:
SURFER_COMPAT: ${{ matrix.arch }}
run: |
@@ -166,6 +167,7 @@ jobs:
sh .github/workflows/src/release-build.sh
- name: Package
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
env:
SURFER_COMPAT: ${{ matrix.arch }}
run: |
@@ -182,7 +184,7 @@ jobs:
timeout-minutes: 15
- name: Move package for PGO upload
if: ${{ inputs.generate-gpo }}
if: ${{ inputs.generate-gpo && matrix.arch == 'x86_64' }}
run: |
set -x
mv ./zen.win64.zip ./zen.win64-pgo-stage-1.zip
@@ -190,15 +192,16 @@ jobs:
- name: Rename artifacts
if: ${{ !inputs.generate-gpo }}
run: |
mv ./zen.win64.zip zen.win-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'arm64' }}.zip
mv ./dist/output.mar windows${{ matrix.arch == 'x86_64' && '-generic' || matrix.arch == 'aarch64' && '-arm64' || '' }}.mar
mv ./dist/zen.installer.exe ./zen.installer${{ matrix.arch == 'x86_64' && '-generic' || matrix.arch == 'aarch64' && '-arm64' || '' }}.exe
mv ./zen.win64.zip zen.win-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}.zip
mv ./dist/output.mar windows${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.mar
mv ./dist/zen.installer.exe ./zen.installer${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.exe
- name: Upload artifact (PGO)
uses: actions/upload-artifact@v4
if: ${{ inputs.generate-gpo }}
if: ${{ inputs.generate-gpo && matrix.arch == 'x86_64' }}
with:
name: ${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'arm64' }}-${{ inputs.profile-data-path-archive }}
retention-days: 5
name: ${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}-${{ inputs.profile-data-path-archive }}
path: ./zen.win64-pgo-stage-1.zip
- name: Remove unnecessary files from obj
@@ -217,33 +220,38 @@ jobs:
if: ${{ !inputs.generate-gpo }}
uses: actions/upload-artifact@v4
with:
name: windows-x64-obj-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'arm64' }}
retention-days: 5
name: windows-x64-obj-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}
path: engine/obj-${{ matrix.arch == 'aarch64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/
- name: Upload artifact (if Twilight branch, binary)
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
uses: actions/upload-artifact@v4
with:
name: zen.win-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'arm64' }}.zip
path: ./zen.win-${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'arm64' }}.zip
retention-days: 5
name: zen.win-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}.zip
path: ./zen.win-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}.zip
- name: Upload artifact (if Twilight branch, installer)
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
uses: actions/upload-artifact@v4
with:
name: zen.installer${{ matrix.arch == 'x86_64' && '-generic' || matrix.arch == 'aarch64' && '-arm64' || '' }}.exe
path: ./zen.installer${{ matrix.arch == 'x86_64' && '-generic' || matrix.arch == 'aarch64' && '-arm64' || '' }}.exe
retention-days: 5
name: zen.installer${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.exe
path: ./zen.installer${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.exe
- name: Upload artifact (if Twilight branch, .mar)
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
uses: actions/upload-artifact@v4
with:
name: windows${{ matrix.arch == 'x86_64' && '-generic' || matrix.arch == 'aarch64' && '-arm64' || '' }}.mar
path: ./windows${{ matrix.arch == 'x86_64' && '-generic' || matrix.arch == 'aarch64' && '-arm64' || '' }}.mar
retention-days: 5
name: windows${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.mar
path: ./windows${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.mar
- name: Upload artifact (if Twilight branch, update manifests)
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
uses: actions/upload-artifact@v4
with:
name: windows_update_manifest_${{ matrix.arch == 'x86_64' && 'generic' || matrix.arch == 'x86_64-v3' && 'specific' || matrix.arch == 'aarch64' && 'arm64' }}
retention-days: 5
name: windows_update_manifest_${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}
path: ./dist/update

View File

@@ -1 +1 @@
* @mauro-balades
* @mr-cheff

View File

@@ -4,6 +4,7 @@
[![Downloads](https://img.shields.io/github/downloads/zen-browser/desktop/total.svg)](https://github.com/zen-browser/desktop/releases)
[![Crowdin](https://badges.crowdin.net/zen-browser/localized.svg)](https://crowdin.com/project/zen-browser)
[![Zen Release builds](https://github.com/zen-browser/desktop/actions/workflows/build.yml/badge.svg?branch=stable)](https://github.com/zen-browser/desktop/actions/workflows/build.yml)
✨ Experience tranquillity while browsing the web without people tracking you! Zen is a privacy-focused browser that blocks trackers, ads, and other unwanted content while offering the best browsing experience!
@@ -37,6 +38,26 @@ Zen is currently built using firefox version `133.0.3`! 🚀
Zen is an open-source project, and we welcome contributions from the community! Please take a look at the [contribution guidelines](./docs/contribute.md) before getting started!
### 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? 📈
### Versioning
Zen uses [Semantic Versioning](https://semver.org/) for versioning. Meaning, versions are displayed as `a.b.c-d.e` where:
- `a` is the major version
- `b` is the minor version
- `c` is the patch version
- `d` is the branch prefix
- `e` is the build number
### Branches
Zen is divided into 2 main branches. We use `dev` for development and `stable` for stable releases. The `dev` branch is where all the new features are added and where `twilight` builds are generated. The `stable` branch is where the stable releases are generated.
We divide into 2 branches in case there's any really important security update (for example) that needs to be released before the next stable release. This allows us to do patches without releasing unstable versions to the public.
## ⚡ 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](https://docs.zen-browser.app/benchmarks)!
@@ -54,11 +75,7 @@ If you dont see your OS listed below, that's because we already have it in our [
##### Winget
```ps
# Generic version
winget install --id Zen-Team.Zen-Browser
# Optimized version
winget install --id Zen-Team.Zen-Browser.Optimized
```
#### macOS
@@ -77,11 +94,7 @@ brew install --cask zen-browser
##### Arch-based distributions
```sh
# For generic version
yay -S zen-browser-bin
# For optimized version
yay -S zen-browser-avx2-bin
```
##### Other Linux distributions (AppImage with automated system integration)

View File

@@ -21,10 +21,8 @@ mkdir windsign-temp -ErrorAction SilentlyContinue
gh run download $GithubRunId --name windows-x64-obj-arm64 -D windsign-temp\windows-x64-obj-arm64
echo "Downloaded arm64 artifacts"
gh run download $GithubRunId --name windows-x64-obj-specific -D windsign-temp\windows-x64-obj-specific
echo "Downloaded specific artifacts"
gh run download $GithubRunId --name windows-x64-obj-generic -D windsign-temp\windows-x64-obj-generic
echo "Downloaded generic artifacts"
gh run download $GithubRunId --name windows-x64-obj-x86_64 -D windsign-temp\windows-x64-obj-x86_64
echo "Downloaded x86_64 artifacts"
#Wait-Job -Name "DownloadGitObjectsRepo"
@@ -48,34 +46,30 @@ function SignAndPackage($name) {
echo "Packaging $name"
$env:SURFER_SIGNING_MODE="sign"
$env:MAR="$PWD\\build\\winsign\\mar.exe"
if ($name -eq "generic") {
$env:SURFER_COMPAT="x86_64"
if ($name -eq "arm64") {
$env:SURFER_COMPAT="aarch64"
} else {
if ($name -eq "arm64") {
$env:SURFER_COMPAT="aarch64"
} else {
$env:SURFER_COMPAT="x86_64-v3"
}
$env:SURFER_COMPAT="x86_64"
}
echo "Compat Mode? $env:SURFER_COMPAT"
pnpm surfer package --verbose
# In the release script, we do the following:
# tar -xvf .github/workflows/object/windows-x64-signed-generic.tar.gz -C windows-x64-signed-generic
# tar -xvf .github/workflows/object/windows-x64-signed-x86_64.tar.gz -C windows-x64-signed-x86_64
# We need to create a tar with the same structure and no top-level directory
# Inside, we need:
# - update_manifest/*
# - windows.mar or windows-generic.mar
# - zen.installer.exe or zen.installer-generic.exe
# - zen.win-generic.zip or zen.win-specific.zip
# - windows.mar
# - zen.installer.exe
# - zen.win-x86_64.zip
echo "Creating tar for $name"
rm .\windsign-temp\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
mkdir windsign-temp\windows-x64-signed-$name
# Move the MAR, add the `-generic` suffix if needed
# Move the MAR, add the `-arm64` suffix if needed
echo "Moving MAR for $name"
if ($name -eq "generic" -or $name -eq "arm64") {
if ($name -eq "arm64") {
mv .\dist\output.mar windsign-temp\windows-x64-signed-$name\windows-$name.mar
} else {
mv .\dist\output.mar windsign-temp\windows-x64-signed-$name\windows.mar
@@ -83,7 +77,7 @@ function SignAndPackage($name) {
# Move the installer
echo "Moving installer for $name"
if ($name -eq "generic" -or $name -eq "arm64") {
if ($name -eq "arm64") {
mv .\dist\zen.installer.exe windsign-temp\windows-x64-signed-$name\zen.installer-$name.exe
} else {
mv .\dist\zen.installer.exe windsign-temp\windows-x64-signed-$name\zen.installer.exe
@@ -118,8 +112,7 @@ function SignAndPackage($name) {
}
SignAndPackage arm64
SignAndPackage specific
SignAndPackage generic
SignAndPackage x86_64
echo "All artifacts signed and packaged, ready for release!"
echo "Commiting the changes to the repository"
@@ -132,12 +125,11 @@ cd ..\..
# Cleaning up
echo "All done!"
echo "All the artifacts (Generic and Specific) are signed and packaged, get a rest now!"
echo "All the artifacts (x86_64 and arm46) are signed and packaged, get a rest now!"
Read-Host "Press Enter to continue"
echo "Cleaning up"
rmdir windsign-temp\windows-x64-obj-specific -Recurse -ErrorAction SilentlyContinue
rmdir windsign-temp\windows-x64-obj-generic -Recurse -ErrorAction SilentlyContinue
rmdir windsign-temp\windows-x64-obj-x86_64 -Recurse -ErrorAction SilentlyContinue
rmdir windsign-temp\windows-x64-obj-arm64 -Recurse -ErrorAction SilentlyContinue
echo "Opening visual studio code"

View File

@@ -24,9 +24,9 @@ export MOZ_SOURCE_CHANGESET=${changeset}
export MOZ_INCLUDE_SOURCE_INFO=1
ac_add_options --enable-application=browser
#ac_add_options --enable-clang-plugin
if test "$ZEN_RELEASE"; then
ac_add_options --enable-clang-plugin
ac_add_options --enable-bootstrap
ac_add_options --enable-release

View File

@@ -33,23 +33,6 @@ elif test "$SURFER_COMPAT" = "aarch64"; then
export CXXFLAGS="$CXXFLAGS -O3"
export LDFLAGS="$LDFLAGS -Wl,-O3"
export RUSTFLAGS="$RUSTFLAGS -C codegen-units=1 -Clink-args=--icf=safe"
elif test "$ZEN_RELEASE"; then
ac_add_options --target=x86_64-pc-linux
ac_add_options --enable-eme=widevine
# Enable Profile Guided Optimization
export MOZ_PGO=1
ac_add_options MOZ_PGO=1
# Optimization flags for general release
ac_add_options --enable-wasm-avx
ac_add_options --enable-optimize="-O3 -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mfma -maes -mpopcnt -mpclmul"
export CPPFLAGS="$CPPFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mfma -maes -mpopcnt -mpclmul"
export CXXFLAGS="$CXXFLAGS -O3 -flto=thin -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mfma -maes -mpopcnt -mpclmul"
export LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64-v3"
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64-v3 -C target-feature=+sse4.1 -C target-feature=+avx2 -C codegen-units=1 -Clink-args=--icf=safe"
fi
export VERBOSE=1

View File

@@ -25,7 +25,12 @@ fi
ac_add_options --disable-maintenance-service
ac_add_options --disable-bits-download
ac_add_options --disable-clang-plugin
if test "$SURFER_COMPAT" = "x86_64"; then
# FIXME: For some reason, the clang plugin is not working on generic x86_64 builds
ac_add_options --disable-clang-plugin
ac_add_options --target=x86_64-pc-windows-msvc
ac_add_options --enable-eme=widevine
@@ -47,18 +52,6 @@ elif test "$SURFER_COMPAT" = "aarch64"; then
export CXXFLAGS="-O2 -march=armv8.2-a+simd -mtune=cortex-a55"
export LDFLAGS="-Wl,-O2 -march=armv8.2-a+simd -mtune=cortex-a55"
export RUSTFLAGS="-C target-feature=+v8.2a -C codegen-units=1 -Ctarget-cpu=cortex-a55"
else
ac_add_options --target=x86_64-pc-windows-msvc
ac_add_options --enable-eme=widevine
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mfma -maes -ftree-vectorize -Xclang -w"
ac_add_options --enable-wasm-avx
export CFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mfma -maes -march=x86-64-v3"
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mfma -maes -march=x86-64-v3"
export CXXFLAGS="-O2 -flto=thin -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mfma -maes -march=x86-64-v3"
export LDFLAGS="-Wl,-O3 -march=x86-64-v3"
export RUSTFLAGS="-Clink-args=--icf=safe -C target-feature=+avx2 -C codegen-units=1 -Ctarget-cpu=x86-64-v3"
fi
#export 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"
@@ -69,10 +62,10 @@ if test "$ZEN_CROSS_COMPILING"; then
export CXXFLAGS="$CXXFLAGS -fprofile-generate -mllvm -enable-name-compression=false -mllvm -pgo-temporal-instrumentation -fprofile-update=atomic"
mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
ac_add_options --enable-profile-generate=cross
else
elif test "$SURFER_COMPAT" = "x86_64"; then
# Dont use PGO on aarch64 builds
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
fi

View File

@@ -0,0 +1,437 @@
# Issue Metrics
| Metric | Average | Median | 90th percentile |
| --- | --- | --- | ---: |
| Time to first response | 5 days, 12:21:32 | 12:10:22 | 21 days, 5:18:16 |
| Time to close | 12 days, 22:31:45 | 4 days, 4:45:32 | 38 days, 23:23:55 |
| Metric | Count |
| --- | ---: |
| Number of items that remain open | 211 |
| Number of items closed | 208 |
| Total number of items created | 419 |
| Title | URL | Time to first response | Time to close |
| --- | --- | --- | --- |
| Empty window on start-up | https://github.com/zen-browser/desktop/issues/3319 | 4:32:22 | None |
| Devtools don't open on expanded glance tabs | https://github.com/zen-browser/desktop/issues/3316 | 10 days, 8:42:46 | None |
| Inability to unload multiple tabs | https://github.com/zen-browser/desktop/issues/3314 | None | None |
| video playing windows go blank for split second | https://github.com/zen-browser/desktop/issues/3313 | None | None |
| Light mode makes some buttons look disabled | https://github.com/zen-browser/desktop/issues/3312 | 0:40:59 | 20 days, 19:57:32 |
| Tabs unloading with the feature disabled | https://github.com/zen-browser/desktop/issues/3311 | None | None |
| Default browser settings changes to firefox when i close the Zen | https://github.com/zen-browser/desktop/issues/3310 | None | None |
| zen.source.tar.gz is incorrectly named, should be .tar.zst instead | https://github.com/zen-browser/desktop/issues/3308 | None | None |
| Tab temporarely is compacted to the width of my sidebar before loading in when switching from a split-view | https://github.com/zen-browser/desktop/issues/3307 | None | None |
| Pre-assigned url to a container, and associate a container to a workspace, but that chain is broken | https://github.com/zen-browser/desktop/issues/3306 | None | 9 days, 21:18:59 |
| Hiding tab bar not working anymore and getting nulls next to the previous page button | https://github.com/zen-browser/desktop/issues/3305 | None | None |
| Tabs On Right Buggy when enabled in compact mode | https://github.com/zen-browser/desktop/issues/3304 | None | None |
| Accent colors nigh invisible in light mode | https://github.com/zen-browser/desktop/issues/3303 | None | None |
| PLEASE HELP: Zen Remotly unusable and Twilight lost gradient | https://github.com/zen-browser/desktop/issues/3302 | 5:03:09 | 16 days, 7:38:38 |
| workplace sites behind worplace VPN get Blocked | https://github.com/zen-browser/desktop/issues/3301 | None | None |
| Browser defaults to light mode even when the system prefers light mode | https://github.com/zen-browser/desktop/issues/3300 | 21 days, 3:19:32 | None |
| Memory Leaks in 1.0.1-a.22 making the broswer fill up all my RAM hanging my PC which only fixes by hard restart | https://github.com/zen-browser/desktop/issues/3299 | 3 days, 21:32:38 | None |
| Custom keyboard shortcuts lost | https://github.com/zen-browser/desktop/issues/3298 | None | None |
| Content of Office 365 Word becomes unfocused when zoomed in while in Split Mode | https://github.com/zen-browser/desktop/issues/3297 | None | None |
| Color bug on dark mode | https://github.com/zen-browser/desktop/issues/3296 | 11 days, 22:50:45 | None |
| Incorrect websites display after toggle letterboxing parameter | https://github.com/zen-browser/desktop/issues/3295 | 16 days, 6:36:16 | None |
| Tab completely loses interactivity (mouse & keyboard) and is only returned on page refresh | https://github.com/zen-browser/desktop/issues/3291 | None | None |
| Linux ARM64 builds missing from latest release | https://github.com/zen-browser/desktop/issues/3290 | 17:56:01 | None |
| Sidebar issue | https://github.com/zen-browser/desktop/issues/3288 | 2:52:05 | 22 days, 20:19:16 |
| Latest Linux builds 1.0.1-a.21+ doesn't respect Light mode. | https://github.com/zen-browser/desktop/issues/3285 | None | 0:51:58 |
| Search Autocomplete Overlapping with Page Content in Zen Browser | https://github.com/zen-browser/desktop/issues/3282 | None | None |
| Popup window not completely displaying in Zen, but fully displays in Fire Fox | https://github.com/zen-browser/desktop/issues/3281 | 2:52:03 | None |
| [Bug] On latest twilight(2024-11-28) colapsed sidebar makes icon overlap on the URL bar | https://github.com/zen-browser/desktop/issues/3280 | None | 4 days, 0:11:05 |
| system crash on arch linux + radeon vga | https://github.com/zen-browser/desktop/issues/3278 | None | None |
| cant type in any website that has a type here to search at the top | https://github.com/zen-browser/desktop/issues/3276 | None | None |
| I cant collapse my sidebar | https://github.com/zen-browser/desktop/issues/3275 | 0:08:42 | 2:43:33 |
| Release `1.0.1-a.22` running Firefox 132 | https://github.com/zen-browser/desktop/issues/3274 | 0:25:02 | None |
| release `1.0.1-a.22` for `mac intel`: download page return 404, due to wrong href in zen downloads page | https://github.com/zen-browser/desktop/issues/3272 | 12 days, 4:50:54 | None |
| Floating History broken after update ? | https://github.com/zen-browser/desktop/issues/3270 | None | 0:05:50 |
| Full screen bug | https://github.com/zen-browser/desktop/issues/3269 | 20 days, 15:03:49 | 23 days, 18:45:24 |
| Font Rendering on Google Sheets | https://github.com/zen-browser/desktop/issues/3268 | 12 days, 14:12:01 | 19 days, 0:20:28 |
| Compact mode is not compact | https://github.com/zen-browser/desktop/issues/3264 | 23 days, 9:54:59 | 23 days, 9:54:59 |
| Cannot move browser window with flexible spaces on left side of search bar | https://github.com/zen-browser/desktop/issues/3263 | None | 4 days, 17:29:57 |
| First page after running the app | https://github.com/zen-browser/desktop/issues/3262 | None | None |
| [Bug] Viewport renders over the URL menu? | https://github.com/zen-browser/desktop/issues/3261 | 0:59:55 | None |
| XDG Base Directory Specification Path in Linux | https://github.com/zen-browser/desktop/issues/3260 | 14 days, 15:59:29 | None |
| The window control buttons have moved to the right (macOS) | https://github.com/zen-browser/desktop/issues/3258 | None | None |
| New update broke Everything | https://github.com/zen-browser/desktop/issues/3257 | 0:18:25 | 4:39:41 |
| Please back collapsable side bar !!!!! | https://github.com/zen-browser/desktop/issues/3256 | 0:12:30 | 7:02:35 |
| the left side of the screen is blank | https://github.com/zen-browser/desktop/issues/3254 | None | None |
| Essential Tab Changing Workspaces when Opened | https://github.com/zen-browser/desktop/issues/3252 | None | None |
| Sidebar Problem | https://github.com/zen-browser/desktop/issues/3250 | 0:03:30 | 23 days, 12:56:20 |
| null on the left side of the window control on Mac | https://github.com/zen-browser/desktop/issues/3249 | 0:02:08 | None |
| Switched labels on settings | https://github.com/zen-browser/desktop/issues/3248 | 0:06:57 | 0:06:57 |
| Massive performance tank | https://github.com/zen-browser/desktop/issues/3246 | 1:29:20 | 1:29:20 |
| Cannot move windows by clicking on empty space | https://github.com/zen-browser/desktop/issues/3245 | 1:44:27 | 1:44:27 |
| Appearance on macOS Looks Strange | https://github.com/zen-browser/desktop/issues/3244 | 0:28:34 | 23 days, 15:40:51 |
| Search bar being cutoff | https://github.com/zen-browser/desktop/issues/3243 | 1:03:06 | None |
| Google Docs letters gibberish | https://github.com/zen-browser/desktop/issues/3241 | 4:10:57 | 23 days, 14:35:43 |
| URL bar still appears in Compact Mode after all elements have been hidden | https://github.com/zen-browser/desktop/issues/3240 | 0:34:25 | 8 days, 8:10:56 |
| Clearkey plugin crashed!! | https://github.com/zen-browser/desktop/issues/3239 | None | None |
| PDF viewer renders text incorrectly | https://github.com/zen-browser/desktop/issues/3238 | 12 days, 12:34:48 | 19 days, 11:38:32 |
| what is "null"? | https://github.com/zen-browser/desktop/issues/3237 | 2:13:43 | 6:20:47 |
| Sidebar width is removed | https://github.com/zen-browser/desktop/issues/3236 | 2:41:50 | 23 days, 19:38:09 |
| Audio problem in videos and music after update | https://github.com/zen-browser/desktop/issues/3235 | None | 0:47:20 |
| There are multiple virtual desktops, and some bugs may occur when creating windows. | https://github.com/zen-browser/desktop/issues/3234 | None | None |
| Sync and save data - Sign In NOT WORKING - Bad Request | https://github.com/zen-browser/desktop/issues/3233 | 12 days, 8:18:24 | None |
| Feedback on UI Glitches and Text Display Issues | https://github.com/zen-browser/desktop/issues/3232 | None | None |
| Clicking on pinned tab does not let sidebar collapse until defocus | https://github.com/zen-browser/desktop/issues/3231 | None | 8 days, 11:49:33 |
| Overflow indicators in the tab bar have become aggressive | https://github.com/zen-browser/desktop/issues/3230 | None | None |
| URL bar always visible bug | https://github.com/zen-browser/desktop/issues/3229 | None | 8 days, 12:36:45 |
| Sidebar buttons are bugged | https://github.com/zen-browser/desktop/issues/3227 | 0:07:17 | None |
| Major performance impact due to rounded corners implementation (laggy scrolling) | https://github.com/zen-browser/desktop/issues/3221 | 8:49:14 | None |
| Container name mis-aligned in the address bar | https://github.com/zen-browser/desktop/issues/3219 | None | 13 days, 0:06:59 |
| 'null' showing up on the top address bar | https://github.com/zen-browser/desktop/issues/3218 | 8:55:52 | 13 days, 0:08:59 |
| recent update (i suppose) deleted some data | https://github.com/zen-browser/desktop/issues/3216 | None | None |
| When 'Take Screenshot' dialog is open 'Save Full Page' option is out of screen | https://github.com/zen-browser/desktop/issues/3214 | 5:12:23 | None |
| Bug #2479 (unable to open tabs after sleep) reoccurred on latest version (a19/22) | https://github.com/zen-browser/desktop/issues/3210 | None | None |
| Potential Memory leak in Zen Browser | https://github.com/zen-browser/desktop/issues/3209 | 24 days, 2:58:56 | None |
| Sidebar Music Playback Resets Upon Reopening Sidebar After Recent Update | https://github.com/zen-browser/desktop/issues/3208 | None | None |
| [Twilight] Top Margin Missing in Browser | https://github.com/zen-browser/desktop/issues/3207 | 7:08:57 | 7 days, 11:49:39 |
| Twitch error 4000 and unable to play certain Youtube videos | https://github.com/zen-browser/desktop/issues/3205 | 5 days, 1:17:17 | None |
| Zen missing "Refresh Firefox" equivalent option in about:support | https://github.com/zen-browser/desktop/issues/3203 | None | None |
| New tab from new windows or forced new tabs do not match the selected extension new tab. | https://github.com/zen-browser/desktop/issues/3201 | None | None |
| [Twilight] Pinned Extensions are missing in the single the new zen.view.use-single-toolbar | https://github.com/zen-browser/desktop/issues/3200 | 6 days, 15:05:03 | None |
| Open Zen on Start Up Pop-Up Misaligned | https://github.com/zen-browser/desktop/issues/3199 | None | None |
| Zen Setting lost on update - expand tabs | https://github.com/zen-browser/desktop/issues/3198 | 2 days, 12:53:11 | 26 days, 9:26:10 |
| mute button is ugly | https://github.com/zen-browser/desktop/issues/3197 | 0:07:40 | None |
| Print tab rendered incorrectly. | https://github.com/zen-browser/desktop/issues/3195 | None | None |
| No Pre-release for macOS Intel Chips (Twlight) | https://github.com/zen-browser/desktop/issues/3192 | None | 6 days, 23:21:56 |
| Extension tab asks if I want to close all tabs on close | https://github.com/zen-browser/desktop/issues/3189 | None | None |
| Recent activity disappears | https://github.com/zen-browser/desktop/issues/3187 | None | None |
| split second black screen while playing youtube video | https://github.com/zen-browser/desktop/issues/3185 | None | 2 days, 14:59:14 |
| Can't see full photo on X (Twitter) | https://github.com/zen-browser/desktop/issues/3184 | 1 day, 20:30:29 | None |
| No more movement on the screen | https://github.com/zen-browser/desktop/issues/3181 | None | None |
| Pinned unloaded tabs showing only on hover when tabs aren't expanded in sidebar | https://github.com/zen-browser/desktop/issues/3180 | None | 27 days, 4:07:47 |
| Search Item Causes Overflow In Compact Toolbar | https://github.com/zen-browser/desktop/issues/3178 | None | None |
| Google Meet Zoom and Whatsapp Bugs | https://github.com/zen-browser/desktop/issues/3175 | None | None |
| "Change Theme Colors" menu is cut off | https://github.com/zen-browser/desktop/issues/3174 | 2 days, 14:56:50 | None |
| Scrolling tabs with mouse wheel on Compact mode | https://github.com/zen-browser/desktop/issues/3172 | 18 days, 12:44:08 | 27 days, 21:37:29 |
| Unable to see the list of open tabs with max pinned tabs in small window sizes | https://github.com/zen-browser/desktop/issues/3171 | 2:36:00 | None |
| Closing window with multiple instances of the browser doesn't close on macOS | https://github.com/zen-browser/desktop/issues/3165 | 27 days, 19:16:24 | None |
| While watching a video on YouTube, a pink thing suddenly appears and disappears. | https://github.com/zen-browser/desktop/issues/3164 | 2 days, 20:44:54 | None |
| App crashes when logging in to google from youtube | https://github.com/zen-browser/desktop/issues/3163 | 19 days, 3:49:34 | None |
| Hand Gesture Swipe on Sidebar Switches Multiple Spaces Instead of One | https://github.com/zen-browser/desktop/issues/3162 | 3 days, 17:50:35 | 3 days, 17:50:35 |
| Unresponsive for couple of seconds | https://github.com/zen-browser/desktop/issues/3161 | 3 days, 15:33:30 | None |
| Disabling Workspaces from Settings causes a gap to occur above tabs | https://github.com/zen-browser/desktop/issues/3160 | 1 day, 13:27:49 | None |
| weird color bug after logging in with mozilla account | https://github.com/zen-browser/desktop/issues/3159 | None | None |
| Compact mode hides sidebar on all windows instead of just the current one | https://github.com/zen-browser/desktop/issues/3156 | None | None |
| Browser window doesn't close after completing a pop up | https://github.com/zen-browser/desktop/issues/3155 | 7:22:57 | None |
| Workspace scrolling not working properly | https://github.com/zen-browser/desktop/issues/3153 | None | None |
| Answering a Google Fi call crashes the tab | https://github.com/zen-browser/desktop/issues/3151 | 30 days, 4:30:34 | None |
| Unable to use roughly 1/2 of the screen in Zen Twilight | https://github.com/zen-browser/desktop/issues/3148 | None | 8 days, 2:23:54 |
| Side Panels Theme Color Bleeding into Web Pages Without Specified Background Color (Transparent) in it's CSS. | https://github.com/zen-browser/desktop/issues/3147 | 2 days, 1:17:05 | 3 days, 23:05:43 |
| Expand Sidebar Missing On Zen Twilight | https://github.com/zen-browser/desktop/issues/3146 | None | 1 day, 5:14:44 |
| Refine auto-open Picture-in-Picture (PiP) Behavior to Exclude Background Video Elements | https://github.com/zen-browser/desktop/issues/3145 | None | None |
| Browser freezes after changing some keyboard shortcuts | https://github.com/zen-browser/desktop/issues/3142 | None | 1 day, 6:12:57 |
| expand on hover: Tab bar (sometimes) stays expanded on top of the rest without contracting again | https://github.com/zen-browser/desktop/issues/3141 | 30 days, 13:42:55 | None |
| Crashes everytime during google login | https://github.com/zen-browser/desktop/issues/3140 | None | None |
| Sync suggests getting the Zen mobile app | https://github.com/zen-browser/desktop/issues/3137 | None | None |
| Periodic flashing | https://github.com/zen-browser/desktop/issues/3136 | None | None |
| Extreme zoom | https://github.com/zen-browser/desktop/issues/3134 | None | None |
| Items with `backdrop-filter` overflow roundings | https://github.com/zen-browser/desktop/issues/3133 | 26 days, 5:16:12 | None |
| Tab crashing when loading a wav file from NotebookLM | https://github.com/zen-browser/desktop/issues/3129 | None | 11 days, 20:53:22 |
| Workspace menu moved to left | https://github.com/zen-browser/desktop/issues/3128 | None | None |
| Essential tabs reverting to about:blank | https://github.com/zen-browser/desktop/issues/3125 | None | 10:32:00 |
| Settings: Broken "Unsaved shortcut! Please safe it by clicking the "Escape" key after retyping it." warning | https://github.com/zen-browser/desktop/issues/3124 | 8 days, 23:32:39 | None |
| Does not open web pages of applications running on the web. | https://github.com/zen-browser/desktop/issues/3123 | None | 21 days, 14:42:28 |
| Initial window url not replaced | https://github.com/zen-browser/desktop/issues/3122 | None | None |
| Open in a new tab shortcut | https://github.com/zen-browser/desktop/issues/3119 | 9:08:40 | None |
| Pop-up windows add pinned tabs | https://github.com/zen-browser/desktop/issues/3116 | 13 days, 10:56:51 | None |
| Cookie notices appear briefly, despite uBo rule | https://github.com/zen-browser/desktop/issues/3114 | 30 days, 19:55:38 | None |
| if a tab is pinned then moved to essentials on startup its data is lost | https://github.com/zen-browser/desktop/issues/3112 | 1 day, 21:55:13 | None |
| About gfx.webrender.all | https://github.com/zen-browser/desktop/issues/3110 | 2:31:25 | 1 day, 0:05:30 |
| Problem with star-history in README.md | https://github.com/zen-browser/desktop/issues/3107 | 1 day, 12:28:26 | None |
| Login modal's callback directs to a random opened tab | https://github.com/zen-browser/desktop/issues/3106 | 20 days, 3:16:00 | None |
| Some tabs randomly stop working entirely | https://github.com/zen-browser/desktop/issues/3102 | 9:36:03 | None |
| Firefox Multi-Account Containers Extension not working in mac | https://github.com/zen-browser/desktop/issues/3101 | None | None |
| Appimaged Fails to Register Zen | https://github.com/zen-browser/desktop/issues/3100 | 1 day, 17:34:50 | None |
| Split tabs not saved correctly | https://github.com/zen-browser/desktop/issues/3098 | 31 days, 18:30:47 | 31 days, 18:30:47 |
| shield icon not aligned properly | https://github.com/zen-browser/desktop/issues/3097 | 21 days, 9:55:19 | None |
| When opening new window from taskbar tasks, the URL bar is visually focused but does not work | https://github.com/zen-browser/desktop/issues/3096 | None | None |
| when in compact mode, sidebar open when ever tab change or new tab | https://github.com/zen-browser/desktop/issues/3092 | None | 0:11:15 |
| Essential Tabs and session are not restored when exited (macOS) | https://github.com/zen-browser/desktop/issues/3090 | 33 days, 14:32:38 | None |
| All bookmark pages are open when startup | https://github.com/zen-browser/desktop/issues/3089 | None | 8 days, 8:54:11 |
| Pages have a transparent background instead of white | https://github.com/zen-browser/desktop/issues/3087 | 10:59:23 | 0:05:31 |
| 1.0.1-a19 Seems to Prevent Laptop from Going to Sleep (Intel MBP, Sequoia 15.1 and 15.2beta) | https://github.com/zen-browser/desktop/issues/3086 | None | 12:21:38 |
| Zen not showing in gnome on arch | https://github.com/zen-browser/desktop/issues/3085 | 1 day, 10:36:06 | None |
| Websites that dont specify `body` colour become unreadable due to default background colour | https://github.com/zen-browser/desktop/issues/3084 | None | 0:53:08 |
| Disabled right click menu on changing tab workspace | https://github.com/zen-browser/desktop/issues/3083 | 1:07:26 | 33 days, 15:08:53 |
| Can't Login to Pocket | https://github.com/zen-browser/desktop/issues/3081 | 9 days, 6:48:30 | None |
| Cannot bind shortcut to ctrl+1 | https://github.com/zen-browser/desktop/issues/3080 | 34 days, 6:46:30 | None |
| Zen crashes when trying to upload file to a website | https://github.com/zen-browser/desktop/issues/3079 | None | None |
| Keyboard shortcut Order | https://github.com/zen-browser/desktop/issues/3078 | None | None |
| SSL Certificate and Local Host | https://github.com/zen-browser/desktop/issues/3077 | None | None |
| Sidebar hover expansion interferes with notification | https://github.com/zen-browser/desktop/issues/3075 | None | None |
| Certificate issue on Discord's website when using Zen Browser | https://github.com/zen-browser/desktop/issues/3074 | None | 0:05:03 |
| Bookmark icon on the address bar become not clickable when keyboard shortcut Bookmark This Page deleted | https://github.com/zen-browser/desktop/issues/3073 | None | None |
| Zen Mods doesen't work | https://github.com/zen-browser/desktop/issues/3071 | None | None |
| Workspacetabs closing when opening another window from other workspace | https://github.com/zen-browser/desktop/issues/3070 | None | None |
| right click -open a new window cost lots time | https://github.com/zen-browser/desktop/issues/3069 | None | None |
| When logging in with google to reddit in the small opened window one of my pinned tabs opens | https://github.com/zen-browser/desktop/issues/3065 | None | 14 days, 3:56:19 |
| Switching between workspaces causes the focussed tab to be changed | https://github.com/zen-browser/desktop/issues/3063 | 3 days, 1:06:30 | None |
| Workspace selector icon is faded as if it's unloaded when sidebar is collapsed | https://github.com/zen-browser/desktop/issues/3062 | None | None |
| side panel padding is wack | https://github.com/zen-browser/desktop/issues/3061 | 1 day, 16:10:23 | 1 day, 16:10:23 |
| Unexpected New Window Behaviour With Tabliss/Bonjourr | https://github.com/zen-browser/desktop/issues/3060 | None | None |
| (MacOS) In compact mode, i can barely open zed's top bar | https://github.com/zen-browser/desktop/issues/3058 | None | 0:07:49 |
| Essential Tabs & Pinned workspace tabs behave fishy in multi-window scenarios | https://github.com/zen-browser/desktop/issues/3057 | 19:49:11 | None |
| "Pop up tabs" seem to open random tabs when they are no longer needed. | https://github.com/zen-browser/desktop/issues/3055 | 3:33:13 | 2 days, 1:29:43 |
| Tabs crashing in Twilight due to extensions such as Bitwarden. | https://github.com/zen-browser/desktop/issues/3054 | 1:07:25 | 9 days, 0:24:11 |
| Rounded viewport corners are not rounded on some websites | https://github.com/zen-browser/desktop/issues/3053 | 17 days, 19:58:04 | 34 days, 15:06:53 |
| unpinned sidebar's postion resets after every startup | https://github.com/zen-browser/desktop/issues/3052 | None | None |
| sometimes i get workspace switch animation while opening/closing tab | https://github.com/zen-browser/desktop/issues/3051 | 0:33:22 | None |
| [TWILIGHT] Bookmark Bar Forcing Tabs Max Size | https://github.com/zen-browser/desktop/issues/3050 | None | 29 days, 22:25:20 |
| Spell Checker Not Working for Languages Other Than English in Zen Browser | https://github.com/zen-browser/desktop/issues/3049 | 17:10:52 | 1 day, 20:34:08 |
| window background totally messed up aafter setting theme color [ websites which doesn't specify a background color and uses default css i guess ] | https://github.com/zen-browser/desktop/issues/3047 | 2:18:48 | 3:08:35 |
| Switching tabs to a different workspace is causing the sidebar to freeze | https://github.com/zen-browser/desktop/issues/3046 | 7 days, 23:34:11 | None |
| Unable to enable desktop notifications on side panel | https://github.com/zen-browser/desktop/issues/3045 | None | None |
| Missing Downloads Button and No Download Popup Notification | https://github.com/zen-browser/desktop/issues/3044 | 8:14:40 | 1 day, 22:07:00 |
| Cannot acquire geolocation | https://github.com/zen-browser/desktop/issues/3043 | None | None |
| the hover menu has inconsistent behavior with drop down menu | https://github.com/zen-browser/desktop/issues/3041 | None | None |
| Sidebar (for tabs) with different sizes for elements whille expanding | https://github.com/zen-browser/desktop/issues/3040 | 5 days, 15:38:10 | None |
| All Zen Mods disappeared | https://github.com/zen-browser/desktop/issues/3038 | None | 0:19:27 |
| Enabled new tab settings controls are invisible until you mouse over them | https://github.com/zen-browser/desktop/issues/3037 | 1 day, 5:50:58 | None |
| Full browser overflows | https://github.com/zen-browser/desktop/issues/3036 | 22 days, 11:05:26 | 33 days, 6:20:24 |
| Shortcuts interfere with website-specific shortcuts | https://github.com/zen-browser/desktop/issues/3031 | 1:00:45 | None |
| Tab Action keyboard shortcuts missing | https://github.com/zen-browser/desktop/issues/3030 | 10:57:58 | 22 days, 10:45:57 |
| There is an overlap with the bookmarks sidebar and the web content | https://github.com/zen-browser/desktop/issues/3029 | None | None |
| YouTube player stops loading videos after 59s | https://github.com/zen-browser/desktop/issues/3026 | 23 days, 17:33:10 | None |
| Transparent top bar and side panel only in prviate window | https://github.com/zen-browser/desktop/issues/3025 | None | None |
| Strange behaviour of Switch to tab when using pinned tabs and workspaces | https://github.com/zen-browser/desktop/issues/3024 | 10 days, 22:59:34 | None |
| ZEN deleted all my data | https://github.com/zen-browser/desktop/issues/3022 | 13:07:40 | None |
| Pop-up window missing close button | https://github.com/zen-browser/desktop/issues/3018 | 0:56:22 | None |
| Bookmark Toolbar Tweaks: title bar behaves abnormally in full screen mode with "Expand the bookmarks toolbar by hovering" enable | https://github.com/zen-browser/desktop/issues/3017 | None | 31 days, 2:14:55 |
| Glance window isn't focused | https://github.com/zen-browser/desktop/issues/3016 | None | None |
| Youtube video no audio | https://github.com/zen-browser/desktop/issues/3015 | None | None |
| Essentials tabs not working in new windows | https://github.com/zen-browser/desktop/issues/3012 | 7 days, 6:30:43 | None |
| Spotify web player skips songs. | https://github.com/zen-browser/desktop/issues/3011 | 22:49:15 | 37 days, 2:44:01 |
| [Twilight] Spamming Reload button on pinned tabs blanks it out. | https://github.com/zen-browser/desktop/issues/3009 | 2 days, 4:21:56 | 2 days, 7:19:21 |
| Cannot close or move pop-up login windows | https://github.com/zen-browser/desktop/issues/3008 | 3:27:47 | None |
| Metamask extension does not open | https://github.com/zen-browser/desktop/issues/3007 | None | 4 days, 21:58:00 |
| [Accessibility] Hard to tell when window is focused | https://github.com/zen-browser/desktop/issues/3004 | None | None |
| Weird Pinned Tabs Behaviour | https://github.com/zen-browser/desktop/issues/3003 | 8:54:42 | 5 days, 0:05:06 |
| When using compact mode for the sidebar, sometimes there is a blank space left behind instead of the sidebar. | https://github.com/zen-browser/desktop/issues/3002 | 4:39:41 | None |
| Gap between url bar and tabs when workspaces are disabled | https://github.com/zen-browser/desktop/issues/3001 | None | 0:02:07 |
| 'Secure connection failed' error with Instagram, Threads and Facebook | https://github.com/zen-browser/desktop/issues/2998 | None | None |
| Resetting URL on Pinned Tabs Clears Favicon | https://github.com/zen-browser/desktop/issues/2997 | 1 day, 14:37:17 | 1 day, 14:37:17 |
| Behaviour for Clicking "X" on Pinned Tab not Respecting Setting | https://github.com/zen-browser/desktop/issues/2994 | 1 day, 18:06:54 | 1 day, 18:06:54 |
| Swaping Spaces via swiping is buggy | https://github.com/zen-browser/desktop/issues/2992 | 1 day, 14:30:28 | None |
| Cant drag tabs to different workspaces | https://github.com/zen-browser/desktop/issues/2990 | 1 day, 23:32:22 | None |
| Pinned tabs completely confused. | https://github.com/zen-browser/desktop/issues/2989 | 0:03:14 | None |
| Essentials get restored as pinned tabs when restored | https://github.com/zen-browser/desktop/issues/2988 | None | 31 days, 7:01:17 |
| Zen hangs on startup | https://github.com/zen-browser/desktop/issues/2986 | 5 days, 10:01:11 | None |
| Major: Popup windows don't close and instead open pinned/essential tab | https://github.com/zen-browser/desktop/issues/2985 | 2:37:38 | 21 days, 1:07:50 |
| moving a tab to the workspace completely breaks the sidebar | https://github.com/zen-browser/desktop/issues/2980 | 4:56:38 | None |
| only the white space on the right allows to drag the window | https://github.com/zen-browser/desktop/issues/2977 | None | 32 days, 3:31:10 |
| Essentials not keeping favicon after restarting | https://github.com/zen-browser/desktop/issues/2976 | 2:56:11 | 2:56:11 |
| Can't open different tab while some tabs are in split view | https://github.com/zen-browser/desktop/issues/2973 | None | 17 days, 12:27:02 |
| Some hotkeys conflict so not working properly after open zen-browser for some time | https://github.com/zen-browser/desktop/issues/2972 | 3 days, 10:02:03 | 3 days, 10:02:02 |
| "Add to Essential" is not translated into turkish. | https://github.com/zen-browser/desktop/issues/2967 | 2 days, 12:24:51 | 2 days, 12:24:51 |
| Tab text misaligned | https://github.com/zen-browser/desktop/issues/2965 | None | 29 days, 2:15:41 |
| synced Multi-Account Containers will log you out on another device | https://github.com/zen-browser/desktop/issues/2964 | 12 days, 10:07:01 | None |
| When sending a tab to a diferent workspace it losses right clickability | https://github.com/zen-browser/desktop/issues/2963 | 1 day, 23:59:18 | 39 days, 5:44:41 |
| When I use multiple windows, the pinned tabs don't work in the container they are supposed to work in and the pinned tabs don't synchronize with the other windows. | https://github.com/zen-browser/desktop/issues/2959 | None | None |
| Black line at top of browser | https://github.com/zen-browser/desktop/issues/2956 | 10:16:39 | None |
| Tab Duplication Across Workspaces | https://github.com/zen-browser/desktop/issues/2953 | 1 day, 5:48:50 | 32 days, 4:22:23 |
| Switching Workspaces Creates New Tab Instead of Using Pinned Tab | https://github.com/zen-browser/desktop/issues/2951 | 7 days, 21:10:09 | None |
| Tab switches to the last tab when workspaces are changed | https://github.com/zen-browser/desktop/issues/2950 | 2:25:11 | 32 days, 6:22:29 |
| Pinning a tab upon browser startup closes the previously pinned tabs | https://github.com/zen-browser/desktop/issues/2949 | 0:03:01 | None |
| Zen gradient color is messing with some website's background color | https://github.com/zen-browser/desktop/issues/2948 | 0:20:01 | 0:58:04 |
| Cannot select essential tabs | https://github.com/zen-browser/desktop/issues/2943 | None | None |
| Grain texture isn't clipped at window corners | https://github.com/zen-browser/desktop/issues/2942 | 0:20:01 | None |
| Workspace emoji in list too small, cant read | https://github.com/zen-browser/desktop/issues/2938 | 1:56:40 | None |
| "Close Window" Shortcut is being ignored | https://github.com/zen-browser/desktop/issues/2936 | 11 days, 4:34:05 | None |
| Videos not respecting default Autoplay settings | https://github.com/zen-browser/desktop/issues/2935 | None | None |
| Expanding/collapsing tabs causes overflow/resize issues | https://github.com/zen-browser/desktop/issues/2931 | 4 days, 16:36:08 | None |
| DRM option in settings | https://github.com/zen-browser/desktop/issues/2929 | 4:34:15 | None |
| Search Engine choice at startup does not affect incognito mode | https://github.com/zen-browser/desktop/issues/2925 | 2:19:28 | None |
| Youtube playback dropping frames | https://github.com/zen-browser/desktop/issues/2914 | None | 0:52:34 |
| [FEATURE REQUEST] With the feature of assigning workspaces to a website and assigning containers to a website, when we want to open the website URL, the website will open in the workspaces we assign and in the container we assign. | https://github.com/zen-browser/desktop/issues/2913 | 0:18:13 | 1 day, 0:23:30 |
| [FEATURE REQUEST] I want to be able to assign containers when creating new workspaces. Is this possible? | https://github.com/zen-browser/desktop/issues/2912 | 0:26:49 | 1:03:33 |
| Pinned Tabs with only grid layout icons go away :c in the latest version | https://github.com/zen-browser/desktop/issues/2910 | 5:03:25 | None |
| Pinned tabs moving with you when changing workspaces | https://github.com/zen-browser/desktop/issues/2909 | 1:18:43 | None |
| When you expand the sidebar, the toolbar also moves to the right. | https://github.com/zen-browser/desktop/issues/2907 | 40 days, 8:25:52 | 40 days, 8:25:52 |
| Some symbols not working properly on Word files | https://github.com/zen-browser/desktop/issues/2906 | 1:49:38 | 1:49:38 |
| List all Tabs slow to render | https://github.com/zen-browser/desktop/issues/2905 | 2:06:49 | 2:06:49 |
| Pinned tabs showing as a list instead of a grid of icons | https://github.com/zen-browser/desktop/issues/2902 | 0:23:18 | 5 days, 15:24:26 |
| The security warning of Firefox is interpreted as a hover on the tab bar by the browser on Ubuntu | https://github.com/zen-browser/desktop/issues/2900 | None | None |
| Minor sidebar annoyance | https://github.com/zen-browser/desktop/issues/2898 | 1:31:41 | None |
| The "new tab button" (the one in the bottom) is in a different position depending on the type of window (normal and private) | https://github.com/zen-browser/desktop/issues/2897 | None | None |
| Weird gap between home button and tabs | https://github.com/zen-browser/desktop/issues/2895 | 3:27:15 | 21:10:39 |
| No Themeing Option When Workspaces is Disabled | https://github.com/zen-browser/desktop/issues/2894 | 18 days, 3:20:51 | None |
| Issue with Playing Crunchyroll Videos | https://github.com/zen-browser/desktop/issues/2892 | 2:47:27 | None |
| License issues with Arc_Palette | https://github.com/zen-browser/desktop/issues/2890 | 38 days, 6:28:36 | 38 days, 6:28:36 |
| Ability to disable max height for pinned tabs | https://github.com/zen-browser/desktop/issues/2887 | 2 days, 11:00:13 | None |
| Can't watch DRM content on Netflix | https://github.com/zen-browser/desktop/issues/2886 | 0:09:16 | 2:36:33 |
| blank at the top of the tab | https://github.com/zen-browser/desktop/issues/2885 | 5:34:05 | 5:39:58 |
| Bonjourr background image overlays rounded corners | https://github.com/zen-browser/desktop/issues/2884 | 4:26:18 | None |
| Keyboard shortcuts in series prematurely release modifier keys | https://github.com/zen-browser/desktop/issues/2882 | None | 31 days, 14:28:43 |
| Fade effect on the right of tabs do not apply to pinned tabs | https://github.com/zen-browser/desktop/issues/2881 | None | 31 days, 15:02:21 |
| Pinned tab opens in Pop-up after 'pop-up close' | https://github.com/zen-browser/desktop/issues/2877 | 1 day, 5:50:04 | None |
| Essentials do not transfer to newly opened windows | https://github.com/zen-browser/desktop/issues/2875 | 1:19:22 | None |
| When using a Side Web Panel, the back button on my mouse doesn't work as expected | https://github.com/zen-browser/desktop/issues/2874 | None | None |
| Theme reset ater moving through workspaces | https://github.com/zen-browser/desktop/issues/2873 | 7 days, 9:32:58 | None |
| Spacing between icons and tabs in the tab bar | https://github.com/zen-browser/desktop/issues/2869 | 0:16:02 | None |
| “Activate compact mode” has a spelling mistake in turkish | https://github.com/zen-browser/desktop/issues/2868 | None | None |
| Bug that the sidebar opens and closes when dragging the mouse left while the sidebar is hidden. | https://github.com/zen-browser/desktop/issues/2867 | 0:45:18 | 29 days, 13:15:52 |
| [FEATURE REQUEST] Suggestion to add new buttons and new features to the toolbar | https://github.com/zen-browser/desktop/issues/2865 | None | 14:26:29 |
| Pinned Tabs Ignored When Moving Between Workspaces, Regular Tabs Shown Instead | https://github.com/zen-browser/desktop/issues/2863 | 2:27:10 | None |
| When I do not enable workspace, the icon of workspace is still on the top of vertical tabs. | https://github.com/zen-browser/desktop/issues/2862 | 32 days, 13:24:38 | None |
| Issue where closing the last tab in Private Browsing does not close the window but switches to a Pinned Tab | https://github.com/zen-browser/desktop/issues/2861 | 3:35:44 | None |
| Url Select | https://github.com/zen-browser/desktop/issues/2858 | None | None |
| Compact Mode: The bookmarks toolbar is missing left padding | https://github.com/zen-browser/desktop/issues/2854 | None | None |
| Issue Clicking on Buttons during Onboarding (Windows) | https://github.com/zen-browser/desktop/issues/2849 | 23 days, 18:21:45 | 38 days, 23:11:49 |
| Sidebar Color Loss | https://github.com/zen-browser/desktop/issues/2843 | None | 0:04:15 |
| New window opens all the pinned tabs on both workspaces? | https://github.com/zen-browser/desktop/issues/2839 | 0:05:11 | None |
| (Request) Requesting for "+ new tab" button to be static and stable and doesnt go into hiding as scrolling or when multiple tabs are open. | https://github.com/zen-browser/desktop/issues/2835 | 1 day, 8:43:58 | None |
| Pinned tabs favicon disappears | https://github.com/zen-browser/desktop/issues/2832 | 13 days, 14:26:28 | 41 days, 17:08:27 |
| macOS: Closing a window's only/last tab does not close the window, like Firefox | https://github.com/zen-browser/desktop/issues/2831 | 1 day, 17:08:10 | None |
| Both the close and fullscreen button of glance misbehavior | https://github.com/zen-browser/desktop/issues/2827 | 20:28:54 | None |
| Web page is moving left and right on hover when using Expand on Hover | https://github.com/zen-browser/desktop/issues/2825 | None | 10:15:06 |
| video playback is completely broken | https://github.com/zen-browser/desktop/issues/2824 | 0:26:57 | 2 days, 0:24:51 |
| Zen Browser Support link broken/wrong | https://github.com/zen-browser/desktop/issues/2820 | None | 0:08:13 |
| Essentials URL not resetting on exit. | https://github.com/zen-browser/desktop/issues/2817 | 7:46:29 | 6 days, 0:03:05 |
| Pinned tabs and essentials appear in private mode | https://github.com/zen-browser/desktop/issues/2816 | 5:56:12 | 5 days, 2:01:29 |
| pinned tab bug | https://github.com/zen-browser/desktop/issues/2813 | 1 day, 6:33:29 | None |
| Freeze when click edit workspace | https://github.com/zen-browser/desktop/issues/2812 | None | 1 day, 0:53:49 |
| The confirmation window for closing does not appear and zen-browser cannot cancel the closing confirmation (freeze?) | https://github.com/zen-browser/desktop/issues/2811 | None | 1 day, 0:58:20 |
| Popup window bug | https://github.com/zen-browser/desktop/issues/2810 | 1 day, 15:14:48 | None |
| Workspace touchpad swap gesture wrong direction | https://github.com/zen-browser/desktop/issues/2808 | 20:08:53 | 39 days, 0:32:31 |
| Duplicate Workspace indicator on tab bar | https://github.com/zen-browser/desktop/issues/2805 | 1 day, 1:21:57 | None |
| ui is broken after update | https://github.com/zen-browser/desktop/issues/2804 | 7:26:24 | None |
| Workspace Indicator when sidebar is collapsed feels redundant | https://github.com/zen-browser/desktop/issues/2801 | 1 day, 3:37:39 | 17 days, 21:01:13 |
| Pinned & Essentials tabs unable to be unloaded at all. | https://github.com/zen-browser/desktop/issues/2800 | 1 day, 2:19:11 | None |
| Swipe up and down when sidebar is collapsed to change workspaces | https://github.com/zen-browser/desktop/issues/2797 | None | 17 days, 22:39:15 |
| Blank space above top tab | https://github.com/zen-browser/desktop/issues/2796 | 0:10:18 | None |
| unloaded pinned tabs do not show website icon | https://github.com/zen-browser/desktop/issues/2789 | 0:02:35 | 38 days, 15:15:12 |
| The linux version isn't updated? | https://github.com/zen-browser/desktop/issues/2781 | 18 days, 11:42:17 | None |
| New Updates - Bugs | https://github.com/zen-browser/desktop/issues/2780 | 1 day, 2:58:15 | None |
| Empty space between the first tab & the topbar | https://github.com/zen-browser/desktop/issues/2779 | 1:06:37 | None |
| Can't customize multiple buttons on customize toolbar | https://github.com/zen-browser/desktop/issues/2778 | 1 day, 2:51:22 | 4 days, 3:15:58 |
| Ram usage | https://github.com/zen-browser/desktop/issues/2777 | 0:17:22 | None |
| Automatic removal of extensions that I install | https://github.com/zen-browser/desktop/issues/2776 | None | 30 days, 20:37:59 |
| Can't open link with special scheme | https://github.com/zen-browser/desktop/issues/2774 | None | 1:08:09 |
| Fullscreen videos on double monitor | https://github.com/zen-browser/desktop/issues/2772 | None | None |
| Import all Tabs, Folders & Profiles from Arc Browser | https://github.com/zen-browser/desktop/issues/2768 | None | 0:05:20 |
| [Flatpak] Failed to create shader cache (Permission denied) | https://github.com/zen-browser/desktop/issues/2767 | 0:03:33 | 4 days, 6:13:02 |
| Pinned tabs disappear when using multiple browser windows | https://github.com/zen-browser/desktop/issues/2763 | 0:14:57 | 21:53:47 |
| PiP UI Aesthetic - Missing rounded corners | https://github.com/zen-browser/desktop/issues/2762 | 1:06:37 | 1:07:22 |
| Split view can't be resized vertically when bookmarks sidebar is open | https://github.com/zen-browser/desktop/issues/2761 | 1:25:45 | None |
| Password Manager Extension 'Dashlane' not working in zen anymore | https://github.com/zen-browser/desktop/issues/2759 | 3:42:04 | 4:30:15 |
| Zen browser keep getting crash when I use Gmail | https://github.com/zen-browser/desktop/issues/2756 | 5:03:29 | 35 days, 23:46:17 |
| Flatpak version still on .17 | https://github.com/zen-browser/desktop/issues/2755 | 0:13:50 | 2:38:25 |
| When I close glance view, it always switches to the next tab | https://github.com/zen-browser/desktop/issues/2754 | 0:02:54 | 0:26:16 |
| Zen Twilight: What's New hotlink in Settings not working | https://github.com/zen-browser/desktop/issues/2753 | 13:05:03 | 31 days, 19:21:08 |
| Sidebar text too small on macos | https://github.com/zen-browser/desktop/issues/2749 | None | 0:15:56 |
| Opening links in Zen AppImage causes 100% CPU usage | https://github.com/zen-browser/desktop/issues/2748 | 20:32:37 | None |
| Automatic Light/Dark theme does not switch automatically | https://github.com/zen-browser/desktop/issues/2747 | 4 days, 10:58:28 | 38 days, 23:52:10 |
| Prevent unloading tabs with forms | https://github.com/zen-browser/desktop/issues/2745 | None | None |
| If I choose to expand tabs by default, I can see a button on the bottom left that allows me to collapse/expand them. | https://github.com/zen-browser/desktop/issues/2744 | 0:21:54 | 31 days, 0:29:37 |
| arrow keys nor working | https://github.com/zen-browser/desktop/issues/2743 | 2 days, 10:58:58 | None |
| no workspace | https://github.com/zen-browser/desktop/issues/2742 | 4 days, 5:04:21 | None |
| Downloads going to App Data folder instead of set folder | https://github.com/zen-browser/desktop/issues/2736 | 13:04:35 | 13:04:35 |
| Keyboard shortcut binding issue on macOS | https://github.com/zen-browser/desktop/issues/2735 | 12:44:51 | None |
| Able to scroll the UI which brings space to the bottom of the screen and hides the addressbar | https://github.com/zen-browser/desktop/issues/2731 | 6:03:29 | 39 days, 7:25:44 |
| Settings don't sync properly | https://github.com/zen-browser/desktop/issues/2729 | 32 days, 12:22:43 | None |
| Choose your theme | https://github.com/zen-browser/desktop/issues/2727 | 5 days, 23:32:53 | None |
| "Zen Glance" Preview Window Blank After Opening and Closing New Glance Window | https://github.com/zen-browser/desktop/issues/2720 | 0:12:09 | 0:12:09 |
| Glances after closes, select next tab. | https://github.com/zen-browser/desktop/issues/2717 | 1:19:36 | 1:19:36 |
| Zen Browser won't open on MacOS Sequoï | https://github.com/zen-browser/desktop/issues/2715 | 2:43:53 | None |
| Glance in a pinned tab shifts icons unnaturally to the left | https://github.com/zen-browser/desktop/issues/2714 | 2:45:31 | 2:45:31 |
| [Twilight] Workspace strip not there in fresh install and on new profile | https://github.com/zen-browser/desktop/issues/2712 | 3 days, 10:34:17 | 3 days, 10:34:17 |
| [Twilight] texture slider is not working | https://github.com/zen-browser/desktop/issues/2711 | 0:39:53 | 1 day, 16:35:39 |
| MacOS compact mode ignores mouse on traffic buttons and collapses the bar | https://github.com/zen-browser/desktop/issues/2708 | None | None |
| the IDM extension occasionally fails | https://github.com/zen-browser/desktop/issues/2706 | 4:19:54 | 9 days, 9:39:36 |
| Bug in the Workspace theme color-picking UI | https://github.com/zen-browser/desktop/issues/2705 | 1:05:52 | 1:05:52 |
| Essentials not caching icons when Reset. | https://github.com/zen-browser/desktop/issues/2704 | 9 days, 21:03:04 | 9 days, 21:03:04 |
| Using "peak" with multiple tabs refocuses to the wrong tab | https://github.com/zen-browser/desktop/issues/2703 | 12:32:59 | 12:32:59 |
| Workspaces are not syncing properly. | https://github.com/zen-browser/desktop/issues/2702 | 6:50:52 | 1 day, 23:15:10 |
| Zen Twilight hijacks the "zen" PATH variable after installation | https://github.com/zen-browser/desktop/issues/2700 | None | None |
| When closing all tabs browser doesn't close | https://github.com/zen-browser/desktop/issues/2698 | 7:26:43 | None |
| Missing support for the Intel IPU6 WebCams (unlike Firefox) | https://github.com/zen-browser/desktop/issues/2693 | None | None |
| Unusable since I changed the app name on macOS | https://github.com/zen-browser/desktop/issues/2687 | None | 2:36:11 |
| Auto-PIP doesn't work when switching desktops [MAC-OS] | https://github.com/zen-browser/desktop/issues/2682 | None | None |
| Cannot share screen/window on MacOS | https://github.com/zen-browser/desktop/issues/2679 | 34 days, 18:07:19 | None |
| bug : Zen glance goes to next tab on closing glance instead of previous | https://github.com/zen-browser/desktop/issues/2677 | 13:33:57 | 22:58:39 |
| Add an animation for the downloading icon when the time left is not determined | https://github.com/zen-browser/desktop/issues/2673 | None | 1 day, 12:42:45 |
| Unloading Tabs | https://github.com/zen-browser/desktop/issues/2672 | 0:19:15 | 1 day, 13:17:19 |
| Text rendering is blurry and glitchy on second monitor | https://github.com/zen-browser/desktop/issues/2671 | 1 day, 13:20:19 | 39 days, 4:33:27 |
| [twilight] if a tab is pinned to essentials it can no longer be pinned regularly | https://github.com/zen-browser/desktop/issues/2667 | 2:56:51 | 2:59:18 |
| [Bug] Right Click Sidebar in Compact Mode. | https://github.com/zen-browser/desktop/issues/2663 | 34 days, 23:45:02 | 45 days, 22:02:03 |
| Glance jumps to the first unpinned tab | https://github.com/zen-browser/desktop/issues/2660 | 7:25:08 | 2 days, 2:54:22 |
| Drag and drop for sidebar widening and shrinking is offset seems like can't widen sidebar. | https://github.com/zen-browser/desktop/issues/2659 | None | 31 days, 7:36:24 |
| Tab Management Issue | https://github.com/zen-browser/desktop/issues/2658 | 13:56:19 | 2 days, 3:38:16 |
| Can't install Zen Mods | https://github.com/zen-browser/desktop/issues/2657 | None | 4:07:58 |
| New tab created on shifting workspaces | https://github.com/zen-browser/desktop/issues/2655 | 1:46:55 | 31 days, 9:25:13 |
| Cannot watch anything on netflix | https://github.com/zen-browser/desktop/issues/2653 | 5:26:42 | 1 day, 12:21:51 |
| Tab Accessibility Issue in Zen Browser | https://github.com/zen-browser/desktop/issues/2652 | 2 days, 2:51:42 | 10 days, 12:29:15 |
| Make Workspaces Keep Cookies Separate, Similar to Firefox Multi-Account Containers | https://github.com/zen-browser/desktop/issues/2650 | None | 0:35:25 |
| Left Active Window borders in Split View doesn't render correctly. | https://github.com/zen-browser/desktop/issues/2647 | 0:54:40 | 36 days, 4:28:13 |
| Can not build on Windows (Locales folder issue) | https://github.com/zen-browser/desktop/issues/2645 | 22:18:09 | None |
| Browser fails to reopen after restoring default shortcuts and restarting | https://github.com/zen-browser/desktop/issues/2643 | 35 days, 16:34:17 | 40 days, 11:53:43 |
| Picture-In-Picture window doesn't stay on top in KDE Plasma | https://github.com/zen-browser/desktop/issues/2641 | None | None |
| Zen-Components just went private. | https://github.com/zen-browser/desktop/issues/2640 | 0:54:45 | 1:16:23 |
| Twitch freezing in Zen | https://github.com/zen-browser/desktop/issues/2638 | 27 days, 23:41:20 | 40 days, 16:06:49 |
| last update (to 1.0.1-a.14) reset "How to expand tabs" setting | https://github.com/zen-browser/desktop/issues/2626 | 6:20:36 | 8:23:32 |
| Multiple new tab button | https://github.com/zen-browser/desktop/issues/2624 | 11:47:45 | 11:47:45 |
| FireFox PWA extension runtime is not recognized even after being installed | https://github.com/zen-browser/desktop/issues/2623 | 16 days, 12:09:42 | None |
| Typo in Settings > Shortcuts (about:preferences#zenCKS) for Bookmark Tabs | https://github.com/zen-browser/desktop/issues/2621 | 1:19:28 | None |
| Old alert after updating all mods | https://github.com/zen-browser/desktop/issues/2616 | None | 22:23:28 |
| Keyboard navigation | https://github.com/zen-browser/desktop/issues/2615 | 6 days, 16:37:16 | 47 days, 1:23:07 |
| Persist glance on tab switch | https://github.com/zen-browser/desktop/issues/2612 | None | 3 days, 20:17:58 |
| Blury Webpages on a 32:9 window | https://github.com/zen-browser/desktop/issues/2611 | None | 0:11:09 |
| Render flickering | https://github.com/zen-browser/desktop/issues/2610 | None | 38 days, 10:38:36 |
| Can't see downloads in Toolbar | https://github.com/zen-browser/desktop/issues/2603 | None | 11 days, 0:27:27 |
| Zen not remembering where the tabs opened in the previous sessions. | https://github.com/zen-browser/desktop/issues/2601 | 16:46:28 | None |
| [Twilight] Show bookmarks toolbar freezes & flickers | https://github.com/zen-browser/desktop/issues/2600 | None | 0:24:46 |
| Incorrect image for "Hide Tab Bar" and "Hide Top Bar" in Theme Settings | https://github.com/zen-browser/desktop/issues/2597 | 0:11:30 | 5:46:37 |
| Scroll Bar not working in vertical tabs | https://github.com/zen-browser/desktop/issues/2596 | 10 days, 6:06:10 | 42 days, 0:21:25 |
| Opening Find makes the whole web content jump | https://github.com/zen-browser/desktop/issues/2594 | 5:30:19 | None |
| Video Emebeds fail to play | https://github.com/zen-browser/desktop/issues/2593 | 14 days, 0:48:37 | None |
| Pinned tabs in a workspace create a blank space between the end of the tab scroll region and the workspace buttons in another workspace with fewer tabs | https://github.com/zen-browser/desktop/issues/2592 | 7 days, 15:54:43 | 49 days, 7:40:42 |
| Icons overlay each other in toolbar when resizing the window | https://github.com/zen-browser/desktop/issues/2590 | None | 1 day, 11:23:01 |
| Sidebar hover and right click makes the sidebar dissapear | https://github.com/zen-browser/desktop/issues/2587 | 13 days, 8:25:06 | None |
| At Glance - go backward / go forward | https://github.com/zen-browser/desktop/issues/2584 | 4 days, 17:08:25 | 4 days, 17:08:35 |
| Only Create New Tabs When a URL is Loaded | https://github.com/zen-browser/desktop/issues/2582 | 0:50:53 | 0:50:53 |
| REQUEST: I need the old switch to next tab in keyboard shortcuts | https://github.com/zen-browser/desktop/issues/2581 | 7 days, 23:34:33 | 7 days, 23:34:33 |
| Sidebar does not appear when hovered | https://github.com/zen-browser/desktop/issues/2579 | 7:20:14 | 20:32:59 |
| Glance in page opened from Glance | https://github.com/zen-browser/desktop/issues/2575 | None | 8 days, 21:14:19 |
| [bug] Layout issues with Compact Mode enabled & Tabs on Right | https://github.com/zen-browser/desktop/issues/2574 | 2 days, 19:56:38 | 49 days, 15:48:59 |
| Unable to add perplexity.ai as default search engine | https://github.com/zen-browser/desktop/issues/2572 | 4:10:04 | 14:00:57 |
| Tabs Do Not Expand On Hover After Toggling Compact Mode | https://github.com/zen-browser/desktop/issues/2569 | 6 days, 18:42:45 | None |
| Title bar does not lose focus after using URL bar in compact mode | https://github.com/zen-browser/desktop/issues/2568 | 16 days, 18:39:13 | 20 days, 11:52:21 |
| cannot create workspaces | https://github.com/zen-browser/desktop/issues/2567 | 1:26:45 | 9 days, 0:19:56 |
| Tabs dont react after not using for some time | https://github.com/zen-browser/desktop/issues/2566 | 9:38:14 | 30 days, 15:51:04 |
| hotkey "Toggle side bar" doesn't work | https://github.com/zen-browser/desktop/issues/2564 | 3:00:58 | 3:05:41 |
| Tab panel doesn't work after move some tab to another workspace | https://github.com/zen-browser/desktop/issues/2562 | 2 days, 19:16:36 | 50 days, 0:17:12 |
| Glance window breaks Zen if closed with CTRL + W shortcut on Windows | https://github.com/zen-browser/desktop/issues/2551 | 0:42:23 | 4 days, 3:18:01 |
| Blurry viewport on Linux | https://github.com/zen-browser/desktop/issues/2550 | None | 14 days, 3:19:43 |
| Glance is launching links in main window and Glance window | https://github.com/zen-browser/desktop/issues/2546 | 5 days, 22:40:22 | 6 days, 2:00:07 |
| There is no New Tab button on sidebar | https://github.com/zen-browser/desktop/issues/2543 | None | 0:13:58 |
| Websites appear blurry with non-standard aspect ratios (ultra-wide) | https://github.com/zen-browser/desktop/issues/2541 | 2 days, 2:54:09 | None |
| Duplicate New tab button added when closing an new tab | https://github.com/zen-browser/desktop/issues/2539 | None | 0:07:45 |
| Closing last tab doesn't close the broswer window | https://github.com/zen-browser/desktop/issues/2537 | 1:22:17 | 6 days, 1:24:16 |
| Glance when closed jumps to another tab and not to the original tab | https://github.com/zen-browser/desktop/issues/2535 | 0:31:34 | 6 days, 1:53:32 |
| Closing Glance mode tab takes to the next tab automatically | https://github.com/zen-browser/desktop/issues/2534 | None | 0:02:05 |
| No way to hide Bookmarks toolbar. | https://github.com/zen-browser/desktop/issues/2532 | 0:32:12 | 45 days, 15:03:06 |
| Deformed icons on bookmarks bar when in "Density mode" is set to "Touch" | https://github.com/zen-browser/desktop/issues/2531 | 13 days, 0:51:03 | 46 days, 7:10:55 |
| Empty tab bar is shown on opening | https://github.com/zen-browser/desktop/issues/2530 | 1:31:47 | None |
| when opening a link in split view it forms a new tab | https://github.com/zen-browser/desktop/issues/2529 | 31 days, 8:32:44 | 39 days, 4:52:47 |
| The fullscreen button and close button in glance both close the window. | https://github.com/zen-browser/desktop/issues/2528 | 2:17:17 | 45 days, 17:48:29 |
| Glance issues - a.17 | https://github.com/zen-browser/desktop/issues/2526 | 0:39:39 | 31 days, 8:30:40 |
| Pinned and Starred Tabs - pin tabs in just the current workspace or across all | https://github.com/zen-browser/desktop/issues/2525 | None | 0:48:10 |
| Cant move tab to existing new window | https://github.com/zen-browser/desktop/issues/2524 | 2:03:18 | 6 days, 12:34:47 |
| [BUG] glance-close focuses next-tab | https://github.com/zen-browser/desktop/issues/2520 | 2:25:28 | 2:25:28 |
| Clear instructions for Updating App Images | https://github.com/zen-browser/desktop/issues/2518 | 31 days, 13:24:28 | None |
| Can't move new tab toolbar | https://github.com/zen-browser/desktop/issues/2517 | 1:22:26 | 7:58:34 |
| Fading edge effect on the tab sidebar does not apply to entries below (and including) the selected tab | https://github.com/zen-browser/desktop/issues/2516 | 31 days, 13:56:06 | None |
| Background Color Issue in Zen Browser | https://github.com/zen-browser/desktop/issues/2514 | 4:55:19 | 0:12:23 |
| Empty pinned new tab opening a url opens in a new page | https://github.com/zen-browser/desktop/issues/2513 | 31 days, 14:11:12 | 31 days, 14:24:17 |
| Annoying border radius effect | https://github.com/zen-browser/desktop/issues/2512 | 2:00:01 | 50 days, 8:13:50 |
| Dragging a pinned tab unpins the tab | https://github.com/zen-browser/desktop/issues/2508 | 31 days, 14:50:43 | 44 days, 6:57:18 |
| Crash when dragging an `<a>` element | https://github.com/zen-browser/desktop/issues/2504 | None | 0:04:33 |
| Ability to make the web panel wider | https://github.com/zen-browser/desktop/issues/2503 | 10:34:58 | 10:35:16 |
_This report was generated with the [Issue Metrics Action](https://github.com/github/issue-metrics)_
Search query used to find these items: `repo:zen-browser/desktop is:issue created:2024-11-01..2024-11-30 -reason:"not planned"`

View File

@@ -1,30 +0,0 @@
# 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

@@ -44,7 +44,7 @@ modules:
sources:
- type: archive
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-generic.tar.bz2
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-x86_64.tar.bz2
sha256: {linux_sha256}
strip-components: 0

2
l10n

Submodule l10n updated: bb99a55c2d...b1bf9efa93

View File

@@ -33,7 +33,7 @@
},
"homepage": "https://github.com/zen-browser/core#readme",
"dependencies": {
"@zen-browser/surfer": "^1.6.4"
"@zen-browser/surfer": "^1.7.0"
},
"devDependencies": {
"husky": "^9.1.5",

10
pnpm-lock.yaml generated
View File

@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@zen-browser/surfer':
specifier: ^1.6.4
version: 1.6.4
specifier: ^1.7.0
version: 1.7.0
devDependencies:
husky:
specifier: ^9.1.5
@@ -119,8 +119,8 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
'@zen-browser/surfer@1.6.4':
resolution: {integrity: sha512-JmTHLHTbTLPgrakdU/m1KQgetPMQNGjYgGGVoi2AenvVDlJf3j+L2it0XehAqRFIQhXmbEuF1nSDV4Vla/vUUg==}
'@zen-browser/surfer@1.7.0':
resolution: {integrity: sha512-LKpMfcXvzf9VmXHydVF9sO4srtTdgjdrNYHHwDucNmnqIdamIYmP7KWAlZViohdBLdXPWODYY0IsZPAKNf3BCg==}
hasBin: true
ansi-escapes@7.0.0:
@@ -1003,7 +1003,7 @@ snapshots:
'@types/node@17.0.45': {}
'@zen-browser/surfer@1.6.4':
'@zen-browser/surfer@1.7.0':
dependencies:
'@resvg/resvg-js': 1.4.0
async-icns: 1.0.2

View File

@@ -0,0 +1,20 @@
gh_bulk_delete_workflow_runs() {
repo=$1
# Ensure the repo argument is provided
if [[ -z "$repo" ]]; then
echo "Usage: gh_bulk_delete_workflow_runs <owner/repo>"
return 1
fi
runs=$(gh api repos/$repo/actions/runs --paginate | jq -r '.workflow_runs[] | select(.conclusion == "failure") | .id')
while IFS= read -r run; do
echo "Deleting run https://github.com/$repo/actions/runs/$run"
gh api -X DELETE repos/$repo/actions/runs/$run --silent
done <<< "$runs"
echo "All workflow runs for $repo have been deleted."
}
gh_bulk_delete_workflow_runs $1

View File

@@ -1,179 +0,0 @@
// 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/.
//
/* You may copy+paste this file and use it as it is.
*
* If you make changes to your about:config while the program is running, the
* changes will be overwritten by the user.js when the application restarts.
*
* To make lasting changes to preferences, you will have to edit the user.js.
*/
/****************************************************************************
* Betterfox *
* "Ad meliora" *
* version: 130 *
* url: https://github.com/yokoffing/Betterfox *
****************************************************************************/
/****************************************************************************
* SECTION: FASTFOX *
****************************************************************************/
/** GENERAL ***/
//pref("content.notify.interval", 100000); // (.10s); alt=500000 (.50s)
/** GFX ***/
pref("gfx.canvas.accelerated.cache-items", 32768);
pref("gfx.canvas.accelerated.cache-size", 4096);
pref("gfx.content.skia-font-cache-size", 80);
/** MEDIA CACHE ***/
pref("media.memory_cache_max_size", 1048576);
pref("media.cache_readahead_limit", 9000);
pref("media.cache_resume_threshold", 3600);
pref("media.memory_caches_combined_limit_kb", 2560000);
/** IMAGE CACHE ***/
pref("image.mem.decode_bytes_at_a_time", 32768);
/** NETWORK ***/
pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
pref("network.dnsCacheExpiration", 3600);
pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
pref("network.websocket.max-connections", 400); // default=200
pref("network.ssl_tokens_cache_capacity", 32768);
/** MIXED CONTENT + CROSS-SITE ***/
pref("pdfjs.enableScripting", false);
pref("extensions.postDownloadThirdPartyPrompt", false);
/** EXPERIMENTAL ***/
pref("layout.css.grid-template-masonry-value.enabled", true);
pref("dom.enable_web_task_scheduling", true);
pref("dom.security.sanitizer.enabled", true);
/****************************************************************************
* SECTION: SECUREFOX *
****************************************************************************/
/** TRACKING PROTECTION ***/
pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com");
pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com");
pref("network.cookie.sameSite.noneRequiresSecure", true);
pref("browser.helperApps.deleteTempFileOnExit", true);
pref("browser.uitour.enabled", false);
/** SSL / TLS ***/
pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
pref("browser.xul.error_pages.expert_bad_cert", true);
pref("security.tls.enable_0rtt_data", false);
/** DISK AVOIDANCE ***/
pref("browser.privatebrowsing.forceMediaMemoryCache", true);
/** SHUTDOWN & SANITIZING ***/
pref("privacy.history.custom", true);
/** SEARCH / URL BAR ***/
pref("browser.urlbar.trimHttps", true);
pref("browser.search.separatePrivateDefault.ui.enabled", true);
pref("browser.urlbar.update2.engineAliasRefresh", true);
pref("browser.search.suggest.enabled", false);
pref("browser.urlbar.quicksuggest.enabled", false);
pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
pref("browser.urlbar.groupLabels.enabled", 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);
/** CONTAINERS ***/
pref("privacy.userContext.ui.enabled", true);
/** SAFE BROWSING ***/
pref("browser.safebrowsing.downloads.remote.enabled", false);
/** TELEMETRY ***/
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
pref("datareporting.healthreport.uploadEnabled", false, locked);
pref("toolkit.telemetry.unified", false, locked);
pref("toolkit.telemetry.enabled", false, locked);
pref("toolkit.telemetry.server", "data:,", locked);
pref("toolkit.telemetry.archive.enabled", false, locked);
pref("toolkit.telemetry.newProfilePing.enabled", false, locked);
pref("toolkit.telemetry.shutdownPingSender.enabled", false, locked);
pref("toolkit.telemetry.updatePing.enabled", false, locked);
pref("toolkit.telemetry.bhrPing.enabled", false, locked);
pref("toolkit.telemetry.firstShutdownPing.enabled", false, locked);
pref("toolkit.telemetry.coverage.opt-out", true, locked);
pref("toolkit.coverage.opt-out", true, locked);
pref("toolkit.coverage.endpoint.base", "", locked);
pref("browser.newtabpage.activity-stream.feeds.telemetry", false, locked);
pref("browser.newtabpage.activity-stream.telemetry", false, locked);
/** EXPERIMENTS ***/
pref("app.shield.optoutstudies.enabled", false, locked);
pref("app.normandy.enabled", false, locked);
pref("app.normandy.api_url", "", locked);
/** CRASH REPORTS ***/
pref("breakpad.reportURL", "");
pref("browser.tabs.crashReporting.sendReport", false);
pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
/** DETECTION ***/
pref("dom.private-attribution.submission.enabled", false);
/****************************************************************************
* SECTION: PESKYFOX *
****************************************************************************/
/** MOZILLA UI ***/
pref("browser.privatebrowsing.vpnpromourl", "", locked);
pref("extensions.getAddons.showPane", false);
pref("extensions.htmlaboutaddons.recommendations.enabled", false);
pref("browser.discovery.enabled", 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.aboutwelcome.enabled", false);
/** THEME ADJUSTMENTS ***/
pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
pref("browser.compactmode.show", true);
pref("browser.display.focus_ring_on_anything", true);
pref("browser.display.focus_ring_style", 0);
pref("browser.display.focus_ring_width", 0);
pref("layout.css.prefers-color-scheme.content-override", 2);
pref("browser.privateWindowSeparation.enabled", false); // WINDOWS
/** 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);
pref("browser.urlbar.trending.featureGate", false);
/** NEW TAB PAGE ***/
pref("browser.newtabpage.activity-stream.feeds.topsites", false);
pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
/** POCKET ***/
pref("extensions.pocket.enabled", false);
/** DOWNLOADS ***/
pref("browser.download.always_ask_before_handling_new_types", true);
pref("browser.download.manager.addToRecentDocs", false);
/** PDF ***/
pref("browser.download.open_pdf_attachments_inline", true);
/** TAB BEHAVIOR ***/
pref("browser.bookmarks.openInTabClosesMenu", false);
pref("browser.menu.showViewImageInfo", true);
pref("findbar.highlightAll", true);
pref("layout.word_select.eat_space_to_next_word", false);

File diff suppressed because one or more lines are too long

View File

@@ -2,7 +2,6 @@
const lazy = {};
var ZenStartup = {
init() {
this.logHeader();
this.openWatermark();
window.SessionStore.promiseInitialized.then(() => {
this._changeSidebarLocation();
@@ -27,9 +26,12 @@
}
// Fix notification deck
document
.getElementById('zen-appcontent-navbar-container')
.appendChild(document.getElementById('tab-notification-deck-template'));
const deckTemplate = document.getElementById('tab-notification-deck-template');
if (deckTemplate) {
document
.getElementById('zen-appcontent-navbar-container')
.appendChild(deckTemplate);
}
// Disable smooth scroll
gBrowser.tabContainer.arrowScrollbox.smoothScroll = false;
@@ -104,21 +106,6 @@
gURLBar._initPasteAndGo();
gURLBar._initStripOnShare();
},
logHeader() {
console.info(`
Welcome to Zen Browser!
If you are seeing this message, it means that you have successfully opened Zen's developer console.
Here you can see all the logs and errors that Zen is generating.
If you have any questions or need help, please contact us in any media in https://zen-browser.app/
Note: This developer console is not the same as the browser console, it has access to Zen's internal functions and variables, including your passwords and other sensitive information. Please do not paste any code here unless you know what you are doing.
`);
},
};
ZenStartup.init();

View File

@@ -117,6 +117,8 @@ var gZenUIManager = {
var gZenVerticalTabsManager = {
init() {
this._multiWindowFeature = new ZenMultiWindowFeature();
ChromeUtils.defineLazyGetter(this, 'isWindowsStyledButtons', () => {
return !(window.AppConstants.platform === 'macosx' || window.matchMedia('(-moz-gtk-csd-reversed-placement)').matches
|| Services.prefs.getBoolPref('zen.view.experimental-force-window-controls-left'));
@@ -138,7 +140,7 @@ var gZenVerticalTabsManager = {
this.initRightSideOrderContextMenu();
window.addEventListener('customizationstarting', this._preCustomize.bind(this));
window.addEventListener('aftercustomization', updateEvent);
window.addEventListener('aftercustomization', this._postCustomize.bind(this));
window.addEventListener('DOMContentLoaded', updateEvent, { once: true });
@@ -209,12 +211,22 @@ var gZenVerticalTabsManager = {
return this.__actualWindowButtons;
},
_preCustomize() {
this._updateEvent({ forceMultipleToolbar: true });
async _preCustomize() {
await this._multiWindowFeature.foreachWindowAsActive(async (browser) => {
browser.gZenVerticalTabsManager._updateEvent({ forceMultipleToolbar: true, dontRebuildAreas: true });
});
this.rebuildAreas();
this.navigatorToolbox.setAttribute('zen-sidebar-expanded', 'true');
document.documentElement.setAttribute('zen-sidebar-expanded', 'true'); // force expanded sidebar
},
_postCustomize() {
// No need to use `await` here, because the customization is already done
this._multiWindowFeature.foreachWindowAsActive(async (browser) => {
browser.gZenVerticalTabsManager._updateEvent({ dontRebuildAreas: true });
});
},
initializePreferences(updateEvent) {
XPCOMUtils.defineLazyPreferenceGetter(
this,
@@ -261,7 +273,7 @@ var gZenVerticalTabsManager = {
);
},
_updateEvent({ forceMultipleToolbar = false } = {}) {
_updateEvent({ forceMultipleToolbar = false, dontRebuildAreas = false } = {}) {
if (this._isUpdating) {
return;
}
@@ -300,7 +312,7 @@ var gZenVerticalTabsManager = {
let shouldHide = false;
if (((!isRightSide && this.isWindowsStyledButtons) || (isRightSide && !this.isWindowsStyledButtons)
|| (
isCompactMode && isSingleToolbar && this.isWindowsStyledButtons && !isRightSide
isCompactMode && isSingleToolbar && this.isWindowsStyledButtons
)) && isSingleToolbar) {
appContentNavbarContaienr.setAttribute('should-hide', 'true');
shouldHide = true;
@@ -314,16 +326,8 @@ var gZenVerticalTabsManager = {
!isCompactMode
) {
this.navigatorToolbox.prepend(topButtons);
// browser.prepend(this.navigatorToolbox);
} else {
// customizationTarget.prepend(topButtons);
// tabboxWrapper.prepend(this.navigatorToolbox);
}
//if (!isVerticalTabs) {
// document.getElementById("urlbar-container").after(document.getElementById('navigator-toolbox'));
//}
let windowButtons = this.actualWindowButtons;
let doNotChangeWindowButtons = !isCompactMode && isRightSide && this.isWindowsStyledButtons;
const navBar = document.getElementById('nav-bar');
@@ -365,7 +369,9 @@ var gZenVerticalTabsManager = {
document.documentElement.removeAttribute("zen-single-toolbar");
navBar.appendChild(document.getElementById('PanelUI-button'));
this._toolbarOriginalParent.prepend(navBar);
CustomizableUI.zenInternalCU._rebuildRegisteredAreas();
if (!dontRebuildAreas) {
this.rebuildAreas();
}
}
if (isCompactMode) {
@@ -415,7 +421,7 @@ var gZenVerticalTabsManager = {
}
}
if (shouldHide && !isCompactMode) {
if (shouldHide) {
appContentNavbarContaienr.append(windowButtons);
}
@@ -429,6 +435,10 @@ var gZenVerticalTabsManager = {
this._isUpdating = false;
},
rebuildAreas() {
CustomizableUI.zenInternalCU._rebuildRegisteredAreas(/* zenDontRebuildCollapsed */ true);
},
_updateMaxWidth() {
const maxWidth = Services.prefs.getIntPref('zen.view.sidebar-expanded.max-width');
const toolbox = document.getElementById('navigator-toolbox');

View File

@@ -37,8 +37,6 @@
<script src="chrome://browser/content/zen-components/ZenWorkspaces.mjs" />
<script src="chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs" />
<script src="chrome://browser/content/zen-components/ZenPinnedTabManager.mjs" />
<script src="chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs" />
<script src="chrome://browser/content/zen-components/ZenWorkspacesSync.mjs" />
<script src="chrome://browser/content/zen-components/ZenGradientGenerator.mjs" />
<script src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"/>
<script src="chrome://browser/content/zen-components/ZenProfileDialogUI.mjs" />

View File

@@ -4,4 +4,6 @@
<script type="text/javascript">
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenCommonUtils.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs", this);
</script>
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspacesSync.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs", this);
</script>

View File

@@ -18,13 +18,13 @@
:root[zen-no-padding='true'] &:not([zen-split="true"]) {
border-radius: 0 !important;
}
@media (-moz-bool-pref: 'zen.view.experimental-rounded-view') {
#tabbrowser-tabpanels {
mix-blend-mode: multiply;
-moz-osx-font-smoothing: grayscale;
isolation: isolate;
}
}
@media (-moz-bool-pref: 'zen.view.experimental-rounded-view') {
#tabbrowser-tabpanels {
mix-blend-mode: multiply;
-moz-osx-font-smoothing: grayscale;
isolation: isolate;
}
}
}

View File

@@ -83,6 +83,7 @@
#zen-appcontent-wrapper {
max-width: 100%;
min-width: 1px;
overflow-x: hidden;
z-index: 1;
}

View File

@@ -12,11 +12,20 @@
@media (-moz-bool-pref: 'zen.view.compact.hide-tabbar') or (-moz-bool-pref: 'zen.view.use-single-toolbar') {
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel[pinned='true']) {
margin-left: calc(var(--zen-sidebar-web-panel-spacing) * 2) !important;
margin-left: var(--zen-sidebar-web-panel-spacing) !important;
}
#zen-tabbox-wrapper {
/* Remove extra 1px of margine we have to add to the tabbox */
margin-left: 0 !important;
}
#zen-appcontent-wrapper {
margin-left: var(--zen-element-separation) !important;
& #tabbrowser-tabbox {
margin-left: 0 !important;
}
}
#zen-sidebar-top-buttons-customization-target {
@@ -28,36 +37,41 @@
}
#navigator-toolbox {
--zen-toolbox-max-width: 54px !important;
--zen-compact-float: calc(var(--zen-element-separation) - 1px);
position: absolute;
z-index: 10;
transition: transform 0.25s ease, opacity 0.1s ease-in-out;
top: 0;
bottom: var(--zen-element-separation);
opacity: 0;
padding-left: var(--zen-compact-float) !important;
padding-bottom: 0 !important;
padding-top: 0 !important;
--zen-toolbox-max-width: 64px !important;
--zen-compact-float: var(--zen-element-separation);
:root[zen-single-toolbar='true'] & {
top: var(--zen-element-separation);
&:not([animate='true']) {
position: absolute;
z-index: 10;
transition: left 0.25s ease, right 0.25s ease, opacity 1.5s ease;
top: 0;
bottom: var(--zen-element-separation);
opacity: 0;
padding: 0 var(--zen-compact-float) !important;
& #nav-bar {
margin-left: calc(var(--zen-toolbox-padding) / 2) !important;
:root[zen-single-toolbar='true'] & {
top: var(--zen-element-separation);
& #nav-bar {
margin-left: calc(var(--zen-toolbox-padding) / 2) !important;
}
}
}
& #urlbar[open] {
top: 0 !important;
}
}
&:not([zen-right-side='true']) #navigator-toolbox {
right: calc(100% - var(--zen-element-separation));
left: calc(-1 * var(--zen-sidebar-width) + var(--zen-element-separation));
}
/* When we have multiple toolbars and the top-toolbar is NOT being hidden,
* we need to adjust the top-padding of the toolbox to account for the
* extra toolbar height. */
@media not (-moz-bool-pref: 'zen.view.compact.hide-toolbar') {
&:not([zen-single-toolbar='true']) #navigator-toolbox {
&:not([zen-single-toolbar='true']) #navigator-toolbox:not([animate='true']) {
margin-top: var(--zen-toolbar-height) !important;
}
}
@@ -65,9 +79,10 @@
&[zen-right-side='true'] {
& #navigator-toolbox {
--zen-compact-float: calc(var(--zen-element-separation) + 1px);
padding-left: unset !important;
padding-right: var(--zen-compact-float) !important;
left: calc(100% - var(--zen-element-separation));
&:not([animate='true']) {
right: calc(-1 * var(--zen-sidebar-width) + var(--zen-element-separation));
}
}
& .browserSidebarContainer {
@@ -76,7 +91,7 @@
}
}
#titlebar {
#navigator-toolbox:not([animate='true']) #titlebar {
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1);
border-radius: calc(var(--zen-border-radius) - 2px);
padding: var(--zen-toolbox-padding) !important;
@@ -99,19 +114,21 @@
#navigator-toolbox:hover,
#navigator-toolbox[zen-has-hover],
#navigator-toolbox:focus-within,
#navigator-toolbox[zen-user-show],
#navigator-toolbox[flash-popup],
#navigator-toolbox[has-popup-menu],
#navigator-toolbox[movingtab],
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
#navigator-toolbox:has(.tabbrowser-tab:active),
#navigator-toolbox:has(*[open='true']:not(tab):not(.zen-compact-mode-ignore)) {
opacity: 1;
#navigator-toolbox:has(*:is([open='true'], #nav-bar:focus-within):not(tab):not(.zen-compact-mode-ignore)) {
&:not([animate='true']) {
transition: left 0.25s ease, right 0.25s ease;
opacity: 1;
transform: translateX(calc(100% - var(--zen-element-separation) - 1px));
:root[zen-right-side='true'] & {
transform: translateX(calc(-100% + var(--zen-element-separation) + 1px));
left: -1px;
:root[zen-right-side='true'] & {
right: -1px;
left: auto;
}
}
}
}
@@ -156,7 +173,6 @@
width: 100%;
opacity: 0;
background: var(--zen-dialog-background);
padding-left: var(--zen-toolbox-padding) !important;
max-height: var(--zen-toolbar-height);
overflow: hidden;
@@ -170,11 +186,6 @@
transition: transform 0.1s ease-in-out;
}
:root[zen-window-buttons-reversed='true'] & {
padding-left: 0 !important;
padding-right: var(--zen-toolbox-padding) !important;
}
@media (-moz-bool-pref: 'zen.view.compact.color-toolbar') {
background-attachment: fixed;
backdrop-filter: blur(5px);
@@ -199,6 +210,10 @@
& #urlbar {
transform: translateY(0);
&[open]:not([zen-floating-urlbar='true']) {
top: 0 !important;
}
}
}
}

View File

@@ -56,7 +56,7 @@
:root[zen-right-side='true'] & {
margin-right: 0;
margin-left: calc(-1 * var(--zen-split-column-gap));
margin-left: var(--zen-element-separation);
}
}

View File

@@ -281,11 +281,17 @@
animation: better-sidebar-pinned-hide 0.15s ease-in-out forwards !important;
}
:root:not([zen-right-side='true']) {
#zen-sidebar-web-panel-wrapper:not(:has(#zen-sidebar-web-panel:is([hidden='true'], [pinned='true']))) {
margin-left: 0 !important;
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel:not([hidden='true'])) {
:root:not([zen-right-side='true']) & {
margin-right: calc(var(--zen-element-separation) * 2 - 3px) !important;
}
@media (-moz-bool-pref: 'zen.view.compact') and (-moz-bool-pref: 'zen.view.compact.hide-tabbar') {
:root[zen-right-side='true'] & {
margin-left: 0 !important;
margin-right: calc(var(--zen-element-separation) * 2 - 3px) !important;
}
}
}
/** UNPINNED **/

View File

@@ -2,28 +2,32 @@ height: var(--zen-toolbar-height);
@media (-moz-bool-pref: 'zen.view.hide-window-controls') {
& {
transition: height 0.2s ease, opacity 0.2s ease-out;
transition-delay: 0.05s;
transition: height 0.15s ease, opacity 0.1s ease-out;
transition-delay: 0.2s;
& > * {
transition: transform 0.2s ease-out;
transition: opacity 0.2s ease-out;
transition-delay: 0.2s;
}
}
&:not([zen-has-hover='true']):not([has-popup-menu]):not(:focus-within) {
transition-delay: 0.2s;
height: var(--zen-element-separation);
overflow: hidden;
opacity: 0;
& > * {
transform: translateY(-100%);
opacity: 0;
pointer-events: none;
}
}
}
:root[inDOMFullscreen='true'] & {
max-height: 0;
min-height: unset !important;
opacity: 0;
pointer-events: none;
@media (-moz-bool-pref: 'zen.view.experimental-no-window-controls') {
&:has(#PersonalToolbar[collapsed='true']) {
max-height: 0 !important;
overflow: hidden;
opacity: 0 !important;
pointer-events: none !important;
}
}
}

View File

@@ -0,0 +1,8 @@
& #zen-sidebar-top-buttons:has(#zen-sidebar-top-buttons-customization-target:empty) {
max-height: 0 !important;
min-height: 0 !important;
opacity: 0;
overflow: hidden;
pointer-events: none;
}

View File

@@ -166,6 +166,13 @@
&[should-hide='true'] {
%include vertical-tabs-topbar.inc.css
}
:root[inDOMFullscreen='true'] & {
max-height: 0 !important;
min-height: unset !important;
opacity: 0 !important;
pointer-events: none !important;
}
}
}
@@ -224,14 +231,14 @@
}
& .tabbrowser-tab {
transition: scale 0.1s ease-in-out;
transition: scale 0.07s ease;
&[fadein='true']:not([zen-essential='true']) {
#tabbrowser-tabs[zen-workspace-animation='previous'] & {
animation: zen-slide-in 0.2s ease-in-out;
animation: zen-slide-in 0.2s ease;
}
#tabbrowser-tabs[zen-workspace-animation='next'] & {
animation: zen-slide-in-reverse 0.2s ease-in-out;
animation: zen-slide-in-reverse 0.2s ease;
}
}
@@ -372,7 +379,6 @@
:root[zen-single-toolbar='true'] & {
margin-left: var(--zen-toolbox-padding);
width: calc(100% - var(--zen-toolbox-padding));
& #urlbar:not([breakout-extend='true']) .urlbar-input-container {
padding-left: 4px;
padding-right: 4px;
@@ -380,7 +386,6 @@
:root[zen-right-side='true'] & {
margin-left: 0;
margin-right: var(--zen-toolbox-padding);
}
}
}
@@ -681,7 +686,8 @@
/* Mark: Separator styling */
#zen-sidebar-splitter {
opacity: 0;
width: var(--zen-toolbox-padding);
max-width: var(--zen-toolbox-padding) !important;
min-width: var(--zen-toolbox-padding) !important;
height: 100%;
transition: opacity 0.2s ease-in-out;
background: var(--zen-colors-border);
@@ -939,7 +945,7 @@
@media not (-moz-bool-pref: 'zen.view.compact') {
:root[zen-right-side='true']:not([zen-sidebar-expanded='true']):not([zen-window-buttons-reversed='true']) {
& #navigator-toolbox {
padding-top: var(--zen-toolbar-height);
margin-top: var(--zen-toolbar-height) !important;
}
& .titlebar-buttonbox-container {
@@ -957,11 +963,13 @@
& #zen-appcontent-navbar-container {
padding-left: var(--zen-element-separation);
}
%include vertical-tabs-topbuttons-fix.css
}
:root:not([zen-right-side='true']):not([zen-sidebar-expanded='true'])[zen-window-buttons-reversed='true'] {
& #navigator-toolbox {
padding-top: var(--zen-toolbar-height);
margin-top: var(--zen-toolbar-height) !important;
}
& .titlebar-buttonbox-container {
@@ -979,5 +987,7 @@
& #zen-appcontent-navbar-container {
padding-right: var(--zen-element-separation);
}
%include vertical-tabs-topbuttons-fix.css
}
}

View File

@@ -17,7 +17,7 @@
/* Branding */
--zen-branding-dark: #202020;
--zen-branding-coral: #F76F53;
--zen-branding-paper: #F2F0E3;
--zen-branding-paper: #ebebeb;
--zen-branding-bg: light-dark(var(--zen-branding-paper), var(--zen-branding-dark));
--zen-branding-bg-reverse: light-dark(var(--zen-branding-dark), var(--zen-branding-paper));
@@ -76,6 +76,9 @@
--color-accent-primary-hover: var(--button-primary-hover-bgcolor) !important;
--color-accent-primary-active: var(--button-primary-active-bgcolor) !important;
--link-color: var(--zen-branding-bg-reverse) !important;
--link-color-hover: var(--zen-branding-bg-reverse) !important;
--in-content-page-background: var(--zen-colors-tertiary) !important;
--zen-in-content-dialog-background: var(--zen-colors-tertiary);

View File

@@ -124,6 +124,10 @@
transition: all 0.2s;
}
#identity-permission-box > *:not(#permissions-granted-icon) {
visibility: collapse;
}
#urlbar[open] :is(#tracking-protection-icon-container, .urlbar-page-action),
#urlbar:hover :is(#tracking-protection-icon-container, .urlbar-page-action),
.urlbar-page-action[open],
@@ -134,7 +138,7 @@
#identity-permission-box:not([open]),
#notification-popup-box:not([open]) {
margin-inline-start: calc(-16px - 2 * var(--urlbar-icon-padding));
margin-inline-start: calc(-10px - 2 * var(--urlbar-icon-padding));
opacity: 0;
transition: all 0.2s;
}
@@ -302,8 +306,18 @@ button.popup-notification-dropmarker {
align-items: center;
}
:root:not([zen-single-toolbar='true']) #nav-bar {
margin-bottom: -1px;
:root:not([zen-single-toolbar='true']) {
& #nav-bar {
margin-bottom: -1px;
}
&[zen-right-side='true']:not([zen-window-buttons-reversed='true']) #nav-bar {
margin-inline-start: var(--zen-element-separation);
}
&:not([zen-right-side='true'])[zen-window-buttons-reversed='true'] #nav-bar {
margin-inline-end: var(--zen-element-separation);
}
}
/* Other small tweaks */
@@ -338,20 +352,31 @@ button.popup-notification-dropmarker {
}
#urlbar[open] {
--urlbar-margin-inline: 5px !important;
& #identity-box {
margin-right: var(--urlbar-margin-inline);
}
& #urlbar-background {
/* We cant have a transparent background with a backdrop-filter because on normal websites,
the backdrop woudn't work, we would need to apply a clip-path to the site and that's not recommended
due to performance issues */
background-color: var(--zen-branding-bg) !important;
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1) !important;
background-color: light-dark(rgb(247, 247, 247), var(--zen-branding-bg)) !important;
box-shadow: 0 0 1px 1px light-dark(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.1)) !important;
outline: 1px solid light-dark(rgba(20, 20, 20, 0.2), rgba(235, 235, 235, 0.2)) !important;
outline-offset: -1px !important;
}
}
:root[zen-single-toolbar='true'] #urlbar[open] {
min-width: 30vw;
:root[zen-single-toolbar='true'] {
#urlbar[open] {
min-width: 30vw;
}
&[zen-right-side='true'] #urlbar[open]:not([zen-floating-urlbar='true']) {
right: 0;
}
}
#urlbar[open][zen-floating-urlbar='true'] {
@@ -361,18 +386,17 @@ button.popup-notification-dropmarker {
font-size: 1.1em;
--urlbar-container-height: 55px !important;
--urlbar-margin-inline: 10px !important;
& #identity-box {
margin-right: var(--urlbar-margin-inline);
}
:root[zen-right-side='true'] & {
right: 0;
}
position: absolute;
top: calc(var(--zen-toolbar-height) * 2) !important;
left: 28vw;
:root[zen-right-side='true'] & {
right: 28vw !important;
}
:root:not([zen-right-side='true']) & {
left: 28vw !important;
}
#urlbar-container:has(&) {
border-radius: 10px;

View File

@@ -437,7 +437,7 @@
}
}
@media not (-moz-bool-pref: 'zen.workspaces.show-workspace-indicator') {
@media (not (-moz-bool-pref: 'zen.workspaces.show-workspace-indicator')) or (not (-moz-bool-pref: 'zen.workspaces.enabled')) {
#zen-current-workspace-indicator {
display: none !important;
}

View File

@@ -22,12 +22,16 @@ class ZenMultiWindowFeature {
return Services.wm.getMostRecentWindow('navigator:browser');
}
isActiveWindow() {
static get isActiveWindow() {
return ZenMultiWindowFeature.currentBrowser === window;
}
windowIsActive(browser) {
return browser === ZenMultiWindowFeature.currentBrowser;
}
async foreachWindowAsActive(callback) {
if (!this.isActiveWindow()) {
if (!ZenMultiWindowFeature.isActiveWindow) {
return;
}
for (const browser of ZenMultiWindowFeature.browsers) {
@@ -53,3 +57,27 @@ class ZenPreloadedFeature {
document.addEventListener('MozBeforeInitialXULLayout', initBound, { once: true });
}
}
var gZenCommonActions = {
copyCurrentURLToClipboard() {
const currentUrl = gBrowser.currentURI.spec;
if (currentUrl) {
let str = Cc["@mozilla.org/supports-string;1"].createInstance(
Ci.nsISupportsString
);
str.data = currentUrl;
let transferable = Cc[
"@mozilla.org/widget/transferable;1"
].createInstance(Ci.nsITransferable);
transferable.init(getLoadContext());
transferable.addDataFlavor("text/plain");
transferable.setTransferData("text/plain", str);
Services.clipboard.setData(
transferable,
null,
Ci.nsIClipboard.kGlobalClipboard
);
ConfirmationHint.show(document.getElementById("PanelUI-menu-button"), "zen-copy-current-url-confirmation");
}
}
};

View File

@@ -17,6 +17,8 @@ var gZenCompactModeManager = {
Services.prefs.addObserver('zen.view.sidebar-expanded.on-hover', this._disableTabsOnHoverIfConflict.bind(this));
Services.prefs.addObserver('zen.tabs.vertical.right-side', this._updateSidebarIsOnRight.bind(this));
this._canAnimateSidebar = Services.prefs.getBoolPref('zen.view.compact.animate-sidebar', true);
gZenUIManager.addPopupTrackingAttribute(this.sidebar);
gZenUIManager.addPopupTrackingAttribute(document.getElementById('zen-appcontent-navbar-container'));
@@ -65,6 +67,8 @@ var gZenCompactModeManager = {
},
updateCompactModeContext(isSingleToolbar) {
this.getAndApplySidebarWidth(); // Ignore return value
const IDs = ['zen-context-menu-compact-mode-hide-sidebar', 'zen-context-menu-compact-mode-hide-toolbar', 'zen-context-menu-compact-mode-hide-both'];
for (let id of IDs) {
document.getElementById(id).disabled = isSingleToolbar;
@@ -97,6 +101,14 @@ var gZenCompactModeManager = {
this.animateCompactMode();
},
getAndApplySidebarWidth() {
let sidebarWidth = this.sidebar.getBoundingClientRect().width;
if (sidebarWidth > 1) {
this.sidebar.style.setProperty("--zen-sidebar-width", `${sidebarWidth}px`);
}
return sidebarWidth;
},
animateCompactMode() {
const isCompactMode = this.prefefence;
const canHideSidebar = Services.prefs.getBoolPref('zen.view.compact.hide-tabbar');
@@ -104,79 +116,90 @@ var gZenCompactModeManager = {
return;
}
this._isAnimating = true;
let sidebarWidth = this.sidebar.getBoundingClientRect().width;
if (sidebarWidth < 300) {
sidebarWidth += sidebarWidth < 210 ? 9 : 11; // Bug: IF sidebar is too small, it will not animate properly
}
if (canHideSidebar && isCompactMode) {
this.sidebar.style.position = "relative";
this.sidebar.style.transition = "margin .3s ease, opacity .3s ease";
this.sidebar.style.left = "0";
this.sidebar.style.setProperty("opacity", "1", "important");
if (!this.sidebarIsOnRight) {
this.sidebar.style.marginLeft = `${-1 * sidebarWidth}px`;
} else {
this.sidebar.style.marginRight = `${-1 * sidebarWidth}px`;
// Do this so we can get the correct width ONCE compact mode styled have been applied
this.sidebar.setAttribute("animate", "true");
window.requestAnimationFrame(() => {
let sidebarWidth = this.getAndApplySidebarWidth();
if (!this._canAnimateSidebar) {
this.sidebar.removeAttribute("animate");
this._isAnimating = false;
return;
}
this.sidebar.style.pointerEvents = "none";
if (canHideSidebar && isCompactMode) {
window.requestAnimationFrame(() => {
this.sidebar.style.position = "unset";
this.sidebar.style.transition = "margin .4s ease";
this.sidebar.style.left = "0";
if (!this.sidebarIsOnRight) {
this.sidebar.style.marginLeft = `${-1 * sidebarWidth}px`;
} else {
this.sidebar.style.marginRight = `${-1 * sidebarWidth}px`;
}
this.sidebar.style.pointerEvents = "none";
window.requestAnimationFrame(() => {
this.sidebar.style.removeProperty("opacity");
setTimeout(() => {
window.requestAnimationFrame(() => {
this._isAnimating = false;
this.sidebar.style.removeProperty("opacity");
this.sidebar.style.removeProperty("position");
this.sidebar.style.removeProperty("transition");
this.sidebar.style.removeProperty("pointer-events");
this.sidebar.style.removeProperty("margin-left");
this.sidebar.style.removeProperty("margin-right");
this.sidebar.style.removeProperty("transform");
this.sidebar.style.removeProperty("left");
document.getElementById('browser').style.removeProperty("overflow");
setTimeout(() => {
window.requestAnimationFrame(() => {
this.sidebar.style.removeProperty("pointer-events");
this.sidebar.style.removeProperty("position");
this.sidebar.style.removeProperty("margin-left");
this.sidebar.style.removeProperty("margin-right");
this.sidebar.style.removeProperty("transform");
this.sidebar.style.removeProperty("left");
document.getElementById('browser').style.removeProperty("overflow");
this.sidebar.removeAttribute("animate");
window.requestAnimationFrame(() => {
this.sidebar.style.removeProperty("transition");
this._isAnimating = false;
});
});
}, 450);
});
}, 400);
});
} else if (canHideSidebar && !isCompactMode) {
document.getElementById('browser').style.overflow = "hidden";
this.sidebar.style.position = "relative";
this.sidebar.style.left = "0";
});
} else if (canHideSidebar && !isCompactMode) {
document.getElementById('browser').style.overflow = "hidden";
this.sidebar.style.position = "relative";
this.sidebar.style.left = "0";
if (!this.sidebarIsOnRight) {
this.sidebar.style.marginLeft = `${-1 * sidebarWidth}px`;
} else {
this.sidebar.style.marginRight = `${-1 * sidebarWidth}px`;
this.sidebar.style.transform = `translateX(${sidebarWidth}px)`;
}
window.requestAnimationFrame(() => {
this.sidebar.style.transition = "margin .3s ease, transform .4s ease, opacity .3s ease";
// we are in compact mode and we are exiting it
if (!this.sidebarIsOnRight) {
this.sidebar.style.marginLeft = "0";
this.sidebar.style.marginLeft = `${-1 * sidebarWidth}px`;
} else {
this.sidebar.style.marginRight = "0";
this.sidebar.style.transform = "translateX(0)";
this.sidebar.style.marginRight = `${-1 * sidebarWidth}px`;
this.sidebar.style.transform = `translateX(${sidebarWidth}px)`;
}
this.sidebar.style.pointerEvents = "none";
setTimeout(() => {
window.requestAnimationFrame(() => {
this._isAnimating = false;
this.sidebar.style.removeProperty("position");
this.sidebar.style.removeProperty("pointer-events");
this.sidebar.style.removeProperty("opacity");
this.sidebar.style.removeProperty("margin-left");
this.sidebar.style.removeProperty("margin-right");
this.sidebar.style.removeProperty("transform");
this.sidebar.style.removeProperty("transition");
this.sidebar.style.removeProperty("left");
window.requestAnimationFrame(() => {
this.sidebar.style.transition = "margin .3s ease, transform .275s ease, opacity .3s ease";
// we are in compact mode and we are exiting it
if (!this.sidebarIsOnRight) {
this.sidebar.style.marginLeft = "0";
} else {
this.sidebar.style.marginRight = "0";
this.sidebar.style.transform = "translateX(0)";
}
this.sidebar.style.pointerEvents = "none";
document.getElementById('browser').style.removeProperty("overflow");
});
}, 400);
});
}
setTimeout(() => {
window.requestAnimationFrame(() => {
this._isAnimating = false;
this.sidebar.style.removeProperty("position");
this.sidebar.style.removeProperty("pointer-events");
this.sidebar.style.removeProperty("opacity");
this.sidebar.style.removeProperty("margin-left");
this.sidebar.style.removeProperty("margin-right");
this.sidebar.style.removeProperty("transform");
this.sidebar.style.removeProperty("transition");
this.sidebar.style.removeProperty("left");
document.getElementById('browser').style.removeProperty("overflow");
this.sidebar.removeAttribute("animate");
});
}, 400);
});
} else {
this.sidebar.removeAttribute("animate"); // remove the attribute if we are not animating
}
});
},
updateContextMenu() {

View File

@@ -92,7 +92,6 @@
this.initContextMenu();
this.initThemePicker();
this._hasInitialized = true;
this.onDarkModeChange(null);
}
@@ -246,9 +245,7 @@
onThemePickerClick(event) {
event.preventDefault();
if (event.button !== 0 || this.dragging ) return;
const gradient = this.panel.querySelector('.zen-theme-picker-gradient');
const rect = gradient.getBoundingClientRect();
const padding = 90; // each side
@@ -275,7 +272,6 @@
const relativeX = event.clientX - rect.left;
const relativeY = event.clientY - rect.top;
const color = this.getColorFromPosition(relativeX, relativeY);
// Create new dot
@@ -358,7 +354,6 @@
listItems.querySelector('.zen-theme-picker-dot-custom').style.setProperty('--zen-theme-picker-dot-color', color);
listItems.querySelector('.zen-theme-picker-custom-list-item-label').textContent = color;
this.customColorList.appendChild(listItems);
}
@@ -366,11 +361,9 @@
const color = this.customColorInput.value;
if (!color) {
return;
}
// can be any color format, we just add it to the list as a dot, but hidden
const dot = document.createElement('div');
dot.classList.add('zen-theme-picker-dot', 'hidden', 'custom');
@@ -381,8 +374,6 @@
await this.updateCurrentWorkspace();
}
onThemePickerClick(event) {
event.preventDefault();
@@ -404,11 +395,9 @@
return;
}
const clickedElement = event.target;
const isExistingDot = clickedElement.classList.contains('zen-theme-picker-dot');
if (!isExistingDot && this.numberOfDots < ZenThemePicker.MAX_DOTS) {
const relativeX = event.clientX - rect.left;
const relativeY = event.clientY - rect.top;
@@ -497,11 +486,17 @@
this.updateCurrentWorkspace();
}
getToolbarModifiedBase() {
return this.isDarkMode ?
'color-mix(in srgb, var(--zen-themed-toolbar-bg) 80%, #fff 20%)'
: 'color-mix(in srgb, var(--zen-themed-toolbar-bg) 95%, #000 5%)';
}
getSingleRGBColor(color, forToolbar = false) {
if (color.isCustom) {
return color.c;
}
const toolbarBg = forToolbar ? 'var(--zen-themed-toolbar-bg)' : 'var(--zen-themed-toolbar-bg-transparent)';
const toolbarBg = forToolbar ? this.getToolbarModifiedBase() : 'var(--zen-themed-toolbar-bg-transparent)';
return `color-mix(in srgb, rgb(${color.c[0]}, ${color.c[1]}, ${color.c[2]}) ${this.currentOpacity * 100}%, ${toolbarBg} ${(1 - this.currentOpacity) * 100}%)`;
}
@@ -515,10 +510,10 @@
return `linear-gradient(${this.currentRotation}deg, ${themedColors.map(color => this.getSingleRGBColor(color, forToolbar)).join(', ')})`;
}
getTheme(colors, opacity = 0.5, rotation = 45, texture = 0) {
static getTheme(colors = [], opacity = 0.5, rotation = 45, texture = 0) {
return {
type: 'gradient',
gradientColors: colors.filter(color => color), // remove undefined
gradientColors: colors ? colors.filter(color => color) : [], // remove undefined
opacity,
rotation,
texture,
@@ -662,8 +657,8 @@
}
}
browser.document.documentElement.style.setProperty('--zen-main-browser-background', gradient);
browser.document.documentElement.style.setProperty('--zen-main-browser-background-toolbar', gradientToolbar);
browser.document.documentElement.style.setProperty('--zen-main-browser-background', gradient);
const dominantColor = this.getMostDominantColor(workspaceTheme.gradientColors);
if (dominantColor) {
@@ -717,7 +712,7 @@
const isCustom = dot.classList.contains('custom');
return {c: isCustom ? color : color.match(/\d+/g).map(Number), isCustom};
});
const gradient = this.getTheme(colors, this.currentOpacity, this.currentRotation, this.currentTexture);
const gradient = ZenThemePicker.getTheme(colors, this.currentOpacity, this.currentRotation, this.currentTexture);
let currentWorkspace = await ZenWorkspaces.getActiveWorkspace();
if(!skipSave) {

View File

@@ -11,6 +11,18 @@ const KEYCODE_MAP = {
F10: 'VK_F10',
F11: 'VK_F11',
F12: 'VK_F12',
F13: 'VK_F13',
F14: 'VK_F14',
F15: 'VK_F15',
F16: 'VK_F16',
F17: 'VK_F17',
F18: 'VK_F18',
F19: 'VK_F19',
F20: 'VK_F20',
F21: 'VK_F21',
F22: 'VK_F22',
F23: 'VK_F23',
F24: 'VK_F24',
TAB: 'VK_TAB',
ENTER: 'VK_RETURN',
ESCAPE: 'VK_ESCAPE',
@@ -22,6 +34,8 @@ const KEYCODE_MAP = {
DELETE: 'VK_DELETE',
BACKSPACE: 'VK_BACK',
HOME: 'VK_HOME',
NUM_LOCK: 'VK_NUMLOCK',
SCROLL_LOCK: 'VK_SCROLL',
};
const defaultKeyboardGroups = {
@@ -66,6 +80,7 @@ const defaultKeyboardGroups = {
'zen-search-find-again-shortcut-prev',
],
pageOperations: [
'zen-text-action-copy-url-shortcut',
'zen-location-open-shortcut',
'zen-location-open-shortcut-alt',
'zen-save-page-shortcut',
@@ -537,7 +552,7 @@ class ZenKeyboardShortcutsLoader {
} catch (e) {
// Recreate shortcuts file
Services.prefs.clearUserPref('zen.keyboard.shortcuts.version');
console.error('Error loading shortcuts file', e);
console.warn('Error loading shortcuts file', e);
return null;
}
}
@@ -556,7 +571,6 @@ function zenGetDefaultShortcuts() {
// For adding new default shortcuts, add them to inside the migration function
// and increment the version number.
console.info('Zen CKS: Loading default shortcuts...');
let keySet = document.getElementById(ZEN_MAIN_KEYSET_ID);
let newShortcutList = [];
@@ -702,7 +716,7 @@ function zenGetDefaultShortcuts() {
}
class ZenKeyboardShortcutsVersioner {
static LATEST_KBS_VERSION = 5;
static LATEST_KBS_VERSION = 6;
constructor() {}
@@ -822,6 +836,21 @@ class ZenKeyboardShortcutsVersioner {
)
);
}
if (version < 6) {
// Migrate from 5 to 6
// In this new version, we add the "Copy URL" shortcut to the default shortcuts
data.push(
new KeyShortcut(
'zen-copy-url',
'C',
'',
ZEN_OTHER_SHORTCUTS_GROUP,
KeyShortcutModifiers.fromObject({ accel: true, shift: true }),
'code:gZenCommonActions.copyCurrentURLToClipboard()',
'zen-text-action-copy-url-shortcut'
)
);
}
return data;
}
}
@@ -941,7 +970,6 @@ var gZenKeyboardShortcutsManager = {
}
mainKeyset.after(keyset);
console.debug('Shortcuts applied...');
}
},

View File

@@ -2,7 +2,7 @@
const lazy = {};
class ZenPinnedTabsObserver {
static ALL_EVENTS = ['TabPinned', 'TabUnpinned'];
static ALL_EVENTS = ['TabPinned', 'TabUnpinned', 'TabMove'];
#listeners = [];
@@ -49,7 +49,6 @@
this._zenClickEventListener = this._onTabClick.bind(this);
ZenWorkspaces.addChangeListeners(this.onWorkspaceChange.bind(this));
}
async onWorkspaceChange(newWorkspace, onInit) {
@@ -72,9 +71,6 @@
}
async _refreshPinnedTabs(currentWorkspace,{ init = false } = {}) {
if(init) {
await ZenPinnedTabsStorage.init();
}
await this._initializePinsCache();
await this._initializePinnedTabs(init,currentWorkspace);
}
@@ -87,7 +83,7 @@
// Enhance pins with favicons
const enhancedPins = await Promise.all(pins.map(async pin => {
try {
const image = await this.getFaviconAsBase64(pin.url);
const image = await this.getFaviconAsBase64(Services.io.newURI(pin.url).spec);
return {
...pin,
iconUrl: image || null
@@ -271,12 +267,35 @@
delete tab._zenClickEventListener;
}
break;
case "TabMove":
this._onTabMove(tab);
break;
default:
console.warn('ZenPinnedTabManager: Unhandled tab event', action);
break;
}
}
async _onTabMove(tab) {
if (!tab.pinned) {
return;
}
// Recollect pinned tabs and essentials after a tab move
const currentWorkspace = await ZenWorkspaces.getActiveWorkspace();
tab.position = tab._tPos;
for (let otherTab of gBrowser.tabs) {
if (otherTab.pinned && otherTab._tPos > tab.position) {
otherTab.position = otherTab._tPos;
await ZenPinnedTabsStorage.savePin(otherTab, false);
}
}
await ZenPinnedTabsStorage.savePin(tab);
}
_onTabClick(e) {
const tab = e.target?.closest("tab");
if (e.button === 1 && tab) {
@@ -361,7 +380,8 @@
}
async _removePinnedAttributes(tab, isClosing = false) {
if(!tab.getAttribute("zen-pin-id")) {
if(!tab.getAttribute("zen-pin-id") || this._temporarilyUnpiningEssential) {
this._temporarilyUnpiningEssential = false;
return;
}
@@ -493,7 +513,7 @@
return `data:${faviconData.mimeType};base64,${base64String}`;
} catch (ex) {
// console.error("Failed to get favicon:", ex);
return null;
return `page-icon:${pageUrl}`; // Use this as a fallback
}
}
@@ -506,6 +526,7 @@
tab.removeAttribute("zen-workspace-id");
}
if (tab.pinned) {
this._temporarilyUnpiningEssential = true;
gBrowser.unpinTab(tab);
}
gBrowser.pinTab(tab);

View File

@@ -1,6 +1,5 @@
var ZenPinnedTabsStorage = {
async init() {
console.log('ZenPinnedTabsStorage: Initializing...');
await this._ensureTable();
},
@@ -337,3 +336,5 @@ var ZenPinnedTabsStorage = {
});
}
};
ZenPinnedTabsStorage.init();

View File

@@ -252,7 +252,7 @@
if (
(tab.pinned && !ignoreTimestamp) ||
tab.selected ||
tab.multiselected ||
(tab.multiselected && !ignoreTimestamp) ||
tab.hasAttribute('busy') ||
tab.hasAttribute('pending') ||
!tab.linkedPanel ||

View File

@@ -53,11 +53,9 @@ var gZenStylesheetManager = {
var gZenThemesImporter = new (class {
constructor() {
console.info('[ZenThemesImporter]: Initializing Zen Themes Importer');
try {
window.SessionStore.promiseInitialized.then(async () => {
if (Services.prefs.getBoolPref('zen.themes.disable-all', false)) {
if (Services.prefs.getBoolPref('zen.themes.disable-all', false) || Services.appinfo.inSafeMode) {
console.log('[ZenThemesImporter]: Disabling all themes.');
return;
}

View File

@@ -34,7 +34,12 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
'activationMethod',
'zen.workspaces.scroll-modifier-key',
'ctrl',
this._expandWorkspacesStrip.bind(this)
);
XPCOMUtils.defineLazyPreferenceGetter(
this,
'naturalScroll',
'zen.workspaces.natural-scroll',
true
);
XPCOMUtils.defineLazyPreferenceGetter(
this,
@@ -69,10 +74,13 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
);
ChromeUtils.defineLazyGetter(this, 'tabContainer', () => document.getElementById('tabbrowser-tabs'));
this._activeWorkspace = Services.prefs.getStringPref('zen.workspaces.active', '');
await ZenWorkspacesStorage.init();
this._delayedStartup();
}
async _delayedStartup() {
if (!this.workspaceEnabled) {
return;
}
await this.initializeWorkspaces();
console.info('ZenWorkspaces: ZenWorkspaces initialized');
@@ -171,7 +179,10 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
if (Math.abs(delta) < scrollThreshold) return;
// Determine scroll direction
const direction = delta > 0 ? -1 : 1;
let direction = delta > 0 ? 1 : -1;
if (this.naturalScroll) {
direction = delta > 0 ? -1 : 1;
}
// Workspace logic
const workspaces = (await this._workspaces()).workspaces;
@@ -255,7 +266,10 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
// Determine swipe direction based on cumulative delta
if (Math.abs(this._swipeState.cumulativeDelta) > 0.25) {
this._swipeState.direction = this._swipeState.cumulativeDelta > 0 ? 'right' : 'left';
this._swipeState.direction = this._swipeState.cumulativeDelta > 0 ? 'left' : 'right';
if (this.naturalScroll){
this._swipeState.direction = this._swipeState.cumulativeDelta > 0 ? 'right' : 'left';
}
}
}
@@ -426,10 +440,11 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
window.addEventListener('TabBrowserInserted', this.onTabBrowserInserted.bind(this));
await SessionStore.promiseInitialized;
let workspaces = await this._workspaces();
let activeWorkspace = null;
if (workspaces.workspaces.length === 0) {
await this.createAndSaveWorkspace('Default Workspace', true, '🏠');
activeWorkspace = await this.createAndSaveWorkspace('Default Workspace', true, '🏠');
} else {
let activeWorkspace = await this.getActiveWorkspace();
activeWorkspace = await this.getActiveWorkspace();
if (!activeWorkspace) {
activeWorkspace = workspaces.workspaces.find((workspace) => workspace.default);
this.activeWorkspace = activeWorkspace.uuid;
@@ -441,7 +456,9 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
await this.changeWorkspace(activeWorkspace, true);
}
try {
window.gZenThemePicker = new ZenThemePicker();
if (activeWorkspace) {
window.gZenThemePicker = new ZenThemePicker();
}
} catch (e) {
console.error('ZenWorkspaces: Error initializing theme picker', e);
}
@@ -789,9 +806,14 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
if (workspace.default) {
element.setAttribute('default', 'true');
}
const containerGroup = browser.ContextualIdentityService.getPublicIdentities().find(
(container) => container.userContextId === workspace.containerTabId
);
let containerGroup = undefined;
try {
containerGroup = browser.ContextualIdentityService.getPublicIdentities().find(
(container) => container.userContextId === workspace.containerTabId
);
} catch (e) {
console.warn('ZenWorkspaces: Error setting container color', e);
}
if (containerGroup) {
element.classList.add('identity-color-' + containerGroup.color);
element.setAttribute('data-usercontextid', containerGroup.userContextId);
@@ -799,7 +821,6 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
if (this.isReorderModeOn(browser)) {
element.setAttribute('draggable', 'true');
}
element.addEventListener(
'dragstart',
function (event) {
@@ -1557,6 +1578,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
default: isDefault,
icon: icon,
name: name,
theme: ZenThemePicker.getTheme([]),
};
this._prepareNewWorkspace(window);
return window;
@@ -1569,6 +1591,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
let workspaceData = this._createWorkspaceData(name, isDefault, icon);
await this.saveWorkspace(workspaceData);
await this.changeWorkspace(workspaceData);
return workspaceData;
}
async onTabBrowserInserted(event) {
@@ -1596,6 +1619,9 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
const isEssential = tab.getAttribute("zen-essential") === "true";
if (!isEssential) {
const activeWorkspace = await parent.ZenWorkspaces.getActiveWorkspace();
if (!activeWorkspace) {
return;
}
// Only update last selected tab for non-essential tabs in their workspace
if (!isEssential && workspaceID === activeWorkspace.uuid) {
@@ -1717,6 +1743,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
async changeTabWorkspace(workspaceID) {
const tabs = TabContextMenu.contextTab.multiselected ? gBrowser.selectedTabs : [TabContextMenu.contextTab];
document.getElementById('tabContextMenu').hidePopup();
const previousWorkspaceID = document.documentElement.getAttribute('zen-workspace-id');
for (let tab of tabs) {
tab.setAttribute('zen-workspace-id', workspaceID);

View File

@@ -1,13 +1,17 @@
var ZenWorkspacesStorage = {
lazy: {},
async init() {
console.log('ZenWorkspacesStorage: Initializing...');
ChromeUtils.defineESModuleGetters(this.lazy, {
PlacesUtils: "resource://gre/modules/PlacesUtils.sys.mjs",
});
await this._ensureTable();
await ZenWorkspaceBookmarksStorage.init();
ZenWorkspaces._delayedStartup();
},
async _ensureTable() {
await PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage._ensureTable', async (db) => {
await this.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage._ensureTable', async (db) => {
// Create the main workspaces table if it doesn't exist
await db.execute(`
CREATE TABLE IF NOT EXISTS zen_workspaces (
@@ -100,7 +104,7 @@ var ZenWorkspacesStorage = {
async saveWorkspace(workspace, notifyObservers = true) {
const changedUUIDs = new Set();
await PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.saveWorkspace', async (db) => {
await this.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.saveWorkspace', async (db) => {
await db.executeTransaction(async () => {
const now = Date.now();
@@ -171,7 +175,7 @@ var ZenWorkspacesStorage = {
},
async getWorkspaces() {
const db = await PlacesUtils.promiseDBConnection();
const db = await this.lazy.PlacesUtils.promiseDBConnection();
const rows = await db.executeCached(`
SELECT * FROM zen_workspaces ORDER BY created_at ASC
`);
@@ -195,7 +199,7 @@ var ZenWorkspacesStorage = {
async removeWorkspace(uuid, notifyObservers = true) {
const changedUUIDs = [uuid];
await PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.removeWorkspace', async (db) => {
await this.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.removeWorkspace', async (db) => {
await db.execute(
`
DELETE FROM zen_workspaces WHERE uuid = :uuid
@@ -222,7 +226,7 @@ var ZenWorkspacesStorage = {
},
async wipeAllWorkspaces() {
await PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.wipeAllWorkspaces', async (db) => {
await this.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.wipeAllWorkspaces', async (db) => {
await db.execute(`DELETE FROM zen_workspaces`);
await db.execute(`DELETE FROM zen_workspaces_changes`);
await this.updateLastChangeTimestamp(db);
@@ -232,7 +236,7 @@ var ZenWorkspacesStorage = {
async setDefaultWorkspace(uuid, notifyObservers = true) {
const changedUUIDs = [];
await PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.setDefaultWorkspace', async (db) => {
await this.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.setDefaultWorkspace', async (db) => {
await db.executeTransaction(async () => {
const now = Date.now();
// Unset the default flag for all other workspaces
@@ -269,7 +273,7 @@ var ZenWorkspacesStorage = {
},
async markChanged(uuid) {
await PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.markChanged', async (db) => {
await this.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.markChanged', async (db) => {
const now = Date.now();
await db.execute(`
INSERT OR REPLACE INTO zen_workspaces_changes (uuid, timestamp)
@@ -283,7 +287,7 @@ var ZenWorkspacesStorage = {
async saveWorkspaceTheme(uuid, theme, notifyObservers = true) {
const changedUUIDs = [uuid];
await PlacesUtils.withConnectionWrapper('saveWorkspaceTheme', async (db) => {
await this.lazy.PlacesUtils.withConnectionWrapper('saveWorkspaceTheme', async (db) => {
await db.execute(`
UPDATE zen_workspaces
SET
@@ -314,7 +318,7 @@ var ZenWorkspacesStorage = {
},
async getChangedIDs() {
const db = await PlacesUtils.promiseDBConnection();
const db = await this.lazy.PlacesUtils.promiseDBConnection();
const rows = await db.execute(`
SELECT uuid, timestamp FROM zen_workspaces_changes
`);
@@ -326,7 +330,7 @@ var ZenWorkspacesStorage = {
},
async clearChangedIDs() {
await PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.clearChangedIDs', async (db) => {
await this.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.clearChangedIDs', async (db) => {
await db.execute(`DELETE FROM zen_workspaces_changes`);
});
},
@@ -363,7 +367,7 @@ var ZenWorkspacesStorage = {
},
async getLastChangeTimestamp() {
const db = await PlacesUtils.promiseDBConnection();
const db = await this.lazy.PlacesUtils.promiseDBConnection();
const result = await db.executeCached(`
SELECT value FROM moz_meta WHERE key = 'zen_workspaces_last_change'
`);
@@ -373,7 +377,7 @@ var ZenWorkspacesStorage = {
async updateWorkspacePositions(workspaces) {
const changedUUIDs = new Set();
await PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.updateWorkspacePositions', async (db) => {
await this.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspacesStorage.updateWorkspacePositions', async (db) => {
await db.executeTransaction(async () => {
const now = Date.now();
@@ -414,7 +418,7 @@ var ZenWorkspaceBookmarksStorage = {
},
async _ensureTable() {
await PlacesUtils.withConnectionWrapper('ZenWorkspaceBookmarksStorage.init', async (db) => {
await ZenWorkspacesStorage.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspaceBookmarksStorage.init', async (db) => {
// Create table using GUIDs instead of IDs
await db.execute(`
CREATE TABLE IF NOT EXISTS zen_bookmarks_workspaces (
@@ -475,7 +479,7 @@ var ZenWorkspaceBookmarksStorage = {
* @returns {Promise<number>} The timestamp of the last change.
*/
async getLastChangeTimestamp() {
const db = await PlacesUtils.promiseDBConnection();
const db = await ZenWorkspacesStorage.lazy.PlacesUtils.promiseDBConnection();
const result = await db.executeCached(`
SELECT value FROM moz_meta WHERE key = 'zen_bookmarks_workspaces_last_change'
`);
@@ -483,7 +487,7 @@ var ZenWorkspaceBookmarksStorage = {
},
async getBookmarkWorkspaces(bookmarkGuid) {
const db = await PlacesUtils.promiseDBConnection();
const db = await ZenWorkspacesStorage.lazy.PlacesUtils.promiseDBConnection();
const rows = await db.execute(`
SELECT workspace_uuid
@@ -505,7 +509,7 @@ var ZenWorkspaceBookmarksStorage = {
* }
*/
async getBookmarkGuidsByWorkspace() {
const db = await PlacesUtils.promiseDBConnection();
const db = await ZenWorkspacesStorage.lazy.PlacesUtils.promiseDBConnection();
const rows = await db.execute(`
SELECT workspace_uuid, GROUP_CONCAT(bookmark_guid) as bookmark_guids
@@ -528,9 +532,9 @@ var ZenWorkspaceBookmarksStorage = {
* @returns {Promise<Object>} An object mapping bookmark+workspace pairs to their change data.
*/
async getChangedIDs() {
const db = await PlacesUtils.promiseDBConnection();
const db = await ZenWorkspacesStorage.lazy.PlacesUtils.promiseDBConnection();
const rows = await db.execute(`
SELECT bookmark_guid, workspace_uuid, change_type, timestamp
SELECT bookmark_guid, workspace_uuid, change_type, timestamp
FROM zen_bookmarks_workspaces_changes
`);
@@ -549,9 +553,11 @@ var ZenWorkspaceBookmarksStorage = {
* Clear all recorded changes.
*/
async clearChangedIDs() {
await PlacesUtils.withConnectionWrapper('ZenWorkspaceBookmarksStorage.clearChangedIDs', async (db) => {
await ZenWorkspacesStorage.lazy.PlacesUtils.withConnectionWrapper('ZenWorkspaceBookmarksStorage.clearChangedIDs', async (db) => {
await db.execute(`DELETE FROM zen_bookmarks_workspaces_changes`);
});
},
};
};
ZenWorkspacesStorage.init();

View File

@@ -44,7 +44,7 @@ export class ZenGlanceChild extends JSWindowActorChild {
this.contentWindow.document.removeEventListener('click', this.clickListener);
} else if (activationMethod === 'ctrl' || activationMethod === 'alt' || activationMethod === 'shift') {
this.contentWindow.document.addEventListener('click', this.clickListener);
this.contentWindow.document.addEventListener('click', this.clickListener, { capture: true });
this.contentWindow.removeEventListener('mousedown', this.mouseDownListener);
this.contentWindow.removeEventListener('mouseup', this.mouseUpListener);
@@ -82,7 +82,6 @@ export class ZenGlanceChild extends JSWindowActorChild {
async handleMouseDown(event) {
const target = event.target.closest('A');
console.log('target', target);
if (!target) {
return;
}

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
index 45d0e0e4872eeabf87862dbadfee1dc211ed7bed..5a0825ff92c115bf30046a01cff17f189005d5ef 100644
index 45d0e0e4872eeabf87862dbadfee1dc211ed7bed..04a65485a3493fd42b2a58523123f1392ed9c3b2 100644
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
@@ -78,6 +78,24 @@ index 45d0e0e4872eeabf87862dbadfee1dc211ed7bed..5a0825ff92c115bf30046a01cff17f18
// For toolbars that need it, mark as dirty.
let defaultPlacements = areaProperties.get("defaultPlacements");
if (
@@ -3603,7 +3609,7 @@ var CustomizableUIInternal = {
}
},
- _rebuildRegisteredAreas() {
+ _rebuildRegisteredAreas(zenDontRebuildCollapsed = false) {
for (let [areaId, areaNodes] of gBuildAreas) {
let placements = gPlacements.get(areaId);
let isFirstChangedToolbar = true;
@@ -3614,7 +3620,7 @@ var CustomizableUIInternal = {
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
let defaultCollapsed = area.get("defaultCollapsed");
let win = areaNode.ownerGlobal;
- if (defaultCollapsed !== null) {
+ if (defaultCollapsed !== null && !zenDontRebuildCollapsed) {
win.setToolbarVisibility(
areaNode,
typeof defaultCollapsed == "string"
@@ -4572,6 +4578,7 @@ export var CustomizableUI = {
unregisterArea(aName, aDestroyPlacements) {
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);

View File

@@ -0,0 +1,13 @@
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index 1805bad6c58e060533f634ed9e511c05cad3ded1..4eb04f3eb1b9dd1c5d663cca0a7ad903b38c4efd 100644
--- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js
@@ -545,7 +545,7 @@ const PanelUI = {
if (viewShown) {
CustomizableUI.addPanelCloseListeners(tempPanel);
- tempPanel.addEventListener("popuphidden", panelRemover);
+ tempPanel.addEventListener("popuphidden", panelRemover, { capture: true });
} else {
panelRemover();
}

View File

@@ -439,7 +439,7 @@ var gZenMarketplaceManager = {
}
input.addEventListener(
'input',
'change',
ZenThemesCommon.throttle((event) => {
const value = event.target.value;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs
index c504c9afc43785b5f003bb1f9f1dfbddef38d78b..f4167cf9f3dcbbb8666118436e9f79137caf565a 100644
index c504c9afc43785b5f003bb1f9f1dfbddef38d78b..b08cb1d9fee5f76070c70ea928209b15b6146cb3 100644
--- a/browser/components/urlbar/UrlbarInput.sys.mjs
+++ b/browser/components/urlbar/UrlbarInput.sys.mjs
@@ -65,6 +65,13 @@ XPCOMUtils.defineLazyPreferenceGetter(
@@ -16,18 +16,17 @@ index c504c9afc43785b5f003bb1f9f1dfbddef38d78b..f4167cf9f3dcbbb8666118436e9f7913
const DEFAULT_FORM_HISTORY_NAME = "searchbar-history";
const SEARCH_BUTTON_CLASS = "urlbar-search-button";
@@ -2154,6 +2161,10 @@ export class UrlbarInput {
@@ -2154,6 +2161,9 @@ export class UrlbarInput {
this.setAttribute("breakout-extend", "true");
+ if (lazy.ZEN_URLBAR_BEHAVIOR == 'float' || (lazy.ZEN_URLBAR_BEHAVIOR == 'floating-on-type' && !this.focusedViaMousedown)) {
+ this.setAttribute("zen-floating-urlbar", "true");
+ } else this.removeAttribute("zen-floating-urlbar");
+
// Enable the animation only after the first extend call to ensure it
// doesn't run when opening a new window.
if (!this.hasAttribute("breakout-extend-animate")) {
@@ -3901,6 +3912,11 @@ export class UrlbarInput {
@@ -3901,6 +3911,11 @@ export class UrlbarInput {
}
_on_click(event) {
@@ -39,20 +38,21 @@ index c504c9afc43785b5f003bb1f9f1dfbddef38d78b..f4167cf9f3dcbbb8666118436e9f7913
if (
event.target == this.inputField ||
event.target == this._inputContainer ||
@@ -4012,8 +4028,11 @@ export class UrlbarInput {
@@ -4012,9 +4027,12 @@ export class UrlbarInput {
}
_on_mousedown(event) {
- switch (event.currentTarget) {
+ switch (event.zenOriginalTarget || event.currentTarget) {
case this.textbox: {
this._mousedownOnUrlbarDescendant = true;
+ if (event.type != "click" && lazy.ZEN_URLBAR_BEHAVIOR === 'float') {
+ return true;
+ }
this._mousedownOnUrlbarDescendant = true;
if (
@@ -4024,8 +4043,8 @@ export class UrlbarInput {
event.target != this.inputField &&
@@ -4024,8 +4042,8 @@ export class UrlbarInput {
break;
}

View File

@@ -39,7 +39,7 @@ body {
#welcome .zen-branding-title,
#thanks .zen-branding-title {
text-align: center;
font-size: 11rem;
font-size: 9rem;
}
#buttons-footer {

View File

@@ -266,7 +266,7 @@ groupbox h2 {
padding: 7px;
&[left] div {
&[top] div {
width: 100%;
background: var(--zen-primary-color);
border-radius: 5px;
@@ -274,7 +274,7 @@ groupbox h2 {
box-shadow: var(--zen-compact-mode-styles-shadow);
}
&[top] div {
&[left] div {
width: 18px;
background: var(--zen-primary-color);
border-radius: 5px;

View File

@@ -26,19 +26,11 @@
#forward-button,
#zen-sidebar-web-panel-forward {
list-style-image: url('forward.svg') !important;
@media (max-width: 650px) {
display: none;
}
}
#reload-button,
#zen-sidebar-web-panel-reload {
list-style-image: url('reload.svg') !important;
@media (max-width: 650px) {
display: none;
}
}
#stop-button,
@@ -82,10 +74,6 @@
#appMenu-downloads-button,
#appMenu-library-downloads-button {
list-style-image: url('downloads.svg') !important;
@media (max-width: 650px) {
display: none;
}
}
#appMenu-translate-button {

View File

@@ -0,0 +1,13 @@
diff --git a/devtools/startup/locales/en-US/key-shortcuts.ftl b/devtools/startup/locales/en-US/key-shortcuts.ftl
index bbc2c7ca1e8c3544289407371457790cf8b0fa65..f307e5cb75df9175106184f97b2f500c1adf9fca 100644
--- a/devtools/startup/locales/en-US/key-shortcuts.ftl
+++ b/devtools/startup/locales/en-US/key-shortcuts.ftl
@@ -13,7 +13,7 @@ devtools-commandkey-browser-console = J
# Key pressed to toggle on the Responsive Design Mode
devtools-commandkey-responsive-design-mode = M
# Key pressed to open a toolbox with the inspector panel selected
-devtools-commandkey-inspector = C
+devtools-commandkey-inspector = L
# Key pressed to open a toolbox with the web console panel selected
devtools-commandkey-webconsole = K
# Key pressed to open a toolbox with the debugger panel selected

View File

@@ -1,13 +1,16 @@
diff --git a/testing/profiles/profileserver/user.js b/testing/profiles/profileserver/user.js
index 19ff7d474f6d22d2d386764e2e6942ce6a324470..3cec3a25acc6f8780d56d273995974a905b6c031 100644
index 19ff7d474f6d22d2d386764e2e6942ce6a324470..40d1906bdebd08510014fd6124be17052248e748 100644
--- a/testing/profiles/profileserver/user.js
+++ b/testing/profiles/profileserver/user.js
@@ -8,3 +8,7 @@
@@ -8,3 +8,11 @@
user_pref("dom.timeout.enable_budget_timer_throttling", false);
// Turn off update
user_pref("app.update.disabledForTesting", true);
+
+// zen:
+// Disable workspaces in order to prevent SQL calls
+// Disable some of zen's features to better match the default Firefox experience
+user_pref("zen.workspaces.enabled", false);
\ No newline at end of file
+user_pref("zen.welcome-screen.enabled", false);
+user_pref("zen.tab-unloader.enabled", false);
+user_pref("zen.watermark.enabled", false);
+user_pref("zen.glance.enabled", false);

View File

@@ -0,0 +1,13 @@
diff --git a/toolkit/components/extensions/parent/ext-runtime.js b/toolkit/components/extensions/parent/ext-runtime.js
index ff7aae6e5f1919d8d4ff1c7e85b6150332adc20f..5d935e3d0dfb91cd01268d4e2c4dee4696c33efe 100644
--- a/toolkit/components/extensions/parent/ext-runtime.js
+++ b/toolkit/components/extensions/parent/ext-runtime.js
@@ -331,7 +331,7 @@ this.runtime = class extends ExtensionAPIPersistent {
getBrowserInfo: function () {
const { name, vendor, version, appBuildID } = Services.appinfo;
- const info = { name, vendor, version, buildID: appBuildID };
+ const info = { name, vendor, version: AppConstants.ZEN_FIREFOX_VERSION, buildID: appBuildID };
return Promise.resolve(info);
},

View File

@@ -0,0 +1,12 @@
diff --git a/widget/windows/nsLookAndFeel.cpp b/widget/windows/nsLookAndFeel.cpp
index 58c5fc3b55da47109e16cc3d6f44b0950b2965e7..ae1713898d0b8298480bdaf8a9ef7629423c3dee 100644
--- a/widget/windows/nsLookAndFeel.cpp
+++ b/widget/windows/nsLookAndFeel.cpp
@@ -849,6 +849,7 @@ auto nsLookAndFeel::ComputeTitlebarColors() -> TitlebarColors {
// turned on.
result.mUseAccent =
dwmKey.GetValueAsDword(u"ColorPrevalence"_ns).valueOr(0) == 1;
+ result.mUseAccent = false; // Zen: Disable accent color in titlebar because it's ugly
if (!result.mUseAccent) {
return result;
}

View File

@@ -18,7 +18,7 @@
"brandShortName": "Zen Browser",
"brandFullName": "Zen Browser",
"release": {
"displayVersion": "1.0.2-b.2",
"displayVersion": "1.0.2-b.4",
"github": {
"repo": "zen-browser/desktop"
},
@@ -27,8 +27,6 @@
"macos-aarch64": "macos-aarch64.mar",
"linux": "linux.mar",
"macos-x64": "macos-x64.mar",
"windows-compat": "windows-generic.mar",
"linux-compat": "linux-generic.mar",
"windows-arm64": "windows-arm64.mar",
"linux-aarch64": "linux-aarch64.mar"
}
@@ -40,7 +38,7 @@
"brandShortName": "Zen Twilight",
"brandFullName": "Zen Twilight",
"release": {
"displayVersion": "1.0.2-t.3",
"displayVersion": "1.0.2-t.5",
"github": {
"repo": "zen-browser/desktop"
}