mirror of
https://github.com/zen-browser/desktop.git
synced 2025-07-08 01:19:59 +02:00
Compare commits
239 commits
Author | SHA1 | Date | |
---|---|---|---|
|
c9598e1612 | ||
|
1c37c15fc2 | ||
|
e068428601 | ||
|
1a3a8a09e1 | ||
|
f80fe998e8 | ||
|
974680e1a4 | ||
|
3b8202f207 | ||
|
f6da5047c2 | ||
|
27b03a7675 | ||
|
edf7c36145 | ||
|
4f049111b1 | ||
|
0df0d16fa4 | ||
|
0735388cb1 | ||
|
87088d016c | ||
|
a06b7b6b38 | ||
|
c84d500bd5 | ||
|
1ad8f0f5ff | ||
|
4ea3532fe1 | ||
|
a1e21546c8 | ||
|
f680b4592b | ||
|
b0ab43d19d | ||
|
60820e413d | ||
|
9e338aabbc | ||
|
6a8afc4282 | ||
|
54702d9092 | ||
|
120f15d645 | ||
|
6b306c98dc | ||
|
3da5eda339 | ||
|
2a701bd2b9 | ||
|
ed5740c24d | ||
|
d96d6831a2 | ||
|
5930552cdc | ||
|
84183910b7 | ||
|
48df87da98 | ||
|
51d4396088 | ||
|
78cd4ed095 | ||
|
69f60b7066 | ||
|
f0169277a0 | ||
|
ffdae9a05b | ||
|
47c5cc7ccb | ||
|
c664a65100 | ||
|
65c72a7871 | ||
|
76166c4aa3 | ||
|
ee20de3c3d | ||
|
3fca0657b5 | ||
|
7d7e57d6ee | ||
|
08947fd4a1 | ||
|
12ae2daeba | ||
|
fe77048619 | ||
|
9971dbd0ad | ||
|
b735567504 | ||
|
ba7eff60ef | ||
|
400598a0b1 | ||
|
dc6f46695a | ||
|
48f036d6a0 | ||
|
3a317daa87 | ||
|
8e67690f82 | ||
|
1594c5c08f | ||
|
fd4c96e4b3 | ||
|
37bd317391 | ||
|
2c53b4a8c5 | ||
|
5040df2416 | ||
|
8bc4c97215 | ||
|
a435d4ec18 | ||
|
bed6fa7eca | ||
|
dcd032856b | ||
|
bf95bc7078 | ||
|
ab2a982bf0 | ||
|
5cd1f77e2d | ||
|
a17a1da3b8 | ||
|
ecbce38f52 | ||
|
0693bb7a61 | ||
|
7f28047f82 | ||
|
d1fffc59cf | ||
|
8e799a678f | ||
|
a3f1733fd4 | ||
|
ea23c3f63d | ||
|
7d51ae1f07 | ||
|
469604dd28 | ||
|
3f77bc972b | ||
|
59263eae9e | ||
|
251967435d | ||
|
a93e50cc54 | ||
|
54bdabbf25 | ||
|
5b7445fe31 | ||
|
09ee6f2097 | ||
|
f240fabe77 | ||
|
bf6e493f89 | ||
|
75a3b82d2c | ||
|
9c8b442a46 | ||
|
1f3d8b492b | ||
|
5013533ad8 | ||
|
adc4b956dd | ||
|
219d1989d9 | ||
|
fa7f986319 | ||
|
ce75bc152a | ||
|
289e84b75d | ||
|
4da5a40419 | ||
|
7bf0b42afd | ||
|
5488b1d62e | ||
|
ef22f08115 | ||
|
e8c43f5979 | ||
|
e9bbbaf446 | ||
|
b932558ad6 | ||
|
376c64c892 | ||
|
548ed6e0f5 | ||
|
df916f1e4a | ||
|
847aef5b02 | ||
|
17654139ba | ||
|
e1974d9f81 | ||
|
fcff502d1a | ||
|
0e030dcb08 | ||
|
aa4e385b6b | ||
|
c9488c0384 | ||
|
bcf879b801 | ||
|
84072192b9 | ||
|
d786c6927f | ||
|
2a0113408c | ||
|
967d0dd730 | ||
|
af36549c7e | ||
|
6e2ce89d21 | ||
|
2d5fed3cd9 | ||
|
ba4eef0db9 | ||
|
872f7bdcbe | ||
|
8f6ca03240 | ||
|
35245078c9 | ||
|
fd8a55c57c | ||
|
8fce658dc1 | ||
|
df963fc035 | ||
|
ffab4a8c02 | ||
|
ebd1910bb8 | ||
|
10592ed243 | ||
|
3da1da968e | ||
|
bb2196900b | ||
|
8ef4460f00 | ||
|
a1bd202b51 | ||
|
3faf5cd404 | ||
|
d35abc991e | ||
|
7a29340efc | ||
|
cf6a346749 | ||
|
9f047b7dcf | ||
|
7a50336908 | ||
|
89efc6cb0a | ||
|
5b3b72b9aa | ||
|
a6d749a9c8 | ||
|
a570a266e5 | ||
|
0f5f14defe | ||
|
ab9a752286 | ||
|
8f06bf21b0 | ||
|
eaa099f9cc | ||
|
0642ceba40 | ||
|
0869fa55bb | ||
|
80b8f7b4d8 | ||
|
7c18b1d921 | ||
|
eec99dc76b | ||
|
6663a47d4a | ||
|
c654c3f5de | ||
|
5e48064497 | ||
|
9c8aba3dcd | ||
|
c9fe95c00c | ||
|
9bfa7b01b5 | ||
|
bbf646439a | ||
|
a710d5949e | ||
|
4abb3d2249 | ||
|
6cdc640977 | ||
|
aa662910b2 | ||
|
0e3faf45b1 | ||
|
8b25b0bbf3 | ||
|
dad9475005 | ||
|
00d3ba11d2 | ||
|
c7333caf7d | ||
|
0630b65713 | ||
|
69f9b05cbc | ||
|
74f6d1a85e | ||
|
e0bf7d011b | ||
|
12011c7208 | ||
|
280f0ca27f | ||
|
6ec0af3182 | ||
|
e99c40bc06 | ||
|
e181381bd3 | ||
|
6fa0e814de | ||
|
68191d2b47 | ||
|
81f7587958 | ||
|
d5e2acfd5b | ||
|
663243264b | ||
|
03ca00748c | ||
|
cbb1a4bc44 | ||
|
21f3ab23d3 | ||
|
18944d5ed8 | ||
|
5c6e5f7361 | ||
|
bd72aebd98 | ||
|
0278aea4f7 | ||
|
3c01004641 | ||
|
b8213569e5 | ||
|
4d27f9d741 | ||
|
3b56abf090 | ||
|
590ba6de1b | ||
|
4aa215e091 | ||
|
de175bff11 | ||
|
a6bc8d7105 | ||
|
e48e7caef1 | ||
|
015cdad2df | ||
|
ef6cf5fae1 | ||
|
797152da89 | ||
|
316ff45859 | ||
|
e0ac9ba424 | ||
|
09ca430b88 | ||
|
dda1dab6f3 | ||
|
fbf411c096 | ||
|
a3de3e221c | ||
|
4b0c6f2ca5 | ||
|
c32dc7ecd2 | ||
|
d6e14ca88c | ||
|
ebfc885745 | ||
|
89d7b29b12 | ||
|
6f5d20fd49 | ||
|
15bd0b2675 | ||
|
9132019cb3 | ||
|
a87cbfd7a3 | ||
|
d2c6c8b734 | ||
|
6c5be98173 | ||
|
d51838caf9 | ||
|
a61dd0ab87 | ||
|
d15b1f3c1e | ||
|
40d38b3961 | ||
|
addc318f29 | ||
|
ad124c9d95 | ||
|
4d48395c19 | ||
|
9eb0aa0de4 | ||
|
452b7e0e54 | ||
|
e10a16bc0d | ||
|
b26da26192 | ||
|
be55a26a94 | ||
|
22d4b22c53 | ||
|
00a86df321 | ||
|
b03cdba607 | ||
|
cce90e6ddc | ||
|
b6fc0e4db7 | ||
|
50ed1f0a64 |
295 changed files with 8615 additions and 6333 deletions
|
@ -1 +1 @@
|
|||
{type}: {message}, b=({bugId}), c={components}
|
||||
{type}: {message}, b={bugId}, c={components}
|
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
|
@ -1,2 +0,0 @@
|
|||
patreon: zen_browser
|
||||
ko_fi: zen_browser
|
105
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
105
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
|
@ -4,35 +4,76 @@ body:
|
|||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for filing a bug report!
|
||||
<p align="center">
|
||||
<a href="https://zen-browser.app">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/zen-browser/desktop/dev/docs/assets/zen-light.svg">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/zen-browser/desktop/dev/docs/assets/zen-dark.svg">
|
||||
<img src="https://raw.githubusercontent.com/zen-browser/desktop/dev/docs/assets/zen-light.svg" alt="Zen Logo" width="64" height="64">
|
||||
</picture>
|
||||
<img src="https://raw.githubusercontent.com/zen-browser/desktop/dev/docs/assets/zen-browser.svg" alt="Zen Browser Text" width="156" height="64">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## IMPORTANT READ
|
||||
- Please provide descriptive titles. Bad titles do more harm than good.
|
||||
- Please search existing issues to avoid creating duplicates.
|
||||
- For enhancement requests, please use GitHub Discussions.
|
||||
- Please fill out the template below to the best of your ability.
|
||||
- Please describe the issue as much as possible and provide steps to reproduce it along with visual aids if possible.
|
||||
<p align="center"><em>Thank you for filing a bug report!</em></p>
|
||||
|
||||
> [!IMPORTANT]
|
||||
> - Please provide descriptive titles. Bad titles do more harm than good.
|
||||
> - Please search existing issues to avoid creating duplicates.
|
||||
> - For enhancement requests, please use GitHub Discussions.
|
||||
> - Please fill out the template below to the best of your ability.
|
||||
> - Please describe the issue as much as possible and provide steps to reproduce it along with visual aids if possible.
|
||||
- type: checkboxes
|
||||
id: captchas
|
||||
attributes:
|
||||
label: Captchas
|
||||
description: Just making sure you did actually read the instructions.
|
||||
label: Preliminary Checks
|
||||
description: Please confirm the following before submitting a bug report. This helps us triage and resolve issues more efficiently.
|
||||
options:
|
||||
- label: I have read the instructions.
|
||||
- label: I have read and understood the important section above.
|
||||
required: true
|
||||
- label: I have searched existing issues and avoided creating duplicates.
|
||||
required: true
|
||||
- label: I am not filing an enhancement request.
|
||||
required: true
|
||||
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
||||
required: true
|
||||
- label: I have checked that this issue can be reproduced once I removed all my Mods and Custom CSS.
|
||||
validations:
|
||||
required: true
|
||||
required: true
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: What happened?
|
||||
description: Also tell us, what did you expect to happen?
|
||||
description: Describe the bug clearly and concisely.
|
||||
placeholder: Tell us what you see!
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: expected-behavior
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: Please write a description of what was supposed to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: actual-behavior
|
||||
attributes:
|
||||
label: Actual behavior
|
||||
description: Please write a description of what actually happened.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: how-to-reproduce
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: Please Provide numbered steps to reproduce this issue so developers can replicate them easily.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
attributes:
|
||||
label: Screenshots and videos
|
||||
description: |
|
||||
If applicable, add screenshots or videos to help explain your problem.
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
|
@ -52,8 +93,8 @@ body:
|
|||
- Linux (Tarball)
|
||||
- macOS - aarch64
|
||||
- macOS - Intel
|
||||
- Windows - x64
|
||||
- Windows - aarch64
|
||||
- Windows - x64
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
|
@ -63,26 +104,26 @@ body:
|
|||
label: What component is this issue related to?
|
||||
options:
|
||||
- Other
|
||||
- Compact Mode
|
||||
- Workspaces
|
||||
- Mods / Themes
|
||||
- Glance
|
||||
- URL Bar
|
||||
- Tabs
|
||||
- Split View
|
||||
- Settings
|
||||
- Privacy
|
||||
- Performance
|
||||
- Media Controler
|
||||
- Tab unloading
|
||||
- Tab Folders
|
||||
- Keyboard Shortcuts
|
||||
- Security
|
||||
- Extensions
|
||||
- Customizable UI / Toolbars
|
||||
- Localization
|
||||
- Bookmarks
|
||||
- Compact Mode
|
||||
- Customizable UI / Toolbars
|
||||
- Extensions
|
||||
- Glance
|
||||
- Keyboard Shortcuts
|
||||
- Localization
|
||||
- Media Controler
|
||||
- Mods / Themes
|
||||
- Performance
|
||||
- Privacy
|
||||
- Security
|
||||
- Settings
|
||||
- Split View
|
||||
- Sync
|
||||
- Tab Folders
|
||||
- Tab unloading
|
||||
- Tabs
|
||||
- URL Bar
|
||||
- Workspaces
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
|
107
.github/workflows/build.yml
vendored
107
.github/workflows/build.yml
vendored
|
@ -50,10 +50,24 @@ on:
|
|||
default: false
|
||||
|
||||
jobs:
|
||||
debug-inputs:
|
||||
name: Debug inputs
|
||||
buildid:
|
||||
name: Generate build ID
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
buildids: ${{ steps.get.outputs.bid }}
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- id: get
|
||||
shell: bash -xe {0}
|
||||
run: |
|
||||
bdat=`date +"%Y%m%d%I%M%S"`
|
||||
echo "bid=${bdat}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Debug
|
||||
run: |
|
||||
echo "create_release: ${{ inputs.create_release }}"
|
||||
|
@ -64,21 +78,28 @@ jobs:
|
|||
echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}"
|
||||
echo "GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}"
|
||||
|
||||
buildid:
|
||||
name: Generate build ID
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
buildids: ${{ steps.get.outputs.bid }}
|
||||
steps:
|
||||
- id: get
|
||||
shell: bash -xe {0}
|
||||
- name: Check if correct branch
|
||||
if: ${{ inputs.create_release }}
|
||||
run: |
|
||||
bdat=`date +"%Y%m%d%I%M%S"`
|
||||
echo "bid=${bdat}" >> $GITHUB_OUTPUT
|
||||
echo "Checking if we are on the correct branch"
|
||||
git branch
|
||||
git status
|
||||
git branch --show-current
|
||||
branch="${{ inputs.update_branch }}"
|
||||
if [[ $branch == "twilight" ]]; then
|
||||
branch="dev"
|
||||
elif [[ $branch == "release" ]]; then
|
||||
branch="stable"
|
||||
fi
|
||||
if [[ $(git branch --show-current) != $branch ]]; then
|
||||
echo ">>> Branch mismatch"
|
||||
# exit 1
|
||||
else
|
||||
echo ">>> Branch matches"
|
||||
fi
|
||||
|
||||
start-self-host:
|
||||
runs-on: ubuntu-latest
|
||||
needs: debug-inputs
|
||||
steps:
|
||||
- name: Download aws-cli
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
|
@ -101,42 +122,12 @@ jobs:
|
|||
echo "Removing self-hosted runner script"
|
||||
rm start.sh || true
|
||||
|
||||
check-build-is-correct:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [debug-inputs]
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Check if correct branch
|
||||
if: ${{ inputs.create_release }}
|
||||
run: |
|
||||
echo "Checking if we are on the correct branch"
|
||||
git branch
|
||||
git status
|
||||
git branch --show-current
|
||||
branch="${{ inputs.update_branch }}"
|
||||
if [[ $branch == "twilight" ]]; then
|
||||
branch="dev"
|
||||
elif [[ $branch == "release" ]]; then
|
||||
branch="stable"
|
||||
fi
|
||||
if [[ $(git branch --show-current) != $branch ]]; then
|
||||
echo ">>> Branch mismatch"
|
||||
# exit 1
|
||||
else
|
||||
echo ">>> Branch matches"
|
||||
fi
|
||||
|
||||
build-data:
|
||||
permissions:
|
||||
contents: write
|
||||
name: Generate build data
|
||||
runs-on: ubuntu-latest
|
||||
needs: check-build-is-correct
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
needs: buildid
|
||||
outputs:
|
||||
build_date: ${{ steps.data.outputs.builddate }}
|
||||
version: ${{ steps.data.outputs.version }}
|
||||
|
@ -149,7 +140,7 @@ jobs:
|
|||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
|
@ -199,7 +190,7 @@ jobs:
|
|||
name: Lint
|
||||
|
||||
check-release:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
needs: [build-data, lint]
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
|
@ -209,7 +200,7 @@ jobs:
|
|||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
|
@ -240,7 +231,7 @@ jobs:
|
|||
source:
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
needs: [build-data, check-release]
|
||||
|
||||
steps:
|
||||
|
@ -251,7 +242,7 @@ jobs:
|
|||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
|
@ -368,7 +359,7 @@ jobs:
|
|||
name: AppImage build - Linux ${{ matrix.arch }}
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x86_64, aarch64]
|
||||
|
@ -381,7 +372,7 @@ jobs:
|
|||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
|
@ -446,7 +437,7 @@ jobs:
|
|||
path: ./dist/zen-${{ matrix.arch }}.AppImage.zsync
|
||||
|
||||
stop-self-hosted:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
needs: [windows-step-3, linux]
|
||||
if: always()
|
||||
steps:
|
||||
|
@ -487,7 +478,7 @@ jobs:
|
|||
lint,
|
||||
stop-self-hosted,
|
||||
]
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
environment:
|
||||
name: ${{ inputs.update_branch == 'release' && 'Deploy-Release' || 'Deploy-Twilight' }}
|
||||
|
||||
|
@ -548,7 +539,7 @@ jobs:
|
|||
# If we are on Twilight, we want to just update the Twilight tag's release
|
||||
- name: Update Twilight tag
|
||||
if: ${{ inputs.update_branch == 'twilight' }}
|
||||
uses: softprops/action-gh-release@v2
|
||||
uses: softprops/action-gh-release@v2.2.2
|
||||
with:
|
||||
body_path: release_notes.md
|
||||
files: |
|
||||
|
@ -580,7 +571,7 @@ jobs:
|
|||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
uses: softprops/action-gh-release@v2.2.2
|
||||
if: ${{ inputs.update_branch == 'release' }}
|
||||
with:
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
@ -614,7 +605,7 @@ jobs:
|
|||
permissions: write-all
|
||||
name: Prepare Flatpak
|
||||
needs: [release, linux, build-data]
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
|
||||
steps:
|
||||
- name: Checkout Flatpak repository
|
||||
|
@ -673,7 +664,7 @@ jobs:
|
|||
permissions: write-all
|
||||
name: Release Flatpak
|
||||
needs: [prepare-flatpak, build-data]
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
|
||||
steps:
|
||||
- name: Checkout Flatpak repository
|
||||
|
|
2
.github/workflows/code-linter.yml
vendored
2
.github/workflows/code-linter.yml
vendored
|
@ -4,7 +4,6 @@ on:
|
|||
push:
|
||||
branches:
|
||||
- dev
|
||||
workflow_dispatch:
|
||||
workflow_call:
|
||||
pull_request:
|
||||
branches:
|
||||
|
@ -16,6 +15,7 @@ permissions:
|
|||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ !contains(github.event.head_commit.message, '[no-lint]') }}
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
|
17
.github/workflows/linux-release-build.yml
vendored
17
.github/workflows/linux-release-build.yml
vendored
|
@ -26,7 +26,7 @@ jobs:
|
|||
permissions:
|
||||
contents: write
|
||||
# aarch64 does not need full 16x
|
||||
runs-on: ${{ (inputs.release-branch == 'release' && matrix.arch == 'x86_64') && 'self-hosted' || 'ubuntu-latest' }}
|
||||
runs-on: ${{ (inputs.release-branch == 'release' && matrix.arch == 'x86_64') && 'self-hosted' || 'blacksmith-8vcpu-ubuntu-2404' }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
@ -44,10 +44,6 @@ jobs:
|
|||
with:
|
||||
tool-cache: false
|
||||
|
||||
# Bug: https://github.com/actions/checkout/issues/1153
|
||||
- name: Remove zombie lock file
|
||||
run: rm -f /home/ubuntu/actions-runner/_work/desktop/desktop/.git/modules/l10n/index.lock
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
|
@ -55,7 +51,7 @@ jobs:
|
|||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
|
@ -121,6 +117,11 @@ jobs:
|
|||
./mach --no-interactive bootstrap --application-choice browser
|
||||
cd ..
|
||||
|
||||
- name: Insert API Keys
|
||||
run: |
|
||||
mkdir -p ~/.zen-keys
|
||||
echo "${{ secrets.ZEN_SAFEBROWSING_API_KEY }}" > ~/.zen-keys/safebrowsing.dat
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
|
@ -142,6 +143,10 @@ jobs:
|
|||
export ZEN_RELEASE=1
|
||||
npm run package
|
||||
|
||||
- name: Remove API Keys
|
||||
run: |
|
||||
rm -rf ~/.zen-keys
|
||||
|
||||
- name: Rename artifacts
|
||||
run: |
|
||||
mv dist/zen-*.tar.xz "zen.linux-${{ matrix.arch }}.tar.xz"
|
||||
|
|
9
.github/workflows/macos-release-build.yml
vendored
9
.github/workflows/macos-release-build.yml
vendored
|
@ -132,6 +132,11 @@ jobs:
|
|||
- name: Build language packs
|
||||
run: sh scripts/download-language-packs.sh
|
||||
|
||||
- name: Insert API Keys
|
||||
run: |
|
||||
mkdir -p ~/.zen-keys
|
||||
echo "${{ secrets.ZEN_SAFEBROWSING_API_KEY }}" > ~/.zen-keys/safebrowsing.dat
|
||||
|
||||
- name: Build Zen
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
|
@ -152,6 +157,10 @@ jobs:
|
|||
export ZEN_RELEASE=1
|
||||
npm run package
|
||||
|
||||
- name: Remove API Keys
|
||||
run: |
|
||||
rm -rf ~/.zen-keys
|
||||
|
||||
- name: Rename artifacts
|
||||
run: |
|
||||
echo "Tarballing DMG"
|
||||
|
|
140
.github/workflows/src/generate_release_notes.sh
vendored
140
.github/workflows/src/generate_release_notes.sh
vendored
|
@ -5,7 +5,7 @@ if [ "$RELEASE_BRANCH" = "release" ]; then
|
|||
RELEASE_TYPE="Stable"
|
||||
|
||||
echo "Fetching release notes from GitHub..."
|
||||
RELEASE_NOTES_JSON=$(curl -s "$RELEASE_NOTES_URL")
|
||||
RELEASE_NOTES_JSON=$(curl -s --retry 5 --retry-delay 5 "$RELEASE_NOTES_URL")
|
||||
|
||||
if [ -z "$RELEASE_NOTES_JSON" ]; then
|
||||
echo "Error: Failed to fetch release notes from GitHub"
|
||||
|
@ -18,96 +18,62 @@ else
|
|||
RELEASE_TYPE="Twilight"
|
||||
fi
|
||||
|
||||
cat << EOF > "release_notes.md"
|
||||
# Zen ${RELEASE_TYPE} Release
|
||||
EOF
|
||||
{
|
||||
echo "# Zen ${RELEASE_TYPE} Release"
|
||||
|
||||
if [ "$RELEASE_BRANCH" = "release" ]; then
|
||||
echo "${EXTRA_NOTES}" >> "release_notes.md"
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.features // []) | length > 0' > /dev/null; then
|
||||
cat << EOF >> "release_notes.md"
|
||||
|
||||
## New Features
|
||||
$(echo "$LATEST_RELEASE" | jq -r '.features[] | "- " + .')
|
||||
EOF
|
||||
if [ "$RELEASE_TYPE" = "Twilight" ]; then
|
||||
echo
|
||||
echo "> [!NOTE]"
|
||||
echo "> You're currently in Twilight mode, this means you're downloading the latest experimental features and updates."
|
||||
echo ">"
|
||||
echo "> If you encounter any issues, please report them on the [issues page](https://github.com/zen-browser/desktop/issues)."
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.fixes // []) | length > 0' > /dev/null; then
|
||||
cat << EOF >> "release_notes.md"
|
||||
if [ "$RELEASE_TYPE" = "Stable" ]; then
|
||||
echo "${EXTRA_NOTES}"
|
||||
|
||||
## Fixes
|
||||
EOF
|
||||
echo "$LATEST_RELEASE" | jq -r '.fixes[] | if type=="object" then "- " + .description + " ([#" + (.issue|tostring) + "](" + "https://github.com/zen-browser/desktop/issues/" + (.issue|tostring) + "))" else "- " + . end' >> "release_notes.md"
|
||||
if echo "$LATEST_RELEASE" | jq -e '.security != null and .security != ""' > /dev/null; then
|
||||
echo
|
||||
echo "## Security"
|
||||
echo "[Various security fixes]($(echo "$LATEST_RELEASE" | jq -r '.security'))"
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.features // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## New Features"
|
||||
echo "$LATEST_RELEASE" | jq -r '.features[] | "- " + .'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.fixes // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Fixes"
|
||||
echo "$LATEST_RELEASE" | jq -r '.fixes[] | if type=="object" then "- " + .description + " ([#" + (.issue|tostring) + "](" + "https://github.com/zen-browser/desktop/issues/" + (.issue|tostring) + "))" else "- " + . end'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.breakingChanges // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Breaking Changes"
|
||||
echo "$LATEST_RELEASE" | jq -r '.breakingChanges[] | if type=="string" then "- " + . else "- " + .description + " [Learn more](" + .link + ")" end'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.themeChanges // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Theme Changes"
|
||||
echo "$LATEST_RELEASE" | jq -r '.themeChanges[] | "- " + .'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.changes // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Changes"
|
||||
echo "$LATEST_RELEASE" | jq -r '.changes[] | "- " + .'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.knownIssues // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Known Issues"
|
||||
echo "$LATEST_RELEASE" | jq -r '.knownIssues[] | "- " + .'
|
||||
fi
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.breakingChanges // []) | length > 0' > /dev/null; then
|
||||
cat << EOF >> "release_notes.md"
|
||||
|
||||
## Breaking Changes
|
||||
EOF
|
||||
echo "$LATEST_RELEASE" | jq -r '.breakingChanges[] | if type=="string" then "- " + . else "- " + .description + " [Learn more](" + .link + ")" end' >> "release_notes.md"
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.themeChanges // []) | length > 0' > /dev/null; then
|
||||
cat << EOF >> "release_notes.md"
|
||||
|
||||
## Theme Changes
|
||||
$(echo "$LATEST_RELEASE" | jq -r '.themeChanges[] | "- " + .')
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
|
||||
cat << EOF >> "release_notes.md"
|
||||
|
||||
<details>
|
||||
<summary>File Checksums (SHA-256)</summary>
|
||||
|
||||
\`\`\`
|
||||
EOF
|
||||
|
||||
generate_checksum() {
|
||||
local pattern=$1
|
||||
echo "Generating checksum for $pattern"
|
||||
sha256sum $pattern 2> /dev/null | awk '{sub(".*/", "", $2); print $1 " " $2}' >> "release_notes.md"
|
||||
if [ ${PIPESTATUS[0]} -ne 0 ]; then
|
||||
echo "Warning: No files found matching $pattern, skipping checksum."
|
||||
fi
|
||||
}
|
||||
|
||||
files=(
|
||||
"./zen.source.tar.zst/*"
|
||||
"./zen.linux-x86_64.tar.xz/*"
|
||||
"./zen.linux-aarch64.tar.xz/*"
|
||||
"./zen-x86_64.AppImage/*"
|
||||
"./zen-x86_64.AppImage.zsync/*"
|
||||
"./zen-aarch64.AppImage/*"
|
||||
"./zen-aarch64.AppImage.zsync/*"
|
||||
"./.github/workflows/object/windows-x64-signed-x86_64/zen.win-x86_64.zip"
|
||||
"./zen.win-x86_64.zip/*"
|
||||
"./.github/workflows/object/windows-x64-signed-arm64/zen.win-arm64.zip"
|
||||
"./zen.win-arm64.zip/*"
|
||||
"./linux.mar/*"
|
||||
"./linux-aarch64.mar/*"
|
||||
"./.github/workflows/object/windows-x64-signed-x86_64/windows.mar"
|
||||
"./windows.mar/*"
|
||||
"./.github/workflows/object/windows-x64-signed-arm64/windows-arm64.mar"
|
||||
"./windows-arm64.mar/*"
|
||||
"./macos.mar/*"
|
||||
"./.github/workflows/object/windows-x64-signed-x86_64/zen.installer.exe"
|
||||
"./zen.installer.exe/*"
|
||||
"./.github/workflows/object/windows-x64-signed-arm64/zen.installer-arm64.exe"
|
||||
"./zen.installer-arm64.exe/*"
|
||||
"./zen.macos-universal.dmg/*"
|
||||
)
|
||||
|
||||
for file in "${files[@]}"; do
|
||||
generate_checksum "$file"
|
||||
done
|
||||
|
||||
cat << EOF >> "release_notes.md"
|
||||
\`\`\`
|
||||
</details>
|
||||
EOF
|
||||
} > "release_notes.md"
|
||||
|
||||
echo "Release notes generated: release_notes.md"
|
||||
|
|
19
.github/workflows/windows-release-build.yml
vendored
19
.github/workflows/windows-release-build.yml
vendored
|
@ -35,7 +35,7 @@ jobs:
|
|||
windows-build:
|
||||
name: Build Windows - ${{ matrix.arch }}
|
||||
# aarch64 does not need full 16x, and we also dont use full LTO when generating GPO
|
||||
runs-on: ${{ (inputs.release-branch == 'release' && !inputs.generate-gpo && matrix.arch == 'x86_64') && 'self-hosted' || 'ubuntu-latest' }}
|
||||
runs-on: ${{ (inputs.release-branch == 'release' && !inputs.generate-gpo && matrix.arch == 'x86_64') && 'self-hosted' || 'blacksmith-8vcpu-ubuntu-2404' }}
|
||||
env:
|
||||
SCCACHE_GHA_ENABLED: ${{ inputs.use-sccache && 'true' || 'false' }}
|
||||
CARGO_TERM_COLOR: always
|
||||
|
@ -53,10 +53,6 @@ jobs:
|
|||
with:
|
||||
tool-cache: false
|
||||
|
||||
# Bug: https://github.com/actions/checkout/issues/1153
|
||||
- name: Remove zombie lock file
|
||||
run: rm -f /home/ubuntu/actions-runner/_work/desktop/desktop/.git/modules/l10n/index.lock
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
|
@ -64,7 +60,7 @@ jobs:
|
|||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
|
@ -103,7 +99,7 @@ jobs:
|
|||
env:
|
||||
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5
|
||||
id: cache-win-cross
|
||||
uses: actions/cache@v4
|
||||
uses: useblacksmith/cache@v5
|
||||
with:
|
||||
path: ${HOME}/win-cross
|
||||
key: win-cross
|
||||
|
@ -226,6 +222,11 @@ jobs:
|
|||
chmod +x ~/artifact/en-US.log
|
||||
chmod +x ~/artifact/merged.profdata
|
||||
|
||||
- name: Insert API Keys
|
||||
run: |
|
||||
mkdir -p ~/.zen-keys
|
||||
echo "${{ secrets.ZEN_SAFEBROWSING_API_KEY }}" > ~/.zen-keys/safebrowsing.dat
|
||||
|
||||
- name: Build
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
env:
|
||||
|
@ -259,6 +260,10 @@ jobs:
|
|||
ls ./dist
|
||||
ls .
|
||||
|
||||
- name: Remove API Keys
|
||||
run: |
|
||||
rm -rf ~/.zen-keys
|
||||
|
||||
- name: Move package for PGO upload
|
||||
if: ${{ inputs.generate-gpo && matrix.arch == 'x86_64' }}
|
||||
run: |
|
||||
|
|
|
@ -26,7 +26,7 @@ docs/issue-metrics/*.md
|
|||
# We also dont want to format the CSS files that are generated by the build
|
||||
src/zen/tabs/zen-tabs.css
|
||||
src/zen/compact-mode/zen-compact-mode.css
|
||||
src/zen/common/ZenEmojies.mjs
|
||||
src/zen/common/ZenEmojis.mjs
|
||||
|
||||
src/zen/workspaces/zen-workspaces.css
|
||||
|
||||
|
|
120
README.md
120
README.md
|
@ -1,3 +1,4 @@
|
|||
<!-- TODO: Get a job -->
|
||||
<img src="./docs/assets/zen-dark.svg" width="100px" align="left">
|
||||
|
||||
### `Zen Browser`
|
||||
|
@ -6,7 +7,7 @@
|
|||
[](https://crowdin.com/project/zen-browser)
|
||||
[](https://github.com/zen-browser/desktop/actions/workflows/build.yml)
|
||||
|
||||
✨ Experience tranquillity while browsing the internet with Zen! Our mission is to give you a balance between speed, privacy and productivity!
|
||||
Zen is a firefox-based browser with the aim of pushing your productivity to a new level!
|
||||
|
||||
<div flex="true">
|
||||
<a href="https://zen-browser.app/download">
|
||||
|
@ -26,118 +27,21 @@
|
|||
</a>
|
||||
</div>
|
||||
|
||||
## 🖥️ Compatibility
|
||||
### Firefox Versions
|
||||
|
||||
Zen is currently built using Firefox version `138.0.4`! 🚀
|
||||
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `140.0.2`! 🚀
|
||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 140.0.2`!
|
||||
|
||||
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 138.0.4`!
|
||||
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
|
||||
- Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates!
|
||||
### Contributing
|
||||
|
||||
## 🤝 Contribution
|
||||
If you'd like to report a bug, please do so on our [GitHub Issues page](https://github.com/zen-browser/desktop/issues/) and for feature requests, you can use [Github Discussions](https://github.com/zen-browser/desktop/discussions).
|
||||
|
||||
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
|
||||
#### Partners
|
||||
|
||||
We keep track of how many issues are closed at the end of the month in [docs/issue-metrics](./docs/issue-metrics). We use this to keep track of our issues and see our progress! 📈
|
||||
Thanks to all the partners of Zen for their support and contributions:
|
||||
|
||||
### Versioning
|
||||
|
||||
Zen uses [Semantic Versioning](https://semver.org/), meaning versions are displayed as `a.b.cd` where:
|
||||
|
||||
- `a` is the major version
|
||||
- `b` is the minor version
|
||||
- `c` is the branch prefix
|
||||
- `d` is the patch version
|
||||
|
||||
### 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.
|
||||
|
||||
## 📥 Installation
|
||||
|
||||
### Supported Operating Systems
|
||||
|
||||
Zen is available for Linux, macOS, and Windows. You can download the latest version from the official website at [zen-browser.app](https://zen-browser.app/download), or from the [GitHub Releases](https://github.com/zen-browser/desktop/releases) page.
|
||||
|
||||
If you don't see your OS listed below, that's because we already have it in our [downloads page](https://zen-browser.app/download)! Make sure to check it out!
|
||||
|
||||
#### Windows
|
||||
|
||||
##### Winget
|
||||
|
||||
```ps
|
||||
winget install --id Zen-Team.Zen-Browser
|
||||
```
|
||||
|
||||
#### macOS
|
||||
|
||||
- Requires macOS 10.15 or later
|
||||
- Available for ARM and Intel architectures
|
||||
|
||||
You can also install Zen using Homebrew:
|
||||
|
||||
```
|
||||
brew install zen-browser
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
##### Arch-based distributions
|
||||
|
||||
```sh
|
||||
yay -S zen-browser-bin
|
||||
```
|
||||
|
||||
##### Other Linux distributions (Tarball or AppImage)
|
||||
|
||||
- `Tarball` install:
|
||||
|
||||
```sh
|
||||
bash <(curl -s https://updates.zen-browser.app/install.sh)
|
||||
```
|
||||
|
||||
- `AppImage` install:
|
||||
|
||||
```sh
|
||||
bash <(curl https://updates.zen-browser.app/appimage.sh)
|
||||
```
|
||||
|
||||
> AppImage install requires `zsync` for the Update feature
|
||||
|
||||
- Again, if you don't see your OS listed above, that's because we already have it in our [downloads page](https://zen-browser.app/download)! 🔄
|
||||
|
||||
To upgrade the browser to a newer version, use the embedded update functionality in `About Zen`.
|
||||
|
||||
## 👨💻 Development and Contributing
|
||||
|
||||
Some components used by @zen-browser as an attempt to make Firefox forks a better place, and for other to enjoy the beauty of OSS. You can find them [here](https://github.com/zen-browser/desktop/tree/dev/src/zen).
|
||||
|
||||
#### `Run Locally`
|
||||
|
||||
In order to download and run Zen locally, please follow [these instructions](https://docs.zen-browser.app/guides/building).
|
||||
|
||||
#### `Special Thanks`
|
||||
|
||||
Special thanks to... EVERYONE 🎉! Checkout the team and contributors page [here](https://zen-browser.app/about)
|
||||
|
||||
#### `Third Party Code`
|
||||
|
||||
Zen couldn't be in its current state without the help of these amazing projects! 🙏
|
||||
|
||||
- Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox)
|
||||
- Gradient image extracted from [Arc Palette](https://github.com/neurokitti/Arc_Palette)
|
||||
- `icons.css` has been modified from [Edge Firefox](https://github.com/bmFtZQ/edge-frfox) (MIT licensed file).
|
||||
|
||||
### 🖥️ Comparison with other browsers
|
||||
|
||||
Thanks everyone for making Zen stand out among these giants!
|
||||
|
||||
[](https://star-history.com/#zen-browser/desktop&chromium/chromium&brave/brave-browser&Date)
|
||||
|
||||
## 📄 License
|
||||
|
||||
Zen browser is under the [MPL 2.0 LICENSE](./LICENSE). All the code is open-source and free to use! Attribution is appreciated but not required.
|
||||
<a href="https://blacksmith.sh">
|
||||
<img src="./docs/assets/blacksmith-yellow.png" width="350px"/>
|
||||
</a>
|
||||
|
|
|
@ -1 +1 @@
|
|||
f5fd58c29d2c9bfcc5dcfc8f4abbe69016e13b44
|
||||
d5e5ed08dac5a263dbc7784dff272198b17bbc4f
|
|
@ -32,6 +32,11 @@ if ! test "$SCCACHE_GHA_ENABLED" = "false"; then
|
|||
fi
|
||||
fi
|
||||
|
||||
# add safe browsing key if it exists on a file
|
||||
if test -f "$HOME/.zen-keys/safebrowsing.dat"; then
|
||||
ac_add_options --with-google-safebrowsing-api-keyfile="$HOME/.zen-keys/safebrowsing.dat"
|
||||
fi
|
||||
|
||||
if test "$ZEN_RELEASE"; then
|
||||
|
||||
# TODO: Make this successful in builds
|
||||
|
@ -96,10 +101,7 @@ fi
|
|||
|
||||
ac_add_options --enable-unverified-updates
|
||||
|
||||
ac_add_options --enable-raw
|
||||
ac_add_options --enable-webrtc
|
||||
ac_add_options --enable-jxl
|
||||
ac_add_options --enable-av1
|
||||
|
||||
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||
|
||||
|
|
BIN
docs/assets/blacksmith-yellow.png
Normal file
BIN
docs/assets/blacksmith-yellow.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.2 KiB |
19
docs/assets/zen-browser.svg
Normal file
19
docs/assets/zen-browser.svg
Normal file
|
@ -0,0 +1,19 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 156 64" height="64" width="156">
|
||||
<defs>
|
||||
<style>
|
||||
.label {
|
||||
font-size: 1.5rem;
|
||||
font-family: sans-serif;
|
||||
font-weight: 700;
|
||||
text-align: center;
|
||||
fill: #1f1f1f;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.label {
|
||||
fill: #d1cfc0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<text class="label" y="38" x="5">Zen Browser</text>
|
||||
</svg>
|
After Width: | Height: | Size: 454 B |
|
@ -17,6 +17,10 @@ The `dev` branch is the main branch of the repository, and it is the default bra
|
|||
|
||||
The `stable` branch may have hotfixes directly from the `stable` branch, and the `twilight` branch may have feature branches branched off from the `twilight` branch. This is done so that we can apply hotfixes like security patches directly to the `stable` branch without having to merge the changes from the `twilight` branch.
|
||||
|
||||
# Local Development Setup
|
||||
|
||||
Before you set up your local development environment, **read our [Building Guidelines](https://docs.zen-browser.app/guides/building)**. Skipping them can lead to avoidable build errors.
|
||||
|
||||
# Code Of Conduct
|
||||
|
||||
Please read our [Code of Conduct](../CODE_OF_CONDUCT.md) before contributing.
|
||||
|
|
545
docs/issue-metrics/2025_2025-05-01..2025-05-31.md
Normal file
545
docs/issue-metrics/2025_2025-05-01..2025-05-31.md
Normal file
|
@ -0,0 +1,545 @@
|
|||
# Issue Metrics
|
||||
|
||||
| Metric | Average | Median | 90th percentile |
|
||||
| --- | --- | --- | ---: |
|
||||
| Time to first response | 1 day, 12:44:32 | 4:32:48 | 2 days, 6:10:24 |
|
||||
| Time to close | 1 day, 6:45:20 | 4:43:46 | 2 days, 22:21:34 |
|
||||
|
||||
| Metric | Count |
|
||||
| --- | ---: |
|
||||
| Number of items that remain open | 248 |
|
||||
| Number of items closed | 279 |
|
||||
| Total number of items created | 527 |
|
||||
|
||||
| Title | URL | Time to first response | Time to close |
|
||||
| --- | --- | --- | --- |
|
||||
| Engine | https://github.com/zen-browser/desktop/issues/8743 | 0:20:22 | None |
|
||||
| Zen suddenly eats all available memory [Windows 11] | https://github.com/zen-browser/desktop/issues/8742 | None | None |
|
||||
| Some site-specfic buttons on address bar are missing | https://github.com/zen-browser/desktop/issues/8741 | None | 0:12:59 |
|
||||
| Small "currently playing" at the bottom of the tabbar doesn't recognize livestreams. | https://github.com/zen-browser/desktop/issues/8740 | 1:38:39 | None |
|
||||
| URL Bar flickers when toggling compact mode | https://github.com/zen-browser/desktop/issues/8738 | None | None |
|
||||
| Missing bookmarks/pinned tabs icons | https://github.com/zen-browser/desktop/issues/8736 | 0:47:55 | None |
|
||||
| Unable to access iCloud Passwords | https://github.com/zen-browser/desktop/issues/8735 | None | 1:13:00 |
|
||||
| Some Extensions Like Firefox Multi Account Container No Longer Shows Thier Icons In The URL Bar | https://github.com/zen-browser/desktop/issues/8732 | 3:38:32 | 3:38:32 |
|
||||
| Essential Tab Icon Vibrance | https://github.com/zen-browser/desktop/issues/8731 | 0:39:22 | 2:02:27 |
|
||||
| Pinned Extensions not visible after browser restart in Compact Mode | https://github.com/zen-browser/desktop/issues/8730 | 5:05:37 | None |
|
||||
| Essential tabs get out of order when creating a new window | https://github.com/zen-browser/desktop/issues/8729 | None | None |
|
||||
| Zen browser doesn't allow entering TOTP for Proxmox access | https://github.com/zen-browser/desktop/issues/8728 | None | None |
|
||||
| Vertical scrolling in the sidebar slows down when using the trackpad swipe gesture to switch workspaces in 1.12.9b. | https://github.com/zen-browser/desktop/issues/8727 | None | None |
|
||||
| Restoring pinned tabs relegates them to normal tabs area | https://github.com/zen-browser/desktop/issues/8726 | 3:03:01 | None |
|
||||
| Using SHIFT + some key with a modifier doesn't respond as a keyboard shortcut. | https://github.com/zen-browser/desktop/issues/8725 | 5:26:20 | None |
|
||||
| Cant build Zen error 2 | https://github.com/zen-browser/desktop/issues/8723 | 2:31:17 | None |
|
||||
| Pinned extensions sometimes aren't visible in toolbar on startup in single toolbar mode | https://github.com/zen-browser/desktop/issues/8722 | 2:52:31 | None |
|
||||
| Gradient on top of window not displaying correctly | https://github.com/zen-browser/desktop/issues/8721 | 6:16:26 | None |
|
||||
| Missing the Profiles menu item after update to 1.12.9b version | https://github.com/zen-browser/desktop/issues/8720 | None | 0:06:49 |
|
||||
| Search with Google not working inside Glances window. | https://github.com/zen-browser/desktop/issues/8717 | 12:16:58 | None |
|
||||
| Right-Click Menu Icon Not Displaying | https://github.com/zen-browser/desktop/issues/8716 | 0:05:47 | 0:58:20 |
|
||||
| Can't share screen on Google Meet (Mac) | https://github.com/zen-browser/desktop/issues/8715 | None | None |
|
||||
| Profile switcher missing in context menu | https://github.com/zen-browser/desktop/issues/8713 | 0:40:14 | 8:43:33 |
|
||||
| New Tab Hover Menu transparent instead of translucent in maximized window | https://github.com/zen-browser/desktop/issues/8711 | 8:27:38 | 8:27:38 |
|
||||
| Unloaded Tabs dim only the Favicon but not the Text | https://github.com/zen-browser/desktop/issues/8710 | 6:56:56 | None |
|
||||
| Notification push don't work in linux if the page isn't loaded | https://github.com/zen-browser/desktop/issues/8709 | None | None |
|
||||
| Zen Browser's Position Drags Slightly When Clicking its Sidebar on MacOS | https://github.com/zen-browser/desktop/issues/8706 | 13:34:24 | None |
|
||||
| Extensions not opening Before focus to a tab | https://github.com/zen-browser/desktop/issues/8705 | None | None |
|
||||
| Cmd + K (Focus Search) still active after closing it | https://github.com/zen-browser/desktop/issues/8704 | None | None |
|
||||
| 2 video in PIP dont work if you have 2 screen | https://github.com/zen-browser/desktop/issues/8703 | None | None |
|
||||
| SteamVR's Desktop Overlay Cannot Reveal Compact Mode Tabs | https://github.com/zen-browser/desktop/issues/8702 | None | None |
|
||||
| Restore Last Closed Tab(s) right after startup breaks the UI | https://github.com/zen-browser/desktop/issues/8699 | 9:14:56 | None |
|
||||
| Zen Browser doesnt store my tabs and half the features are missing in 1.12.8b | https://github.com/zen-browser/desktop/issues/8697 | 1:41:36 | None |
|
||||
| Restoring Session With Even Number of Windows Results in At Least One Window Not Adhering to Theme Coloring | https://github.com/zen-browser/desktop/issues/8694 | 0:28:05 | 1 day, 3:00:32 |
|
||||
| When in compact mode in Windows and when no tabs are open, the navigation tools of windows to close, minimize and maximize get overlapped and its difficult to use them. | https://github.com/zen-browser/desktop/issues/8692 | None | None |
|
||||
| Pinned tab title not refreshing | https://github.com/zen-browser/desktop/issues/8691 | 6:20:06 | None |
|
||||
| Zen browser doesn't check for duplicate bookmarks when importing them from other accounts | https://github.com/zen-browser/desktop/issues/8690 | 15:49:28 | None |
|
||||
| Cannot add tabs to essentials anymore | https://github.com/zen-browser/desktop/issues/8689 | 2:19:39 | None |
|
||||
| Address/search bar doesn't show search engines, when address is typed, no search is allowed | https://github.com/zen-browser/desktop/issues/8687 | 6:14:49 | None |
|
||||
| Windows Single Sign-On does not seem to work from within Containers | https://github.com/zen-browser/desktop/issues/8686 | 4:55:19 | None |
|
||||
| Spelling selection - added language does'nt show up | https://github.com/zen-browser/desktop/issues/8685 | 10:38:15 | None |
|
||||
| Unable to open Glance windows, shortcut just opens new window regardless of selected activation key. | https://github.com/zen-browser/desktop/issues/8680 | 10:03:54 | 1 day, 16:09:30 |
|
||||
| Pinned tabs don't show an updated version of a website after opening them again | https://github.com/zen-browser/desktop/issues/8679 | None | None |
|
||||
| Dragging a local PDF into Zen Browser fails with “File not found” error | https://github.com/zen-browser/desktop/issues/8670 | 1 day, 3:11:59 | None |
|
||||
| In the compact mode, there are some issues with the automatic hiding of the toolbar. | https://github.com/zen-browser/desktop/issues/8669 | None | None |
|
||||
| Error when opening the app | https://github.com/zen-browser/desktop/issues/8668 | None | None |
|
||||
| Blur not working anymore in maximized windows | https://github.com/zen-browser/desktop/issues/8667 | 0:36:09 | 0:36:09 |
|
||||
| Back and forth arrows confusing | https://github.com/zen-browser/desktop/issues/8666 | 1:03:53 | 1:03:53 |
|
||||
| pop up "Paste" on site | https://github.com/zen-browser/desktop/issues/8664 | 12:27:36 | 12:27:36 |
|
||||
| Zen Browser Forgetting Tab Settings | https://github.com/zen-browser/desktop/issues/8662 | 3:12:47 | None |
|
||||
| Windows taskber preview showing inactive tab | https://github.com/zen-browser/desktop/issues/8657 | None | None |
|
||||
| [BUG] Middle Click not scrolling faster | https://github.com/zen-browser/desktop/issues/8656 | None | 16:39:10 |
|
||||
| Toolbar hides when hovering off a bookmark but still within the toolbar area in Compact Mode | https://github.com/zen-browser/desktop/issues/8655 | 15:06:50 | 15:06:50 |
|
||||
| Different zoom levels, while working with the pdf (drop down) is not visible unless howering over it. | https://github.com/zen-browser/desktop/issues/8653 | 17:36:47 | None |
|
||||
| Sidebar unexpectedly toggles in compact mode when using Raycast focus timer | https://github.com/zen-browser/desktop/issues/8652 | 17:58:22 | 19:09:46 |
|
||||
| Horizontal Scrolling with mouse wheel is not working on Mac | https://github.com/zen-browser/desktop/issues/8649 | 20:58:04 | None |
|
||||
| Zen context menus have inconsistent indentation and toast notification color is too dark in private mode. | https://github.com/zen-browser/desktop/issues/8648 | 21:56:58 | None |
|
||||
| Sidebar stuck open, does not collapse when compact mode turned on. | https://github.com/zen-browser/desktop/issues/8643 | 1 day, 10:21:36 | None |
|
||||
| olk.exe is blocked by MS Defender ASR Security role when opening links from Outlook / MS Teams | https://github.com/zen-browser/desktop/issues/8642 | 3:20:57 | 2 days, 3:44:52 |
|
||||
| Cmd+Shift+C doesn't follow browser.urlbar.decodeURLsOnCopy | https://github.com/zen-browser/desktop/issues/8641 | 5:19:57 | 5:19:57 |
|
||||
| Hi, there is an issue with the sound icon in the shortcuts where it looks like it's beating. | https://github.com/zen-browser/desktop/issues/8640 | 0:31:19 | 6:28:53 |
|
||||
| YouTube locks up during video and does not return and does not refresh | https://github.com/zen-browser/desktop/issues/8638 | None | None |
|
||||
| Google Sheets error report when switching from split screen | https://github.com/zen-browser/desktop/issues/8635 | None | None |
|
||||
| Remove link to Firefox Support | https://github.com/zen-browser/desktop/issues/8634 | 0:25:06 | None |
|
||||
| Can't Open Hisotry Tab In Compact Mode with No Open Tabs | https://github.com/zen-browser/desktop/issues/8632 | 2:46:16 | None |
|
||||
| division by zero, showing incorrectly in the search bar | https://github.com/zen-browser/desktop/issues/8631 | 23:16:38 | 1 day, 0:05:11 |
|
||||
| No option to unpin tab from url bar | https://github.com/zen-browser/desktop/issues/8629 | 1:19:24 | 4:01:02 |
|
||||
| Essential and Pinned Tab Icons Not Displaying Until Clicked | https://github.com/zen-browser/desktop/issues/8628 | 4:06:21 | 4 days, 1:51:29 |
|
||||
| Colors in sidebar seem broken | https://github.com/zen-browser/desktop/issues/8627 | 0:51:23 | 0:51:23 |
|
||||
| [BUG] Compact mode disales also Mini window brokes | https://github.com/zen-browser/desktop/issues/8626 | 0:32:32 | None |
|
||||
| spotify keeps crashing | https://github.com/zen-browser/desktop/issues/8625 | 0:09:38 | 0:09:38 |
|
||||
| [regression] tab bar doesn't follow the currently selected tab. | https://github.com/zen-browser/desktop/issues/8623 | 1:28:05 | None |
|
||||
| can't download on glance page | https://github.com/zen-browser/desktop/issues/8620 | 8:43:05 | None |
|
||||
| Keybinds not working after tab change | https://github.com/zen-browser/desktop/issues/8617 | 13:42:53 | None |
|
||||
| Address bar not visible on 1280x720 screens | https://github.com/zen-browser/desktop/issues/8616 | None | None |
|
||||
| Close button not centered when tabs are on the right | https://github.com/zen-browser/desktop/issues/8615 | None | None |
|
||||
| OpenSearch is not working in Zen Browser | https://github.com/zen-browser/desktop/issues/8614 | None | 0:02:48 |
|
||||
| Switching to an unloaded tab opens a duplicate, instead of actually switching to it. | https://github.com/zen-browser/desktop/issues/8613 | None | 0:51:33 |
|
||||
| Split view tabs' custom red highlight color reset after opening new window | https://github.com/zen-browser/desktop/issues/8610 | 10:05:25 | None |
|
||||
| Audio preview from osu! website not functional | https://github.com/zen-browser/desktop/issues/8608 | 7:14:22 | 7:35:21 |
|
||||
| Zen disables compact mode on startup | https://github.com/zen-browser/desktop/issues/8606 | 8:06:57 | None |
|
||||
| Overflow menu button only appears for automatically added buttons | https://github.com/zen-browser/desktop/issues/8605 | None | None |
|
||||
| Youtube Fullscreen grey rounded shape in each corner | https://github.com/zen-browser/desktop/issues/8604 | None | None |
|
||||
| Cannot higlight a part of URL in adress (or URL) bar | https://github.com/zen-browser/desktop/issues/8603 | 1 day, 15:33:14 | None |
|
||||
| Toggling Sidebar's Width on a Floating Sidebar shows weird 2 frame animation | https://github.com/zen-browser/desktop/issues/8602 | None | None |
|
||||
| Omnibox closes on keyboard layout switch (Wayland / KDE) | https://github.com/zen-browser/desktop/issues/8600 | None | 0:27:49 |
|
||||
| Interaction between Essentials and containers makes tabs disappear | https://github.com/zen-browser/desktop/issues/8599 | 1:14:41 | None |
|
||||
| Unclosable Search Popup in Zen Browser After Update | https://github.com/zen-browser/desktop/issues/8598 | None | 4:16:15 |
|
||||
| MacOS Smooth Scrolling Stutter on HiDPI Resolutions | https://github.com/zen-browser/desktop/issues/8597 | None | 0:01:02 |
|
||||
| When toggling compact mode with tabs on the right side on Windows, the buttons briefly pop up in the wrong place | https://github.com/zen-browser/desktop/issues/8595 | None | None |
|
||||
| Unable to Remove Workspace Container after Update | https://github.com/zen-browser/desktop/issues/8594 | None | 1:32:31 |
|
||||
| Displacement of icons on collapsed bar | https://github.com/zen-browser/desktop/issues/8593 | 1:43:44 | None |
|
||||
| Inconsistent behavior between Windows (x64) and Linux (tar) regarding keyboard shortcuts | https://github.com/zen-browser/desktop/issues/8592 | 6:33:41 | None |
|
||||
| Overflow menu missing in single toolbar mode | https://github.com/zen-browser/desktop/issues/8591 | 4:48:43 | 4:48:43 |
|
||||
| Icons in right click menu out of allignment | https://github.com/zen-browser/desktop/issues/8590 | None | 13:32:10 |
|
||||
| Sites without a background color use the theme gradient as the background | https://github.com/zen-browser/desktop/issues/8589 | 6:05:21 | 6:05:21 |
|
||||
| Multiple home pages do not load on starting the browser with zen.urlbar.replace-newtab set to true | https://github.com/zen-browser/desktop/issues/8588 | None | None |
|
||||
| Switching to WhatsApp Web tab does not focus the message input field | https://github.com/zen-browser/desktop/issues/8587 | 10:55:01 | 2 days, 13:08:21 |
|
||||
| When opening a new window, pinned split screen tabs are split apart / not preserved | https://github.com/zen-browser/desktop/issues/8583 | None | None |
|
||||
| widget.gtk.native-context-menus not being functional (most options) | https://github.com/zen-browser/desktop/issues/8582 | None | None |
|
||||
| Icon Rendering Incorrectly in KDE Plasma 6 Wayland Window Switcher | https://github.com/zen-browser/desktop/issues/8580 | None | None |
|
||||
| spotfy just refuses to work properly | https://github.com/zen-browser/desktop/issues/8577 | 1:39:16 | 1:39:16 |
|
||||
| Compact view not working at all | https://github.com/zen-browser/desktop/issues/8575 | 4:33:12 | 1 day, 0:35:59 |
|
||||
| Gap at the top of every windows | https://github.com/zen-browser/desktop/issues/8574 | 2:50:22 | None |
|
||||
| Private Mode Forced Pinkish-Purple Theme | https://github.com/zen-browser/desktop/issues/8570 | 0:27:34 | 0:27:55 |
|
||||
| Logging into google causing browser to crash | https://github.com/zen-browser/desktop/issues/8569 | None | None |
|
||||
| Streaming websites do not work on Windows beta | https://github.com/zen-browser/desktop/issues/8568 | 0:48:09 | 0:48:09 |
|
||||
| get unchange blue theme after last autoupdate to 1.12.8b | https://github.com/zen-browser/desktop/issues/8567 | 1:26:08 | 1:31:30 |
|
||||
| Customize Toobar: No longer it's possible to drag entries to the url bar. | https://github.com/zen-browser/desktop/issues/8566 | 0:02:19 | 0:02:19 |
|
||||
| Browser window sometimes disappears for less than a second, revealing applications running in the background. | https://github.com/zen-browser/desktop/issues/8565 | None | None |
|
||||
| MMB Paste when setting is OFF | https://github.com/zen-browser/desktop/issues/8564 | None | None |
|
||||
| The sidebar does not change colors in auto-hide mod in compact mode | https://github.com/zen-browser/desktop/issues/8563 | None | None |
|
||||
| Split View: "Save PDF before leaving"-dialogue centered on browser window; covered by other split(s) | https://github.com/zen-browser/desktop/issues/8561 | None | None |
|
||||
| No video with supported format and MIME type found | https://github.com/zen-browser/desktop/issues/8560 | 1:03:42 | 1 day, 0:42:39 |
|
||||
| Floating URL bar appears way off the expected position | https://github.com/zen-browser/desktop/issues/8559 | 11:32:28 | None |
|
||||
| gradient contrast issue when switching theme | https://github.com/zen-browser/desktop/issues/8558 | None | None |
|
||||
| Tab corners aren't rounded on some pages | https://github.com/zen-browser/desktop/issues/8557 | None | None |
|
||||
| Background defaults to Zen theme color, not white | https://github.com/zen-browser/desktop/issues/8554 | 17:48:16 | 1 day, 0:40:19 |
|
||||
| Zen Crashes when handling anything related to audio sharing(discord or call) or video sharing | https://github.com/zen-browser/desktop/issues/8553 | 2 days, 0:42:30 | 4 days, 16:10:53 |
|
||||
| Sidebar titles are not visible | https://github.com/zen-browser/desktop/issues/8552 | 14:31:33 | None |
|
||||
| Gradient persists with zen.theme.gradient=false | https://github.com/zen-browser/desktop/issues/8551 | 8:00:02 | 16:48:52 |
|
||||
| bookmark issue | https://github.com/zen-browser/desktop/issues/8550 | None | None |
|
||||
| Exit button not in corner | https://github.com/zen-browser/desktop/issues/8549 | 0:21:02 | None |
|
||||
| Workspace icons break when resizing window. The icon state persists after the window is maximized | https://github.com/zen-browser/desktop/issues/8548 | None | None |
|
||||
| URL bar flickers when cursor is at specific position | https://github.com/zen-browser/desktop/issues/8547 | None | None |
|
||||
| New tab button disappeared and lost fixed position after reenabling | https://github.com/zen-browser/desktop/issues/8546 | None | None |
|
||||
| Single bar Mode Extension issue | https://github.com/zen-browser/desktop/issues/8545 | 18:47:17 | None |
|
||||
| Deadzone on top right in macOS | https://github.com/zen-browser/desktop/issues/8540 | None | 0:12:33 |
|
||||
| Extensions stopped working | https://github.com/zen-browser/desktop/issues/8538 | None | None |
|
||||
| Add-on Element Overlap | https://github.com/zen-browser/desktop/issues/8537 | None | None |
|
||||
| YouTube UI Rounded corners and theme colour bug | https://github.com/zen-browser/desktop/issues/8536 | 3:15:12 | 3:15:12 |
|
||||
| Loading large JSON files in the built-in viewer, then using the "Save" button results in the downloaded file missing some JSON entries. | https://github.com/zen-browser/desktop/issues/8535 | None | None |
|
||||
| Win10 1809 version:Baidu Apollo Config Center WEB-UI:Text Area Input Mouse focus on position error | https://github.com/zen-browser/desktop/issues/8533 | None | None |
|
||||
| Webpages are flickering/flashing constantly | https://github.com/zen-browser/desktop/issues/8531 | None | None |
|
||||
| Tabs reopen in new windows | https://github.com/zen-browser/desktop/issues/8529 | None | None |
|
||||
| Workspace Default Container Randomised on Update | https://github.com/zen-browser/desktop/issues/8527 | 8:07:54 | None |
|
||||
| Workspace right click not working | https://github.com/zen-browser/desktop/issues/8526 | 8:21:24 | None |
|
||||
| When re-opening a recently closed window, window is opened with and focused on a New Tab page | https://github.com/zen-browser/desktop/issues/8525 | 16:10:13 | None |
|
||||
| Battleye flag | https://github.com/zen-browser/desktop/issues/8524 | 0:30:25 | 0:37:32 |
|
||||
| Close tab action removes Essential | https://github.com/zen-browser/desktop/issues/8523 | 0:48:59 | 1:37:49 |
|
||||
| Update v1.12.7b broke compact tabs | https://github.com/zen-browser/desktop/issues/8522 | 1:17:05 | 1:17:05 |
|
||||
| Patch apply failed for update v1.12.7b | https://github.com/zen-browser/desktop/issues/8521 | None | 1 day, 5:59:24 |
|
||||
| More light middle bar of sidebar for better recognition of icons on tabs | https://github.com/zen-browser/desktop/issues/8520 | 2:58:50 | 2:58:50 |
|
||||
| More pleasant corner in compact mode and collapsed option with hiding of top bar | https://github.com/zen-browser/desktop/issues/8519 | 3:43:41 | 6:46:24 |
|
||||
| sometime alt tab does.t work | https://github.com/zen-browser/desktop/issues/8517 | None | None |
|
||||
| dowload some pdf | https://github.com/zen-browser/desktop/issues/8516 | None | None |
|
||||
| YouTube in full screen mode is laggy/jerky. In Firefox, same video is fine | https://github.com/zen-browser/desktop/issues/8515 | None | None |
|
||||
| iCloud Passwords extension reports "macOS Sonoma or later to be installed" but I am running on Sequoia | https://github.com/zen-browser/desktop/issues/8514 | 0:10:31 | 0:10:31 |
|
||||
| `New background tab opened` notification not issued in some cases | https://github.com/zen-browser/desktop/issues/8511 | None | None |
|
||||
| Unable to see notifications from zen when in single toolbar browser layout, unless hovering over top bar. | https://github.com/zen-browser/desktop/issues/8510 | None | 1:08:12 |
|
||||
| Hiding top bar and tab bar doesnt work in latest version | https://github.com/zen-browser/desktop/issues/8509 | None | 0:14:35 |
|
||||
| Container-specific essentials don't work, even if enable and reboot - Windows ARM - Last update | https://github.com/zen-browser/desktop/issues/8508 | 0:24:00 | None |
|
||||
| Clicking current workspace icon flashes previous workspace's theme colours | https://github.com/zen-browser/desktop/issues/8507 | 2:33:28 | 12:47:45 |
|
||||
| Conflict with Zen Privacy app | https://github.com/zen-browser/desktop/issues/8506 | 2:40:37 | 2:40:37 |
|
||||
| Can not play videos in Udemy and music in Spotify. | https://github.com/zen-browser/desktop/issues/8505 | 1:27:54 | 1:27:54 |
|
||||
| When opening a new window, the order of essential tabs gets out of order (but only in the second window) | https://github.com/zen-browser/desktop/issues/8503 | 5:52:57 | 5:52:57 |
|
||||
| Tab list doesn't retain scroll position after opening the browser | https://github.com/zen-browser/desktop/issues/8502 | 20:46:10 | None |
|
||||
| YouTube player sometimes incorrectly opens in fullscreen mode | https://github.com/zen-browser/desktop/issues/8501 | 11:18:42 | None |
|
||||
| Toolbar items can only be inserted into sidebar as nested in Top Buttons and Bottom Buttons blocks. | https://github.com/zen-browser/desktop/issues/8500 | 8:27:32 | 8:27:32 |
|
||||
| Stupid updates enabled by default and hard to disable | https://github.com/zen-browser/desktop/issues/8499 | 9:19:18 | 9:19:06 |
|
||||
| Gradient in sidebar is broken | https://github.com/zen-browser/desktop/issues/8498 | 9:25:28 | 9:25:28 |
|
||||
| FirebaseError: Messaging: This browser doesn't support the API's required to use the Firebase SDK. | https://github.com/zen-browser/desktop/issues/8497 | None | None |
|
||||
| Weird bar on top of desktop window on macos after 1.12.7b | https://github.com/zen-browser/desktop/issues/8496 | 0:22:14 | 1:19:03 |
|
||||
| Mod Refuses to Uninstall | https://github.com/zen-browser/desktop/issues/8495 | 0:20:53 | 0:20:52 |
|
||||
| Livestream video freezes when focusing other fullscreen window, but audio still works | https://github.com/zen-browser/desktop/issues/8491 | 16:45:00 | None |
|
||||
| Toggle Sidebar button not visible/working | https://github.com/zen-browser/desktop/issues/8489 | 6:25:39 | None |
|
||||
| all Zen UI elements outside the viewport are partially transparent (not blurred) | https://github.com/zen-browser/desktop/issues/8488 | None | 1 day, 8:57:38 |
|
||||
| Top Bar Delay and Partial Display on Hover After Recent Update | https://github.com/zen-browser/desktop/issues/8487 | 1:35:56 | 13:37:40 |
|
||||
| Firefox View icon disapears after restart | https://github.com/zen-browser/desktop/issues/8486 | 1 day, 17:22:21 | None |
|
||||
| Sidebar double click not opens new tab anymore | https://github.com/zen-browser/desktop/issues/8485 | 0:09:42 | 10:01:18 |
|
||||
| When Windows wakes my display from being powered off by the OS, Zen toolbar and sidebar become unresponsive and do not show in compact mode | https://github.com/zen-browser/desktop/issues/8484 | None | None |
|
||||
| Compact mode toolbar dragging issue | https://github.com/zen-browser/desktop/issues/8483 | None | 0:03:29 |
|
||||
| Shift + Alt - unexpectedly closing opened new tab spotlight input | https://github.com/zen-browser/desktop/issues/8481 | 1 day, 12:59:02 | None |
|
||||
| Unable to hide Workspace Indicator | https://github.com/zen-browser/desktop/issues/8480 | 1 day, 10:43:05 | 0:05:56 |
|
||||
| Url bar doesn't popup correctly on compact mode | https://github.com/zen-browser/desktop/issues/8478 | None | 0:06:58 |
|
||||
| [1.12.6b] Initializing a workspace causes a empty workspace until you close out of the browser and reopen it. | https://github.com/zen-browser/desktop/issues/8476 | None | 1:04:58 |
|
||||
| Renaming pinned tab input focus issue (when using Left/Right buttons) | https://github.com/zen-browser/desktop/issues/8475 | None | 2:46:26 |
|
||||
| URL BAR APPEARS WHEN EXITING FULLSCREEN | https://github.com/zen-browser/desktop/issues/8474 | None | 0:29:12 |
|
||||
| Mouse loses functionality in the sidebar and sidebar gets stuck on open im compact mode | https://github.com/zen-browser/desktop/issues/8471 | 11:10:16 | None |
|
||||
| Tabs created by text being dragged into sidebar show container indicator when a workspace is assigned to a container. | https://github.com/zen-browser/desktop/issues/8470 | None | None |
|
||||
| 1Password Extension - Desktop App Integration Setting - Connection Problem Error | https://github.com/zen-browser/desktop/issues/8469 | 2:41:44 | None |
|
||||
| Dragging a tab onto a Glance tab appends its favicon and renders the tab inaccessible | https://github.com/zen-browser/desktop/issues/8465 | 0:31:46 | 22:19:59 |
|
||||
| Screen Sharing Malfunction in Google Meet (Windows) | https://github.com/zen-browser/desktop/issues/8464 | 0:58:42 | None |
|
||||
| Glance causes stutter | https://github.com/zen-browser/desktop/issues/8463 | None | None |
|
||||
| visibility of the search bar with a dark background | https://github.com/zen-browser/desktop/issues/8462 | 2:40:56 | 2:40:56 |
|
||||
| container, workspace and tab synchronization | https://github.com/zen-browser/desktop/issues/8460 | None | None |
|
||||
| It's Dark mode when the Tips Box comes up | https://github.com/zen-browser/desktop/issues/8459 | 1:54:22 | 16:10:29 |
|
||||
| Toolbar doesn't appear on hover after update when using compact mode with hidden bars | https://github.com/zen-browser/desktop/issues/8458 | 0:24:26 | 14:16:08 |
|
||||
| Gradient sometimes lost on startup | https://github.com/zen-browser/desktop/issues/8457 | None | None |
|
||||
| Workspace name visible again after udpate | https://github.com/zen-browser/desktop/issues/8455 | 0:45:18 | 2:35:37 |
|
||||
| Workspaces not visible when compact mode | https://github.com/zen-browser/desktop/issues/8454 | 3:14:43 | None |
|
||||
| Favicon Issue on grok.com Bookmarks | https://github.com/zen-browser/desktop/issues/8453 | None | None |
|
||||
| Ctrl + Shift + C (pick an element from the page) not working in page devtools | https://github.com/zen-browser/desktop/issues/8452 | 3:38:50 | 1 day, 0:04:18 |
|
||||
| Signing in with Google is Not working. | https://github.com/zen-browser/desktop/issues/8451 | 3 days, 18:52:30 | None |
|
||||
| Browser tab switcher only displays 7 tabs even when more are open | https://github.com/zen-browser/desktop/issues/8450 | None | None |
|
||||
| Compact Sidebar is not aligned properly | https://github.com/zen-browser/desktop/issues/8449 | None | 7:19:21 |
|
||||
| TLS error connecting to accounts.microsoft.com | https://github.com/zen-browser/desktop/issues/8448 | None | None |
|
||||
| Weird colored text highlighting in google search titles | https://github.com/zen-browser/desktop/issues/8447 | None | 5:45:04 |
|
||||
| White block at the bottom of every page | https://github.com/zen-browser/desktop/issues/8446 | None | None |
|
||||
| External links launch process hangs for 2 minutes | https://github.com/zen-browser/desktop/issues/8445 | 8:39:25 | None |
|
||||
| Collapse and multi toolbar layouts are shortened vertically | https://github.com/zen-browser/desktop/issues/8444 | None | 4:29:53 |
|
||||
| Audible online player not working | https://github.com/zen-browser/desktop/issues/8443 | 2:35:00 | 2:35:00 |
|
||||
| YouTube views counter display issue. | https://github.com/zen-browser/desktop/issues/8439 | None | None |
|
||||
| The workspaces icons at the bottom twinkle when i resize | https://github.com/zen-browser/desktop/issues/8437 | None | None |
|
||||
| bug extension name/size icon when switch between single toolbar and multiple toolbar | https://github.com/zen-browser/desktop/issues/8436 | None | None |
|
||||
| 1.12.5b can't auto-update on macOS, manual upgrage results in new profile | https://github.com/zen-browser/desktop/issues/8433 | 4:31:18 | 1 day, 20:07:07 |
|
||||
| Gamepad breaks the browser on mac | https://github.com/zen-browser/desktop/issues/8432 | None | 4 days, 20:24:24 |
|
||||
| Suerpins - Broke "Makes pinned tabs look similar to Essentials (icon only in a grid)" | https://github.com/zen-browser/desktop/issues/8431 | 0:56:23 | 4:32:12 |
|
||||
| Browser hangs after closing a tab that was using picture-in-picture. | https://github.com/zen-browser/desktop/issues/8430 | None | None |
|
||||
| Zen Browser is laggy and consumes excessive energy | https://github.com/zen-browser/desktop/issues/8428 | 1 day, 13:37:20 | None |
|
||||
| Pinned tabs appear in incorrect workspace/container after using Ctrl + N or open new window in taskbar | https://github.com/zen-browser/desktop/issues/8427 | None | None |
|
||||
| Glance and Tab Switching not working properly | https://github.com/zen-browser/desktop/issues/8426 | 0:08:15 | None |
|
||||
| Copying Profile from Flatpak to AppImage gives "Older Version" error, even though AppImage is newer. | https://github.com/zen-browser/desktop/issues/8424 | None | None |
|
||||
| Sidebar custom configuration resets between sessions in the app, and instead should persist. | https://github.com/zen-browser/desktop/issues/8422 | None | None |
|
||||
| Blurred fonts on ultrawide monitor full screen | https://github.com/zen-browser/desktop/issues/8421 | 3:59:32 | None |
|
||||
| Allow Drag-and-Drop to Open Tabs in a New Window | https://github.com/zen-browser/desktop/issues/8418 | 0:42:07 | None |
|
||||
| Floating url bar unexpected behaviour (loosing focus and not showing instantly with ctrl+T) | https://github.com/zen-browser/desktop/issues/8417 | None | None |
|
||||
| Reset URL and switch to next tab undesired behaviour | https://github.com/zen-browser/desktop/issues/8416 | 5:53:34 | 1 day, 12:25:32 |
|
||||
| One tab required to remain loaded in every workspace when trying to unload all tabs | https://github.com/zen-browser/desktop/issues/8414 | None | None |
|
||||
| edit : sorry for cloning the issue, the same issue was posted right below this issue by gordonn. | https://github.com/zen-browser/desktop/issues/8413 | None | 0:06:07 |
|
||||
| [Twilight 1.13] Multi toolbar and collapse toolbar modes are misalligned | https://github.com/zen-browser/desktop/issues/8412 | 0:37:08 | 4:32:12 |
|
||||
| Clicking already selected workspace causes incorrect scrollbar size | https://github.com/zen-browser/desktop/issues/8411 | None | None |
|
||||
| Switch to tab indicator thinner in new twilight (not sure if its intentional or not) | https://github.com/zen-browser/desktop/issues/8410 | 0:53:15 | 0:53:15 |
|
||||
| Side Toolbox Flash | https://github.com/zen-browser/desktop/issues/8409 | 3:16:36 | 10 days, 4:38:53 |
|
||||
| Compact-mode toolbox background visibly cuts off on wide/hires screens | https://github.com/zen-browser/desktop/issues/8408 | None | None |
|
||||
| ZenBrowser cannot disable the Save Page shortcut key. | https://github.com/zen-browser/desktop/issues/8406 | None | None |
|
||||
| Bookmark management does not display which workspace it belongs to. | https://github.com/zen-browser/desktop/issues/8405 | None | None |
|
||||
| Zen URL bar insists on showing history even when the option to do so is disabled. | https://github.com/zen-browser/desktop/issues/8404 | 9:21:34 | None |
|
||||
| Ctrl-tab should not cycle through essential tabs | https://github.com/zen-browser/desktop/issues/8403 | 0:39:33 | None |
|
||||
| Extensions being removed? | https://github.com/zen-browser/desktop/issues/8402 | None | None |
|
||||
| Weird bookmark bar showing up | https://github.com/zen-browser/desktop/issues/8401 | None | None |
|
||||
| HDR on Linux doesn't work when zen is windowed | https://github.com/zen-browser/desktop/issues/8400 | 22:32:03 | None |
|
||||
| Compact mode doesnt work | https://github.com/zen-browser/desktop/issues/8397 | 9 days, 16:40:40 | None |
|
||||
| Most of rendering is blurry if window exceeds 4k resolution | https://github.com/zen-browser/desktop/issues/8396 | 8 days, 15:12:32 | None |
|
||||
| Changing keyboard shortcuts, "Conflict with another shortcut" | https://github.com/zen-browser/desktop/issues/8395 | 1:12:32 | None |
|
||||
| Installed mods not showing up in list | https://github.com/zen-browser/desktop/issues/8394 | 6:03:57 | None |
|
||||
| Inconsistent behaviour of expanding sidebar between different OS's and mouse movements | https://github.com/zen-browser/desktop/issues/8393 | None | None |
|
||||
| Holding ⌥ on Mac to select the text inside a link is broken | https://github.com/zen-browser/desktop/issues/8391 | None | None |
|
||||
| Workspace indicator unhideable on Linux | https://github.com/zen-browser/desktop/issues/8390 | 2:00:45 | 2:27:20 |
|
||||
| Tabliss does not load in new window or tab. | https://github.com/zen-browser/desktop/issues/8387 | 9:41:37 | None |
|
||||
| I could'nt use "Better ctrl+Tab panel" mod in desktop. | https://github.com/zen-browser/desktop/issues/8386 | 5:23:01 | None |
|
||||
| Customizing toolbar freeze | https://github.com/zen-browser/desktop/issues/8383 | None | None |
|
||||
| error code SHAK-6007 Crunchyroll playback error | https://github.com/zen-browser/desktop/issues/8382 | 6:10:43 | 6:10:43 |
|
||||
| URL character get double | https://github.com/zen-browser/desktop/issues/8379 | None | None |
|
||||
| Zen browser multiple windows in taskbar | https://github.com/zen-browser/desktop/issues/8376 | 0:03:50 | 0:09:58 |
|
||||
| Essentials are unloaded if Clear search, site and downloaded history at zen close is checked | https://github.com/zen-browser/desktop/issues/8374 | 0:44:41 | 0:44:41 |
|
||||
| Tuxedo OS (Ubuntu 24.04.1) - several errors that might lead into a "Crash Annotation GraphicsCriticalError" after starting Zen | https://github.com/zen-browser/desktop/issues/8373 | 2:10:11 | 2:10:11 |
|
||||
| Selecting all tabs and closing them also removes the pinned tabs | https://github.com/zen-browser/desktop/issues/8371 | None | 5:03:07 |
|
||||
| Invisible text in right click menu | https://github.com/zen-browser/desktop/issues/8369 | None | 5 days, 14:21:42 |
|
||||
| [bug] i18n error, zen-background-tab-opened-toast has not been localized | https://github.com/zen-browser/desktop/issues/8368 | 9:27:59 | 9:27:59 |
|
||||
| Split View flickers when moving split to the right | https://github.com/zen-browser/desktop/issues/8363 | None | 6:33:55 |
|
||||
| Container Specific essentials not working | https://github.com/zen-browser/desktop/issues/8361 | None | 0:05:44 |
|
||||
| Redundunt windows are opening up after launching zen browser | https://github.com/zen-browser/desktop/issues/8360 | 8:38:50 | None |
|
||||
| zen.workspaces.show-workspace-indicator setting ignored | https://github.com/zen-browser/desktop/issues/8356 | 0:05:01 | 0:05:01 |
|
||||
| Seemingly after each update, new icon shows in Dock | https://github.com/zen-browser/desktop/issues/8355 | 12:16:44 | None |
|
||||
| Downloaded language pack not being respected (English GB) | https://github.com/zen-browser/desktop/issues/8354 | 0:35:35 | 1:02:34 |
|
||||
| Can't disable Shortcut suggestions and it won't work if I disable the history | https://github.com/zen-browser/desktop/issues/8352 | 6:39:16 | 6:39:16 |
|
||||
| Arabic language Custom font bug on arch linux | https://github.com/zen-browser/desktop/issues/8350 | None | None |
|
||||
| Incorrect text on report option after deleting extension | https://github.com/zen-browser/desktop/issues/8349 | 15:25:03 | None |
|
||||
| UI padding is not accurate in split tabs | https://github.com/zen-browser/desktop/issues/8347 | None | None |
|
||||
| Cannot add tabs to Essentials panel – nothing happens on click | https://github.com/zen-browser/desktop/issues/8345 | 16:45:06 | 16:59:08 |
|
||||
| New tab doesn't open automatically if essential tabs are closed before regular tabs | https://github.com/zen-browser/desktop/issues/8344 | None | None |
|
||||
| Pressing CTRL key unfocuses URL bar | https://github.com/zen-browser/desktop/issues/8343 | 2:09:34 | None |
|
||||
| URL opacity blinks when leaving compact mode | https://github.com/zen-browser/desktop/issues/8342 | None | None |
|
||||
| Cant Add more Essential tabs | https://github.com/zen-browser/desktop/issues/8341 | None | 2:59:08 |
|
||||
| Sidebar not hidden in all windows on startup when using "Hide Both" in compact view | https://github.com/zen-browser/desktop/issues/8339 | 5:37:43 | 5:37:43 |
|
||||
| No green dot on proton mail | https://github.com/zen-browser/desktop/issues/8337 | 4:15:47 | 4:15:47 |
|
||||
| Mouse Cursor not disapearing while watching YouTube | https://github.com/zen-browser/desktop/issues/8336 | None | 3:07:20 |
|
||||
| Very slow connecting on localhost website | https://github.com/zen-browser/desktop/issues/8334 | None | None |
|
||||
| URL Bar: Can't disable Shortcut suggestions | https://github.com/zen-browser/desktop/issues/8333 | 2:02:02 | 4:12:37 |
|
||||
| New tab does not open in same container as current tab | https://github.com/zen-browser/desktop/issues/8332 | None | 4:02:56 |
|
||||
| Swipe on touchscreen does not scroll, it selects | https://github.com/zen-browser/desktop/issues/8331 | None | None |
|
||||
| The floating bar is no longer displayed... | https://github.com/zen-browser/desktop/issues/8330 | 5:13:17 | 6:33:30 |
|
||||
| Can't change the theme to a dark color, like black | https://github.com/zen-browser/desktop/issues/8329 | 5:15:54 | 6:24:16 |
|
||||
| Secure connection failed | https://github.com/zen-browser/desktop/issues/8328 | None | 1 day, 5:03:14 |
|
||||
| Essentials unload issue | https://github.com/zen-browser/desktop/issues/8326 | 9:04:50 | None |
|
||||
| weird shadow when hightlighting text | https://github.com/zen-browser/desktop/issues/8325 | 10:20:39 | 10:20:39 |
|
||||
| Mouse flickering on Browser MacOS | https://github.com/zen-browser/desktop/issues/8323 | 7 days, 7:55:25 | 7 days, 8:56:46 |
|
||||
| DRM content checked yet can't play embedded videos. | https://github.com/zen-browser/desktop/issues/8320 | 6:30:09 | 6:30:09 |
|
||||
| Issue when opening the New Tab url bar, and selecting a shortcut tab that's already an essential | https://github.com/zen-browser/desktop/issues/8319 | None | None |
|
||||
| "Screenshot Copied" Toast Notification Unreadable | https://github.com/zen-browser/desktop/issues/8317 | 15:44:46 | None |
|
||||
| Can't update to 1.12.4 | https://github.com/zen-browser/desktop/issues/8316 | None | 6:39:21 |
|
||||
| Unable to add tabs to essentials after most recent update | https://github.com/zen-browser/desktop/issues/8315 | None | 2:14:49 |
|
||||
| Transparent dialogs | https://github.com/zen-browser/desktop/issues/8314 | 1:11:28 | 2:29:34 |
|
||||
| Unable to find a supported language | https://github.com/zen-browser/desktop/issues/8313 | 12:40:47 | 19:19:31 |
|
||||
| Rearrange Split View keyboard shortcuts don't work on existing split views | https://github.com/zen-browser/desktop/issues/8310 | 9 days, 1:16:48 | None |
|
||||
| Moving Essential Tab to New Window removes it from Essentials | https://github.com/zen-browser/desktop/issues/8309 | None | None |
|
||||
| Adding new essentials is not working | https://github.com/zen-browser/desktop/issues/8308 | 5:24:00 | 23:11:34 |
|
||||
| Mods get Reset/Removed when Updated | https://github.com/zen-browser/desktop/issues/8306 | 1 day, 1:03:16 | 1 day, 1:03:16 |
|
||||
| Playing songs | https://github.com/zen-browser/desktop/issues/8305 | 2:53:37 | 2:53:37 |
|
||||
| agency | https://github.com/zen-browser/desktop/issues/8304 | 3:31:16 | 1 day, 1:31:52 |
|
||||
| crash | https://github.com/zen-browser/desktop/issues/8303 | 3:41:45 | None |
|
||||
| collapse | https://github.com/zen-browser/desktop/issues/8302 | None | 0:01:39 |
|
||||
| Glitch/flickering sidebar when switching spaces in compact mode. | https://github.com/zen-browser/desktop/issues/8301 | 14 days, 22:19:20 | None |
|
||||
| workspace icons are missing | https://github.com/zen-browser/desktop/issues/8278 | 1:45:25 | None |
|
||||
| URL bar and minize/maximize buttons overlap when the window is horziontally shrinked | https://github.com/zen-browser/desktop/issues/8277 | None | None |
|
||||
| <option> dropdown background same color as text | https://github.com/zen-browser/desktop/issues/8276 | None | 0:02:32 |
|
||||
| Full screen problem on macOS | https://github.com/zen-browser/desktop/issues/8275 | 11 days, 15:53:45 | None |
|
||||
| When opening a Youtube video, cannot interact with certain elements like text, like/dislike, opening desc. and replies | https://github.com/zen-browser/desktop/issues/8273 | 21:55:54 | None |
|
||||
| Media Playback Continues After Unloading a Pinned Tab | https://github.com/zen-browser/desktop/issues/8267 | 13:43:59 | None |
|
||||
| Dark theme weird rendering | https://github.com/zen-browser/desktop/issues/8263 | 1:20:19 | 1:29:02 |
|
||||
| Youtube picture in picture stops working randomly and restarting or opening a new window fixes it. | https://github.com/zen-browser/desktop/issues/8260 | None | None |
|
||||
| Locked urlbar.suggest preferences in about:config | https://github.com/zen-browser/desktop/issues/8259 | 0:41:23 | 6:25:51 |
|
||||
| The search engine selection window is truncated during initial configuration. | https://github.com/zen-browser/desktop/issues/8258 | None | 4:29:43 |
|
||||
| Takes ~3 mins to open a link from vscode | https://github.com/zen-browser/desktop/issues/8257 | 6:14:20 | None |
|
||||
| Mods cannot save settings on install | https://github.com/zen-browser/desktop/issues/8255 | None | 2:21:43 |
|
||||
| Can't smoosh zen windows as small as we used to. | https://github.com/zen-browser/desktop/issues/8254 | 2:38:48 | 2:38:48 |
|
||||
| Normal windows always open in previously used Windows virtual desktop instead of current one | https://github.com/zen-browser/desktop/issues/8252 | 1 day, 10:37:31 | None |
|
||||
| Black Mark and Render Issue | https://github.com/zen-browser/desktop/issues/8251 | None | None |
|
||||
| Fetch requests with `keepalive: true` not showing in the Network panel | https://github.com/zen-browser/desktop/issues/8249 | 0:21:23 | 0:21:23 |
|
||||
| Unable to apply Theme Colors for Incognito mode | https://github.com/zen-browser/desktop/issues/8248 | None | None |
|
||||
| Download animation is shown in multiple windows | https://github.com/zen-browser/desktop/issues/8247 | 0:35:42 | 1 day, 7:54:40 |
|
||||
| Toast Notification is stuck on after opening a folder of bookmarks with middle mouse button when in compact mode | https://github.com/zen-browser/desktop/issues/8246 | 2:29:31 | 19:01:57 |
|
||||
| Restoring session with multiple windows starts every window in a new tab | https://github.com/zen-browser/desktop/issues/8245 | 3:28:19 | 13:58:26 |
|
||||
| I can't choose to never translate from Arabic. | https://github.com/zen-browser/desktop/issues/8244 | None | None |
|
||||
| cannot uncheck shortcuts in adress bar | https://github.com/zen-browser/desktop/issues/8242 | 10:04:15 | 10:04:15 |
|
||||
| Arabic font is not the same as latest default firefox font in the Linux build | https://github.com/zen-browser/desktop/issues/8241 | None | None |
|
||||
| UI scaling issue on linux desktop | https://github.com/zen-browser/desktop/issues/8240 | None | 8 days, 0:09:35 |
|
||||
| Can't close Tab via X on Tab. Only via Hotkey | https://github.com/zen-browser/desktop/issues/8239 | None | 0:01:41 |
|
||||
| Top bar does not hide when activating compact mode | https://github.com/zen-browser/desktop/issues/8237 | 1:13:23 | 1:54:27 |
|
||||
| Top bar auto-hide glitch when interacting with sidebar & bookmarks | https://github.com/zen-browser/desktop/issues/8234 | 22:44:31 | 1 day, 9:51:23 |
|
||||
| Cloudflare captcha not working | https://github.com/zen-browser/desktop/issues/8230 | 2:31:04 | 2:31:04 |
|
||||
| Moving tabs inside tab bar is buggy | https://github.com/zen-browser/desktop/issues/8229 | 2:53:47 | 3:29:02 |
|
||||
| Media Controls are not visible when switched to full screen | https://github.com/zen-browser/desktop/issues/8228 | None | 0:21:20 |
|
||||
| Cant Remove Predefined Site Suggestion from my Search Bar (CTRL+T) | https://github.com/zen-browser/desktop/issues/8227 | 2:31:43 | 4:57:01 |
|
||||
| URL bar loses focus instead of resetting URL | https://github.com/zen-browser/desktop/issues/8226 | 0:41:33 | 0:41:33 |
|
||||
| URL Bar loses focus when deleting last character | https://github.com/zen-browser/desktop/issues/8225 | 0:44:53 | 5 days, 6:37:15 |
|
||||
| Hovering on a compact window to move a tab causes the sidebar to pop in and out | https://github.com/zen-browser/desktop/issues/8224 | None | None |
|
||||
| Zen creates a .mozilla folder in $HOME directory on Linux | https://github.com/zen-browser/desktop/issues/8223 | None | None |
|
||||
| Browser buttons and close window button unresponsive after closing the Zen application | https://github.com/zen-browser/desktop/issues/8219 | 0:48:05 | None |
|
||||
| Cannot drag tabs from top to bottom to reorder a few positions when tabs are on the right | https://github.com/zen-browser/desktop/issues/8218 | None | None |
|
||||
| Downloads Browser Crash | https://github.com/zen-browser/desktop/issues/8217 | None | None |
|
||||
| Google Meet buttons don't working on sidebar | https://github.com/zen-browser/desktop/issues/8215 | 2:40:14 | 2:40:14 |
|
||||
| không thể thêm thẻ thường trú(E) | https://github.com/zen-browser/desktop/issues/8214 | 0:01:54 | 0:01:54 |
|
||||
| Blank screen when first launching Zen | https://github.com/zen-browser/desktop/issues/8213 | None | None |
|
||||
| Cannot access certificate view from URL bar (padlock icon) | https://github.com/zen-browser/desktop/issues/8212 | 12 days, 6:42:18 | 12 days, 7:11:25 |
|
||||
| Syncing workspace tabs not works | https://github.com/zen-browser/desktop/issues/8211 | 15 days, 5:13:05 | None |
|
||||
| zen mods not working | https://github.com/zen-browser/desktop/issues/8208 | None | 0:08:14 |
|
||||
| Workspace switch animation is blocking | https://github.com/zen-browser/desktop/issues/8206 | 9:29:26 | None |
|
||||
| ZEN Mouse Dragging & Resizing (maximize) does not work sometimes | https://github.com/zen-browser/desktop/issues/8205 | 6:20:09 | None |
|
||||
| (Hyprland)Topbar doesn't disappear in compact sidebar | https://github.com/zen-browser/desktop/issues/8204 | None | 2:16:10 |
|
||||
| windows 10 transparency not working. | https://github.com/zen-browser/desktop/issues/8202 | 3:06:24 | 3:06:24 |
|
||||
| Zen not restoring any tab from the already opened tabs from previous session | https://github.com/zen-browser/desktop/issues/8201 | 3:17:29 | 4:43:32 |
|
||||
| website background colour chaning along with the theme colour of side bar | https://github.com/zen-browser/desktop/issues/8200 | 4:58:08 | 4:58:07 |
|
||||
| Containerized Essential dissapear when 'Enable container-specific essentials' feature is switched on | https://github.com/zen-browser/desktop/issues/8199 | 4:32:24 | 4:43:46 |
|
||||
| "New Window" windows don't have the 'Essential' tabs on them anymore | https://github.com/zen-browser/desktop/issues/8197 | 7:03:16 | 1 day, 7:55:21 |
|
||||
| Compact Mode sidebar not showing/opening | https://github.com/zen-browser/desktop/issues/8196 | 7:07:23 | None |
|
||||
| HTML <select> elements blank drop-down | https://github.com/zen-browser/desktop/issues/8195 | 4 days, 4:54:42 | None |
|
||||
| Everything is bright white | https://github.com/zen-browser/desktop/issues/8194 | 1:23:35 | 1:23:35 |
|
||||
| Search with google is pinned for no clear reason | https://github.com/zen-browser/desktop/issues/8193 | 1:10:15 | 1:11:58 |
|
||||
| Popup Window shows side bar with no function in compact mode | https://github.com/zen-browser/desktop/issues/8191 | None | None |
|
||||
| Button to list all tabs is transparent / disappears | https://github.com/zen-browser/desktop/issues/8188 | None | 6:09:10 |
|
||||
| Color contrast on tab bar | https://github.com/zen-browser/desktop/issues/8187 | 5:36:28 | None |
|
||||
| XDG Desktop Portal Termfilechooser doesn't work?! | https://github.com/zen-browser/desktop/issues/8186 | 16:11:53 | 22:30:50 |
|
||||
| Address bar no longer shows 'Search with [engine]' option | https://github.com/zen-browser/desktop/issues/8185 | 0:17:41 | 0:55:52 |
|
||||
| Checkboxes get activated on the Settings page when clicking on empty space along their width. | https://github.com/zen-browser/desktop/issues/8184 | 17:34:27 | 17:34:27 |
|
||||
| Zen blocking keyboard in Deskflow | https://github.com/zen-browser/desktop/issues/8183 | None | None |
|
||||
| Issue with the "Bottom Essentials" Zen Theme | https://github.com/zen-browser/desktop/issues/8177 | 4:02:27 | 4:07:49 |
|
||||
| Dashlane failed connexion | https://github.com/zen-browser/desktop/issues/8176 | None | 5:19:09 |
|
||||
| icons in split tabs shift to the right | https://github.com/zen-browser/desktop/issues/8175 | 0:20:13 | 1 day, 8:21:19 |
|
||||
| Unable to open extensions when there is no tab | https://github.com/zen-browser/desktop/issues/8174 | 6:44:29 | None |
|
||||
| Disable background tab notification by default | https://github.com/zen-browser/desktop/issues/8173 | 2:09:55 | 2:09:55 |
|
||||
| [1.12.3] Mute/unmute icon slightly offset vertically on linux via AUR. | https://github.com/zen-browser/desktop/issues/8172 | None | 6 days, 1:08:02 |
|
||||
| Workspace navigation shortcut not working on pages with conflicting shortcuts | https://github.com/zen-browser/desktop/issues/8171 | None | None |
|
||||
| The popup for the shortcut copy URL looks broken. | https://github.com/zen-browser/desktop/issues/8169 | 3 days, 22:47:53 | 4 days, 23:49:18 |
|
||||
| zen-empty-tab looses the selected="true" value sometimes when switching workspaces. | https://github.com/zen-browser/desktop/issues/8166 | 3:34:23 | None |
|
||||
| In Compact Mode with 'Hide Toolbar' enabled, toolbar does not auto-hide after using the URL bar to open a link | https://github.com/zen-browser/desktop/issues/8164 | 0:35:09 | 5 days, 18:21:46 |
|
||||
| When in fullscreen(F11) bookmarks bar disappear | https://github.com/zen-browser/desktop/issues/8163 | 13 days, 2:22:49 | None |
|
||||
| Lost all tabs after a restart | https://github.com/zen-browser/desktop/issues/8162 | 0:07:51 | None |
|
||||
| Login fails on specific sites (e.g. Keeper, school network) in normal mode on Windows, but works in Incognito | https://github.com/zen-browser/desktop/issues/8161 | None | None |
|
||||
| When too many tabs are open in a private window to fit the tab bar, no scrollbar appears | https://github.com/zen-browser/desktop/issues/8160 | 7:48:44 | 7:48:44 |
|
||||
| Print to PDF not working | https://github.com/zen-browser/desktop/issues/8159 | None | None |
|
||||
| MacOS Text Replacements doesn't work | https://github.com/zen-browser/desktop/issues/8158 | 13 days, 23:41:07 | None |
|
||||
| Zen RAM Consumption is too much (Possible Memory Leak??) | https://github.com/zen-browser/desktop/issues/8157 | None | None |
|
||||
| Can't click on bookmark icons when in compact mode | https://github.com/zen-browser/desktop/issues/8155 | None | 0:04:33 |
|
||||
| Sidebery extension: tabs from other workspaces become inaccessible (since 1.8b+) | https://github.com/zen-browser/desktop/issues/8154 | 1:57:05 | 1:57:05 |
|
||||
| With dual monitor, when dual zen brower windows opened, Essentials' number will reduce to 1 | https://github.com/zen-browser/desktop/issues/8153 | None | None |
|
||||
| Zen switches to irrelevant workspace on startup | https://github.com/zen-browser/desktop/issues/8151 | 0:17:36 | 0:17:36 |
|
||||
| Youtube playback crashes after some time | https://github.com/zen-browser/desktop/issues/8150 | None | None |
|
||||
| Cannot open live editing zen theme | https://github.com/zen-browser/desktop/issues/8148 | None | 0:08:04 |
|
||||
| load in startup not working for the first essenntial tab only | https://github.com/zen-browser/desktop/issues/8147 | 0:14:09 | 3:11:28 |
|
||||
| "New background tab" toast even for foreground tabs | https://github.com/zen-browser/desktop/issues/8146 | 0:35:34 | 3:51:23 |
|
||||
| Compact sidebar keeps popping up flickering when switching to a zen window with focus in macOS | https://github.com/zen-browser/desktop/issues/8145 | None | None |
|
||||
| When tabs on the right enabled, toast notifications appear off the screen | https://github.com/zen-browser/desktop/issues/8143 | None | 5:07:33 |
|
||||
| GPU rendering does not work after crash | https://github.com/zen-browser/desktop/issues/8141 | 8:32:12 | None |
|
||||
| Letterboxing bricks and violates the boundary between the tab bar and the rendering space of website when a website enters full screen mode | https://github.com/zen-browser/desktop/issues/8140 | 0:10:28 | None |
|
||||
| picture in picture disappears when trying to navigate to split tab | https://github.com/zen-browser/desktop/issues/8139 | None | None |
|
||||
| Clicking non-floating urlbar always selects all on mouse up | https://github.com/zen-browser/desktop/issues/8138 | None | 0:18:23 |
|
||||
| Audible media playback doesn't work | https://github.com/zen-browser/desktop/issues/8137 | 1:22:13 | 2:25:29 |
|
||||
| compact mode is not working and cant close the tabs some times in fedora | https://github.com/zen-browser/desktop/issues/8136 | 3:11:39 | 2 days, 0:05:39 |
|
||||
| Cannot freely edit the url in the address bar | https://github.com/zen-browser/desktop/issues/8134 | 0:01:56 | 0:01:56 |
|
||||
| New Tabs open in Essentials | https://github.com/zen-browser/desktop/issues/8133 | 0:35:39 | 5:02:21 |
|
||||
| Developer tools not longer working? | https://github.com/zen-browser/desktop/issues/8132 | 0:37:16 | 1:48:35 |
|
||||
| Black text on dark theme | https://github.com/zen-browser/desktop/issues/8131 | 0:21:09 | 8:18:43 |
|
||||
| Option + Letter Shows Special Characters in Keyboard Shortcuts | https://github.com/zen-browser/desktop/issues/8130 | 8 days, 4:21:07 | None |
|
||||
| Video Call (huddle) in Slack does not work | https://github.com/zen-browser/desktop/issues/8129 | None | None |
|
||||
| Essential and Pinned tabs do not appear or get removed from existing windows | https://github.com/zen-browser/desktop/issues/8127 | 0:37:58 | 0:37:58 |
|
||||
| Sidebar glitch | https://github.com/zen-browser/desktop/issues/8126 | None | 0:02:38 |
|
||||
| No mods have worked since the update | https://github.com/zen-browser/desktop/issues/8125 | 5 days, 5:50:38 | None |
|
||||
| [Twilight 1.12.2] Adding tab to essentials will automatically open that tab in the first workspace | https://github.com/zen-browser/desktop/issues/8123 | None | 1:53:34 |
|
||||
| Unable to open Google/X/Youtube while using VPN | https://github.com/zen-browser/desktop/issues/8121 | 9:23:59 | None |
|
||||
| Zen URL bar not working with Firefox Multi-Account Containers | https://github.com/zen-browser/desktop/issues/8120 | None | None |
|
||||
| Duplicate Workspace Button | https://github.com/zen-browser/desktop/issues/8119 | 23:56:36 | 23:56:36 |
|
||||
| Renamed Tabs Name keep ressetting at random | https://github.com/zen-browser/desktop/issues/8118 | 9:29:18 | 9:29:18 |
|
||||
| Audio Indicator Missing on Inactive Tabs with Minimized Toolbar | https://github.com/zen-browser/desktop/issues/8115 | 2:57:00 | 6:18:33 |
|
||||
| Zen crashes on reopen after closing last tab with `browser.tabs.closeWindowWithLastTab` enabled | https://github.com/zen-browser/desktop/issues/8114 | 2 days, 18:09:03 | 2 days, 21:48:46 |
|
||||
| Local/lan links not opening | https://github.com/zen-browser/desktop/issues/8113 | None | 8 days, 8:42:53 |
|
||||
| Some extensions doesn't pin, and others brake the UI | https://github.com/zen-browser/desktop/issues/8111 | 0:53:20 | None |
|
||||
| Can't close split view | https://github.com/zen-browser/desktop/issues/8110 | 1:03:35 | 1:03:35 |
|
||||
| Closing a tab opened from an essential tab gives blank page | https://github.com/zen-browser/desktop/issues/8107 | 6:06:03 | 2:08:05 |
|
||||
| Cannot reset Jira page added to Essentials | https://github.com/zen-browser/desktop/issues/8106 | None | 2:38:16 |
|
||||
| Custom Color Gradient creates MULTIPLE instances of the same color | https://github.com/zen-browser/desktop/issues/8105 | 13 days, 15:14:54 | None |
|
||||
| Customize toolbar disturbed with system theme | https://github.com/zen-browser/desktop/issues/8104 | None | 2:06:43 |
|
||||
| The vertical TAB bar does not respond to touch input | https://github.com/zen-browser/desktop/issues/8103 | 1 day, 6:09:41 | None |
|
||||
| New tabs appear above pinned tabs | https://github.com/zen-browser/desktop/issues/8101 | 1:16:57 | 6:31:23 |
|
||||
| Could not open any page | https://github.com/zen-browser/desktop/issues/8100 | 2:07:41 | None |
|
||||
| Reload and Cmd+W for Essentials are not working. | https://github.com/zen-browser/desktop/issues/8099 | None | 7:51:14 |
|
||||
| Two kinds of workspace indicators instead of one | https://github.com/zen-browser/desktop/issues/8098 | 3:21:10 | 3:21:10 |
|
||||
| [Twilight 1.12.2] Switching tab to workspace retains a duplicate of the tab in the current workspace | https://github.com/zen-browser/desktop/issues/8095 | None | 2:24:21 |
|
||||
| Browser with a lighter/darker tint when using Auto Theme in comparison to Light/Dark mode only since 1.12b | https://github.com/zen-browser/desktop/issues/8094 | None | 2:25:47 |
|
||||
| [Twilight 1.12.2] Ctrl + k (search with google bar) is placed too low on screen | https://github.com/zen-browser/desktop/issues/8093 | 2:02:16 | 2:34:36 |
|
||||
| [Twilight 1.12.2] Pressing CTRL causes strange behaviour in newtab panel for switch to tab indicator | https://github.com/zen-browser/desktop/issues/8092 | 4:15:13 | 4:15:21 |
|
||||
| crash korean in private mode | https://github.com/zen-browser/desktop/issues/8091 | None | 12 days, 3:00:44 |
|
||||
| toolbar doesnt pop up when opening tabs with middle mouse click | https://github.com/zen-browser/desktop/issues/8090 | 0:39:11 | None |
|
||||
| Dragging tab bugs out when the sidebar is scrollable | https://github.com/zen-browser/desktop/issues/8089 | 13 days, 14:40:15 | 13 days, 20:40:31 |
|
||||
| Essentials: Emulation mode breaks tab | https://github.com/zen-browser/desktop/issues/8088 | 22 days, 0:16:44 | None |
|
||||
| The "Hide the default container indicator in the tab bar" button no longer hides "Default Workspace" | https://github.com/zen-browser/desktop/issues/8087 | 0:12:24 | 14:56:38 |
|
||||
| scrollbars styling with scrollbar-width: thin; leads to unusable scrollbar | https://github.com/zen-browser/desktop/issues/8086 | None | None |
|
||||
| Zen has become unberably laggy | https://github.com/zen-browser/desktop/issues/8081 | 1:29:54 | None |
|
||||
| Select words in URL bar selects full URL not selected word | https://github.com/zen-browser/desktop/issues/8080 | 0:45:24 | 1 day, 13:57:39 |
|
||||
| Hidden Sidebar in Compact Mode Styling Broken after 1.12b update | https://github.com/zen-browser/desktop/issues/8079 | 0:05:13 | 0:15:01 |
|
||||
| Youtube description not opening when clicking on more | https://github.com/zen-browser/desktop/issues/8078 | 4 days, 1:31:56 | 4 days, 2:56:14 |
|
||||
| Unable to access my company's local websites – HTTPS Error with HSTS and No Bypass Option | https://github.com/zen-browser/desktop/issues/8077 | None | 19:34:22 |
|
||||
| Ctrl+Tab missing unloaded tabs | https://github.com/zen-browser/desktop/issues/8076 | 1:38:20 | 3:22:45 |
|
||||
| When Account Button is opened in a collapsed Sibebar, Most Text Doesn't appear (Profile Name, Account Settings options, etc...) | https://github.com/zen-browser/desktop/issues/8075 | None | None |
|
||||
| Find in page. | https://github.com/zen-browser/desktop/issues/8074 | 4:37:54 | 4:37:54 |
|
||||
| Visual glitch / artifact when scrolling past video. | https://github.com/zen-browser/desktop/issues/8073 | 22 days, 7:35:17 | None |
|
||||
| Primary Colour resets after opening every time when System theme - auto is selected | https://github.com/zen-browser/desktop/issues/8072 | 8:42:39 | 8:42:39 |
|
||||
| 'Customize Toolbar' menu transparent when title bar is switched off | https://github.com/zen-browser/desktop/issues/8070 | 12:00:44 | 11 days, 3:51:56 |
|
||||
| Can't turn off workspaces | https://github.com/zen-browser/desktop/issues/8069 | 0:08:06 | 0:08:06 |
|
||||
| URL bar loses focus after clearing text | https://github.com/zen-browser/desktop/issues/8068 | 0:47:48 | 0:47:48 |
|
||||
| Developer tools shortcut not working anymore | https://github.com/zen-browser/desktop/issues/8067 | 0:32:03 | 0:32:03 |
|
||||
| Collapsed Sidebar too small | https://github.com/zen-browser/desktop/issues/8066 | 0:01:19 | 0:01:19 |
|
||||
| Bookmark editor closes immediately if window is at the edge of a display (macOS) | https://github.com/zen-browser/desktop/issues/8065 | 1:40:38 | None |
|
||||
| DRM Proxy Error on Kinopoisk | https://github.com/zen-browser/desktop/issues/8063 | 2:17:49 | 2:25:55 |
|
||||
| Cannot hide Workspace indicator: v1.12.1b | https://github.com/zen-browser/desktop/issues/8062 | 4:47:32 | 4:47:32 |
|
||||
| Search bar double click editing broken when shortcut suggestions are disabled | https://github.com/zen-browser/desktop/issues/8060 | None | 4:09:56 |
|
||||
| Toolbar's New Tab button stops working when removed and re-added | https://github.com/zen-browser/desktop/issues/8059 | 7:20:37 | None |
|
||||
| Essential Tabs not visible | https://github.com/zen-browser/desktop/issues/8057 | 7:46:00 | 7:54:47 |
|
||||
| Deleting the last workspace makes the browser unusable | https://github.com/zen-browser/desktop/issues/8056 | 2:40:09 | 13:11:09 |
|
||||
| Pinned Tab preview new login? | https://github.com/zen-browser/desktop/issues/8055 | None | None |
|
||||
| Compact mode Visual bug | https://github.com/zen-browser/desktop/issues/8053 | 0:08:48 | 0:21:52 |
|
||||
| Ctrl+Left Click with Firefox Containeres don't open a new tab on the container anymore | https://github.com/zen-browser/desktop/issues/8052 | 16:39:47 | None |
|
||||
| YouTube videos are having frame drops when using Wayland in Fedora 42. No frame drops in Librewolf. | https://github.com/zen-browser/desktop/issues/8051 | 3:57:37 | None |
|
||||
| I have already downloaded the Zen Mod, but I can't see the mods I downloaded in the settings. | https://github.com/zen-browser/desktop/issues/8049 | 6 days, 7:12:05 | 7 days, 1:59:01 |
|
||||
| Not working form on page: bohemiahokej.cz | https://github.com/zen-browser/desktop/issues/8048 | 1:42:11 | 1:42:11 |
|
||||
| Can't revert/remove custom sidebar color with `zen.theme.gradient.show-custom-colors` enabled | https://github.com/zen-browser/desktop/issues/8047 | 0:12:06 | 0:12:06 |
|
||||
| Compact mode causes the Windows taskbar to not appear. | https://github.com/zen-browser/desktop/issues/8046 | 0:33:43 | None |
|
||||
| Selects whole url after selecting only fragment | https://github.com/zen-browser/desktop/issues/8045 | None | 0:38:26 |
|
||||
| When URL is changed while URL bar is floating, only the domain is shown | https://github.com/zen-browser/desktop/issues/8042 | 23 days, 8:40:24 | 24 days, 8:18:57 |
|
||||
| Nvidia RTX video super resolution doesn't work in Zen unless in PiP Fullscreen | https://github.com/zen-browser/desktop/issues/8041 | 17:38:25 | None |
|
||||
| Super Resolution doesn't work | https://github.com/zen-browser/desktop/issues/8040 | 5:58:49 | 5:58:49 |
|
||||
| Unable to Load Essentials Tab Content | https://github.com/zen-browser/desktop/issues/8039 | 4:33:58 | 1 day, 7:53:50 |
|
||||
| Critical workflow issue with multilingual users: When emptying the URL bar in 'new tab mode', the browser should not lose focus on the URL bar by default. | https://github.com/zen-browser/desktop/issues/8038 | 22:34:12 | 23:41:42 |
|
||||
| PDFs load slowly | https://github.com/zen-browser/desktop/issues/8037 | 6:45:05 | None |
|
||||
| Sidebar appears narrower than it should, showing only part of the icons within | https://github.com/zen-browser/desktop/issues/8036 | 1:40:47 | 3:16:56 |
|
||||
| YouTube speed-up shortcut (Maj+;) doesn't work | https://github.com/zen-browser/desktop/issues/8035 | 8:02:43 | 8:02:44 |
|
||||
| Conflict between "container-specific essentials" and "enbale container tabs" | https://github.com/zen-browser/desktop/issues/8034 | None | 0:02:34 |
|
||||
| Sidebar and Layout "Collapsed Toolbar" looks weird after new update (icon does not fit/clip thru the frame) | https://github.com/zen-browser/desktop/issues/8033 | None | 4:32:52 |
|
||||
| Cannot scroll through the sidebar to see all of my tabs (in private mode only) | https://github.com/zen-browser/desktop/issues/8032 | 1 day, 3:36:41 | 4 days, 20:23:05 |
|
||||
| Missing Tab Layout Icon After Recent Update | https://github.com/zen-browser/desktop/issues/8030 | 10:23:25 | 1 day, 0:17:56 |
|
||||
| Update failed and not resolved even after redownloadig and reinstalling from website. | https://github.com/zen-browser/desktop/issues/8029 | 0:16:48 | None |
|
||||
| Tab Group disbanding when moved | https://github.com/zen-browser/desktop/issues/8028 | 10:58:02 | 10:58:02 |
|
||||
| Zen offers to update to 1.12.1b but fails because "1.12.1b" is not listed in releases. | https://github.com/zen-browser/desktop/issues/8027 | None | 0:04:20 |
|
||||
| Missing `:empty` pseudo-element state on extension icon's badge | https://github.com/zen-browser/desktop/issues/8025 | None | None |
|
||||
| [1.12b] Pinned tabs and essentials still used old audio indicator | https://github.com/zen-browser/desktop/issues/8023 | 15:43:19 | 15:43:19 |
|
||||
| Zen Won't Update | https://github.com/zen-browser/desktop/issues/8022 | 0:10:55 | 14:31:46 |
|
||||
| Tabs in a Firefox container can not be put into essentials. | https://github.com/zen-browser/desktop/issues/8019 | 0:09:31 | 14:15:02 |
|
||||
| Opened tab jumps up and down when switching workspaces | https://github.com/zen-browser/desktop/issues/8018 | 21:08:38 | 1 day, 15:03:56 |
|
||||
| Can't disable acrylic - mica not available | https://github.com/zen-browser/desktop/issues/8015 | 21:36:33 | 21:36:33 |
|
||||
| [1.12b] Mica context menus sometimes utilizes windows wallpaper instead of browser window | https://github.com/zen-browser/desktop/issues/8014 | 15:09:55 | 2 days, 4:03:37 |
|
||||
| Binding parentheses to switch workspaces does not function properly | https://github.com/zen-browser/desktop/issues/8013 | 24 days, 1:02:10 | None |
|
||||
| Update 1.12b broke auto-hide sidebar formatting | https://github.com/zen-browser/desktop/issues/8012 | 0:01:53 | 0:17:30 |
|
||||
| Vertical Tab bar is smaller in width compared to previous versions, causing tab icons to get cut off. | https://github.com/zen-browser/desktop/issues/8011 | 0:03:09 | 4:00:48 |
|
||||
| [Linux][1.12b] DRM Broken | https://github.com/zen-browser/desktop/issues/8010 | 0:16:39 | 1:38:19 |
|
||||
| I could not open side bar | https://github.com/zen-browser/desktop/issues/8009 | 0:25:19 | 16:55:20 |
|
||||
| 我在商店下载了Zen Mod,但是在设置中加载不出来 | https://github.com/zen-browser/desktop/issues/8006 | 9:33:02 | 23:19:18 |
|
||||
| Mute/Unmute icon on | https://github.com/zen-browser/desktop/issues/8005 | 1 day, 1:31:01 | 17 days, 14:53:41 |
|
||||
| Zen Browser has never been able to access Google, Chrome and FireFox does. | https://github.com/zen-browser/desktop/issues/8004 | 1 day, 1:32:04 | None |
|
||||
| Url bar overflow | https://github.com/zen-browser/desktop/issues/8003 | 0:15:34 | None |
|
||||
| window controls on right do not pop out with sidebar | https://github.com/zen-browser/desktop/issues/8002 | 21:56:50 | 1 day, 0:14:59 |
|
||||
| Alignment issue in compact mode with hidden sidebar | https://github.com/zen-browser/desktop/issues/8000 | 0:02:32 | 4:26:16 |
|
||||
| All my tabs except essenitials cannot be seen or clicked however they still open and work as per normal | https://github.com/zen-browser/desktop/issues/7999 | None | 0:07:12 |
|
||||
| Bring back the old profiles switcher | https://github.com/zen-browser/desktop/issues/7998 | 0:12:46 | 1 day, 21:49:18 |
|
||||
| macOS keyboard shortcut `option+cmd+e` opens `Network tab` of Developer tools instead of switching workspace | https://github.com/zen-browser/desktop/issues/7996 | 1 day, 5:12:44 | 1 day, 5:12:44 |
|
||||
| when typing in the URL bar, the selected results don't show up well | https://github.com/zen-browser/desktop/issues/7995 | 7:58:12 | 1 day, 23:28:05 |
|
||||
| URL doesnt always float even after choosing this option | https://github.com/zen-browser/desktop/issues/7993 | None | 3:05:24 |
|
||||
| [Twilight 1.12] Compact mode sidebar jittering still occurs when newtab panel is opened | https://github.com/zen-browser/desktop/issues/7990 | None | 6:15:39 |
|
||||
| [Twilight 1.12] Compact mode isn't disabled in newtab pannel if the user is hovering on the sidebar berforehand and sidebar jittering occurs | https://github.com/zen-browser/desktop/issues/7988 | None | 0:14:31 |
|
||||
| Favicon Missing in Essentials on Launch | https://github.com/zen-browser/desktop/issues/7987 | 7:50:38 | 4 days, 12:35:25 |
|
||||
| Closing a tab sometimes causes a popping sound | https://github.com/zen-browser/desktop/issues/7986 | None | None |
|
||||
| File Drag and Drop Between Tabs Not Working | https://github.com/zen-browser/desktop/issues/7985 | 11:13:41 | None |
|
||||
| Auto PiP doesn't work (Windows) | https://github.com/zen-browser/desktop/issues/7984 | 0:14:53 | 0:22:59 |
|
||||
| Some websites don't load | https://github.com/zen-browser/desktop/issues/7983 | 1 day, 23:32:20 | 3 days, 0:32:47 |
|
||||
| Annoying notifs and pop-up windows | https://github.com/zen-browser/desktop/issues/7982 | None | 3:58:00 |
|
||||
| Single-Key keyboard shortcuts are taking precedence over input fields | https://github.com/zen-browser/desktop/issues/7980 | 2 days, 1:30:27 | None |
|
||||
| The “Undo tab close” shortcut doesn't seem to work | https://github.com/zen-browser/desktop/issues/7979 | 2 days, 1:41:19 | 4 days, 2:55:52 |
|
||||
| Window controls overlapping over URL Bar UI & extensions icon | https://github.com/zen-browser/desktop/issues/7978 | 25 days, 4:18:00 | None |
|
||||
| Default keyboard shortcuts are overlapping | https://github.com/zen-browser/desktop/issues/7976 | 29 days, 10:30:04 | None |
|
||||
| iCloud Notes show black squares on checklists | https://github.com/zen-browser/desktop/issues/7974 | 6:47:44 | 6:47:47 |
|
||||
| [Twilight 1.12] Compact mode sidebar twitches when hovering | https://github.com/zen-browser/desktop/issues/7973 | 0:30:09 | 12:33:26 |
|
||||
| Essentials disappear when clicking "back to tab" in PIP while in another workspace | https://github.com/zen-browser/desktop/issues/7972 | 2 days, 16:38:14 | 2 days, 16:38:14 |
|
||||
| System sleep/suspend during video playback causes a memory leak | https://github.com/zen-browser/desktop/issues/7970 | None | None |
|
||||
| BitWarden biometrics not working anymore | https://github.com/zen-browser/desktop/issues/7968 | 30 days, 1:15:16 | None |
|
||||
| Appimage does not work on distros that depend on musl instead of glibc | https://github.com/zen-browser/desktop/issues/7967 | 3 days, 19:05:33 | None |
|
||||
| YouTube WebPage not loading | https://github.com/zen-browser/desktop/issues/7966 | None | 2:46:37 |
|
||||
| New Tab Bug - Opens the url of the existing tab even when new url is typed. | https://github.com/zen-browser/desktop/issues/7964 | 3 days, 0:39:48 | None |
|
||||
| PDF rendering issues | https://github.com/zen-browser/desktop/issues/7963 | 0:02:45 | None |
|
||||
| 1Password extension unable to communicate with desktop app, requires password reprompt | https://github.com/zen-browser/desktop/issues/7960 | 0:04:11 | 30 days, 6:03:10 |
|
||||
| Moving a bookmark to another workspace doesn't persist | https://github.com/zen-browser/desktop/issues/7957 | 26 days, 6:50:27 | 26 days, 6:59:41 |
|
||||
| Gradient completely messed up | https://github.com/zen-browser/desktop/issues/7955 | None | 1:01:12 |
|
||||
| URL Bar dosent showing up and fading gradually while typing | https://github.com/zen-browser/desktop/issues/7954 | 26 days, 9:53:46 | None |
|
||||
| URL bar Doesn't Show up on Ctrl+T Despite Behavior set to "Always floating" in Settings | https://github.com/zen-browser/desktop/issues/7953 | 0:37:17 | 7 days, 15:33:13 |
|
||||
| Zen breaking youtube.com | https://github.com/zen-browser/desktop/issues/7952 | 4:30:14 | 4:30:14 |
|
||||
| Zen doesn't open (flatpak) | https://github.com/zen-browser/desktop/issues/7951 | 3 days, 12:35:28 | None |
|
||||
| Compact mode - 1 pixel line on sidebar | https://github.com/zen-browser/desktop/issues/7950 | 1:52:17 | 12:15:36 |
|
||||
| Caching Tab Icon is Too Strict | https://github.com/zen-browser/desktop/issues/7949 | 3 days, 16:10:52 | 3 days, 16:10:52 |
|
||||
|
||||
_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:2025-05-01..2025-05-31`
|
337
docs/issue-metrics/2025_2025-06-01..2025-06-30.md
Normal file
337
docs/issue-metrics/2025_2025-06-01..2025-06-30.md
Normal file
|
@ -0,0 +1,337 @@
|
|||
# Issue Metrics
|
||||
|
||||
| Metric | Average | Median | 90th percentile |
|
||||
| --- | --- | --- | ---: |
|
||||
| Time to first response | 1 day, 2:17:01 | 3:36:55 | 2 days, 2:30:28 |
|
||||
| Time to close | 1 day, 5:56:40 | 8:11:14 | 3 days, 21:11:56 |
|
||||
|
||||
| Metric | Count |
|
||||
| --- | ---: |
|
||||
| Number of items that remain open | 160 |
|
||||
| Number of items closed | 159 |
|
||||
| Total number of items created | 319 |
|
||||
|
||||
| Title | URL | Time to first response | Time to close |
|
||||
| --- | --- | --- | --- |
|
||||
| Tabs from all workspaces lost when new window is opened | https://github.com/zen-browser/desktop/issues/9263 | 0:53:03 | 0:53:03 |
|
||||
| Theme switching broken for Zen 1.14b | https://github.com/zen-browser/desktop/issues/9262 | 0:35:58 | None |
|
||||
| Compact mode being disabled for the second window | https://github.com/zen-browser/desktop/issues/9260 | None | None |
|
||||
| Several Context Menus items no longer has a text. | https://github.com/zen-browser/desktop/issues/9259 | 0:36:25 | None |
|
||||
| App Crashes when all tabs are closed. | https://github.com/zen-browser/desktop/issues/9255 | 1:42:32 | None |
|
||||
| Multiple windows reopen on launch despite disabling "Open previous windows and tabs" | https://github.com/zen-browser/desktop/issues/9254 | 0:48:51 | None |
|
||||
| Tabs scrolling becomes laggy after scrolling horizontally through workspaces | https://github.com/zen-browser/desktop/issues/9253 | None | None |
|
||||
| Joyn (streaming provider) is not working with Zen | https://github.com/zen-browser/desktop/issues/9252 | 0:14:44 | 1:32:50 |
|
||||
| Private Space is pink (after updating to 1.14b) | https://github.com/zen-browser/desktop/issues/9251 | 0:51:48 | None |
|
||||
| Tabs are not unloaded by default when launching Zen | https://github.com/zen-browser/desktop/issues/9250 | 0:27:42 | 0:27:42 |
|
||||
| The Zen Browser shortcut, for closing a single tab, is not working as expected | https://github.com/zen-browser/desktop/issues/9247 | 2:19:22 | None |
|
||||
| Split Views and Tab Groups are forever lost when CTRL+W is activated to unload Zen | https://github.com/zen-browser/desktop/issues/9245 | 3:04:10 | None |
|
||||
| Bookmark bar is now white | https://github.com/zen-browser/desktop/issues/9244 | 1:42:11 | 3:52:48 |
|
||||
| Closing the last tab in a space quits the browser | https://github.com/zen-browser/desktop/issues/9243 | 3:36:55 | 3:36:55 |
|
||||
| The Option+Cmd+ArrowRight set as Forward Workspace shortcut does not change workspace | https://github.com/zen-browser/desktop/issues/9241 | None | None |
|
||||
| "Create Space" Translation error | https://github.com/zen-browser/desktop/issues/9239 | None | None |
|
||||
| Zoom Indicator is always white, which is unreadable in darkmode | https://github.com/zen-browser/desktop/issues/9238 | None | None |
|
||||
| In compact mode, the sidebar does not collapse on a blank page | https://github.com/zen-browser/desktop/issues/9237 | 1:48:18 | None |
|
||||
| The Essential tabs cannot be uninstalled using CTRL+W | https://github.com/zen-browser/desktop/issues/9236 | 2:43:01 | 3:18:38 |
|
||||
| Pressing the mouse "forward"/"backward" keys sometimes switches workspaces instead of navigating the tab history | https://github.com/zen-browser/desktop/issues/9235 | 0:10:08 | None |
|
||||
| Can not restore tabs at Startup | https://github.com/zen-browser/desktop/issues/9234 | 1 day, 1:47:23 | None |
|
||||
| When clicking new tab the url bar opens instead of a new page | https://github.com/zen-browser/desktop/issues/9233 | None | 0:02:26 |
|
||||
| Two different dark modes in 1.14b | https://github.com/zen-browser/desktop/issues/9232 | 1:22:38 | None |
|
||||
| spaces dissapear | https://github.com/zen-browser/desktop/issues/9231 | None | None |
|
||||
| No way to unbind the new keybord shortcut CMD+OPT+right/left arrow to switch btween tabs | https://github.com/zen-browser/desktop/issues/9230 | None | 1:18:39 |
|
||||
| Zen browser no loger has dark mode after update | https://github.com/zen-browser/desktop/issues/9229 | 0:20:16 | None |
|
||||
| Text is black | https://github.com/zen-browser/desktop/issues/9228 | 0:13:01 | None |
|
||||
| Dark Theme Different | https://github.com/zen-browser/desktop/issues/9225 | 0:24:22 | 0:35:32 |
|
||||
| bug: open tabs on startup | https://github.com/zen-browser/desktop/issues/9222 | 0:06:54 | 0:06:54 |
|
||||
| The input focus state CSS styles are wrong | https://github.com/zen-browser/desktop/issues/9220 | 2:19:22 | 8:11:14 |
|
||||
| workspace windows | https://github.com/zen-browser/desktop/issues/9218 | 0:45:18 | 0:45:18 |
|
||||
| Zen browser's letterboxing omits top margin, potentially weakening fingerprinting protection | https://github.com/zen-browser/desktop/issues/9217 | 0:18:19 | 1 day, 3:59:58 |
|
||||
| When I open the browser, all my fixed tabs pop up and load | https://github.com/zen-browser/desktop/issues/9215 | 6:53:20 | 6:53:20 |
|
||||
| Custom Search Engine Suggestion URL Doesn't Support Different Domains | https://github.com/zen-browser/desktop/issues/9214 | 9:20:22 | None |
|
||||
| Picture in Picture not resizing on other monitors & not full screening | https://github.com/zen-browser/desktop/issues/9213 | None | None |
|
||||
| Can't download videos from YouTube | https://github.com/zen-browser/desktop/issues/9211 | 1:01:58 | 1:58:54 |
|
||||
| Can't scroll through tab list while dragging a tab | https://github.com/zen-browser/desktop/issues/9207 | 14:01:51 | 14:01:50 |
|
||||
| Dragging and dropping tabs to another window sometimes sends it to the bottom of the list | https://github.com/zen-browser/desktop/issues/9206 | None | None |
|
||||
| Lastpass extension error when oppening | https://github.com/zen-browser/desktop/issues/9204 | 1 day, 1:38:07 | None |
|
||||
| The URL bar still get duplicated as the special character is typed | https://github.com/zen-browser/desktop/issues/9203 | None | None |
|
||||
| cant sign into tiktok. after typing the email and password it loads forever. google sign-in doesnt work either. it works fine on brave and edge | https://github.com/zen-browser/desktop/issues/9202 | None | None |
|
||||
| URL Bar loses focus when deleting last character | https://github.com/zen-browser/desktop/issues/9201 | None | None |
|
||||
| no icon displayed in alt-tab view when running in wayland | https://github.com/zen-browser/desktop/issues/9196 | None | None |
|
||||
| Terminal and Zen | https://github.com/zen-browser/desktop/issues/9195 | 14:31:09 | 2 days, 14:32:04 |
|
||||
| Opening extension using shortcut or when window is not in focus crashes Zen | https://github.com/zen-browser/desktop/issues/9194 | 1 day, 1:22:06 | None |
|
||||
| Fullscreening a video will start playback of another video from a different tab | https://github.com/zen-browser/desktop/issues/9193 | 1 day, 2:12:15 | None |
|
||||
| Pinned tabs gets rendered incorrectly on restart | https://github.com/zen-browser/desktop/issues/9192 | 12:48:46 | None |
|
||||
| SunCalc Website Doesn't Work | https://github.com/zen-browser/desktop/issues/9190 | 3:10:44 | 3:10:44 |
|
||||
| The theme colors are broken after update | https://github.com/zen-browser/desktop/issues/9185 | 0:39:42 | 2 days, 12:54:41 |
|
||||
| Firefox Logo in sync page | https://github.com/zen-browser/desktop/issues/9184 | None | None |
|
||||
| Crash when opening Tampermonkey on Microsoft 365 Copilot | https://github.com/zen-browser/desktop/issues/9182 | 1:18:16 | None |
|
||||
| Bug: Figma Canvas Zoom Shortcut Zooms Entire Page Instead of Canvas | https://github.com/zen-browser/desktop/issues/9181 | 18:47:26 | None |
|
||||
| Importing from Arc Browser isn't generating spaces and pinned tabs | https://github.com/zen-browser/desktop/issues/9180 | 18:49:54 | 18:49:54 |
|
||||
| Unable to clear cookies and site data | https://github.com/zen-browser/desktop/issues/9178 | None | 0:14:48 |
|
||||
| Cannot restore tabs after restart | https://github.com/zen-browser/desktop/issues/9177 | 0:27:35 | 1:44:26 |
|
||||
| scroll bar moves window on mac | https://github.com/zen-browser/desktop/issues/9176 | None | 22:33:55 |
|
||||
| Focus not present when trying to use shortcuts - Google Calendar / Gmail etc | https://github.com/zen-browser/desktop/issues/9175 | 2:24:44 | 23:01:50 |
|
||||
| If you search the selected text in a search engine from a pinned tab and then turn it into a separate tab and close it, you can't open any other tab | https://github.com/zen-browser/desktop/issues/9173 | 2:34:26 | None |
|
||||
| Elements escaping page bounds | https://github.com/zen-browser/desktop/issues/9171 | 1 day, 5:00:13 | None |
|
||||
| Keyboard combo broken to switch between workspaces | https://github.com/zen-browser/desktop/issues/9170 | 4:12:33 | None |
|
||||
| Toolbar hover container does not account for bookmark section | https://github.com/zen-browser/desktop/issues/9169 | None | None |
|
||||
| Current open tabs don't appear in the search bar sometimes when I type a word from their title | https://github.com/zen-browser/desktop/issues/9166 | None | None |
|
||||
| Creating / editing names of containers does not work on Mac | https://github.com/zen-browser/desktop/issues/9164 | None | None |
|
||||
| Force clicking on MacOS open new tab and opens link in current tab | https://github.com/zen-browser/desktop/issues/9162 | 11:41:01 | None |
|
||||
| Ghost popup window of an addon | https://github.com/zen-browser/desktop/issues/9159 | 13:45:09 | None |
|
||||
| Opening addon's popup sometimes freezes the browser | https://github.com/zen-browser/desktop/issues/9158 | None | None |
|
||||
| Mouse back/forward buttons erroneously switch workspaces | https://github.com/zen-browser/desktop/issues/9157 | 14:03:54 | None |
|
||||
| First install "OOBE" not showing up again after re-install | https://github.com/zen-browser/desktop/issues/9154 | 0:15:20 | 14:46:35 |
|
||||
| Random Unresponsive Windows (Uncloseable) | https://github.com/zen-browser/desktop/issues/9152 | 1:49:02 | None |
|
||||
| Website Appearance: Automatic broken on macOS | https://github.com/zen-browser/desktop/issues/9151 | 17:00:48 | 5 days, 13:15:43 |
|
||||
| Can't make new tabs | https://github.com/zen-browser/desktop/issues/9149 | 0:20:04 | 0:36:59 |
|
||||
| Create workspace does show modal for parameters, creates default workspace that does not show tabs or workspace details until restart | https://github.com/zen-browser/desktop/issues/9147 | 23:37:11 | 1 day, 17:21:28 |
|
||||
| Severe Performance Degradation on Stripe Dashboard (`enqueueSetState` CPU-bound) | https://github.com/zen-browser/desktop/issues/9146 | None | None |
|
||||
| KeePassXC Passkey Support | https://github.com/zen-browser/desktop/issues/9145 | 1:51:40 | None |
|
||||
| The topbar buttons will still get triggered when hovering | https://github.com/zen-browser/desktop/issues/9144 | None | None |
|
||||
| Problem using Kaspersky extensions | https://github.com/zen-browser/desktop/issues/9141 | 4 days, 22:50:48 | 5 days, 2:52:28 |
|
||||
| Closing a tab doesnt switch focus to open essentials | https://github.com/zen-browser/desktop/issues/9140 | 3 days, 19:25:26 | None |
|
||||
| Previosly opened tabs aren't being restored | https://github.com/zen-browser/desktop/issues/9139 | 1 day, 5:17:36 | 1 day, 5:17:36 |
|
||||
| Can't install mods | https://github.com/zen-browser/desktop/issues/9138 | None | None |
|
||||
| Flashing background blurr when using rainmeter | https://github.com/zen-browser/desktop/issues/9137 | None | None |
|
||||
| Metamask extension does not inject on localhost dev | https://github.com/zen-browser/desktop/issues/9136 | None | None |
|
||||
| entire browser flash white on loading sites | https://github.com/zen-browser/desktop/issues/9134 | 8:37:18 | None |
|
||||
| Reopening closed tab into split/grid group causes desync | https://github.com/zen-browser/desktop/issues/9133 | None | None |
|
||||
| Issue with Dictionary Upload via .zip File in Yomitan Plugin | https://github.com/zen-browser/desktop/issues/9132 | None | None |
|
||||
| Multiple context menu options no longer appear in tab context menu | https://github.com/zen-browser/desktop/issues/9130 | None | 2:41:00 |
|
||||
| Inappropriate shared window icon position | https://github.com/zen-browser/desktop/issues/9128 | None | None |
|
||||
| Default shortcuts don't work for 60% of world population on Windows | https://github.com/zen-browser/desktop/issues/9127 | 4:07:15 | None |
|
||||
| Extension items in context menu and tab menu are duplicated every time new tab is opened or switched to | https://github.com/zen-browser/desktop/issues/9125 | None | None |
|
||||
| Tab list is not scrolled to new tab in compact mode | https://github.com/zen-browser/desktop/issues/9124 | None | None |
|
||||
| Accent Color settings not showing in settings after 1.13.2b | https://github.com/zen-browser/desktop/issues/9122 | 4:52:30 | 7:44:33 |
|
||||
| pinned extensions format weirdly with big icons and text | https://github.com/zen-browser/desktop/issues/9118 | 0:11:11 | 5:09:06 |
|
||||
| Inbuilt music player not in sync with actual music | https://github.com/zen-browser/desktop/issues/9117 | None | None |
|
||||
| Close multiple tabs(close other tabs) will make Zen crash while there some tabs has a ganlanced window | https://github.com/zen-browser/desktop/issues/9115 | 1:07:19 | None |
|
||||
| HDR blowout/fluctuations on white screens | https://github.com/zen-browser/desktop/issues/9113 | None | None |
|
||||
| Viewport doesn't resize when making the window smaller when letterboxing is enabled | https://github.com/zen-browser/desktop/issues/9111 | 1:41:49 | 3 days, 0:49:51 |
|
||||
| Tab titles unreadable on light mode | https://github.com/zen-browser/desktop/issues/9108 | None | 0:18:21 |
|
||||
| Zen not opening the tabs from the previous sessions. | https://github.com/zen-browser/desktop/issues/9107 | 1:29:08 | None |
|
||||
| 1Password Extension not rendering popup or unlocking | https://github.com/zen-browser/desktop/issues/9106 | 5 days, 15:14:33 | 5 days, 23:56:52 |
|
||||
| Compact mode breaks after browser restart on mac | https://github.com/zen-browser/desktop/issues/9103 | None | 1 day, 6:31:01 |
|
||||
| Theme does not work on Zen Browser 1.13.2b (Firefox 139.0.4) (64-bit) | https://github.com/zen-browser/desktop/issues/9102 | 0:36:53 | 1 day, 23:45:28 |
|
||||
| Sidebar glitching out in compact mode | https://github.com/zen-browser/desktop/issues/9101 | 1:29:06 | 1:29:06 |
|
||||
| Discord website + dev tools is making zen unresponsive | https://github.com/zen-browser/desktop/issues/9100 | 5:39:40 | 8 days, 18:34:36 |
|
||||
| Weird Youtube Searchbar behaviour on macOS Sequoia | https://github.com/zen-browser/desktop/issues/9096 | None | None |
|
||||
| Minimized Media Player - Music Animation Cannot be Turned Off | https://github.com/zen-browser/desktop/issues/9095 | None | None |
|
||||
| Tabs in workspace removed (except pinned/essentials) when I opened a link in glance | https://github.com/zen-browser/desktop/issues/9094 | None | None |
|
||||
| Switching tabs no longer reveals it in the side bar | https://github.com/zen-browser/desktop/issues/9090 | None | 0:13:19 |
|
||||
| https://getbootstrap.su/ is very distorted. No graphics, styles are not loaded | https://github.com/zen-browser/desktop/issues/9086 | 1:50:25 | 1:58:22 |
|
||||
| Can't login to Spotify with Zen | https://github.com/zen-browser/desktop/issues/9084 | 3:27:06 | None |
|
||||
| Pinned tabs closed when selecting all tabs and closing them | https://github.com/zen-browser/desktop/issues/9081 | None | None |
|
||||
| Bookmarks' assigment to a workspace gets messed up from time to time | https://github.com/zen-browser/desktop/issues/9080 | None | None |
|
||||
| Use "container" instead of "profile" in UI text for container features | https://github.com/zen-browser/desktop/issues/9079 | 1:06:37 | None |
|
||||
| Weird behaviour on Manjaro | https://github.com/zen-browser/desktop/issues/9076 | 18:17:17 | None |
|
||||
| Tap with 2 fingers on mac trackpad issue | https://github.com/zen-browser/desktop/issues/9071 | None | None |
|
||||
| Bitwarden Extension crashes Zen Browser | https://github.com/zen-browser/desktop/issues/9070 | 1:56:05 | None |
|
||||
| pinned tabs duplicate after start browser | https://github.com/zen-browser/desktop/issues/9069 | 9:32:56 | None |
|
||||
| 1password extension not connecting to desktop app | https://github.com/zen-browser/desktop/issues/9065 | 0:01:23 | 0:01:23 |
|
||||
| Sidebar Infinite expansion | https://github.com/zen-browser/desktop/issues/9064 | 12:17:29 | 12:17:29 |
|
||||
| Extensions Do Not Open if no Tab is Active | https://github.com/zen-browser/desktop/issues/9063 | None | 0:51:39 |
|
||||
| Closed all my tabs | https://github.com/zen-browser/desktop/issues/9062 | 12 days, 10:19:04 | None |
|
||||
| Thumb Wheel "Navigate Between Tabs" no longer works, possibly triggers wrong functions instead | https://github.com/zen-browser/desktop/issues/9061 | None | 4:40:16 |
|
||||
| Leave page ui problem. | https://github.com/zen-browser/desktop/issues/9060 | 17:48:19 | None |
|
||||
| Reopen closed tabs with Cmd+Shift+T doesn't work in newer version. | https://github.com/zen-browser/desktop/issues/9055 | 1 day, 18:09:10 | None |
|
||||
| PERDE OS SITES DEPOIS DE ALGUMAS ATUALIZAÇÕES | https://github.com/zen-browser/desktop/issues/9054 | 21:02:54 | 21:02:54 |
|
||||
| Several Video Streams do not play (Netflix, Amazon, Viki) which play on standard Firefox | https://github.com/zen-browser/desktop/issues/9053 | 0:33:55 | 1 day, 20:09:59 |
|
||||
| Workspaces can no longer be switched by left clicking workspace name | https://github.com/zen-browser/desktop/issues/9051 | 0:29:23 | 3:26:25 |
|
||||
| Split view is glitching | https://github.com/zen-browser/desktop/issues/9049 | 0:48:32 | None |
|
||||
| Strange behaviour on focus of URL Bar buttons | https://github.com/zen-browser/desktop/issues/9048 | None | None |
|
||||
| Can't remove workspace switcher from the bottom menu | https://github.com/zen-browser/desktop/issues/9047 | 2:04:04 | 2:04:04 |
|
||||
| Clicking workspace button does not do anything | https://github.com/zen-browser/desktop/issues/9046 | 2:12:08 | 2:12:08 |
|
||||
| Floating URL bar background blur doesn't cover whole tab | https://github.com/zen-browser/desktop/issues/9045 | 2:41:58 | 5:08:14 |
|
||||
| Zen Minimal Exit Menu Icon Error | https://github.com/zen-browser/desktop/issues/9044 | 3:00:40 | 3:00:40 |
|
||||
| When trying to use find in settings i need to scroll manually to find anything in keyboard shortcuts section | https://github.com/zen-browser/desktop/issues/9043 | None | None |
|
||||
| Exits compact mode after update | https://github.com/zen-browser/desktop/issues/9041 | None | 5:43:07 |
|
||||
| Zen blocks local network connections with NS_ERR_CONNECTION_REFUSED | https://github.com/zen-browser/desktop/issues/9039 | 1 day, 11:04:01 | None |
|
||||
| Google Docs doesn't respond | https://github.com/zen-browser/desktop/issues/9038 | 0:28:25 | 1 day, 1:07:21 |
|
||||
| BACKGROUD COLOUR OF THE BROWSER | https://github.com/zen-browser/desktop/issues/9037 | 0:38:57 | 0:38:57 |
|
||||
| When using azerty keyboard layout, the rebinding keys UI registers key presses as if on qwerty | https://github.com/zen-browser/desktop/issues/9036 | None | None |
|
||||
| Can't pin split views to Essentials | https://github.com/zen-browser/desktop/issues/9035 | None | None |
|
||||
| New tabs appear in pinned tabs sections after 1.13b | https://github.com/zen-browser/desktop/issues/9034 | None | None |
|
||||
| Tab Bar Width Increased After Latest Update (1.13b) | https://github.com/zen-browser/desktop/issues/9033 | 4:27:51 | None |
|
||||
| Mouse position offset issue (works fine after restarting zen everytime) | https://github.com/zen-browser/desktop/issues/9032 | None | 5 days, 21:09:09 |
|
||||
| workspace switcher no longer working in 1.13b | https://github.com/zen-browser/desktop/issues/9031 | 1:45:56 | 10:54:25 |
|
||||
| Workspace buttons sometimes stop working | https://github.com/zen-browser/desktop/issues/9029 | 14:35:26 | None |
|
||||
| Context Menu: Change tab(s) to workspace not working | https://github.com/zen-browser/desktop/issues/9028 | None | 0:54:56 |
|
||||
| Url bar/search bar wider than prior to updating | https://github.com/zen-browser/desktop/issues/9025 | 3:37:24 | 3:37:24 |
|
||||
| Can't play streaming services like Netflix and Crunchyroll. For Netflix I get error code E100. The error occurs when trying to play a video. | https://github.com/zen-browser/desktop/issues/9024 | 2:35:36 | 2:35:36 |
|
||||
| Bug with "Change Tab(s) to WorkSpace" | https://github.com/zen-browser/desktop/issues/9021 | 3:33:33 | 3:33:33 |
|
||||
| Moving tabs messes up around tabs and Essentials can't be double-clicked, nor can the url bar be clicked, because of [movingtab] attribute is not deleted | https://github.com/zen-browser/desktop/issues/9020 | None | 0:48:12 |
|
||||
| Workspace menu is no longer a menu on macOS 15.5 | https://github.com/zen-browser/desktop/issues/9019 | 1:19:42 | 1:51:41 |
|
||||
| Overaggressive Pinned Tabs unloading even while actively using the tab | https://github.com/zen-browser/desktop/issues/9015 | 1:02:17 | 1 day, 0:20:03 |
|
||||
| New tab opens in pinned tab list if other split tabs are present in pinned tabs list. | https://github.com/zen-browser/desktop/issues/9014 | None | 2:49:19 |
|
||||
| Udemy Video Not Playing in Zen Browser | https://github.com/zen-browser/desktop/issues/9013 | 2:13:49 | 3:58:13 |
|
||||
| Essentials getting removed when trying to close tab from recently used menu | https://github.com/zen-browser/desktop/issues/9012 | 1 day, 15:16:51 | None |
|
||||
| Crunchyroll videos doesn't load | https://github.com/zen-browser/desktop/issues/9010 | 3:31:02 | 8:06:40 |
|
||||
| Overflow Menu button doesn't appear in Sidebar When Single Toolbar Mode is Active | https://github.com/zen-browser/desktop/issues/9009 | None | 12:36:33 |
|
||||
| Change to different workspace for a tab in the context menu not displaying workspaces list at launch | https://github.com/zen-browser/desktop/issues/9008 | 0:05:59 | 12:56:27 |
|
||||
| Container tabs label not being shown on tab bar | https://github.com/zen-browser/desktop/issues/9007 | 1:15:35 | None |
|
||||
| Firefox themes do not apply properly to Zen | https://github.com/zen-browser/desktop/issues/9006 | 1:14:39 | 2 days, 1:15:39 |
|
||||
| Youtube will not play video on flatpak install of Zen | https://github.com/zen-browser/desktop/issues/9003 | None | 1 day, 9:03:28 |
|
||||
| NVidia driver 576.52 background app max fps setting causes low performance in zen | https://github.com/zen-browser/desktop/issues/9001 | None | None |
|
||||
| Compact mode: bookmark toolbar will stay present if you first hover for bookmar bar, then move cursor to screen edge to trigger tab bar, and then move off of tab bar to page content | https://github.com/zen-browser/desktop/issues/9000 | None | None |
|
||||
| amazon access fingerpint authentication failure | https://github.com/zen-browser/desktop/issues/8999 | None | None |
|
||||
| Unable to select element using ctrl+shift+c shortcut | https://github.com/zen-browser/desktop/issues/8998 | 1 day, 1:01:18 | None |
|
||||
| Bookmarks show duplicates when browsing in private mode | https://github.com/zen-browser/desktop/issues/8995 | None | 1 day, 13:45:17 |
|
||||
| RANDOM GREY BAR HAS FORMED ON TOP OF BROWSER WINDOW | https://github.com/zen-browser/desktop/issues/8994 | 0:03:10 | 11:14:07 |
|
||||
| Compact mode keeps toggling of on windows. | https://github.com/zen-browser/desktop/issues/8992 | None | 13:40:50 |
|
||||
| yt full screen ui out screen bug | https://github.com/zen-browser/desktop/issues/8991 | 6:12:04 | 4 days, 19:42:49 |
|
||||
| Extension not seeing tabs in deselected workspaces | https://github.com/zen-browser/desktop/issues/8989 | 2 days, 19:16:31 | None |
|
||||
| Unable to create new workspace | https://github.com/zen-browser/desktop/issues/8988 | None | 0:34:56 |
|
||||
| Spotify is buggy. | https://github.com/zen-browser/desktop/issues/8987 | 0:53:15 | 0:53:15 |
|
||||
| This is the second time Zen has crashed for the past few months that I’ve been using it. | https://github.com/zen-browser/desktop/issues/8985 | 2:06:51 | None |
|
||||
| Workspaces unlink/detach themselves from their respective Profiles/Containers | https://github.com/zen-browser/desktop/issues/8983 | 2 days, 4:00:26 | None |
|
||||
| open many tabs automaticly at the starting up | https://github.com/zen-browser/desktop/issues/8979 | 1:04:33 | 1:04:33 |
|
||||
| Sidebar doesn't hide in compact mode after moving multiple tabs | https://github.com/zen-browser/desktop/issues/8978 | None | 1:46:34 |
|
||||
| Zen settings blocked content button does not work | https://github.com/zen-browser/desktop/issues/8977 | 2 days, 4:15:20 | None |
|
||||
| Some Issues related to latest twilight 1.13t | https://github.com/zen-browser/desktop/issues/8974 | 19:12:00 | 6:20:34 |
|
||||
| Tab sidebar UI bug when toggling compact mode with shortcut in fullscreen mode | https://github.com/zen-browser/desktop/issues/8973 | 5 days, 20:05:11 | None |
|
||||
| Possible Quizlet Social Login Buy: Login Information is not being saved | https://github.com/zen-browser/desktop/issues/8971 | None | None |
|
||||
| Zen Browser isn't updating. | https://github.com/zen-browser/desktop/issues/8970 | 1 day, 1:28:03 | None |
|
||||
| expand tabs on laptop | https://github.com/zen-browser/desktop/issues/8969 | 2 days, 19:58:20 | 2 days, 20:52:55 |
|
||||
| Double-clicking pinned tab to rename isn't working for me | https://github.com/zen-browser/desktop/issues/8968 | 6:33:17 | 2 days, 21:09:49 |
|
||||
| Suddenly, the 'hide vertical tab' and 'hide top bar' settings in Zen browser's theme settings stopped working | https://github.com/zen-browser/desktop/issues/8966 | 19:05:39 | 19:05:44 |
|
||||
| Navigating to page changes pinned tab URL if set to about:blank | https://github.com/zen-browser/desktop/issues/8962 | None | None |
|
||||
| [Bug] Multi-Account Containers keyboard shortcuts do not trigger on the start page | https://github.com/zen-browser/desktop/issues/8960 | None | None |
|
||||
| Tab navigation is broken on macOS - can't select next / previous | https://github.com/zen-browser/desktop/issues/8959 | 1 day, 2:14:19 | 1 day, 5:09:42 |
|
||||
| Multiple empty window opened in background | https://github.com/zen-browser/desktop/issues/8958 | 0:26:05 | 3 days, 23:20:26 |
|
||||
| [Bug] On single toolbar mode on MacOS, the hamburger menu or the three buttons get merged with the menu bar. | https://github.com/zen-browser/desktop/issues/8957 | None | None |
|
||||
| Pinned tabs get reshuffled on startup | https://github.com/zen-browser/desktop/issues/8954 | 1 day, 22:57:54 | None |
|
||||
| Keyboard workspace shortcut priority not working with YouTube | https://github.com/zen-browser/desktop/issues/8953 | None | 9:02:07 |
|
||||
| Gmail only loads in specific workspace | https://github.com/zen-browser/desktop/issues/8952 | 11:08:45 | 21:58:34 |
|
||||
| Zen-Browser Landing Page SSL Error | https://github.com/zen-browser/desktop/issues/8948 | None | 0:04:37 |
|
||||
| Can't rename tabs on Mac | https://github.com/zen-browser/desktop/issues/8947 | 6:07:22 | 20:05:59 |
|
||||
| iCloud passwords extension doesn't work | https://github.com/zen-browser/desktop/issues/8944 | None | 4:19:07 |
|
||||
| [Windows 11] Videos do not play at Udemy.com | https://github.com/zen-browser/desktop/issues/8943 | 4:22:25 | 4:22:25 |
|
||||
| Not loading any page on Mac 15.5 (24F74) | https://github.com/zen-browser/desktop/issues/8938 | 1:26:54 | None |
|
||||
| Workspaces merge when dragging to create a new window | https://github.com/zen-browser/desktop/issues/8936 | None | None |
|
||||
| horizontal tab bar reset in biult-in multi tasking feature | https://github.com/zen-browser/desktop/issues/8935 | None | None |
|
||||
| "iCloud Passwords" Firefox addon doesn't seem to work on Zen | https://github.com/zen-browser/desktop/issues/8933 | None | 6:06:08 |
|
||||
| [meta]: High CPU / GPU / RAM usage reports | https://github.com/zen-browser/desktop/issues/8932 | 21:16:38 | None |
|
||||
| ip address not working | https://github.com/zen-browser/desktop/issues/8930 | 0:45:35 | None |
|
||||
| Prime Video Not Working – Missing EC-3 Support or Incomplete Widevine/CDM Integration | https://github.com/zen-browser/desktop/issues/8929 | 1:47:45 | 1:47:45 |
|
||||
| High CPU usage on MacOS | https://github.com/zen-browser/desktop/issues/8928 | 0:31:15 | 3:45:07 |
|
||||
| High CPU usage on Windows | https://github.com/zen-browser/desktop/issues/8925 | 5:33:23 | 8:50:37 |
|
||||
| can't access pinned extensions/addons on start page | https://github.com/zen-browser/desktop/issues/8924 | None | 8 days, 19:34:45 |
|
||||
| Videos won't stay in fullscreen in split view | https://github.com/zen-browser/desktop/issues/8923 | 15:34:05 | 15:34:05 |
|
||||
| Tab Group Disbanded When Moved But It's Work Normally On Private Window | https://github.com/zen-browser/desktop/issues/8921 | 1:03:25 | 1:35:50 |
|
||||
| Stuck in split mode when dragging and dropping tabs across windows | https://github.com/zen-browser/desktop/issues/8920 | 20 days, 14:00:37 | None |
|
||||
| Double-click actions unresponsive on Instagram within Zen Browser | https://github.com/zen-browser/desktop/issues/8919 | 1 day, 23:53:40 | 1 day, 23:53:40 |
|
||||
| Pinned tabs and essential tabs visible in private mode/ Mode incognito | https://github.com/zen-browser/desktop/issues/8918 | 0:05:50 | 2:20:09 |
|
||||
| bugs n mygreation n customization | https://github.com/zen-browser/desktop/issues/8916 | 9:49:45 | 9:51:33 |
|
||||
| Zen crashes when using Todoist | https://github.com/zen-browser/desktop/issues/8915 | None | None |
|
||||
| Auto scroll not working properly | https://github.com/zen-browser/desktop/issues/8913 | 11:50:40 | 1 day, 17:40:14 |
|
||||
| pictures downloaded/copied from carbon.sh.now is bugging | https://github.com/zen-browser/desktop/issues/8912 | 22:32:40 | None |
|
||||
| Black Screen Upon Closure | https://github.com/zen-browser/desktop/issues/8911 | 17:45:19 | 3 days, 2:53:18 |
|
||||
| Window controls are not properly placed | https://github.com/zen-browser/desktop/issues/8910 | None | 1 day, 1:09:00 |
|
||||
| Tabs not showing in vertical bar. Compact mode, windows 11 | https://github.com/zen-browser/desktop/issues/8909 | 20:15:37 | 20:27:12 |
|
||||
| Extensions only open/load with "settings" open | https://github.com/zen-browser/desktop/issues/8908 | 0:18:38 | 0:18:38 |
|
||||
| w11 Multiple Zen Tabs Briefly Appear on Startup | https://github.com/zen-browser/desktop/issues/8907 | 22:55:05 | 22:55:05 |
|
||||
| Unable to assign Ctrl+5 as shortcut to switch to workspace | https://github.com/zen-browser/desktop/issues/8903 | 1 day, 0:45:16 | None |
|
||||
| Browser freeze when restore tab using ( Ctrl/Cmd+Shift+T) | https://github.com/zen-browser/desktop/issues/8902 | None | 1 day, 0:49:18 |
|
||||
| No add to Essentials | https://github.com/zen-browser/desktop/issues/8900 | 0:05:45 | 0:05:45 |
|
||||
| Can't use "Ctrl" related features like word jumping, word erase, etc. | https://github.com/zen-browser/desktop/issues/8899 | 1:35:01 | 1:35:01 |
|
||||
| Extension Icon Size Too Large and Visually Disruptive in Browser Toolbar | https://github.com/zen-browser/desktop/issues/8898 | 2:56:38 | 2:56:38 |
|
||||
| Browser keeps freezing up - requires force quit or Mac reboot | https://github.com/zen-browser/desktop/issues/8897 | 1 day, 9:47:45 | 8 days, 20:36:50 |
|
||||
| Bleeding corners | https://github.com/zen-browser/desktop/issues/8896 | 1 day, 13:34:28 | 1 day, 13:34:28 |
|
||||
| Zen taking a long time to start and flickering on Startup especiallly around the sidebar and titlebar areas | https://github.com/zen-browser/desktop/issues/8895 | 10:56:13 | 5 days, 8:13:47 |
|
||||
| Copy current tab URL shortcut doesn't take priority over site | https://github.com/zen-browser/desktop/issues/8894 | 5 days, 11:42:03 | None |
|
||||
| Zen consistently loads certain webpages without a background color, rendering the browser theme instead | https://github.com/zen-browser/desktop/issues/8893 | 0:12:32 | 18:53:43 |
|
||||
| Scrollinig through workspaces is laggy | https://github.com/zen-browser/desktop/issues/8892 | 1 day, 15:49:33 | None |
|
||||
| Poorly formatted container selection menu when left clicking New Tab button | https://github.com/zen-browser/desktop/issues/8891 | 0:58:53 | None |
|
||||
| Sidebar auto hide in compact mode not working when global menus are enabled on Linux/Wayland | https://github.com/zen-browser/desktop/issues/8887 | None | None |
|
||||
| Touchpad swipe to switch workspace with container-specific essentials is glitchy | https://github.com/zen-browser/desktop/issues/8885 | 1 day, 22:34:43 | None |
|
||||
| [Shortcut conflict - MacOS] Forward Workspace w/ Toggle Network Monitor | https://github.com/zen-browser/desktop/issues/8884 | None | None |
|
||||
| Moving tab groups ungroups tabs / Tabbar stuck | https://github.com/zen-browser/desktop/issues/8883 | 20:09:47 | 20:09:47 |
|
||||
| Tabs don't fade when unloaded | https://github.com/zen-browser/desktop/issues/8881 | 1:24:44 | 2 days, 5:24:54 |
|
||||
| Choppy Animation in the compact mode | https://github.com/zen-browser/desktop/issues/8878 | 2 days, 2:30:28 | 2 days, 2:30:28 |
|
||||
| Voice isolation option doesn't work in google meet | https://github.com/zen-browser/desktop/issues/8877 | 21 days, 7:27:34 | None |
|
||||
| Frame drops when opening glance window. | https://github.com/zen-browser/desktop/issues/8874 | 1 day, 4:17:30 | None |
|
||||
| Container names display vertically when written in Korean. | https://github.com/zen-browser/desktop/issues/8873 | 19:48:36 | 2 days, 9:05:01 |
|
||||
| Unexpected white window border (every border except top) | https://github.com/zen-browser/desktop/issues/8869 | 3 days, 10:42:38 | None |
|
||||
| Sites with `backdrop-filter` on any element break the border radius of the window | https://github.com/zen-browser/desktop/issues/8866 | 3 days, 20:39:48 | 3 days, 20:39:48 |
|
||||
| Floating new tab bar closes when switching input methods | https://github.com/zen-browser/desktop/issues/8864 | 0:38:39 | 0:44:49 |
|
||||
| Vimium new tab opens glance view | https://github.com/zen-browser/desktop/issues/8863 | 12:13:12 | 1 day, 18:12:34 |
|
||||
| 1Password won't connect to app | https://github.com/zen-browser/desktop/issues/8860 | None | None |
|
||||
| Workspace Menu Missing After 1.12.10b Update on macOS Sequoia 15.5 | https://github.com/zen-browser/desktop/issues/8859 | 1:13:38 | 20:17:03 |
|
||||
| Cannot paste URL from Alfred clipboard history | https://github.com/zen-browser/desktop/issues/8858 | 2 days, 2:14:08 | None |
|
||||
| Save files do not correctly remember last saving location | https://github.com/zen-browser/desktop/issues/8856 | 1:14:26 | None |
|
||||
| Some default ctrl + alt + (letter) shortcuts do not work and cannot be bound either | https://github.com/zen-browser/desktop/issues/8855 | None | 4:02:22 |
|
||||
| Problem loading page/Network Protocol Error | https://github.com/zen-browser/desktop/issues/8853 | 0:04:43 | None |
|
||||
| Bookmark at toolbar disappeared | https://github.com/zen-browser/desktop/issues/8851 | 5:37:54 | 15:29:22 |
|
||||
| Audio playback randomly stops mid-playback and requires closing/reopening tab to resume (related to but distinct from #5589) | https://github.com/zen-browser/desktop/issues/8848 | 18 days, 21:28:43 | None |
|
||||
| Zen Browser unresponsive – unable to load any websites or interact with UI | https://github.com/zen-browser/desktop/issues/8846 | 0:32:50 | None |
|
||||
| Can't open link in glance window | https://github.com/zen-browser/desktop/issues/8843 | None | None |
|
||||
| WebGPU disabled on non-Mozilla branched builds effectively disabling WebGPU on all releases of Zen. | https://github.com/zen-browser/desktop/issues/8839 | 15:38:07 | 15:38:07 |
|
||||
| Opening a new profile opens zen in Virtual Desktop 1 | https://github.com/zen-browser/desktop/issues/8837 | None | 4 days, 22:17:37 |
|
||||
| Switching from a split tab to a pageless google doc messes up the position | https://github.com/zen-browser/desktop/issues/8836 | None | None |
|
||||
| Can't close tabs when collapse mode is enable | https://github.com/zen-browser/desktop/issues/8834 | 18:56:20 | None |
|
||||
| userChrome.css not applying in Flatpak version | https://github.com/zen-browser/desktop/issues/8833 | 21:39:51 | 23:47:44 |
|
||||
| Horizontal Scrollbar Appears In augmentcode.com Website | https://github.com/zen-browser/desktop/issues/8832 | None | 14 days, 21:42:29 |
|
||||
| Ctrl + T not working when watching a video in Fullscreen | https://github.com/zen-browser/desktop/issues/8830 | None | 1 day, 2:55:20 |
|
||||
| Geolocation doesn't work even when permission is granted | https://github.com/zen-browser/desktop/issues/8827 | 22:35:57 | None |
|
||||
| Cannot update browser: Zen is being updated by another instance. Issue persists after restarting PC | https://github.com/zen-browser/desktop/issues/8826 | None | None |
|
||||
| Compact mode issue after closing the current session still exist. | https://github.com/zen-browser/desktop/issues/8824 | 7 days, 18:38:34 | 9 days, 20:21:10 |
|
||||
| Tab auto unload not working with recent changes | https://github.com/zen-browser/desktop/issues/8822 | 4:49:44 | None |
|
||||
| Unloaded tabs are not dimmed after browser's restart | https://github.com/zen-browser/desktop/issues/8820 | 0:11:21 | 0:11:21 |
|
||||
| Shortcuts became very wide | https://github.com/zen-browser/desktop/issues/8819 | 0:16:30 | 0:16:30 |
|
||||
| Dragging tab inside scrollable tab bar is buggy | https://github.com/zen-browser/desktop/issues/8818 | 1 day, 7:56:07 | None |
|
||||
| Picture-in-Picture doesn't work when switching from arc to other windows/work spaces on mac | https://github.com/zen-browser/desktop/issues/8817 | 1 day, 8:30:16 | 1 day, 8:30:16 |
|
||||
| Tab Search does not work correctly | https://github.com/zen-browser/desktop/issues/8816 | None | None |
|
||||
| Browser window offset after debugger break point hit | https://github.com/zen-browser/desktop/issues/8814 | None | 5 days, 8:24:40 |
|
||||
| Can't drag multiple tabs at once and change in context menu of selected tabs | https://github.com/zen-browser/desktop/issues/8812 | None | None |
|
||||
| Mouse wheel click, ctrl/cmd+w do not close pinned tab | https://github.com/zen-browser/desktop/issues/8810 | 2:44:22 | 2:44:22 |
|
||||
| Cursor preemptively selecting a tab when triggering Ctrl + Tab | https://github.com/zen-browser/desktop/issues/8809 | 2:16:56 | 2:16:56 |
|
||||
| Zoom/scale too large unexpectly on 5k resolution screen. | https://github.com/zen-browser/desktop/issues/8808 | None | None |
|
||||
| Sidebar looks inconsistent on certain theme gradients (when tabs on right is selected) | https://github.com/zen-browser/desktop/issues/8807 | 4:41:41 | None |
|
||||
| Unable to log into the Grammarly extension | https://github.com/zen-browser/desktop/issues/8806 | 10 days, 6:51:42 | None |
|
||||
| If signed in with a Mozilla account, Tabs; Pinned tabs and Essentials' favicons are not using cached after reopening Zen | https://github.com/zen-browser/desktop/issues/8805 | 6:33:31 | 6:37:57 |
|
||||
| When in full screeen the bookmarks toolbar vanishes | https://github.com/zen-browser/desktop/issues/8804 | None | 7:21:19 |
|
||||
| All Opened tabs were deleted | https://github.com/zen-browser/desktop/issues/8802 | None | None |
|
||||
| High RAM usage with WhatsApp Web | https://github.com/zen-browser/desktop/issues/8800 | 9:32:06 | 9:32:06 |
|
||||
| Issue: Cmd + Tab Opens Unopened Essentials Tab. | https://github.com/zen-browser/desktop/issues/8799 | None | None |
|
||||
| iCloud Passwords extension stopped working | https://github.com/zen-browser/desktop/issues/8797 | 0:13:29 | 10:34:12 |
|
||||
| Tabs aren't showing on the tabs bar. | https://github.com/zen-browser/desktop/issues/8796 | 0:53:40 | None |
|
||||
| Permanent bar at the top of the window | https://github.com/zen-browser/desktop/issues/8793 | 0:02:08 | 1:43:15 |
|
||||
| Visible difference in the background color on the home page when no tabs are open | https://github.com/zen-browser/desktop/issues/8791 | 0:49:13 | None |
|
||||
| Local Theme Import via JSON Fails - Installation Always Fetches from Online Store | https://github.com/zen-browser/desktop/issues/8789 | None | None |
|
||||
| Can not disable the "new url bar" popup | https://github.com/zen-browser/desktop/issues/8788 | None | None |
|
||||
| no menu entry to just close a window | https://github.com/zen-browser/desktop/issues/8787 | 6:14:17 | None |
|
||||
| Raindrop extension shortcut does not work | https://github.com/zen-browser/desktop/issues/8785 | 13 days, 20:38:44 | None |
|
||||
| Select Elements | https://github.com/zen-browser/desktop/issues/8784 | 4:45:14 | None |
|
||||
| close tab button not working | https://github.com/zen-browser/desktop/issues/8782 | 1:18:44 | None |
|
||||
| Tab unloading feature has been removed/is missing. | https://github.com/zen-browser/desktop/issues/8781 | 5:09:53 | 22:59:59 |
|
||||
| Workspace Icons Become dots After Updating to 1.12.10b | https://github.com/zen-browser/desktop/issues/8779 | 0:09:56 | 3:17:16 |
|
||||
| Add clear option to enable/disable tab unloading. | https://github.com/zen-browser/desktop/issues/8778 | 0:17:15 | 0:17:15 |
|
||||
| favicons for split tabs in incorrect order when switching view | https://github.com/zen-browser/desktop/issues/8777 | None | None |
|
||||
| Bookmark this page icon missing rom the address bar after upgrading to Zen Browser 1.12.9b | https://github.com/zen-browser/desktop/issues/8776 | 1:26:14 | 19:08:02 |
|
||||
| Mod configs get reset to defaults after updating | https://github.com/zen-browser/desktop/issues/8775 | 3 days, 21:01:11 | None |
|
||||
| Context Menu Lacks "Open in Private Window" Option | https://github.com/zen-browser/desktop/issues/8772 | None | None |
|
||||
| Pinned tab favicons aren't dimmend when unloaded | https://github.com/zen-browser/desktop/issues/8771 | 2:02:45 | 2:02:45 |
|
||||
| Compact mode automatically turned off when starting Zen with multiple windows open | https://github.com/zen-browser/desktop/issues/8770 | None | 4:54:42 |
|
||||
| Transparent UI and covered submenus | https://github.com/zen-browser/desktop/issues/8768 | None | 1 day, 12:21:33 |
|
||||
| Accent colors do not show when browser is focused | https://github.com/zen-browser/desktop/issues/8766 | None | None |
|
||||
| `Copy Clean Link`, `Paste and Go` missing from URL bar context menu after compact mode enabled or layout change | https://github.com/zen-browser/desktop/issues/8765 | 0:52:51 | 6 days, 0:52:30 |
|
||||
| Bug Report: Application Menu Opens Automatically on Startup | https://github.com/zen-browser/desktop/issues/8764 | 5:20:27 | None |
|
||||
| Basic accessibility | https://github.com/zen-browser/desktop/issues/8763 | None | None |
|
||||
| Last update ruined everything | https://github.com/zen-browser/desktop/issues/8762 | 0:04:27 | 1:47:23 |
|
||||
| The sidebar fails to appear on hover in compact mode when positioned on the right side | https://github.com/zen-browser/desktop/issues/8760 | 0:33:22 | None |
|
||||
| Zen doesn't want to become focused when opening with Kando | https://github.com/zen-browser/desktop/issues/8759 | None | 0:22:54 |
|
||||
| Container sync deletes and changes container settings | https://github.com/zen-browser/desktop/issues/8758 | None | None |
|
||||
| Macos fullscreen doesn't allow to access the content at the top | https://github.com/zen-browser/desktop/issues/8757 | None | None |
|
||||
| Sidebar remains open after Ctrl+T and Tab when mouse is on the left (In Floating Toolbar on) | https://github.com/zen-browser/desktop/issues/8756 | 3:34:19 | None |
|
||||
| Top bar overflowing into bookmarks | https://github.com/zen-browser/desktop/issues/8755 | None | 3:55:32 |
|
||||
| delete profile but switch profile | https://github.com/zen-browser/desktop/issues/8754 | 4:08:59 | 4:08:59 |
|
||||
| Search for X still opens Glance despite it being disabled in about:config | https://github.com/zen-browser/desktop/issues/8752 | 0:56:03 | 5 days, 5:40:02 |
|
||||
| Container indicators always show on tabs dragged out of window, even if they are opened in their containers' default workspaces | https://github.com/zen-browser/desktop/issues/8750 | None | None |
|
||||
| Zen Browser can't be launched by xdg-open when set as default browser (Flatpak install) | https://github.com/zen-browser/desktop/issues/8749 | 5 days, 0:11:54 | None |
|
||||
| icon to add a new bookmark disappeared | https://github.com/zen-browser/desktop/issues/8748 | 3 days, 18:25:23 | 3:18:54 |
|
||||
| Cannot change profile not via about:profiles | https://github.com/zen-browser/desktop/issues/8746 | 3:13:45 | 13:46:02 |
|
||||
| Never-loaded tabs are not dimmed | https://github.com/zen-browser/desktop/issues/8744 | 4:16:03 | 5:44:22 |
|
||||
|
||||
_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:2025-06-01..2025-06-30`
|
2
l10n
2
l10n
|
@ -1 +1 @@
|
|||
Subproject commit 102a19cdee3cee5e6f963902f1546e61a0283954
|
||||
Subproject commit 7435b28bdf962406f7e0ec54ed1774ede5b490a9
|
20
package-lock.json
generated
20
package-lock.json
generated
|
@ -9,7 +9,7 @@
|
|||
"version": "1.0.0",
|
||||
"license": "MPL-2.0",
|
||||
"dependencies": {
|
||||
"@zen-browser/surfer": "^1.11.12"
|
||||
"@zen-browser/surfer": "^1.11.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-typescript": "^7.27.0",
|
||||
|
@ -817,9 +817,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@zen-browser/surfer": {
|
||||
"version": "1.11.12",
|
||||
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.11.12.tgz",
|
||||
"integrity": "sha512-wny52xOFvZe5aPXxLVxEcAzDNEiWWoDiCZFlzsNxkyQ5Lw6vzqroMWpjQPJwBRJOc/JssgiXMdd1uwl2LLnovQ==",
|
||||
"version": "1.11.13",
|
||||
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.11.13.tgz",
|
||||
"integrity": "sha512-D0TyunAWYtTdJkuUkYeOc6VBXzE9aoDs58kWu/Oi/aU3vd8IbqXPbZZfYwj5FWPWDReMrJUNkkKAEdbL44y9aw==",
|
||||
"license": "MPL-2.0",
|
||||
"dependencies": {
|
||||
"@resvg/resvg-js": "^1.4.0",
|
||||
|
@ -3019,9 +3019,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/prebuild-install/node_modules/tar-fs": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz",
|
||||
"integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==",
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz",
|
||||
"integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"chownr": "^1.1.1",
|
||||
|
@ -3667,9 +3667,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/tar-fs": {
|
||||
"version": "3.0.8",
|
||||
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz",
|
||||
"integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==",
|
||||
"version": "3.0.9",
|
||||
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz",
|
||||
"integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"pump": "^3.0.0",
|
||||
|
|
|
@ -23,7 +23,9 @@
|
|||
"lint": "npx prettier . --check && autopep8 --diff scripts/ src/",
|
||||
"prepare": "husky",
|
||||
"reset-ff": "surfer reset",
|
||||
"surfer": "surfer"
|
||||
"surfer": "surfer",
|
||||
"test": "python3 scripts/run_tests.py",
|
||||
"test:dbg": "python3 scripts/run_tests.py --jsdebugger --debug-on-failure"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -40,7 +42,7 @@
|
|||
},
|
||||
"homepage": "https://github.com/zen-browser/desktop#readme",
|
||||
"dependencies": {
|
||||
"@zen-browser/surfer": "^1.11.12"
|
||||
"@zen-browser/surfer": "^1.11.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-typescript": "^7.27.0",
|
||||
|
|
45
scripts/run_tests.py
Normal file
45
scripts/run_tests.py
Normal file
|
@ -0,0 +1,45 @@
|
|||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def main():
|
||||
project_root = Path(__file__).resolve().parent.parent
|
||||
package_json = project_root / 'package.json'
|
||||
|
||||
# Ensure script is run from project root
|
||||
if not package_json.exists():
|
||||
print("Please run this script from the root of the project", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
args = sys.argv[1:]
|
||||
path = ""
|
||||
for arg in args:
|
||||
if not arg.startswith("--"):
|
||||
path = arg
|
||||
break
|
||||
|
||||
# Collect any additional arguments
|
||||
other_args = [arg for arg in args if arg != path]
|
||||
|
||||
engine_dir = project_root / 'engine'
|
||||
os.chdir(engine_dir)
|
||||
|
||||
def run_mach_with_paths(test_paths):
|
||||
command = ['./mach', 'mochitest'] + other_args + test_paths
|
||||
subprocess.run(command, check=True)
|
||||
|
||||
if path in ("", "all"):
|
||||
test_dirs = [p for p in Path("zen/tests").iterdir() if p.is_dir()]
|
||||
test_paths = [str(p) for p in test_dirs]
|
||||
run_mach_with_paths(test_paths)
|
||||
else:
|
||||
run_mach_with_paths([f"zen/tests/{path}"])
|
||||
|
||||
# Return to original directory
|
||||
os.chdir(project_root)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index 38508fffccbce801a02d4a4211f368674307c4d3..5ce56c36da2e242ad81621c2032eb68dcd26e960 100644
|
||||
index f7ebed9b2a71da90c5751cfd5d5f018cc8b73612..96e881c7782198f1e58be2578f167c7079a8191e 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -3931,8 +3931,6 @@ dependencies = [
|
||||
@@ -4014,8 +4014,6 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "mime_guess"
|
||||
version = "2.0.4"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index d3d529b487f80d4b4f3bfa13cdd3f62946352db8..b35a9e0e3339d48d1cd0cab7b22d030f330e40d1 100644
|
||||
index 8c6b99bc629ec26e01ab3746f2ae46174bfaa0b1..5791c7470923c7c15986089b40357ce80365e942 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -217,6 +217,9 @@ rure = { path = "third_party/rust/rure" }
|
||||
@@ -233,6 +233,9 @@ rure = { path = "third_party/rust/rure" }
|
||||
# Patch `plist` to work with `indexmap` 2.*
|
||||
plist = { path = "third_party/rust/plist" }
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs
|
||||
index 40e3a057a1d4b2f9bcfb73fa5ff96b2555865434..a92bed06766dd930bd336d56cd9ddcf3c6c0eeca 100644
|
||||
index 4ed2dd19207fc38b9e5cc22ea2947aba94b2f5ad..ffc88d62dc46683399c68cdfd35f1b1efde70902 100644
|
||||
--- a/browser/actors/WebRTCParent.sys.mjs
|
||||
+++ b/browser/actors/WebRTCParent.sys.mjs
|
||||
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
pref("browser.ml.chat.enabled", false);
|
||||
pref("browser.ml.chat.shortcuts", false);
|
||||
|
|
|
@ -1,18 +1,24 @@
|
|||
|
||||
# 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/.
|
||||
|
||||
// Restore session on startup
|
||||
pref("browser.startup.page", 3);
|
||||
pref("browser.sessionstore.restore_pinned_tabs_on_demand", true);
|
||||
|
||||
// Toolbars
|
||||
pref("browser.tabs.closeWindowWithLastTab", false);
|
||||
pref("browser.tabs.loadBookmarksInTabs", false);
|
||||
pref("browser.tabs.hoverPreview.enabled", false);
|
||||
pref("browser.tabs.dragdrop.moveOverThresholdPercent", 50);
|
||||
pref("browser.tabs.unloadTabInContextMenu", true);
|
||||
pref("browser.tabs.fadeOutExplicitlyUnloadedTabs", true);
|
||||
|
||||
pref('browser.toolbars.bookmarks.visibility', 'never');
|
||||
pref("browser.bookmarks.openInTabClosesMenu", false);
|
||||
pref("browser.menu.showViewImageInfo", true);
|
||||
pref("findbar.highlightAll", true);
|
||||
|
||||
pref("layout.word_select.eat_space_to_next_word", false);
|
||||
|
||||
// Better Windows theming
|
||||
|
@ -46,3 +52,4 @@ pref("app.update.checkInstallTime.days", 6);
|
|||
// TODO: Check this out!
|
||||
pref("browser.profiles.enabled", false);
|
||||
pref("browser.tabs.groups.enabled", false);
|
||||
pref("browser.urlbar.scotchBonnet.enableOverride", false);
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
// Common UI changes
|
||||
pref("browser.privatebrowsing.vpnpromourl", "", locked);
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
// security: They must enable this themselves, to avoid people downloading malware
|
||||
pref('xpinstall.signatures.required', true);
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.welcome-screen.seen', false, sticky);
|
||||
#ifdef MOZILLA_OFFICIAL
|
||||
pref('zen.welcome-screen.seen', false, sticky);
|
||||
#else
|
||||
pref('zen.welcome-screen.seen', true, sticky);
|
||||
#endif
|
||||
|
||||
pref('zen.tabs.vertical', true);
|
||||
pref('zen.tabs.vertical.right-side', false);
|
||||
|
@ -8,145 +15,27 @@ pref('zen.tabs.show-newtab-vertical', true);
|
|||
|
||||
pref('zen.ctrlTab.show-pending-tabs', false);
|
||||
|
||||
pref('zen.theme.accent-color', "#ffb787");
|
||||
pref('zen.theme.content-element-separation', 8); // In pixels
|
||||
pref('zen.theme.gradient', true);
|
||||
pref('zen.theme.gradient.show-custom-colors', false);
|
||||
pref('zen.theme.essentials-favicon-bg', true);
|
||||
|
||||
pref('zen.view.show-newtab-button-border-top', false);
|
||||
pref('zen.view.show-newtab-button-top', true);
|
||||
|
||||
pref('zen.mediacontrols.enabled', true);
|
||||
|
||||
// Exposure:
|
||||
pref('zen.haptic-feedback.enabled', true);
|
||||
|
||||
#include features/mods.inc
|
||||
#include features/theme.inc
|
||||
#include features/compact-mode.inc
|
||||
#include features/urlbar.inc
|
||||
#include features/glance.inc
|
||||
#include features/view.inc
|
||||
#include features/downloads.inc
|
||||
#include features/workspaces.inc
|
||||
#include features/split-view.inc
|
||||
#include features/kbs.inc
|
||||
|
||||
// Section: Watermark
|
||||
#ifdef MOZILLA_OFFICIAL
|
||||
pref('zen.rice.api.url', 'https://share.zen-browser.app', locked);
|
||||
pref('zen.injections.match-urls', 'https://zen-browser.app/*,https://share.zen-browser.app/*', locked);
|
||||
pref('zen.watermark.enabled', true, sticky);
|
||||
#else
|
||||
pref('zen.rice.api.url', "http://localhost", locked);
|
||||
pref('zen.injections.match-urls', 'http://localhost/*', locked);
|
||||
#endif
|
||||
pref('zen.rice.share.notice.accepted', false);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
pref('zen.theme.border-radius', 10); // In pixels
|
||||
#else
|
||||
pref('zen.theme.border-radius', 8); // In pixels
|
||||
#endif
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
pref('zen.theme.acrylic-elements', false);
|
||||
#else
|
||||
pref('zen.theme.acrylic-elements', false);
|
||||
#endif
|
||||
|
||||
pref('zen.theme.color-prefs.use-workspace-colors', true);
|
||||
|
||||
pref('zen.view.compact.hide-tabbar', true);
|
||||
pref('zen.view.compact.hide-toolbar', false);
|
||||
pref('zen.view.compact.toolbar-flash-popup', false);
|
||||
pref('zen.view.compact.toolbar-flash-popup.duration', 800);
|
||||
pref('zen.view.compact.toolbar-hide-after-hover.duration', 1000);
|
||||
pref('zen.view.compact.color-toolbar', true);
|
||||
pref('zen.view.compact.color-sidebar', true);
|
||||
pref('zen.view.compact.animate-sidebar', true);
|
||||
pref('zen.view.compact.show-sidebar-and-toolbar-on-hover', true);
|
||||
pref('zen.view.compact.show-background-tab-toast', true);
|
||||
|
||||
pref('zen.urlbar.replace-newtab', true);
|
||||
pref('zen.urlbar.show-protections-icon', false);
|
||||
pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float
|
||||
pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s)
|
||||
pref('zen.urlbar.show-domain-only-in-sidebar', true);
|
||||
pref('zen.urlbar.hide-one-offs', true);
|
||||
pref('zen.urlbar.enable-overrides', false);
|
||||
|
||||
// Exoerimental: Apply a blend mode to the websites so they can render rounded corners
|
||||
// IMPORTANT: Remove once firefox 139 is released
|
||||
#ifdef XP_MACOSX
|
||||
pref('zen.view.experimental-rounded-view', false);
|
||||
#else
|
||||
pref('zen.view.experimental-rounded-view', true);
|
||||
#endif
|
||||
|
||||
// Glance
|
||||
pref('zen.glance.enabled', true);
|
||||
pref('zen.glance.hold-duration', 300); // in ms
|
||||
pref('zen.glance.open-essential-external-links', true);
|
||||
pref('zen.glance.activation-method', 'alt'); // ctrl, alt, shift, none, hold
|
||||
|
||||
pref('zen.view.sidebar-height-throttle', 200); // in ms
|
||||
pref('zen.view.sidebar-expanded.max-width', 500);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
pref('zen.view.mac.show-three-dot-menu', false);
|
||||
pref('zen.widget.mac.mono-window-controls', true);
|
||||
#endif
|
||||
pref('zen.view.use-single-toolbar', true);
|
||||
pref('zen.view.sidebar-expanded', true);
|
||||
pref('zen.view.sidebar-collapsed.hide-mute-button', true);
|
||||
pref('zen.view.experimental-force-window-controls-left', false);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
pref('zen.view.grey-out-inactive-windows', false);
|
||||
#else
|
||||
pref('zen.view.grey-out-inactive-windows', true);
|
||||
#endif
|
||||
|
||||
pref('zen.view.hide-window-controls', true);
|
||||
pref('zen.view.experimental-no-window-controls', false);
|
||||
|
||||
pref('zen.tabs.dim-pending', true);
|
||||
|
||||
pref('zen.keyboard.shortcuts.enabled', true);
|
||||
pref('zen.keyboard.shortcuts.version', 0); // Empty string means default shortcuts
|
||||
pref('zen.keyboard.shortcuts.disable-mainkeyset-clear', false); // for debugging
|
||||
|
||||
pref('zen.themes.updated-value-observer', false);
|
||||
|
||||
pref('zen.tab-unloader.enabled', true);
|
||||
pref('zen.tab-unloader.timeout-minutes', 40);
|
||||
pref('zen.tab-unloader.excluded-urls', "example.com,example.org");
|
||||
|
||||
pref('zen.pinned-tab-manager.debug', false);
|
||||
pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false);
|
||||
pref('zen.pinned-tab-manager.close-shortcut-behavior', 'reset-unload-switch');
|
||||
|
||||
#ifdef MOZILLA_OFFICIAL
|
||||
pref('zen.watermark.enabled', true, sticky);
|
||||
#else
|
||||
pref('zen.watermark.enabled', false, sticky);
|
||||
pref('zen.watermark.enabled', false, sticky);
|
||||
#endif
|
||||
|
||||
// Startup flags
|
||||
pref('zen.startup.smooth-scroll-in-tabs', true);
|
||||
|
||||
// Zen Workspaces
|
||||
pref('zen.workspaces.continue-where-left-off', false);
|
||||
pref('zen.workspaces.hide-default-container-indicator', true);
|
||||
pref('zen.workspaces.force-container-workspace', false);
|
||||
pref('zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed', false);
|
||||
pref('zen.workspaces.swipe-actions', true);
|
||||
pref('zen.workspaces.wrap-around-navigation', true);
|
||||
pref('zen.workspaces.natural-scroll', false);
|
||||
pref('zen.workspaces.scroll-modifier-key','ctrl'); // can be ctrl, alt, shift, or a meta key
|
||||
pref('services.sync.engine.workspaces', false);
|
||||
pref('zen.workspaces.container-specific-essentials-enabled', false);
|
||||
|
||||
#ifdef MOZILLA_OFFICIAL
|
||||
pref('zen.workspaces.debug', false);
|
||||
#else
|
||||
pref('zen.workspaces.debug', true);
|
||||
#endif
|
||||
|
||||
// Zen Split View
|
||||
pref('zen.splitView.enable-tab-drop', true);
|
||||
pref('zen.splitView.min-resize-width', 7);
|
||||
pref('zen.splitView.rearrange-hover-size', 24);
|
||||
|
||||
// Zen Download Animations
|
||||
pref('zen.downloads.download-animation', true);
|
||||
pref('zen.downloads.download-animation-duration', 1000); // ms
|
||||
|
|
14
src/browser/app/profile/features/compact-mode.inc
Normal file
14
src/browser/app/profile/features/compact-mode.inc
Normal file
|
@ -0,0 +1,14 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.view.compact.hide-tabbar', true);
|
||||
pref('zen.view.compact.hide-toolbar', false);
|
||||
pref('zen.view.compact.toolbar-flash-popup', false);
|
||||
pref('zen.view.compact.toolbar-flash-popup.duration', 800);
|
||||
pref('zen.view.compact.toolbar-hide-after-hover.duration', 1000);
|
||||
pref('zen.view.compact.color-toolbar', true);
|
||||
pref('zen.view.compact.color-sidebar', true);
|
||||
pref('zen.view.compact.animate-sidebar', true);
|
||||
pref('zen.view.compact.show-sidebar-and-toolbar-on-hover', true);
|
||||
pref('zen.view.compact.show-background-tab-toast', true);
|
6
src/browser/app/profile/features/downloads.inc
Normal file
6
src/browser/app/profile/features/downloads.inc
Normal file
|
@ -0,0 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.downloads.download-animation', true);
|
||||
pref('zen.downloads.download-animation-duration', 1000); // ms
|
9
src/browser/app/profile/features/glance.inc
Normal file
9
src/browser/app/profile/features/glance.inc
Normal file
|
@ -0,0 +1,9 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.glance.enabled', true);
|
||||
pref('zen.glance.enable-contextmenu-search', true);
|
||||
pref('zen.glance.hold-duration', 300); // in ms
|
||||
pref('zen.glance.open-essential-external-links', true);
|
||||
pref('zen.glance.activation-method', 'alt'); // ctrl, alt, shift, none, hold
|
7
src/browser/app/profile/features/kbs.inc
Normal file
7
src/browser/app/profile/features/kbs.inc
Normal file
|
@ -0,0 +1,7 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.keyboard.shortcuts.enabled', true);
|
||||
pref('zen.keyboard.shortcuts.version', 0); // Empty string means default shortcuts
|
||||
pref('zen.keyboard.shortcuts.disable-mainkeyset-clear', false); // for debugging
|
17
src/browser/app/profile/features/mods.inc
Normal file
17
src/browser/app/profile/features/mods.inc
Normal file
|
@ -0,0 +1,17 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.mods.updated-value-observer', false);
|
||||
|
||||
pref('zen.mods.auto-update-days', 20); // In days
|
||||
|
||||
#ifdef MOZILLA_OFFICIAL
|
||||
pref('zen.mods.auto-update', true);
|
||||
pref('zen.injections.match-urls', 'https://zen-browser.app/*', locked);
|
||||
#else
|
||||
pref('zen.mods.auto-update', false);
|
||||
pref('zen.injections.match-urls', 'http://localhost/*', locked);
|
||||
#endif
|
||||
|
||||
pref('zen.rice.share.notice.accepted', false);
|
7
src/browser/app/profile/features/split-view.inc
Normal file
7
src/browser/app/profile/features/split-view.inc
Normal file
|
@ -0,0 +1,7 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.splitView.enable-tab-drop', true);
|
||||
pref('zen.splitView.min-resize-width', 7);
|
||||
pref('zen.splitView.rearrange-hover-size', 24);
|
24
src/browser/app/profile/features/theme.inc
Normal file
24
src/browser/app/profile/features/theme.inc
Normal file
|
@ -0,0 +1,24 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.theme.accent-color', "#ffb787");
|
||||
pref('zen.theme.content-element-separation', 8); // In pixels
|
||||
pref('zen.theme.gradient', true);
|
||||
pref('zen.theme.gradient.show-custom-colors', false);
|
||||
pref('zen.theme.essentials-favicon-bg', true);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
pref('zen.theme.border-radius', 10); // In pixels
|
||||
#else
|
||||
pref('zen.theme.border-radius', 8); // In pixels
|
||||
#endif
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
pref('zen.theme.acrylic-elements', false);
|
||||
#else
|
||||
pref('zen.theme.acrylic-elements', false);
|
||||
#endif
|
||||
|
||||
# Light weight themes
|
||||
pref('zen.theme.disable-lightweight', true);
|
11
src/browser/app/profile/features/urlbar.inc
Normal file
11
src/browser/app/profile/features/urlbar.inc
Normal file
|
@ -0,0 +1,11 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.urlbar.replace-newtab', true);
|
||||
pref('zen.urlbar.show-protections-icon', false);
|
||||
pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float
|
||||
pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s)
|
||||
pref('zen.urlbar.show-domain-only-in-sidebar', true);
|
||||
pref('zen.urlbar.hide-one-offs', true);
|
||||
pref('zen.urlbar.enable-overrides', false);
|
29
src/browser/app/profile/features/view.inc
Normal file
29
src/browser/app/profile/features/view.inc
Normal file
|
@ -0,0 +1,29 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.view.sidebar-height-throttle', 0); // in ms
|
||||
pref('zen.view.sidebar-expanded.max-width', 500);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
pref('zen.view.mac.show-three-dot-menu', false);
|
||||
pref('zen.widget.mac.mono-window-controls', true);
|
||||
#endif
|
||||
|
||||
pref('zen.view.use-single-toolbar', true);
|
||||
pref('zen.view.sidebar-expanded', true);
|
||||
pref('zen.view.sidebar-collapsed.hide-mute-button', true);
|
||||
pref('zen.view.experimental-force-window-controls-left', false);
|
||||
|
||||
pref('zen.view.hide-window-controls', true);
|
||||
pref('zen.view.experimental-no-window-controls', false);
|
||||
|
||||
pref('zen.view.grey-out-inactive-windows', true);
|
||||
|
||||
pref('zen.view.show-newtab-button-border-top', false);
|
||||
pref('zen.view.show-newtab-button-top', true);
|
||||
|
||||
# 0: Dark
|
||||
# 1: Light
|
||||
# 2: Auto (system color scheme unless overridden by browser theme)
|
||||
pref('zen.view.window.scheme', 2); // auto, light, dark
|
25
src/browser/app/profile/features/workspaces.inc
Normal file
25
src/browser/app/profile/features/workspaces.inc
Normal file
|
@ -0,0 +1,25 @@
|
|||
# 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/.
|
||||
|
||||
pref('zen.workspaces.continue-where-left-off', false);
|
||||
pref('zen.workspaces.hide-default-container-indicator', true);
|
||||
pref('zen.workspaces.force-container-workspace', false);
|
||||
pref('zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed', false);
|
||||
pref('zen.workspaces.swipe-actions', true);
|
||||
pref('zen.workspaces.wrap-around-navigation', true);
|
||||
pref('zen.workspaces.natural-scroll', false);
|
||||
pref('zen.workspaces.scroll-modifier-key','ctrl'); // can be ctrl, alt, shift, or a meta key
|
||||
pref('services.sync.engine.workspaces', false);
|
||||
pref('zen.workspaces.separate-essentials', true);
|
||||
|
||||
#ifdef MOZILLA_OFFICIAL
|
||||
pref('zen.workspaces.debug', false);
|
||||
#else
|
||||
pref('zen.workspaces.debug', true);
|
||||
#endif
|
||||
|
||||
# Section: Pinned tabs management
|
||||
pref('zen.pinned-tab-manager.debug', false);
|
||||
pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false);
|
||||
pref('zen.pinned-tab-manager.close-shortcut-behavior', 'reset-unload-switch');
|
|
@ -1,10 +1,10 @@
|
|||
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
|
||||
index eda8312b0edd34ed22c94c224167680ac6c9c459..56de47f79c553dab2676e127f5320e352b7d3a77 100644
|
||||
index 412e0879bbb0c7e7d1eb842212b064e1c77cab8f..bd23e5f2cd3f9c382f704fd1fcfdbb3edd71a454 100644
|
||||
--- a/browser/app/profile/firefox.js
|
||||
+++ b/browser/app/profile/firefox.js
|
||||
@@ -3377,3 +3377,5 @@ pref("toolkit.contentRelevancy.enabled", false);
|
||||
pref("toolkit.contentRelevancy.ingestEnabled", false);
|
||||
// Pref to enable extra logging for the content relevancy feature
|
||||
pref("toolkit.contentRelevancy.log", false);
|
||||
@@ -3361,3 +3361,5 @@ pref("toolkit.contentRelevancy.log", false);
|
||||
// rotation altogether.
|
||||
pref("browser.contextual-services.contextId.rotation-in-days", 0);
|
||||
pref("browser.contextual-services.contextId.rust-component.enabled", false);
|
||||
+
|
||||
+#include zen-browser.js
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
pref("full-screen-api.transition-duration.enter", "0 0");
|
||||
pref("full-screen-api.transition-duration.leave", "0 0");
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
pref("widget.gtk.rounded-bottom-corners.enabled", true);
|
||||
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
# 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/.
|
||||
|
||||
// Enable transparent background for macos
|
||||
pref('widget.macos.titlebar-blend-mode.behind-window', true);
|
||||
// 1. hudWindow
|
||||
// 2. fullScreenUI
|
||||
// 3. popover
|
||||
// 4. menu
|
||||
// 5. toolTip
|
||||
// 6. headerView
|
||||
// 7. underlay
|
||||
pref('zen.widget.macos.window-material', 3);
|
||||
# Enable transparent background for macos
|
||||
pref('widget.macos.sidebar-blend-mode.behind-window', true);
|
||||
# 1. hudWindow
|
||||
# 2. fullScreenUI
|
||||
# 3. popover
|
||||
# 4. menu
|
||||
# 5. toolTip
|
||||
# 6. headerView
|
||||
# 7. underlay
|
||||
pref('zen.widget.macos.window-material', 1);
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
pref('image.jxl.enabled', true, locked);
|
||||
pref("svg.context-properties.content.enabled", true);
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
|
||||
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
pref('pdfjs.enableHighlightEditor', true);
|
||||
pref('pdfjs.enableHighlightFloatingButton', true);
|
||||
|
|
|
@ -1,28 +1,18 @@
|
|||
# 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/.
|
||||
|
||||
// ---- Experimental settings to try make zen faster
|
||||
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);
|
||||
#ifdef XP_MACOSX
|
||||
# Pref to control the reponse taken on macOS when the OS is under memory
|
||||
# pressure. Changes to the pref take effect immediately. Browser restart not
|
||||
# required. The pref value is a bitmask:
|
||||
# 0x0: No response (other than recording for telemetry, crash reporting)
|
||||
# 0x1: Use the tab unloading feature to reduce memory use. Requires that
|
||||
# the above "browser.tabs.unloadOnLowMemory" pref be set to true for tab
|
||||
# unloading to occur.
|
||||
# 0x2: Issue the internal "memory-pressure" notification to reduce memory use
|
||||
# 0x3: Both 0x1 and 0x2.
|
||||
pref("browser.lowMemoryResponseMask", 3);
|
||||
#endif
|
||||
|
||||
pref("image.mem.decode_bytes_at_a_time", 32768);
|
||||
|
||||
// Enable GPU by default
|
||||
pref("gfx.canvas.accelerated", true);
|
||||
pref("media.hardware-video-decoding.enabled", true);
|
||||
pref("layers.gpu-process.enabled", true);
|
||||
|
||||
// Prefetching:
|
||||
pref("network.dns.disablePrefetch", false);
|
||||
pref("network.prefetch-next", true);
|
||||
pref("network.dns.disablePrefetchFromHTTPS", false);
|
||||
pref("network.predictor.enable-hover-on-ssl", true);
|
||||
pref("network.http.rcwn.enabled", false);
|
||||
|
||||
// Experimental Zen Features
|
||||
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
|
||||
pref('dom.script_loader.bytecode_cache.strategy', 2);
|
||||
pref("layout.css.grid-template-masonry-value.enabled", true);
|
||||
|
||||
// No Proxy should be default, Use system proxy allows antivirus, virus or system proxy to MITM or slowing down Zen
|
||||
pref("network.proxy.type", 0);
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
# 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/.
|
||||
|
||||
pref("media.videocontrols.picture-in-picture.video-toggle.enabled", true);
|
||||
// TODO: Enable once we have a proper settings page
|
||||
# TODO: Enable once we have a proper settings page
|
||||
pref("media.videocontrols.picture-in-picture.enable-when-switching-tabs.enabled", false);
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
|
||||
pref("datareporting.healthreport.uploadEnabled", false, locked);
|
||||
|
@ -22,23 +25,23 @@ pref("app.shield.optoutstudies.enabled", false, locked);
|
|||
pref("app.normandy.enabled", false);
|
||||
pref("app.normandy.api_url", "", locked);
|
||||
|
||||
// Crash reports
|
||||
# Crash reports
|
||||
pref("breakpad.reportURL", "");
|
||||
pref("browser.tabs.crashReporting.sendReport", false);
|
||||
pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
|
||||
|
||||
// Other privacy
|
||||
# Other privacy
|
||||
pref("extensions.getAddons.cache.enabled", false);
|
||||
|
||||
// Disable cache for private browsing
|
||||
# Disable cache for private browsing
|
||||
pref("browser.privatebrowsing.forceMediaMemoryCache", true);
|
||||
|
||||
// Tracking protection
|
||||
# Tracking protection
|
||||
pref("browser.helperApps.deleteTempFileOnExit", true);
|
||||
pref("browser.uitour.enabled", false);
|
||||
|
||||
pref("privacy.globalprivacycontrol.enabled", true);
|
||||
|
||||
// Contextual identity
|
||||
# Contextual identity
|
||||
pref('privacy.userContext.enabled', true);
|
||||
pref('privacy.userContext.ui.enabled', true);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# 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/.
|
||||
|
||||
pref("apz.overscroll.enabled", true);
|
||||
pref("general.smoothScroll", true);
|
||||
pref("general.smoothScroll.msdPhysics.enabled", true);
|
||||
pref("general.smoothScroll.currentVelocityWeighting", "0.15");
|
||||
pref("general.smoothScroll.stopDecelerationWeighting", "0.6");
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
pref('browser.urlbar.unitConversion.enabled', true);
|
||||
pref('browser.urlbar.trending.featureGate', false);
|
||||
|
@ -9,10 +12,10 @@ pref('browser.urlbar.suggest.calculator', true);
|
|||
pref("browser.urlbar.trimHttps", true);
|
||||
pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
|
||||
|
||||
// Keep in sync with browser/components/topsites/constants.mjs
|
||||
# Keep in sync with browser/components/topsites/constants.mjs
|
||||
pref("browser.urlbar.maxRichResults", 7);
|
||||
|
||||
// Enable private suggestions
|
||||
# Enable private suggestions
|
||||
pref('browser.search.suggest.enabled', false);
|
||||
pref('browser.search.suggest.enabled.private', false);
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
# 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/.
|
||||
|
||||
// Mica
|
||||
# Mica
|
||||
pref("widget.windows.mica", true);
|
||||
pref("widget.windows.mica.popups", true);
|
||||
pref("widget.windows.mica.toplevel-backdrop", 2);
|
||||
|
||||
pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", false);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// 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/.
|
||||
# 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/.
|
||||
|
||||
#ifdef XP_UNIX
|
||||
#ifndef XP_MACOSX
|
||||
|
@ -8,22 +8,19 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
// Dont download the multilingual dictionary
|
||||
# Dont download the multilingual dictionary
|
||||
pref("intl.multilingual.downloadEnabled", false);
|
||||
|
||||
// Theme
|
||||
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
|
||||
|
||||
#ifdef XP_WIN
|
||||
#include windows.inc
|
||||
#include windows.inc
|
||||
#endif
|
||||
|
||||
#ifdef UNIX_BUT_NOT_MAC
|
||||
#include linux.inc
|
||||
#include linux.inc
|
||||
#endif
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
#include macos.inc
|
||||
#include macos.inc
|
||||
#endif
|
||||
|
||||
#include urlbar.inc
|
||||
|
@ -37,7 +34,7 @@ pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
|
|||
#include features.inc
|
||||
|
||||
#ifndef XP_MACOSX
|
||||
#include smoothscroll.inc
|
||||
#include smoothscroll.inc
|
||||
#endif
|
||||
|
||||
#include performance.inc
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js
|
||||
index f6e1391baf12abb91c85a95107bb3923118746c0..76c7b75a4e29056110f1631a50047c4ddd8b1f4a 100644
|
||||
index f6e1391baf12abb91c85a95107bb3923118746c0..cac04aa288e8a305d0c8b28e0c919abce87658e5 100644
|
||||
--- a/browser/base/content/aboutDialog.js
|
||||
+++ b/browser/base/content/aboutDialog.js
|
||||
@@ -52,7 +52,7 @@ function init() {
|
||||
|
@ -20,3 +20,18 @@ index f6e1391baf12abb91c85a95107bb3923118746c0..76c7b75a4e29056110f1631a50047c4d
|
|||
versionIdKey += "-nightly";
|
||||
let buildID = Services.appinfo.appBuildID;
|
||||
let year = buildID.slice(0, 4);
|
||||
@@ -125,14 +125,6 @@ function init() {
|
||||
window.close();
|
||||
});
|
||||
if (AppConstants.MOZ_UPDATER) {
|
||||
- document
|
||||
- .getElementById("aboutDialogHelpLink")
|
||||
- .addEventListener("click", () => {
|
||||
- openHelpLink("firefox-help");
|
||||
- });
|
||||
- document
|
||||
- .getElementById("submit-feedback")
|
||||
- .addEventListener("click", openFeedbackPage);
|
||||
document
|
||||
.getElementById("checkForUpdatesButton")
|
||||
.addEventListener("command", () => {
|
||||
|
|
|
@ -1,16 +1,25 @@
|
|||
diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml
|
||||
index c64980810570fcea84e33fdc2d66ac42a79f4e46..b7198e810a7510fa82cc6801cfd01c88a08d42c1 100644
|
||||
index c64980810570fcea84e33fdc2d66ac42a79f4e46..aa629ebb38a9aa74048fe3fc759f716fad57d6f3 100644
|
||||
--- a/browser/base/content/aboutDialog.xhtml
|
||||
+++ b/browser/base/content/aboutDialog.xhtml
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
<html:link rel="localization" href="branding/brand.ftl"/>
|
||||
<html:link rel="localization" href="browser/aboutDialog.ftl"/>
|
||||
+ <script src="chrome://browser/content/zenThemeModifier.js"></script>
|
||||
</linkset>
|
||||
|
||||
<html:div id="aboutDialogContainer">
|
||||
@@ -125,21 +126,23 @@
|
||||
@@ -102,10 +102,6 @@
|
||||
<label id="version" class="update"/>
|
||||
<label id="releasenotes" is="text-link" hidden="true" data-l10n-id="releaseNotes-link"/>
|
||||
</hbox>
|
||||
- <description class="text-blurb">
|
||||
- <label id="aboutDialogHelpLink" is="text-link" data-l10n-id="aboutdialog-help-user"/>
|
||||
- <label id="submit-feedback" is="text-link" data-l10n-id="aboutdialog-submit-feedback"/>
|
||||
- </description>
|
||||
</vbox>
|
||||
#endif
|
||||
</hbox>
|
||||
@@ -120,26 +116,22 @@
|
||||
<vbox id="experimental" hidden="true">
|
||||
<description class="text-blurb" id="warningDesc" data-l10n-id="warningDesc-version"></description>
|
||||
<description class="text-blurb" id="communityExperimentalDesc" data-l10n-id="community-exp">
|
||||
- <label is="text-link" href="https://www.mozilla.org/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-name="community-exp-mozillaLink"/>
|
||||
+ <label is="text-link" href="https://zen-browser.app/about" data-l10n-name="community-exp-mozillaLink"/>
|
||||
<label is="text-link" useoriginprincipal="true" href="about:credits" data-l10n-name="community-exp-creditsLink"/>
|
||||
</description>
|
||||
</vbox>
|
||||
<description class="text-blurb" id="communityDesc" data-l10n-id="community-2">
|
||||
|
@ -18,12 +27,10 @@ index c64980810570fcea84e33fdc2d66ac42a79f4e46..b7198e810a7510fa82cc6801cfd01c88
|
|||
+ <label is="text-link" href="https://github.com/zen-browser/desktop" data-l10n-name="community-mozillaLink"/>
|
||||
<label is="text-link" useoriginprincipal="true" href="about:credits" data-l10n-name="community-creditsLink"/>
|
||||
</description>
|
||||
+#if 0
|
||||
<description class="text-blurb" id="contributeDesc" data-l10n-id="helpus">
|
||||
<label is="text-link" href="https://foundation.mozilla.org/?form=firefox-about" data-l10n-name="helpus-donateLink"/>
|
||||
<label is="text-link" href="https://www.mozilla.org/contribute/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-name="helpus-getInvolvedLink"/>
|
||||
</description>
|
||||
+#endif
|
||||
- <description class="text-blurb" id="contributeDesc" data-l10n-id="helpus">
|
||||
- <label is="text-link" href="https://foundation.mozilla.org/?form=firefox-about" data-l10n-name="helpus-donateLink"/>
|
||||
- <label is="text-link" href="https://www.mozilla.org/contribute/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-name="helpus-getInvolvedLink"/>
|
||||
- </description>
|
||||
</vbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
diff --git a/browser/base/content/aboutRestartRequired.xhtml b/browser/base/content/aboutRestartRequired.xhtml
|
||||
index c1f42b4ddd3b154a8643fc5265c556904805bdff..9722e7de76b02077addfeda90a9acd8b921a9cd6 100644
|
||||
--- a/browser/base/content/aboutRestartRequired.xhtml
|
||||
+++ b/browser/base/content/aboutRestartRequired.xhtml
|
||||
@@ -29,6 +29,7 @@
|
||||
/>
|
||||
<link rel="localization" href="branding/brand.ftl" />
|
||||
<link rel="localization" href="browser/aboutRestartRequired.ftl" />
|
||||
+ <script src="chrome://browser/content/zenThemeModifier.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- PAGE CONTAINER (for styling purposes only) -->
|
|
@ -1,8 +1,35 @@
|
|||
diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js
|
||||
index 992d07daaef1abc4554a43aa654888f66963c575..73e620b70b7ed14e9d140e875c2cd5f5ac31456b 100644
|
||||
index f4d5125d9a1c8f0aef24536ca7d2ef3f133d8a99..cacd7f465e67226de4a366354779c6cb0cbd0b4c 100644
|
||||
--- a/browser/base/content/browser-addons.js
|
||||
+++ b/browser/base/content/browser-addons.js
|
||||
@@ -2105,18 +2105,20 @@ var gUnifiedExtensions = {
|
||||
@@ -1057,7 +1057,7 @@ var gXPInstallObserver = {
|
||||
persistent: true,
|
||||
hideClose: true,
|
||||
popupOptions: {
|
||||
- position: "bottomright topright",
|
||||
+ position: gZenUIManager.panelUIPosition,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1266,7 +1266,7 @@ var gXPInstallObserver = {
|
||||
hideClose: true,
|
||||
timeout: Date.now() + 30000,
|
||||
popupOptions: {
|
||||
- position: "bottomright topright",
|
||||
+ position: gZenUIManager.panelUIPosition,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2571,7 +2571,7 @@ var gUnifiedExtensions = {
|
||||
this.recordButtonTelemetry(reason || "extensions_panel_showing");
|
||||
this.ensureButtonShownBeforeAttachingPanel(panel);
|
||||
PanelMultiView.openPopup(panel, this._button, {
|
||||
- position: "bottomright topright",
|
||||
+ position: gZenUIManager.panelUIPosition,
|
||||
triggerEvent: aEvent,
|
||||
});
|
||||
}
|
||||
@@ -2758,18 +2758,20 @@ var gUnifiedExtensions = {
|
||||
this._maybeMoveWidgetNodeBack(widgetId);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
|
||||
index 7d7e8697f02f90d4f336c9ab0a73a89848e0c21c..64e950106dd05b443ce72107613ac9cc405d56ea 100644
|
||||
index afa7f8e7dd74173bf2c696bd96f7e86e8b0126bc..4847c24923f673e91eb7fb65ea6b037f38062405 100644
|
||||
--- a/browser/base/content/browser-box.inc.xhtml
|
||||
+++ b/browser/base/content/browser-box.inc.xhtml
|
||||
@@ -23,7 +23,15 @@
|
||||
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
|
||||
@@ -25,7 +25,15 @@
|
||||
</stack>
|
||||
</vbox>
|
||||
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||
+<vbox flex="1" id="zen-appcontent-wrapper">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/base/content/browser-commands.js b/browser/base/content/browser-commands.js
|
||||
index 352de44dda36e3f6672eb353f42978ede0cd2681..0fde717eaf755526ec65b676c43bd34c6a675934 100644
|
||||
index b0b2383453ef771af3eb9260618f1e2e3022eb4e..d631cc8db95b4285e892ac8fcb5e72b7da489850 100644
|
||||
--- a/browser/base/content/browser-commands.js
|
||||
+++ b/browser/base/content/browser-commands.js
|
||||
@@ -318,6 +318,10 @@ var BrowserCommands = {
|
||||
|
@ -13,18 +13,19 @@ index 352de44dda36e3f6672eb353f42978ede0cd2681..0fde717eaf755526ec65b676c43bd34c
|
|||
// A notification intended to be useful for modular peformance tracking
|
||||
// starting as close as is reasonably possible to the time when the user
|
||||
// expressed the intent to open a new tab. Since there are a lot of
|
||||
@@ -400,6 +404,10 @@ var BrowserCommands = {
|
||||
@@ -402,6 +406,11 @@ var BrowserCommands = {
|
||||
return;
|
||||
}
|
||||
|
||||
+ if (gBrowser.selectedTab.hasAttribute("zen-empty-tab")) {
|
||||
+ gZenWorkspaces.handleTabCloseWindow();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
// Keyboard shortcuts that would close a tab that is pinned select the first
|
||||
// unpinned tab instead.
|
||||
if (
|
||||
@@ -407,8 +415,8 @@ var BrowserCommands = {
|
||||
@@ -409,8 +418,8 @@ var BrowserCommands = {
|
||||
(event.ctrlKey || event.metaKey || event.altKey) &&
|
||||
gBrowser.selectedTab.pinned
|
||||
) {
|
||||
|
|
|
@ -1,21 +1,20 @@
|
|||
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
|
||||
index 3d5173315812589c0b79beec5f0419fc37cb8868..c4216db9e414fbbaead6ecd89b40366b0d8a50c1 100644
|
||||
index bcbfab4a3781ff3c7349115751b3830976eec4bf..b1b774e0d335ed3c5ca565a45cd624c7ea2718af 100644
|
||||
--- a/browser/base/content/browser-init.js
|
||||
+++ b/browser/base/content/browser-init.js
|
||||
@@ -175,6 +175,8 @@ var gBrowserInit = {
|
||||
@@ -186,6 +186,7 @@ var gBrowserInit = {
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
+ Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window);
|
||||
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
|
||||
gBrowser.addEventListener("DOMUpdateBlockedPopups", e =>
|
||||
PopupBlockerObserver.handleEvent(e)
|
||||
);
|
||||
@@ -310,6 +312,7 @@ var gBrowserInit = {
|
||||
TelemetryTimestamps.add("delayedStartupStarted");
|
||||
@@ -344,6 +345,7 @@ var gBrowserInit = {
|
||||
|
||||
this._cancelDelayedStartup();
|
||||
+ gZenWorkspaces.afterLoadInit();
|
||||
this._handleURIToLoad();
|
||||
|
||||
gBrowser.addEventListener(
|
||||
"PermissionStateChange",
|
||||
+ gZenWorkspaces.selectStartPage();
|
||||
Services.obs.addObserver(gIdentityHandler, "perm-changed");
|
||||
Services.obs.addObserver(gRemoteControl, "devtools-socket");
|
||||
Services.obs.addObserver(gRemoteControl, "marionette-listening");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
||||
index ea79d296e7dd0f8fd812b0677a252af5cf7ad26e..08568d90f888cc262a23ffaa72e985e7c3463b93 100644
|
||||
index 6d664917a5a3bb1cea8a747e42e8bc0065ec999e..dfacd5c40ef14319fe7398452c007f167003a583 100644
|
||||
--- a/browser/base/content/browser.js
|
||||
+++ b/browser/base/content/browser.js
|
||||
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, {
|
||||
|
@ -10,19 +10,18 @@ index ea79d296e7dd0f8fd812b0677a252af5cf7ad26e..08568d90f888cc262a23ffaa72e985e7
|
|||
DevToolsSocketStatus:
|
||||
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
|
||||
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
|
||||
@@ -2338,6 +2339,11 @@ var XULBrowserWindow = {
|
||||
@@ -2340,6 +2341,10 @@ var XULBrowserWindow = {
|
||||
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
|
||||
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
|
||||
|
||||
+ gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser);
|
||||
+ gZenWorkspaces.onLocationChange(gBrowser.selectedBrowser);
|
||||
+ gZenTabUnloader.onLocationChange(gBrowser.selectedBrowser);
|
||||
+ gZenPinnedTabManager.onLocationChange(gBrowser.selectedBrowser);
|
||||
+
|
||||
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
|
||||
|
||||
if (!gMultiProcessBrowser) {
|
||||
@@ -4814,7 +4820,7 @@ function switchToTabHavingURI(
|
||||
@@ -4816,7 +4821,7 @@ function switchToTabHavingURI(
|
||||
ignoreQueryString || replaceQueryString,
|
||||
ignoreFragmentWhenComparing
|
||||
);
|
||||
|
@ -31,7 +30,7 @@ index ea79d296e7dd0f8fd812b0677a252af5cf7ad26e..08568d90f888cc262a23ffaa72e985e7
|
|||
for (let i = 0; i < browsers.length; i++) {
|
||||
let browser = browsers[i];
|
||||
let browserCompare = cleanURL(
|
||||
@@ -4857,7 +4863,7 @@ function switchToTabHavingURI(
|
||||
@@ -4859,7 +4864,7 @@ function switchToTabHavingURI(
|
||||
}
|
||||
|
||||
if (!doAdopt) {
|
||||
|
@ -40,3 +39,13 @@ index ea79d296e7dd0f8fd812b0677a252af5cf7ad26e..08568d90f888cc262a23ffaa72e985e7
|
|||
}
|
||||
|
||||
return true;
|
||||
@@ -5717,6 +5722,9 @@ var ConfirmationHint = {
|
||||
MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl");
|
||||
MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl");
|
||||
document.l10n.setAttributes(this._message, messageId, options.l10nArgs);
|
||||
+ if (window.gZenUIManager?.showToast) {
|
||||
+ return window.gZenUIManager.showToast(messageId, options);
|
||||
+ }
|
||||
if (options.descriptionId) {
|
||||
document.l10n.setAttributes(this._description, options.descriptionId);
|
||||
this._description.hidden = false;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
|
||||
index 51a25aaa5558e6e17246d54a7ed95d5ddf3ecdab..08809c25c01d159a9903f1921936b178d51f9875 100644
|
||||
index 8f8c5536cb6e54300897180ca3f950974c60e930..78076e29faf749b83d6c8e099af6767621f34d58 100644
|
||||
--- a/browser/base/content/browser.xhtml
|
||||
+++ b/browser/base/content/browser.xhtml
|
||||
@@ -26,6 +26,7 @@
|
||||
|
@ -10,23 +10,22 @@ index 51a25aaa5558e6e17246d54a7ed95d5ddf3ecdab..08809c25c01d159a9903f1921936b178
|
|||
persist="screenX screenY width height sizemode"
|
||||
data-l10n-sync="true">
|
||||
<head>
|
||||
@@ -104,8 +105,11 @@
|
||||
@@ -105,8 +106,10 @@
|
||||
|
||||
<title data-l10n-id="browser-main-window-default-title"></title>
|
||||
|
||||
+#include zen-preloaded.inc.xhtml
|
||||
+
|
||||
<script src="chrome://browser/content/global-scripts.js"></script>
|
||||
<script src="chrome://browser/content/browser-main.js"></script>
|
||||
+#include zen-assets.inc.xhtml
|
||||
</head>
|
||||
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
# All sets except for popupsets (commands, keys, and stringbundles)
|
||||
@@ -127,9 +131,11 @@
|
||||
@@ -128,9 +131,11 @@
|
||||
</vbox>
|
||||
</html:template>
|
||||
|
||||
+<hbox id="zen-main-app-wrapper" flex="1" persist="zen-compact-mode">
|
||||
+<hbox id="zen-main-app-wrapper" flex="1" persist="zen-compact-mode" class="browser-toolbox-background">
|
||||
#include navigator-toolbox.inc.xhtml
|
||||
|
||||
#include browser-box.inc.xhtml
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..cc61d5a845b5ce22a61f5a1aab8b280b2bcdf101 100644
|
||||
index ad1515eb111bc2532b2f17ea28fc04463030d30d..899f4baf2cd3472abd5591f3c9987f0c02b9313f 100644
|
||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
@@ -2,7 +2,7 @@
|
||||
|
@ -29,9 +29,9 @@ index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..cc61d5a845b5ce22a61f5a1aab8b280b
|
|||
+<html:div id="zen-essentials" skipintoolbarset="true"></html:div>
|
||||
+<html:div id="zen-tabs-wrapper">
|
||||
<hbox class="tab-drop-indicator" hidden="true"/>
|
||||
<html:span id="tab-drag-empty-feedback" role="presentation"/>
|
||||
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
|
||||
@@ -76,6 +78,7 @@
|
||||
# significantly, there is an optimization in
|
||||
@@ -75,6 +77,7 @@
|
||||
tooltip="dynamic-shortcut-tooltip"
|
||||
data-l10n-id="tabs-toolbar-new-tab"/>
|
||||
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
||||
|
@ -39,7 +39,7 @@ index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..cc61d5a845b5ce22a61f5a1aab8b280b
|
|||
</tabs>
|
||||
|
||||
<toolbarbutton id="new-tab-button"
|
||||
@@ -101,9 +104,10 @@
|
||||
@@ -100,9 +103,10 @@
|
||||
#include private-browsing-indicator.inc.xhtml
|
||||
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/base/content/navigator-toolbox.js b/browser/base/content/navigator-toolbox.js
|
||||
index 64ded8fb2c08f1dbfec8fe08ab427a24b53f1169..9e1e888554279b6e1df3bc1cb907afd2ccb330ca 100644
|
||||
index 31d0ee325847834e7c58c1079225adf43d738bcd..4d2c69d4dd7e313bdb085530b3289dc9d93530a5 100644
|
||||
--- a/browser/base/content/navigator-toolbox.js
|
||||
+++ b/browser/base/content/navigator-toolbox.js
|
||||
@@ -8,7 +8,7 @@
|
||||
|
@ -17,8 +17,8 @@ index 64ded8fb2c08f1dbfec8fe08ab427a24b53f1169..9e1e888554279b6e1df3bc1cb907afd2
|
|||
#reader-mode-button,
|
||||
+ #zen-tabs-wrapper,
|
||||
#picture-in-picture-button,
|
||||
#shopping-sidebar-button,
|
||||
#urlbar-zoom-button,
|
||||
#star-button-box,
|
||||
@@ -208,6 +209,7 @@ document.addEventListener(
|
||||
case "vertical-tabs-newtab-button":
|
||||
case "tabs-newtab-button":
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
# 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/.
|
||||
|
||||
#include zen-locales.inc.xhtml
|
||||
|
||||
# Styles used all over the browser
|
||||
|
@ -28,20 +32,28 @@
|
|||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-download-box-animation.css" />
|
||||
</linkset>
|
||||
|
||||
# Startup "preloaded" scripts that requre globals such as gBrowser and gURLBar
|
||||
# JS files which are needed by browser.xhtml but no other top level windows to
|
||||
# support MacOS specific features should be loaded directly from browser-main.js
|
||||
# rather than this file.
|
||||
#
|
||||
# If you update this list, you may need to add a mapping within the following
|
||||
# file so that ESLint works correctly:
|
||||
# tools/lint/eslint/eslint-plugin-mozilla/lib/environments/browser-window.js
|
||||
<script type="text/javascript" src="chrome://browser/content/ZenPreloadedScripts.js"></script>
|
||||
|
||||
# Scripts used all over the browser
|
||||
<script>
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenFolders.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesCommon.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesImporter.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenCompactMode.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenTabUnloader.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenPinnedTabManager.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenGradientGenerator.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenViewSplitter.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenGlanceManager.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenMediaController.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenDownloadAnimation.mjs", this);
|
||||
</script>
|
||||
<script type="text/javascript" src="chrome://browser/content/ZenUIManager.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenFolders.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenMods.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenCompactMode.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenPinnedTabManager.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenGradientGenerator.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenGlanceManager.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenMediaController.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaceCreation.mjs"></script>
|
||||
|
|
|
@ -1,14 +1,19 @@
|
|||
|
||||
# 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/.
|
||||
|
||||
content/browser/zenThemeModifier.js (../../zen/common/zenThemeModifier.js)
|
||||
content/browser/ZenStartup.mjs (../../zen/common/ZenStartup.mjs)
|
||||
content/browser/ZenPreloadedScripts.js (../../zen/common/ZenPreloadedScripts.js)
|
||||
content/browser/zen-sets.js (../../zen/common/zen-sets.js)
|
||||
content/browser/ZenUIManager.mjs (../../zen/common/ZenUIManager.mjs)
|
||||
content/browser/zen-components/ZenActorsManager.mjs (../../zen/common/ZenActorsManager.mjs)
|
||||
content/browser/zen-components/ZenEmojies.mjs (../../zen/common/ZenEmojies.mjs)
|
||||
content/browser/ZenCustomizableUI.sys.mjs (../../zen/common/ZenCustomizableUI.sys.mjs)
|
||||
content/browser/zen-components/ZenUIMigration.mjs (../../zen/common/ZenUIMigration.mjs)
|
||||
content/browser/zen-components/ZenCommonUtils.mjs (../../zen/common/ZenCommonUtils.mjs)
|
||||
content/browser/zen-components/ZenSessionStore.mjs (../../zen/common/ZenSessionStore.mjs)
|
||||
content/browser/zen-components/ZenEmojisData.min.mjs (../../zen/common/emojis/ZenEmojisData.min.mjs)
|
||||
content/browser/zen-components/ZenEmojiPicker.mjs (../../zen/common/emojis/ZenEmojiPicker.mjs)
|
||||
|
||||
content/browser/zen-styles/zen-theme.css (../../zen/common/styles/zen-theme.css)
|
||||
content/browser/zen-styles/zen-buttons.css (../../zen/common/styles/zen-buttons.css)
|
||||
|
@ -34,14 +39,12 @@
|
|||
content/browser/zen-components/ZenViewSplitter.mjs (../../zen/split-view/ZenViewSplitter.mjs)
|
||||
content/browser/zen-styles/zen-decks.css (../../zen/split-view/zen-decks.css)
|
||||
|
||||
content/browser/zen-components/ZenThemesCommon.mjs (../../zen/mods/ZenThemesCommon.mjs)
|
||||
content/browser/zen-components/ZenThemesImporter.mjs (../../zen/mods/ZenThemesImporter.mjs)
|
||||
content/browser/zen-components/actors/ZenThemeMarketplaceParent.sys.mjs (../../zen/mods/actors/ZenThemeMarketplaceParent.sys.mjs)
|
||||
content/browser/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs (../../zen/mods/actors/ZenThemeMarketplaceChild.sys.mjs)
|
||||
content/browser/zen-components/ZenMods.mjs (../../zen/mods/ZenMods.mjs)
|
||||
|
||||
content/browser/zen-components/ZenWorkspaceIcons.mjs (../../zen/workspaces/ZenWorkspaceIcons.mjs)
|
||||
content/browser/zen-components/ZenWorkspace.mjs (../../zen/workspaces/ZenWorkspace.mjs)
|
||||
content/browser/zen-components/ZenWorkspaces.mjs (../../zen/workspaces/ZenWorkspaces.mjs)
|
||||
content/browser/zen-components/ZenWorkspaceCreation.mjs (../../zen/workspaces/ZenWorkspaceCreation.mjs)
|
||||
content/browser/zen-components/ZenWorkspacesStorage.mjs (../../zen/workspaces/ZenWorkspacesStorage.mjs)
|
||||
content/browser/zen-components/ZenWorkspacesSync.mjs (../../zen/workspaces/ZenWorkspacesSync.mjs)
|
||||
content/browser/zen-components/ZenGradientGenerator.mjs (../../zen/workspaces/ZenGradientGenerator.mjs)
|
||||
|
@ -50,7 +53,6 @@
|
|||
|
||||
content/browser/zen-components/ZenKeyboardShortcuts.mjs (../../zen/kbs/ZenKeyboardShortcuts.mjs)
|
||||
|
||||
content/browser/zen-components/ZenTabUnloader.mjs (../../zen/tabs/ZenTabUnloader.mjs)
|
||||
content/browser/zen-components/ZenPinnedTabsStorage.mjs (../../zen/tabs/ZenPinnedTabsStorage.mjs)
|
||||
content/browser/zen-components/ZenPinnedTabManager.mjs (../../zen/tabs/ZenPinnedTabManager.mjs)
|
||||
* content/browser/zen-styles/zen-tabs.css (../../zen/tabs/zen-tabs.css)
|
||||
|
@ -58,8 +60,6 @@
|
|||
|
||||
content/browser/zen-components/ZenGlanceManager.mjs (../../zen/glance/ZenGlanceManager.mjs)
|
||||
content/browser/zen-styles/zen-glance.css (../../zen/glance/zen-glance.css)
|
||||
content/browser/zen-components/actors/ZenGlanceChild.sys.mjs (../../zen/glance/actors/ZenGlanceChild.sys.mjs)
|
||||
content/browser/zen-components/actors/ZenGlanceParent.sys.mjs (../../zen/glance/actors/ZenGlanceParent.sys.mjs)
|
||||
|
||||
content/browser/zen-components/ZenFolders.mjs (../../zen/folders/ZenFolders.mjs)
|
||||
content/browser/zen-styles/zen-folders.css (../../zen/folders/zen-folders.css)
|
||||
|
@ -75,8 +75,7 @@
|
|||
content/browser/zen-styles/zen-download-box-animation.css (../../zen/downloads/zen-download-box-animation.css)
|
||||
|
||||
|
||||
# Images
|
||||
content/browser/zen-images/gradient.png (../../zen/images/gradient.png)
|
||||
# Images
|
||||
content/browser/zen-images/brand-header.svg (../../zen/images/brand-header.svg)
|
||||
content/browser/zen-images/layouts/collapsed.png (../../zen/images/layouts/collapsed.png)
|
||||
content/browser/zen-images/layouts/multiple-toolbar.png (../../zen/images/layouts/multiple-toolbar.png)
|
||||
|
@ -85,9 +84,9 @@
|
|||
content/browser/zen-images/note-indicator.svg (../../zen/images/note-indicator.svg)
|
||||
|
||||
content/browser/zen-images/downloads/download.svg (../../zen/images/downloads/download.svg)
|
||||
content/browser/zen-images/downloads/archive.svg (../../zen/images/downloads/archive.svg)
|
||||
content/browser/zen-images/downloads/archive.svg (../../zen/images/downloads/archive.svg)
|
||||
|
||||
# Fonts
|
||||
# Fonts
|
||||
content/browser/zen-fonts/JunicodeVF-Italic.woff2 (../../zen/fonts/JunicodeVF-Italic.woff2)
|
||||
content/browser/zen-fonts/JunicodeVF-Roman.woff2 (../../zen/fonts/JunicodeVF-Roman.woff2)
|
||||
|
||||
|
@ -96,13 +95,13 @@
|
|||
content/browser/zen-vendor/motion.min.mjs (../../zen/vendor/motion.min.mjs)
|
||||
|
||||
# FavIcons for startup
|
||||
content/browser/zen-images/favicons/calendar.ico (../../zen/images/favicons/calendar.ico)
|
||||
content/browser/zen-images/favicons/discord.ico (../../zen/images/favicons/discord.ico)
|
||||
content/browser/zen-images/favicons/figma.ico (../../zen/images/favicons/figma.ico)
|
||||
content/browser/zen-images/favicons/github.ico (../../zen/images/favicons/github.ico)
|
||||
content/browser/zen-images/favicons/notion.ico (../../zen/images/favicons/notion.ico)
|
||||
content/browser/zen-images/favicons/obsidian.ico (../../zen/images/favicons/obsidian.ico)
|
||||
content/browser/zen-images/favicons/slack.ico (../../zen/images/favicons/slack.ico)
|
||||
content/browser/zen-images/favicons/reddit.ico (../../zen/images/favicons/reddit.ico)
|
||||
content/browser/zen-images/favicons/x.ico (../../zen/images/favicons/x.ico)
|
||||
content/browser/zen-images/favicons/trello.ico (../../zen/images/favicons/trello.ico)
|
||||
content/browser/zen-images/favicons/calendar.ico (../../zen/images/favicons/calendar.ico)
|
||||
content/browser/zen-images/favicons/discord.ico (../../zen/images/favicons/discord.ico)
|
||||
content/browser/zen-images/favicons/figma.ico (../../zen/images/favicons/figma.ico)
|
||||
content/browser/zen-images/favicons/github.ico (../../zen/images/favicons/github.ico)
|
||||
content/browser/zen-images/favicons/notion.ico (../../zen/images/favicons/notion.ico)
|
||||
content/browser/zen-images/favicons/obsidian.ico (../../zen/images/favicons/obsidian.ico)
|
||||
content/browser/zen-images/favicons/slack.ico (../../zen/images/favicons/slack.ico)
|
||||
content/browser/zen-images/favicons/reddit.ico (../../zen/images/favicons/reddit.ico)
|
||||
content/browser/zen-images/favicons/x.ico (../../zen/images/favicons/x.ico)
|
||||
content/browser/zen-images/favicons/trello.ico (../../zen/images/favicons/trello.ico)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
# 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/.
|
||||
|
||||
<commandset id="zenCommandSet">
|
||||
<command id="cmd_zenCompactModeToggle" />
|
||||
<command id="cmd_zenCompactModeShowSidebar" />
|
||||
|
@ -33,8 +37,14 @@
|
|||
<command id="cmd_zenToggleTabsOnRight" />
|
||||
|
||||
<command id="cmd_zenReplacePinnedUrlWithCurrent" />
|
||||
<command id="cmd_zenAddToEssentials" />
|
||||
<command id="cmd_zenRemoveFromEssentials" />
|
||||
<command id="cmd_contextZenAddToEssentials" />
|
||||
<command id="cmd_contextZenRemoveFromEssentials" />
|
||||
|
||||
<command id="cmd_zenCtxDeleteWorkspace" />
|
||||
<command id="cmd_zenChangeWorkspaceName" />
|
||||
<command id="cmd_zenChangeWorkspaceIcon" />
|
||||
<command id="cmd_zenReorderWorkspaces" />
|
||||
<command id="cmd_zenOpenWorkspaceCreation" />
|
||||
|
||||
<command id="cmd_zenPinnedTabReset" />
|
||||
<command id="cmd_zenPinnedTabResetNoTab" />
|
||||
|
@ -43,10 +53,6 @@
|
|||
|
||||
<command id="cmd_zenCopyCurrentURL" />
|
||||
<command id="cmd_zenCopyCurrentURLMarkdown" />
|
||||
|
||||
<command id="cmd_zenUnloadTab" />
|
||||
<command id="cmd_zenPreventUnloadTab" />
|
||||
<command id="cmd_zenIgnoreUnloadTab" />
|
||||
</commandset>
|
||||
|
||||
<keyset id="zenKeyset"></keyset>
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 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/.
|
||||
|
||||
<link rel="localization" href="browser/zen-workspaces.ftl"/>
|
||||
<link rel="localization" href="browser/zen-split-view.ftl"/>
|
||||
|
|
11
src/browser/base/content/zen-panels/emojis-picker.inc
Normal file
11
src/browser/base/content/zen-panels/emojis-picker.inc
Normal file
|
@ -0,0 +1,11 @@
|
|||
# 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/.
|
||||
|
||||
<panel type="arrow" orient="vertical" id="PanelUI-zen-emojis-picker" position="bottomright topright" side="bottom">
|
||||
<hbox id="PanelUI-zen-emojis-picker-header">
|
||||
<html:input type="search" id="PanelUI-zen-emojis-picker-search" placeholder="Search emojis" />
|
||||
<toolbarbutton id="PanelUI-zen-emojis-picker-none" class="toolbarbutton-1" />
|
||||
</hbox>
|
||||
<hbox id="PanelUI-zen-emojis-picker-list" />
|
||||
</panel>
|
124
src/browser/base/content/zen-panels/gradient-generator.inc
Normal file
124
src/browser/base/content/zen-panels/gradient-generator.inc
Normal file
|
@ -0,0 +1,124 @@
|
|||
# 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/.
|
||||
|
||||
<panel flip="side" type="arrow" popupalign="center" orient="vertical" id="PanelUI-zen-gradient-generator" position="bottomright topright" mainview="true" side="left">
|
||||
<panelmultiview id="PanelUI-zen-gradient-generator-multiview" mainViewId="PanelUI-zen-gradient-generator-view">
|
||||
<panelview id="PanelUI-zen-gradient-generator-view" class="PanelUI-subView zen-theme-picker" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<hbox class="zen-theme-picker-gradient">
|
||||
<hbox id="PanelUI-zen-gradient-generator-scheme">
|
||||
<button id="PanelUI-zen-gradient-generator-scheme-auto" class="subviewbutton"/>
|
||||
<button id="PanelUI-zen-gradient-generator-scheme-light" class="subviewbutton"/>
|
||||
<button id="PanelUI-zen-gradient-generator-scheme-dark" class="subviewbutton"/>
|
||||
</hbox>
|
||||
<hbox id="PanelUI-zen-gradient-generator-color-actions">
|
||||
<button id="PanelUI-zen-gradient-generator-color-add" class="subviewbutton">
|
||||
</button>
|
||||
<button id="PanelUI-zen-gradient-generator-color-remove" class="subviewbutton">
|
||||
</button>
|
||||
</hbox>
|
||||
<label data-l10n-id="zen-panel-ui-gradient-click-to-add" id="PanelUI-zen-gradient-generator-color-click-to-add"></label>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<toolbarbutton id="PanelUI-zen-gradient-generator-color-page-left" class="toolbarbutton-1" disabled="true" />
|
||||
<hbox id="PanelUI-zen-gradient-generator-color-pages">
|
||||
<hbox>
|
||||
<box data-lightness="90" data-algo="float" data-num-dots="1" data-position="240,240" style="background: #f4efdf;"></box>
|
||||
<box data-lightness="80" data-algo="float" data-num-dots="1" data-position="233,157" style="background: #f0b8cd;"></box>
|
||||
<box data-lightness="80" data-algo="float" data-num-dots="1" data-position="236,111" style="background: #e9c3e3;"></box>
|
||||
<box data-lightness="70" data-algo="float" data-num-dots="1" data-position="234,173" style="background: #da7682;"></box>
|
||||
<box data-lightness="70" data-algo="float" data-num-dots="1" data-position="220,187" style="background: #eb8570;"></box>
|
||||
<box data-lightness="60" data-algo="float" data-num-dots="1" data-position="225,237" style="background: #dcce7f;"></box>
|
||||
<box data-lightness="60" data-algo="float" data-num-dots="1" data-position="147,195" style="background: #5becad;"></box>
|
||||
<box data-lightness="50" data-algo="float" data-num-dots="1" data-position="81,84" style="background: #919bb5;"></box>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<box data-lightness="90" data-algo="analogous" data-num-dots="3" data-position="240,240"
|
||||
style="--c1: rgb(245, 237, 214); --c2: rgb(221, 243, 216); --c3: rgb(243, 216, 225);" />
|
||||
<box data-lightness="85" data-algo="analogous" data-num-dots="3" data-position="233,157"
|
||||
style="--c1: rgb(243, 190, 222); --c2: rgb(247, 222, 186); --c3: rgb(223, 195, 238);" />
|
||||
<box data-lightness="80" data-algo="analogous" data-num-dots="3" data-position="236,111"
|
||||
style="--c1: rgb(229, 179, 228); --c2: rgb(236, 172, 178); --c3: rgb(197, 185, 223);" />
|
||||
<box data-lightness="70" data-algo="analogous" data-num-dots="3" data-position="234,173"
|
||||
style="--c1: rgb(235, 122, 159); --c2: rgb(239, 239, 118); --c3: rgb(210, 133, 224);" />
|
||||
<box data-lightness="70" data-algo="analogous" data-num-dots="3" data-position="220,187"
|
||||
style="--c1: rgb(242, 115, 123); --c2: rgb(175, 242, 115); --c3: rgb(230, 125, 232);" />
|
||||
<box data-lightness="60" data-algo="analogous" data-num-dots="3" data-position="225,237"
|
||||
style="--c1: rgb(221, 205, 85); --c2: rgb(97, 212, 94); --c3: rgb(215, 91, 124);" />
|
||||
<box data-lightness="60" data-algo="analogous" data-num-dots="3" data-position="147,195"
|
||||
style="--c1: rgb(75, 231, 210); --c2: rgb(84, 175, 222); --c3: rgb(62, 244, 112);" />
|
||||
<box data-lightness="55" data-algo="analogous" data-num-dots="3" data-position="81,84"
|
||||
style="--c1: rgb(122, 132, 158); --c2: rgb(137, 117, 164); --c3: rgb(116, 162, 164);" />
|
||||
</hbox>
|
||||
<hbox>
|
||||
<box data-lightness="10" data-algo="float" data-num-dots="1" data-position="171,72" style="background:rgb(93, 86, 106);"></box>
|
||||
<box data-lightness="40" data-algo="float" data-num-dots="1" data-position="265,79" style="background: #997096;"></box>
|
||||
<box data-lightness="35" data-algo="float" data-num-dots="1" data-position="301,176" style="background: #956066;"></box>
|
||||
<box data-lightness="30" data-algo="float" data-num-dots="1" data-position="237,210" style="background: #9c6645;"></box>
|
||||
<box data-lightness="30" data-algo="float" data-num-dots="1" data-position="91,228" style="background: #517b6c;"></box>
|
||||
<box data-lightness="25" data-algo="float" data-num-dots="1" data-position="67,159" style="background: #576e75;"></box>
|
||||
<box data-lightness="20" data-algo="float" data-num-dots="1" data-position="314,235" style="background:rgb(131, 109, 95);"></box>
|
||||
<box data-lightness="20" data-algo="float" data-num-dots="1" data-position="118,215" style="background: #447464;"></box>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<box data-lightness="10" data-algo="analogous" data-num-dots="3" data-position="171,72"
|
||||
style="--c1: rgb(23, 17, 34); --c2: rgb(37, 14, 35); --c3: rgb(18, 22, 33);" />
|
||||
<box data-lightness="40" data-algo="analogous" data-num-dots="3" data-position="265,79"
|
||||
style="--c1: rgb(128, 76, 124); --c2: rgb(141, 63, 66); --c3: rgb(97, 88, 116);" />
|
||||
<box data-lightness="35" data-algo="analogous" data-num-dots="3" data-position="301,176"
|
||||
style="--c1: rgb(122, 56, 64); --c2: rgb(126, 121, 52); --c3: rgb(111, 68, 110);" />
|
||||
<box data-lightness="30" data-algo="analogous" data-num-dots="3" data-position="237,210"
|
||||
style="--c1: rgb(131, 65, 22); --c2: rgb(64, 128, 25); --c3: rgb(122, 31, 91);" />
|
||||
<box data-lightness="30" data-algo="analogous" data-num-dots="3" data-position="91,228"
|
||||
style="--c1: rgb(45, 108, 85); --c2: rgb(52, 85, 101); --c3: rgb(52, 118, 35);" />
|
||||
<box data-lightness="25" data-algo="analogous" data-num-dots="3" data-position="67,159"
|
||||
style="--c1: rgb(45, 74, 83); --c2: rgb(46, 50, 81); --c3: rgb(38, 90, 65);" />
|
||||
<box data-lightness="20" data-algo="analogous" data-num-dots="3" data-position="314,235"
|
||||
style="--c1: rgb(64, 47, 38); --c2: rgb(55, 64, 38); --c3: rgb(59, 43, 52);" />
|
||||
<box data-lightness="20" data-algo="analogous" data-num-dots="3" data-position="118,215"
|
||||
style="--c1: rgb(22, 80, 61); --c2: rgb(26, 60, 76); --c3: rgb(27, 87, 15);" />
|
||||
</hbox>
|
||||
</hbox>
|
||||
<toolbarbutton id="PanelUI-zen-gradient-generator-color-page-right" class="toolbarbutton-1" />
|
||||
</hbox>
|
||||
<hbox id="PanelUI-zen-gradient-generator-controls">
|
||||
<hbox id="PanelUI-zen-gradient-colors-wrapper">
|
||||
<vbox flex="1" id="PanelUI-zen-gradient-opacity-wrapper">
|
||||
<box id="PanelUI-zen-gradient-slider-wave">
|
||||
<svg viewBox="0 -7.605 455 70" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMid meet">
|
||||
<path d="M 51.373 27.395 L 419.634 27.395"
|
||||
fill="none"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
style="stroke-width: 8px;"/>
|
||||
<defs>
|
||||
<linearGradient id="PanelUI-zen-gradient-generator-slider-wave-gradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
||||
<stop offset="0%" stop-color="light-dark(rgb(90, 90, 90), rgb(161, 161, 161))"/>
|
||||
<stop offset="0%" stop-color="light-dark(rgb(90, 90, 90), rgba(161, 161, 161))"/>
|
||||
<stop offset="100%" stop-color="light-dark(rgba(77, 77, 77, 0.5), rgba(161, 161, 161, 0.5))"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
</box>
|
||||
<html:input type="range" min="0.3" max="0.9" value="0.4" step="0.001" id="PanelUI-zen-gradient-generator-opacity" />
|
||||
</vbox>
|
||||
<vbox id="PanelUI-zen-gradient-generator-texture-wrapper">
|
||||
</vbox>
|
||||
</hbox>
|
||||
</hbox>
|
||||
<vbox id="PanelUI-zen-gradient-generator-custom-colors">
|
||||
<vbox id="zen-theme-picker-color">
|
||||
<label data-l10n-id="zen-panel-ui-gradient-generator-custom-color"></label>
|
||||
<hbox>
|
||||
<html:input type="text" placeholder="#000000" id="PanelUI-zen-gradient-generator-custom-input" />
|
||||
<toolbarbutton id="PanelUI-zen-gradient-generator-color-custom-add" class="subviewbutton">
|
||||
<image></image>
|
||||
</toolbarbutton>
|
||||
</hbox>
|
||||
</vbox>
|
||||
<vbox id="PanelUI-zen-gradient-generator-custom-list">
|
||||
</vbox>
|
||||
</vbox>
|
||||
</panelview>
|
||||
</panelmultiview>
|
||||
</panel>
|
32
src/browser/base/content/zen-panels/popups.inc
Normal file
32
src/browser/base/content/zen-panels/popups.inc
Normal file
|
@ -0,0 +1,32 @@
|
|||
# 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/.
|
||||
|
||||
<menupopup id="zenCreateNewPopup">
|
||||
<menuitem data-l10n-id="tabs-toolbar-new-tab" command="cmd_newNavigatorTab" image="chrome://browser/skin/zen-icons/plus.svg" />
|
||||
<menuseparator/>
|
||||
<menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation" image="chrome://browser/skin/zen-icons/duplicate-tab.svg" />
|
||||
</menupopup>
|
||||
|
||||
<menupopup id="zenWorkspaceMoreActions">
|
||||
<menuitem id="context_zenEditWorkspace" data-l10n-id="zen-workspaces-panel-change-name" command="cmd_zenChangeWorkspaceName"/>
|
||||
<menuitem id="context_zenEditWorkspaceIcon" data-l10n-id="zen-workspaces-panel-change-icon" command="cmd_zenChangeWorkspaceIcon"/>
|
||||
<menuitem class="zenToolbarThemePicker"
|
||||
id="context_zenChangeWorkspaceTheme"
|
||||
data-l10n-id="zen-workspaces-change-theme"
|
||||
command="cmd_zenOpenZenThemePicker"/>
|
||||
<menu id="context_zenWorkspacesOpenInContainerTab"
|
||||
data-l10n-id="zen-workspaces-panel-context-default-profile"
|
||||
selection-type="single"
|
||||
node-type="link"
|
||||
hide-if-private-browsing="true"
|
||||
hide-if-usercontext-disabled="true">
|
||||
<menupopup />
|
||||
</menu>
|
||||
<menuseparator id="context_zenWorkspacesSeparator"/>
|
||||
<menuseparator/>
|
||||
<menuitem id="context_zenReorderWorkspaces" data-l10n-id="zen-workspaces-panel-context-reorder" command="cmd_zenReorderWorkspaces"/>
|
||||
<menuseparator/>
|
||||
<menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation"/>
|
||||
<menuitem id="context_zenDeleteWorkspace" data-l10n-id="zen-workspaces-panel-context-delete" command="cmd_zenCtxDeleteWorkspace"/>
|
||||
</menupopup>
|
|
@ -1,131 +1,8 @@
|
|||
# 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/.
|
||||
|
||||
<panel flip="side" type="arrow" orient="vertical" id="PanelUI-zen-gradient-generator" position="bottomright topright" mainview="true" side="left">
|
||||
<panelmultiview id="PanelUI-zen-gradient-generator-multiview" mainViewId="PanelUI-zen-gradient-generator-view">
|
||||
<panelview id="PanelUI-zen-gradient-generator-view" class="PanelUI-subView zen-theme-picker" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<hbox>
|
||||
<hbox id="PanelUI-zen-gradient-generator-predefined">
|
||||
<box data-algo="analogous" data-num-dots="3" data-position="219,99" style="background: linear-gradient(135deg, rgb(117, 255, 136), rgb(60, 66, 58));"></box>
|
||||
<box data-algo="analogous" data-num-dots="3" data-position="167,201" style="background: linear-gradient(135deg, #a03fe0, #382b5c);"></box>
|
||||
<box data-algo="analogous" data-num-dots="3" data-position="90,170" style="background: linear-gradient(135deg, #c57aa3, #af824f);"></box>
|
||||
<box data-algo="splitComplementary" data-num-dots="3" data-position="83,103" style="background: linear-gradient(135deg, #1e90ff, #968a4a);"></box>
|
||||
<box data-algo="analogous" data-num-dots="3" data-position="186,186" style="background: linear-gradient(135deg, #a07a48, #ab80e4);"></box>
|
||||
<box data-algo="float" data-num-dots="1" data-position="196,176" style="background: #7bcbda;"></box>
|
||||
<box data-algo="float" data-num-dots="1" data-position="116,167" style="background: #be9ac9;"></box>
|
||||
<box data-algo="float" data-num-dots="1" data-position="122,110" style="background: #cdcea1;"></box>
|
||||
<box data-algo="float" data-num-dots="1" data-position="181,83" style="background: #6ac593;"></box>
|
||||
<box data-algo="complementary" data-num-dots="2" data-position="82,112" style="background: linear-gradient(135deg, #1e90ff, #cfb179);"></box>
|
||||
</hbox>
|
||||
</hbox>
|
||||
<hbox class="zen-theme-picker-gradient">
|
||||
<box id="PanelUI-zen-gradient-generator-rotation-dot"></box>
|
||||
<box id="PanelUI-zen-gradient-generator-rotation-line"></box>
|
||||
<box id="PanelUI-zen-gradient-generator-color-actions">
|
||||
<button id="PanelUI-zen-gradient-generator-color-add" class="subviewbutton">
|
||||
</button>
|
||||
<button id="PanelUI-zen-gradient-generator-color-remove" class="subviewbutton">
|
||||
</button>
|
||||
<html:div class="separator"></html:div>
|
||||
<button id="PanelUI-zen-gradient-generator-color-toggle-algo" class="subviewbutton" data-l10n-id="zen-panel-ui-gradient-generator-algo-floating">
|
||||
</button>
|
||||
</box>
|
||||
<label data-l10n-id="zen-panel-ui-gradient-click-to-add" id="PanelUI-zen-gradient-generator-color-click-to-add"></label>
|
||||
</hbox>
|
||||
<hbox id="PanelUI-zen-gradient-generator-controls">
|
||||
<hbox id="PanelUI-zen-gradient-colors-wrapper">
|
||||
<vbox flex="1">
|
||||
<label data-l10n-id="zen-panel-ui-gradient-generator-opacity-text"></label>
|
||||
<html:input type="range" min="0" max="1" value="0.5" step="0.05" id="PanelUI-zen-gradient-generator-opacity" />
|
||||
</vbox>
|
||||
<vbox id="PanelUI-zen-gradient-generator-texture-wrapper">
|
||||
</vbox>
|
||||
</hbox>
|
||||
</hbox>
|
||||
<vbox id="PanelUI-zen-gradient-generator-custom-colors">
|
||||
<vbox id="zen-theme-picker-color">
|
||||
<label data-l10n-id="zen-panel-ui-gradient-generator-custom-color"></label>
|
||||
<hbox>
|
||||
<html:input type="text" placeholder="#000000" id="PanelUI-zen-gradient-generator-custom-input" />
|
||||
<toolbarbutton id="PanelUI-zen-gradient-generator-color-custom-add" class="subviewbutton">
|
||||
<image></image>
|
||||
</toolbarbutton>
|
||||
</hbox>
|
||||
</vbox>
|
||||
<vbox id="PanelUI-zen-gradient-generator-custom-list">
|
||||
</vbox>
|
||||
</vbox>
|
||||
</panelview>
|
||||
</panelmultiview>
|
||||
</panel>
|
||||
#include zen-panels/gradient-generator.inc
|
||||
#include zen-panels/emojis-picker.inc
|
||||
|
||||
<panel flip="slide" type="arrow" orient="vertical" id="PanelUI-zen-workspaces" position="bottomright topright" mainview="true" side="left">
|
||||
<panelmultiview id="PanelUI-zen-workspaces-multiview" mainViewId="PanelUI-zen-workspaces-view">
|
||||
<panelview id="PanelUI-zen-workspaces-view" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true" closemenu="none">
|
||||
<vbox>
|
||||
<hbox>
|
||||
<h3 data-l10n-id="zen-panel-ui-workspaces-text" id="PanelUI-zen-workspaces-header"></h3>
|
||||
<toolbarbutton id="PanelUI-zen-workspaces-reorder-mode" class="subviewbutton">
|
||||
<image></image>
|
||||
</toolbarbutton>
|
||||
<toolbarbutton id="PanelUI-zen-workspaces-new" class="subviewbutton">
|
||||
<image></image>
|
||||
</toolbarbutton>
|
||||
</hbox>
|
||||
</vbox>
|
||||
<html:div id="PanelUI-zen-workspaces-list">
|
||||
</html:div>
|
||||
</panelview>
|
||||
<panelview id="PanelUI-zen-workspaces-create" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<vbox class="PanelUI-zen-workspaces-user-create">
|
||||
<h1 data-l10n-id="zen-panel-ui-workspaces-create-text"></h1>
|
||||
<hbox class="PanelUI-zen-workspaces-creation-wraper">
|
||||
<hbox class="PanelUI-zen-workspaces-icons-container create"></hbox>
|
||||
<html:input autofocus="true" id="PanelUI-zen-workspaces-create-input" type="text" placeholder="Enter workspace name" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
<html:moz-button-group class="panel-footer" id="PanelUI-zen-workspaces-create-footer">
|
||||
<button disabled="true" default="true" slot="primary" id="PanelUI-zen-workspaces-create-save" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-save">
|
||||
</button>
|
||||
<button id="PanelUI-zen-workspaces-create-cancel" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-cancel">
|
||||
</button>
|
||||
</html:moz-button-group>
|
||||
</panelview>
|
||||
<panelview id="PanelUI-zen-workspaces-edit" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<vbox class="PanelUI-zen-workspaces-user-create">
|
||||
<h1 data-l10n-id="zen-panel-ui-workspaces-edit-text"></h1>
|
||||
<hbox class="PanelUI-zen-workspaces-creation-wraper">
|
||||
<hbox class="PanelUI-zen-workspaces-icons-container edit"></hbox>
|
||||
<html:input autofocus="true" id="PanelUI-zen-workspaces-edit-input" type="text" placeholder="Enter workspace name" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
<html:moz-button-group class="panel-footer" id="PanelUI-zen-workspaces-edit-footer">
|
||||
<button disabled="true" default="true" slot="primary" id="PanelUI-zen-workspaces-edit-save" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-edit-save">
|
||||
</button>
|
||||
<button id="PanelUI-zen-workspaces-edit-cancel" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-edit-cancel">
|
||||
</button>
|
||||
</html:moz-button-group>
|
||||
</panelview>
|
||||
<panelview id="PanelUI-zen-workspaces-icon-picker" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||
<vbox id="PanelUI-zen-workspaces-icon-picker-wrapper">
|
||||
<html:div id="PanelUI-zen-workspaces-icon-search-bar">
|
||||
<html:input autofocus="true" type="text" id="PanelUI-zen-workspaces-icon-search-input"/>
|
||||
</html:div>
|
||||
</vbox>
|
||||
</panelview>
|
||||
</panelmultiview>
|
||||
</panel>
|
||||
|
||||
<menupopup id="zenWorkspaceActionsMenu">
|
||||
<menuitem id="context_zenOpenWorkspace" data-l10n-id="zen-workspaces-panel-context-open"/>
|
||||
<menuseparator/>
|
||||
<menuitem id="context_zenEditWorkspace" data-l10n-id="zen-workspaces-panel-context-edit"/>
|
||||
<menu id="context_zenWorkspacesOpenInContainerTab"
|
||||
data-l10n-id="zen-workspaces-panel-context-open-in-container-tab"
|
||||
selection-type="single"
|
||||
node-type="link"
|
||||
hide-if-private-browsing="true"
|
||||
hide-if-usercontext-disabled="true">
|
||||
<menupopup />
|
||||
</menu>
|
||||
<menuseparator/>
|
||||
<menuitem id="context_zenDeleteWorkspace" data-l10n-id="zen-workspaces-panel-context-delete"/>
|
||||
</menupopup>
|
||||
#include zen-panels/popups.inc
|
||||
|
|
|
@ -1,13 +1,16 @@
|
|||
# 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/.
|
||||
|
||||
# This needs to be here, before all the other scripts, because it's used before
|
||||
# the window is fully loaded.
|
||||
# Make sure they are loaded before the global-scripts.inc file.
|
||||
<script type="text/javascript">
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-sets.js", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenCommonUtils.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspaceIcons.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspace.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspaces.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspacesSync.mjs", this);
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenActorsManager.mjs", this);
|
||||
</script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-sets.js"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenCommonUtils.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaceIcons.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspace.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaces.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspacesSync.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenActorsManager.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenSessionStore.mjs"></script>
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
# 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/.
|
||||
|
||||
#include ../../../zen/media/zen-media-controls.inc.xhtml
|
||||
|
||||
<toolbar brighttext="true"
|
||||
id="zen-sidebar-bottom-buttons"
|
||||
id="zen-sidebar-foot-buttons"
|
||||
fullscreentoolbar="true"
|
||||
class="browser-toolbar customization-target zen-dont-hide-on-fullscreen"
|
||||
class="browser-toolbar customization-target"
|
||||
data-l10n-id="tabs-toolbar"
|
||||
customizable="true"
|
||||
skipintoolbarset="true"
|
||||
|
@ -10,4 +15,5 @@
|
|||
mode="icons">
|
||||
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" command="cmd_zenToggleSidebar" data-l10n-id="sidebar-zen-expand"></toolbarbutton>
|
||||
<zen-workspace-icons id="zen-workspaces-button" overflows="false" removable="false"></zen-workspace-icons>
|
||||
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-create-new-button" context="zenCreateNewPopup" data-l10n-id="sidebar-zen-create-new"></toolbarbutton>
|
||||
</toolbar>
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
# 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/.
|
||||
|
||||
<vbox id="zen-toast-container"></vbox>
|
||||
|
||||
#include ../../../zen/split-view/zen-splitview-overlay.inc.xhtml
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
diff --git a/browser/base/moz.build b/browser/base/moz.build
|
||||
index 636e0841786735a63ddea00e819c0b6f0b8a5d4d..62e4531bd19caf098fd76c69b213fa32d62546a6 100644
|
||||
index 9da444880c4dbf188443d43e8d0a71d98311a2b7..3a654be6f78931e92479b30de6f0a6e50da81908 100644
|
||||
--- a/browser/base/moz.build
|
||||
+++ b/browser/base/moz.build
|
||||
@@ -87,3 +87,5 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] in ("windows", "gtk"):
|
||||
DEFINES["MENUBAR_CAN_AUTOHIDE"] = 1
|
||||
@@ -81,3 +81,5 @@ DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"]
|
||||
DEFINES["APP_LICENSE_BLOCK"] = "%s/content/overrides/app-license.html" % SRCDIR
|
||||
|
||||
JAR_MANIFESTS += ["jar.mn"]
|
||||
+
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
|
||||
index 5911b276fdc9889d3cb61bac3d302ec5239e4a90..a405f8a0204e98fa9de08f1cd7b6761f0fc6198e 100644
|
||||
index e72feb538c0dc182211945a66e51bcea73d3d4a0..b4d9115873b7af414043c53fb817b611b78ec58f 100644
|
||||
--- a/browser/components/BrowserContentHandler.sys.mjs
|
||||
+++ b/browser/components/BrowserContentHandler.sys.mjs
|
||||
@@ -1270,6 +1270,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) {
|
||||
@@ -1281,6 +1281,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) {
|
||||
".avif",
|
||||
".htm",
|
||||
".html",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
|
||||
index a6a7f9165aece774c3f1c15f7e352b11a4bf90f4..a4b6124b85f099c6f12d297fc26f2040370c337c 100644
|
||||
index bde641f7112adde948707c172b9f18d3635d8ef1..3f430451586904e6be086114ec10f719745093be 100644
|
||||
--- a/browser/components/BrowserGlue.sys.mjs
|
||||
+++ b/browser/components/BrowserGlue.sys.mjs
|
||||
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
||||
|
@ -8,13 +8,14 @@ index a6a7f9165aece774c3f1c15f7e352b11a4bf90f4..a4b6124b85f099c6f12d297fc26f2040
|
|||
ChromeUtils.defineESModuleGetters(lazy, {
|
||||
+ gZenUIMigration: "chrome://browser/content/zen-components/ZenUIMigration.mjs",
|
||||
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
|
||||
AboutNewTab: "resource:///modules/AboutNewTab.sys.mjs",
|
||||
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
|
||||
@@ -1886,6 +1887,7 @@ BrowserGlue.prototype = {
|
||||
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
|
||||
@@ -1659,6 +1660,8 @@ BrowserGlue.prototype = {
|
||||
} else if (profileDataVersion < APP_DATA_VERSION) {
|
||||
lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION);
|
||||
}
|
||||
+
|
||||
+ lazy.gZenUIMigration.init(this._isNewProfile);
|
||||
},
|
||||
|
||||
lazy.ProcessHangMonitor.init();
|
||||
|
||||
+ lazy.gZenUIMigration.init(this._isNewProfile, aWindow);
|
||||
// A channel for "remote troubleshooting" code...
|
||||
let channel = new lazy.WebChannel(
|
||||
"remote-troubleshooting",
|
||||
async _showUpgradeDialog() {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
index 91088fab1759b9af908912648d28daa5938a29c9..d420e7a2b1d66ad2bd7699cc580e180ab45a793d 100644
|
||||
index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361efac34729 100644
|
||||
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
|
||||
index ec52437dba30633a374299a46c856e1df05dec0e..48617e32d56c3b3f525557ddeac6297555c48c04 100644
|
||||
index 689205034d9df67ff1fe0ebbf4a3481a5f414391..2fab7474f1038a7a3cd2f4b4798d59696900cc85 100644
|
||||
--- a/browser/components/customizableui/content/panelUI.js
|
||||
+++ b/browser/components/customizableui/content/panelUI.js
|
||||
@@ -515,8 +515,7 @@ const PanelUI = {
|
||||
@@ -516,8 +516,7 @@ const PanelUI = {
|
||||
tempPanel.setAttribute("animate", "false");
|
||||
}
|
||||
tempPanel.setAttribute("context", "");
|
||||
|
@ -12,7 +12,20 @@ index ec52437dba30633a374299a46c856e1df05dec0e..48617e32d56c3b3f525557ddeac62975
|
|||
.appendChild(tempPanel);
|
||||
|
||||
let multiView = document.createXULElement("panelmultiview");
|
||||
@@ -957,7 +956,7 @@ const PanelUI = {
|
||||
@@ -608,10 +607,12 @@ const PanelUI = {
|
||||
if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) {
|
||||
this.navbar.setAttribute("nonemptyoverflow", "true");
|
||||
this.overflowPanel.setAttribute("hasfixeditems", "true");
|
||||
+ window.document.getElementById("zen-sidebar-top-buttons").setAttribute("nonemptyoverflow", "true");
|
||||
} else if (!hasKids && this.navbar.hasAttribute("nonemptyoverflow")) {
|
||||
PanelMultiView.hidePopup(this.overflowPanel);
|
||||
this.overflowPanel.removeAttribute("hasfixeditems");
|
||||
this.navbar.removeAttribute("nonemptyoverflow");
|
||||
+ window.document.getElementById("zen-sidebar-top-buttons").removeAttribute("nonemptyoverflow");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -959,7 +960,7 @@ const PanelUI = {
|
||||
el.removeAttribute("data-lazy-l10n-id");
|
||||
});
|
||||
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
|
||||
index 517ea0079c12941a844a4f9e4ba694c6411887ee..510ab14dfa2178c332c9862d6a01b75bd12dfe3b 100644
|
||||
index a53a12f91817a9e3d1773480928e858bc3182c77..10f6559ffb128906be31de220c93320e9a6d40e7 100644
|
||||
--- a/browser/components/extensions/parent/ext-tabs.js
|
||||
+++ b/browser/components/extensions/parent/ext-tabs.js
|
||||
@@ -482,6 +482,7 @@ this.tabs = class extends ExtensionAPIPersistent {
|
||||
@@ -494,6 +494,7 @@ this.tabs = class extends ExtensionAPIPersistent {
|
||||
}
|
||||
|
||||
let tab = tabManager.getWrapper(event.originalTarget);
|
||||
let tab = tabManager.getWrapper(updatedTab);
|
||||
+ if (!tab) return;
|
||||
|
||||
let changeInfo = {};
|
||||
for (let prop of needed) {
|
||||
@@ -836,6 +837,7 @@ this.tabs = class extends ExtensionAPIPersistent {
|
||||
@@ -848,6 +849,7 @@ this.tabs = class extends ExtensionAPIPersistent {
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
- [New Tab Documentation](https://firefox-source-docs.mozilla.org/browser/components/newtab/docs/index.html)
|
||||
- You also need `meow@9.0.0` (that's the one I tested) because other versions might not work.
|
||||
- To bundle the new tab, execute the following:
|
||||
- To bundle the new tab, execute the following command:
|
||||
|
||||
```
|
||||
./mach npm run bundle --prefix=browser/components/newtab
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
|
||||
index 1f5e163bae58f3f1cac750ca32846cc8a80bd2ca..028b899b7a5da7ba398965861ff044e596c27666 100644
|
||||
index c7c5c28e1ea6d05094ed9fe751c6b50ab9645370..72f1038aa37b0951a1e78331ee317f714e5b6e8b 100644
|
||||
--- a/browser/components/places/PlacesUIUtils.sys.mjs
|
||||
+++ b/browser/components/places/PlacesUIUtils.sys.mjs
|
||||
@@ -59,6 +59,7 @@ class BookmarkState {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
||||
index aa339be9ba94ed776fa25f2d72f9e6b25dc86cd3..4c6c725942b3d6f2a42938d444ac7645526623cc 100644
|
||||
index 2116a8a3b5746b79280f2d73b5e29b01c7a15993..448269adeab747fd2da419509e6923eefbb87d8a 100644
|
||||
--- a/browser/components/preferences/main.js
|
||||
+++ b/browser/components/preferences/main.js
|
||||
@@ -389,7 +389,7 @@ function getBundleForLocales(newLocales) {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
|
||||
index e4746e3408e68273126e6d2baf5afcf80721674b..e478aaf6bfefa6acd9062aeb3e4709ca0d5d779c 100644
|
||||
index 6a575e3148de0c73f7ab7ff9afbd3ff179bce313..b7c2f2818358b7b6b6fc62b298dc67a66ebd9e3b 100644
|
||||
--- a/browser/components/preferences/preferences.js
|
||||
+++ b/browser/components/preferences/preferences.js
|
||||
@@ -118,6 +118,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
|
||||
@@ -117,6 +117,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
|
||||
styleSheets: [
|
||||
"chrome://browser/skin/preferences/dialog.css",
|
||||
"chrome://browser/skin/preferences/preferences.css",
|
||||
|
@ -10,7 +10,7 @@ index e4746e3408e68273126e6d2baf5afcf80721674b..e478aaf6bfefa6acd9062aeb3e4709ca
|
|||
],
|
||||
resizeCallback: async ({ title, frame }) => {
|
||||
// Search within main document and highlight matched keyword.
|
||||
@@ -197,6 +198,10 @@ function init_all() {
|
||||
@@ -196,6 +197,10 @@ function init_all() {
|
||||
register_module("paneSearch", gSearchPane);
|
||||
register_module("panePrivacy", gPrivacyPane);
|
||||
register_module("paneContainers", gContainersPane);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
|
||||
index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2590c1705 100644
|
||||
index b3b128cb5eb8c005c642965a8c8e5e68bf756e77..6e128d45c983b267e349b08097c56380dd04be3d 100644
|
||||
--- a/browser/components/preferences/preferences.xhtml
|
||||
+++ b/browser/components/preferences/preferences.xhtml
|
||||
@@ -44,6 +44,8 @@
|
||||
|
@ -11,7 +11,7 @@ index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2
|
|||
<link rel="localization" href="branding/brand.ftl"/>
|
||||
<link rel="localization" href="browser/browser.ftl"/>
|
||||
<!-- Used by fontbuilder.js -->
|
||||
@@ -105,6 +107,11 @@
|
||||
@@ -104,6 +106,11 @@
|
||||
<hbox flex="1">
|
||||
|
||||
<vbox class="navigation">
|
||||
|
@ -23,7 +23,7 @@ index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2
|
|||
<!-- category list -->
|
||||
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
||||
<richlistitem id="category-general"
|
||||
@@ -117,6 +124,50 @@
|
||||
@@ -116,6 +123,50 @@
|
||||
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
||||
</richlistitem>
|
||||
|
||||
|
@ -74,7 +74,7 @@ index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2
|
|||
<richlistitem id="category-home"
|
||||
class="category"
|
||||
value="paneHome"
|
||||
@@ -228,11 +279,6 @@
|
||||
@@ -227,11 +278,6 @@
|
||||
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
||||
</hbox>
|
||||
</hbox>
|
||||
|
@ -86,7 +86,7 @@ index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2
|
|||
</hbox>
|
||||
</hbox>
|
||||
<vbox id="mainPrefPane">
|
||||
@@ -246,6 +292,10 @@
|
||||
@@ -245,6 +291,10 @@
|
||||
#include sync.inc.xhtml
|
||||
#include experimental.inc.xhtml
|
||||
#include moreFromMozilla.inc.xhtml
|
||||
|
|
|
@ -14,30 +14,37 @@ var gZenMarketplaceManager = {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!window.gZenMods) {
|
||||
window.gZenMods = ZenMultiWindowFeature.currentBrowser.gZenMods;
|
||||
}
|
||||
|
||||
header.appendChild(this._initDisableAll());
|
||||
|
||||
this._initImportExport();
|
||||
|
||||
this.__hasInitializedEvents = true;
|
||||
|
||||
await this._buildThemesList();
|
||||
await this._buildModsList();
|
||||
|
||||
Services.prefs.addObserver(this.updatePref, this);
|
||||
Services.prefs.addObserver(gZenMods.updatePref, this);
|
||||
|
||||
const checkForUpdateClick = (event) => {
|
||||
if (event.target === checkForUpdates) {
|
||||
event.preventDefault();
|
||||
|
||||
this._checkForThemeUpdates(event);
|
||||
}
|
||||
};
|
||||
|
||||
checkForUpdates.addEventListener('click', checkForUpdateClick);
|
||||
|
||||
document.addEventListener('ZenThemeMarketplace:CheckForUpdatesFinished', (event) => {
|
||||
document.addEventListener('ZenModsMarketplace:CheckForUpdatesFinished', (event) => {
|
||||
checkForUpdates.disabled = false;
|
||||
|
||||
const updates = event.detail.updates;
|
||||
const success = document.getElementById('zenThemeMarketplaceUpdatesSuccess');
|
||||
const error = document.getElementById('zenThemeMarketplaceUpdatesFailure');
|
||||
|
||||
if (updates) {
|
||||
success.hidden = false;
|
||||
error.hidden = true;
|
||||
|
@ -48,13 +55,16 @@ var gZenMarketplaceManager = {
|
|||
});
|
||||
|
||||
window.addEventListener('unload', () => {
|
||||
Services.prefs.removeObserver(this.updatePref, this);
|
||||
Services.prefs.removeObserver(gZenMods.updatePref, this);
|
||||
this.__hasInitializedEvents = false;
|
||||
document.removeEventListener('ZenThemeMarketplace:CheckForUpdatesFinished', this);
|
||||
document.removeEventListener('ZenCheckForThemeUpdates', this);
|
||||
|
||||
document.removeEventListener('ZenModsMarketplace:CheckForUpdatesFinished', this);
|
||||
document.removeEventListener('ZenCheckForModUpdates', this);
|
||||
|
||||
checkForUpdates.removeEventListener('click', checkForUpdateClick);
|
||||
this.themesList.innerHTML = '';
|
||||
this._doNotRebuildThemesList = false;
|
||||
|
||||
this.modsList.innerHTML = '';
|
||||
this._doNotRebuildModsList = false;
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -63,36 +73,32 @@ var gZenMarketplaceManager = {
|
|||
const exportButton = document.getElementById('zenThemeMarketplaceExport');
|
||||
|
||||
if (importButton) {
|
||||
importButton.addEventListener('click', async () => {
|
||||
await this._importThemes();
|
||||
});
|
||||
importButton.addEventListener('click', this._importThemes.bind(this));
|
||||
}
|
||||
|
||||
if (exportButton) {
|
||||
exportButton.addEventListener('click', async () => {
|
||||
await this._exportThemes();
|
||||
});
|
||||
exportButton.addEventListener('click', this._exportThemes.bind(this));
|
||||
}
|
||||
},
|
||||
|
||||
_initDisableAll() {
|
||||
const areThemesDisabled = Services.prefs.getBoolPref('zen.themes.disable-all', false);
|
||||
const browser = ZenThemesCommon.currentBrowser;
|
||||
const areModsDisabled = Services.prefs.getBoolPref('zen.themes.disable-all', false);
|
||||
const browser = ZenMultiWindowFeature.currentBrowser;
|
||||
const mozToggle = document.createElement('moz-toggle');
|
||||
|
||||
mozToggle.className =
|
||||
'zenThemeMarketplaceItemPreferenceToggle zenThemeMarketplaceDisableAllToggle';
|
||||
mozToggle.pressed = !areThemesDisabled;
|
||||
mozToggle.pressed = !areModsDisabled;
|
||||
|
||||
browser.document.l10n.setAttributes(
|
||||
mozToggle,
|
||||
`zen-theme-disable-all-${!areThemesDisabled ? 'enabled' : 'disabled'}`
|
||||
`zen-theme-disable-all-${!areModsDisabled ? 'enabled' : 'disabled'}`
|
||||
);
|
||||
|
||||
mozToggle.addEventListener('toggle', async (event) => {
|
||||
const { pressed = false } = event.target || {};
|
||||
|
||||
this.themesList.style.display = pressed ? '' : 'none';
|
||||
this.modsList.style.display = pressed ? '' : 'none';
|
||||
Services.prefs.setBoolPref('zen.themes.disable-all', !pressed);
|
||||
browser.document.l10n.setAttributes(
|
||||
mozToggle,
|
||||
|
@ -100,90 +106,63 @@ var gZenMarketplaceManager = {
|
|||
);
|
||||
});
|
||||
|
||||
if (areThemesDisabled) {
|
||||
this.themesList.style.display = 'none';
|
||||
if (areModsDisabled) {
|
||||
this.modsList.style.display = 'none';
|
||||
}
|
||||
|
||||
return mozToggle;
|
||||
},
|
||||
|
||||
async observe() {
|
||||
await this._buildThemesList();
|
||||
await this._buildModsList();
|
||||
},
|
||||
|
||||
_checkForThemeUpdates(event) {
|
||||
// Send a message to the child to check for theme updates.
|
||||
event.target.disabled = true;
|
||||
// send an event that will be listened by the child process.
|
||||
document.dispatchEvent(new CustomEvent('ZenCheckForThemeUpdates'));
|
||||
document.dispatchEvent(new CustomEvent('ZenCheckForModUpdates'));
|
||||
},
|
||||
|
||||
get updatePref() {
|
||||
return 'zen.themes.updated-value-observer';
|
||||
},
|
||||
|
||||
triggerThemeUpdate() {
|
||||
Services.prefs.setBoolPref(this.updatePref, !Services.prefs.getBoolPref(this.updatePref));
|
||||
},
|
||||
|
||||
get themesList() {
|
||||
if (!this._themesList) {
|
||||
this._themesList = document.getElementById('zenThemeMarketplaceList');
|
||||
get modsList() {
|
||||
if (!this._modsList) {
|
||||
this._modsList = document.getElementById('zenThemeMarketplaceList');
|
||||
}
|
||||
return this._themesList;
|
||||
},
|
||||
|
||||
async removeTheme(themeId) {
|
||||
const themePath = ZenThemesCommon.getThemeFolder(themeId);
|
||||
|
||||
console.info(`[ZenThemeMarketplaceParent:settings]: Removing theme ${themePath}`);
|
||||
|
||||
await IOUtils.remove(themePath, { recursive: true, ignoreAbsent: true });
|
||||
|
||||
const themes = await ZenThemesCommon.getThemes();
|
||||
delete themes[themeId];
|
||||
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, themes);
|
||||
|
||||
this.triggerThemeUpdate();
|
||||
},
|
||||
|
||||
async disableTheme(themeId) {
|
||||
const themes = await ZenThemesCommon.getThemes();
|
||||
const theme = themes[themeId];
|
||||
|
||||
console.log(`[ZenThemeMarketplaceParent:settings]: Disabling theme ${theme.name}`);
|
||||
|
||||
theme.enabled = false;
|
||||
|
||||
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, themes);
|
||||
this._doNotRebuildThemesList = true;
|
||||
this.triggerThemeUpdate();
|
||||
},
|
||||
|
||||
async enableTheme(themeId) {
|
||||
const themes = await ZenThemesCommon.getThemes();
|
||||
const theme = themes[themeId];
|
||||
|
||||
console.log(`[ZenThemeMarketplaceParent:settings]: Enabling theme ${theme.name}`);
|
||||
|
||||
theme.enabled = true;
|
||||
|
||||
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, themes);
|
||||
this._doNotRebuildThemesList = true;
|
||||
this.triggerThemeUpdate();
|
||||
return this._modsList;
|
||||
},
|
||||
|
||||
_triggerBuildUpdateWithoutRebuild() {
|
||||
this._doNotRebuildThemesList = true;
|
||||
this.triggerThemeUpdate();
|
||||
this._doNotRebuildModsList = true;
|
||||
gZenMods.triggerModsUpdate();
|
||||
},
|
||||
|
||||
async removeMod(modId) {
|
||||
await gZenMods.removeMod(modId);
|
||||
|
||||
gZenMods.triggerModsUpdate();
|
||||
},
|
||||
|
||||
async disableMod(modId) {
|
||||
await gZenMods.disableMod(modId);
|
||||
|
||||
this._triggerBuildUpdateWithoutRebuild();
|
||||
},
|
||||
|
||||
async enableMod(modId) {
|
||||
await gZenMods.enableMod(modId);
|
||||
|
||||
this._triggerBuildUpdateWithoutRebuild();
|
||||
},
|
||||
|
||||
async _importThemes() {
|
||||
const errorBox = document.getElementById('zenThemeMarketplaceImportFailure');
|
||||
const successBox = document.getElementById('zenThemeMarketplaceImportSuccess');
|
||||
|
||||
successBox.hidden = true;
|
||||
errorBox.hidden = true;
|
||||
|
||||
const input = document.createElement('input');
|
||||
|
||||
input.type = 'file';
|
||||
input.accept = '.json';
|
||||
input.style.display = 'none';
|
||||
|
@ -191,37 +170,52 @@ var gZenMarketplaceManager = {
|
|||
input.setAttribute('accept', '.json');
|
||||
|
||||
let timeout;
|
||||
|
||||
const filePromise = new Promise((resolve) => {
|
||||
input.addEventListener('change', (event) => {
|
||||
if (timeout) clearTimeout(timeout);
|
||||
if (timeout) {
|
||||
clearTimeout(timeout);
|
||||
}
|
||||
|
||||
const file = event.target.files[0];
|
||||
resolve(file);
|
||||
});
|
||||
|
||||
timeout = setTimeout(() => {
|
||||
console.warn('[ZenThemeMarketplaceParent:settings]: Import timeout reached, aborting.');
|
||||
console.warn('[ZenSettings:ZenMods]: Import timeout reached, aborting.');
|
||||
resolve(null);
|
||||
}, 60000);
|
||||
});
|
||||
|
||||
input.addEventListener('cancel', () => {
|
||||
console.warn('[ZenSettings:ZenMods]: Import cancelled by user.');
|
||||
clearTimeout(timeout);
|
||||
});
|
||||
|
||||
input.click();
|
||||
|
||||
try {
|
||||
const file = await filePromise;
|
||||
|
||||
if (!file) {
|
||||
return;
|
||||
}
|
||||
|
||||
const content = await file.text();
|
||||
|
||||
const themes = JSON.parse(content);
|
||||
for (const theme of Object.values(themes)) {
|
||||
theme.themeId = theme.id;
|
||||
window.ZenInstallTheme(theme);
|
||||
const mods = JSON.parse(content);
|
||||
|
||||
for (const mod of Object.values(mods)) {
|
||||
mod.modId = mod.id;
|
||||
await window.ZenInstallMod(mod);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('[ZenThemeMarketplaceParent:settings]: Error while importing themes:', error);
|
||||
console.error('[ZenSettings:ZenMods]: Error while importing mods:', error);
|
||||
errorBox.hidden = false;
|
||||
} finally {
|
||||
if (input) input.remove();
|
||||
}
|
||||
|
||||
if (input) {
|
||||
input.remove();
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -232,51 +226,54 @@ var gZenMarketplaceManager = {
|
|||
successBox.hidden = true;
|
||||
errorBox.hidden = true;
|
||||
|
||||
let a, url;
|
||||
let temporalAnchor, temporalUrl;
|
||||
try {
|
||||
const themes = await ZenThemesCommon.getThemes();
|
||||
const themesJson = JSON.stringify(themes, null, 2);
|
||||
const blob = new Blob([themesJson], { type: 'application/json' });
|
||||
url = URL.createObjectURL(blob);
|
||||
// Creating a link to download the JSON file
|
||||
a = document.createElement('a');
|
||||
a.href = url;
|
||||
a.download = 'zen-themes-export.json';
|
||||
const mods = await gZenMods.getMods();
|
||||
const modsJson = JSON.stringify(mods, null, 2);
|
||||
const blob = new Blob([modsJson], { type: 'application/json' });
|
||||
|
||||
temporalUrl = URL.createObjectURL(blob);
|
||||
// Creating a link to download the JSON file
|
||||
temporalAnchor = document.createElement('a');
|
||||
temporalAnchor.href = temporalUrl;
|
||||
temporalAnchor.download = 'zen-mods-export.json';
|
||||
|
||||
document.body.appendChild(temporalAnchor);
|
||||
temporalAnchor.click();
|
||||
temporalAnchor.remove();
|
||||
|
||||
document.body.appendChild(a);
|
||||
a.click();
|
||||
a.remove();
|
||||
successBox.hidden = false;
|
||||
} catch (error) {
|
||||
console.error('[ZenThemeMarketplaceParent:settings]: Error while exporting themes:', error);
|
||||
console.error('[ZenSettings:ZenMods]: Error while exporting mods:', error);
|
||||
errorBox.hidden = false;
|
||||
} finally {
|
||||
if (a) {
|
||||
a.remove();
|
||||
}
|
||||
if (url) {
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
}
|
||||
|
||||
if (temporalAnchor) {
|
||||
temporalAnchor.remove();
|
||||
}
|
||||
|
||||
if (temporalUrl) {
|
||||
URL.revokeObjectURL(temporalUrl);
|
||||
}
|
||||
},
|
||||
|
||||
async _buildThemesList() {
|
||||
if (!this.themesList) {
|
||||
async _buildModsList() {
|
||||
if (!this.modsList) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this._doNotRebuildThemesList) {
|
||||
this._doNotRebuildThemesList = false;
|
||||
if (this._doNotRebuildModsList) {
|
||||
this._doNotRebuildModsList = false;
|
||||
return;
|
||||
}
|
||||
|
||||
const themes = await ZenThemesCommon.getThemes();
|
||||
const mods = await gZenMods.getMods();
|
||||
const browser = ZenMultiWindowFeature.currentBrowser;
|
||||
const themeList = document.createElement('div');
|
||||
const modList = document.createElement('div');
|
||||
|
||||
for (const theme of Object.values(themes).sort((a, b) => a.name.localeCompare(b.name))) {
|
||||
const sanitizedName = `theme-${theme.name?.replaceAll(/\s/g, '-')?.replaceAll(/[^A-Za-z_-]+/g, '')}`;
|
||||
const isThemeEnabled = theme.enabled === undefined || theme.enabled;
|
||||
for (const mod of Object.values(mods).sort((a, b) => a.name.localeCompare(b.name))) {
|
||||
const sanitizedName = gZenMods.sanitizeModName(mod.name);
|
||||
const isModEnabled = mod.enabled === undefined || mod.enabled;
|
||||
const fragment = window.MozXULElement.parseXULToFragment(`
|
||||
<vbox class="zenThemeMarketplaceItem">
|
||||
<vbox class="zenThemeMarketplaceItemContent">
|
||||
|
@ -286,14 +283,14 @@ var gZenMarketplaceManager = {
|
|||
<description class="description-deemphasized zenThemeMarketplaceItemDescription"></description>
|
||||
</vbox>
|
||||
<hbox class="zenThemeMarketplaceItemActions">
|
||||
${theme.preferences ? `<button id="zenThemeMarketplaceItemConfigureButton-${sanitizedName}" class="zenThemeMarketplaceItemConfigureButton" hidden="true"></button>` : ''}
|
||||
${theme.homepage ? `<button id="zenThemeMarketplaceItemHomePageLink-${sanitizedName}" class="zenThemeMarketplaceItemHomepageButton" zen-theme-id="${theme.id}"></button>` : ''}
|
||||
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-theme-id="${theme.id}"></button>
|
||||
${mod.preferences ? `<button id="zenThemeMarketplaceItemConfigureButton-${sanitizedName}" class="zenThemeMarketplaceItemConfigureButton" hidden="true"></button>` : ''}
|
||||
${mod.homepage ? `<button id="zenThemeMarketplaceItemHomePageLink-${sanitizedName}" class="zenThemeMarketplaceItemHomepageButton" zen-mod-id="${mod.id}"></button>` : ''}
|
||||
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-mod-id="${mod.id}"></button>
|
||||
</hbox>
|
||||
</vbox>
|
||||
`);
|
||||
|
||||
const themeName = `${theme.name} (v${theme.version || '1.0.0'})`;
|
||||
const modName = `${mod.name} (v${mod.version ?? '1.0.0'})`;
|
||||
|
||||
const base = fragment.querySelector('.zenThemeMarketplaceItem');
|
||||
const baseHeader = fragment.querySelector('#zenThemeMarketplaceItemContentHeader');
|
||||
|
@ -308,7 +305,7 @@ var gZenMarketplaceManager = {
|
|||
|
||||
mainDialogDiv.className = 'zenThemeMarketplaceItemPreferenceDialog';
|
||||
headerDiv.className = 'zenThemeMarketplaceItemPreferenceDialogTopBar';
|
||||
headerTitle.textContent = themeName;
|
||||
headerTitle.textContent = modName;
|
||||
browser.document.l10n.setAttributes(headerTitle, 'zen-theme-marketplace-theme-header-title', {
|
||||
name: sanitizedName,
|
||||
});
|
||||
|
@ -319,10 +316,10 @@ var gZenMarketplaceManager = {
|
|||
contentDiv.className = 'zenThemeMarketplaceItemPreferenceDialogContent';
|
||||
mozToggle.className = 'zenThemeMarketplaceItemPreferenceToggle';
|
||||
|
||||
mozToggle.pressed = isThemeEnabled;
|
||||
mozToggle.pressed = isModEnabled;
|
||||
browser.document.l10n.setAttributes(
|
||||
mozToggle,
|
||||
`zen-theme-marketplace-toggle-${isThemeEnabled ? 'enabled' : 'disabled'}-button`
|
||||
`zen-theme-marketplace-toggle-${isModEnabled ? 'enabled' : 'disabled'}-button`
|
||||
);
|
||||
|
||||
baseHeader.appendChild(mozToggle);
|
||||
|
@ -340,34 +337,34 @@ var gZenMarketplaceManager = {
|
|||
});
|
||||
|
||||
mozToggle.addEventListener('toggle', async (event) => {
|
||||
const themeId = event.target
|
||||
const modId = event.target
|
||||
.closest('.zenThemeMarketplaceItem')
|
||||
.querySelector('.zenThemeMarketplaceItemUninstallButton')
|
||||
.getAttribute('zen-theme-id');
|
||||
.getAttribute('zen-mod-id');
|
||||
event.target.setAttribute('disabled', true);
|
||||
|
||||
if (!event.target.hasAttribute('pressed')) {
|
||||
await this.disableTheme(themeId);
|
||||
await this.disableMod(modId);
|
||||
|
||||
browser.document.l10n.setAttributes(
|
||||
mozToggle,
|
||||
'zen-theme-marketplace-toggle-disabled-button'
|
||||
);
|
||||
|
||||
if (theme.preferences) {
|
||||
if (mod.preferences) {
|
||||
document
|
||||
.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`)
|
||||
.setAttribute('hidden', true);
|
||||
}
|
||||
} else {
|
||||
await this.enableTheme(themeId);
|
||||
await this.enableMod(modId);
|
||||
|
||||
browser.document.l10n.setAttributes(
|
||||
mozToggle,
|
||||
'zen-theme-marketplace-toggle-enabled-button'
|
||||
);
|
||||
|
||||
if (theme.preferences) {
|
||||
if (mod.preferences) {
|
||||
document
|
||||
.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`)
|
||||
.removeAttribute('hidden');
|
||||
|
@ -379,8 +376,8 @@ var gZenMarketplaceManager = {
|
|||
}, 400);
|
||||
});
|
||||
|
||||
fragment.querySelector('.zenThemeMarketplaceItemTitle').textContent = themeName;
|
||||
fragment.querySelector('.zenThemeMarketplaceItemDescription').textContent = theme.description;
|
||||
fragment.querySelector('.zenThemeMarketplaceItemTitle').textContent = modName;
|
||||
fragment.querySelector('.zenThemeMarketplaceItemDescription').textContent = mod.description;
|
||||
fragment
|
||||
.querySelector('.zenThemeMarketplaceItemUninstallButton')
|
||||
.addEventListener('click', async (event) => {
|
||||
|
@ -392,34 +389,34 @@ var gZenMarketplaceManager = {
|
|||
return;
|
||||
}
|
||||
|
||||
await this.removeTheme(event.target.getAttribute('zen-theme-id'));
|
||||
await this.removeMod(event.target.getAttribute('zen-mod-id'));
|
||||
});
|
||||
|
||||
if (theme.homepage) {
|
||||
if (mod.homepage) {
|
||||
const homepageButton = fragment.querySelector('.zenThemeMarketplaceItemHomepageButton');
|
||||
homepageButton.addEventListener('click', () => {
|
||||
// open the homepage url in a new tab
|
||||
const url = theme.homepage;
|
||||
const url = mod.homepage;
|
||||
|
||||
window.open(url, '_blank');
|
||||
});
|
||||
}
|
||||
|
||||
if (theme.preferences) {
|
||||
if (mod.preferences) {
|
||||
fragment
|
||||
.querySelector('.zenThemeMarketplaceItemConfigureButton')
|
||||
.addEventListener('click', () => {
|
||||
dialog.showModal();
|
||||
});
|
||||
|
||||
if (isThemeEnabled) {
|
||||
if (isModEnabled) {
|
||||
fragment
|
||||
.querySelector('.zenThemeMarketplaceItemConfigureButton')
|
||||
.removeAttribute('hidden');
|
||||
}
|
||||
}
|
||||
|
||||
const preferences = await ZenThemesCommon.getThemePreferences(theme);
|
||||
const preferences = await gZenMods.getModPreferences(mod);
|
||||
|
||||
if (preferences.length > 0) {
|
||||
const preferencesWrapper = document.createXULElement('vbox');
|
||||
|
@ -471,7 +468,7 @@ var gZenMarketplaceManager = {
|
|||
|
||||
if (!['string', 'number'].includes(valueType)) {
|
||||
console.log(
|
||||
`[ZenThemeMarketplaceParent:settings]: Warning, invalid data type received (${valueType}), skipping.`
|
||||
`[ZenSettings:ZenMods]: Warning, invalid data type received (${valueType}), skipping.`
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
@ -583,7 +580,7 @@ var gZenMarketplaceManager = {
|
|||
|
||||
input.addEventListener(
|
||||
'change',
|
||||
ZenThemesCommon.debounce((event) => {
|
||||
gZenMods.debounce((event) => {
|
||||
const value = event.target.value;
|
||||
|
||||
Services.prefs.setStringPref(property, value);
|
||||
|
@ -617,18 +614,18 @@ var gZenMarketplaceManager = {
|
|||
|
||||
default:
|
||||
console.log(
|
||||
`[ZenThemeMarketplaceParent:settings]: Warning, unknown preference type received (${type}), skipping.`
|
||||
`[ZenSettings:ZenMods]: Warning, unknown preference type received (${type}), skipping.`
|
||||
);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
contentDiv.appendChild(preferencesWrapper);
|
||||
}
|
||||
themeList.appendChild(fragment);
|
||||
modList.appendChild(fragment);
|
||||
}
|
||||
|
||||
this.themesList.replaceChildren(...themeList.children);
|
||||
themeList.remove();
|
||||
this.modsList.replaceChildren(...modList.children);
|
||||
modList.remove();
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -639,8 +636,6 @@ var gZenLooksAndFeel = {
|
|||
init() {
|
||||
if (this.__hasInitialized) return;
|
||||
this.__hasInitialized = true;
|
||||
this._initializeColorPicker(this._getInitialAccentColor());
|
||||
window.zenPageAccentColorChanged = this._handleAccentColorChange.bind(this);
|
||||
gZenMarketplaceManager.init();
|
||||
for (const pref of [kZenExtendedSidebar, kZenSingleToolbar]) {
|
||||
Services.prefs.addObserver(pref, this);
|
||||
|
@ -733,36 +728,6 @@ var gZenLooksAndFeel = {
|
|||
});
|
||||
}
|
||||
},
|
||||
|
||||
_initializeColorPicker(accentColor) {
|
||||
let elem = document.getElementById('zenLooksAndFeelColorOptions');
|
||||
elem.innerHTML = '';
|
||||
for (let color of ZenThemesCommon.kZenColors) {
|
||||
let colorElemParen = document.createElement('div');
|
||||
let colorElem = document.createElement('div');
|
||||
colorElemParen.classList.add('zenLooksAndFeelColorOptionParen');
|
||||
colorElem.classList.add('zenLooksAndFeelColorOption');
|
||||
colorElem.style.setProperty('--zen-primary-color', color, 'important');
|
||||
if (accentColor === color) {
|
||||
colorElemParen.setAttribute('selected', 'true');
|
||||
}
|
||||
colorElemParen.addEventListener('click', () => {
|
||||
Services.prefs.setBoolPref('zen.theme.color-prefs.use-workspace-colors', false);
|
||||
Services.prefs.setStringPref('zen.theme.accent-color', color);
|
||||
});
|
||||
colorElemParen.appendChild(colorElem);
|
||||
elem.appendChild(colorElemParen);
|
||||
}
|
||||
// TODO: add custom color selection!
|
||||
},
|
||||
|
||||
_handleAccentColorChange(accentColor) {
|
||||
this._initializeColorPicker(accentColor);
|
||||
},
|
||||
|
||||
_getInitialAccentColor() {
|
||||
return Services.prefs.getStringPref('zen.theme.accent-color', ZenThemesCommon.kZenColors[0]);
|
||||
},
|
||||
};
|
||||
|
||||
var gZenWorkspacesSettings = {
|
||||
|
@ -777,19 +742,13 @@ var gZenWorkspacesSettings = {
|
|||
};
|
||||
Services.prefs.addObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
|
||||
Services.prefs.addObserver('zen.glance.enabled', tabsUnloaderPrefListener); // We can use the same listener for both prefs
|
||||
Services.prefs.addObserver(
|
||||
'zen.workspaces.container-specific-essentials-enabled',
|
||||
tabsUnloaderPrefListener
|
||||
);
|
||||
Services.prefs.addObserver('zen.workspaces.separate-essentials', tabsUnloaderPrefListener);
|
||||
Services.prefs.addObserver('zen.glance.activation-method', tabsUnloaderPrefListener);
|
||||
window.addEventListener('unload', () => {
|
||||
Services.prefs.removeObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
|
||||
Services.prefs.removeObserver('zen.glance.enabled', tabsUnloaderPrefListener);
|
||||
Services.prefs.removeObserver('zen.glance.activation-method', tabsUnloaderPrefListener);
|
||||
Services.prefs.removeObserver(
|
||||
'zen.workspaces.container-specific-essentials-enabled',
|
||||
tabsUnloaderPrefListener
|
||||
);
|
||||
Services.prefs.removeObserver('zen.workspaces.separate-essentials', tabsUnloaderPrefListener);
|
||||
});
|
||||
},
|
||||
};
|
||||
|
@ -1022,7 +981,7 @@ var gZenCKSSettings = {
|
|||
let input = document.querySelector(
|
||||
`.${ZEN_CKS_INPUT_FIELD_CLASS}[${KEYBIND_ATTRIBUTE_KEY}="${this._currentActionID}"]`
|
||||
);
|
||||
const modifiers = new KeyShortcutModifiers(
|
||||
const modifiers = new nsKeyShortcutModifiers(
|
||||
event.ctrlKey,
|
||||
event.altKey,
|
||||
event.shiftKey,
|
||||
|
@ -1033,9 +992,12 @@ var gZenCKSSettings = {
|
|||
|
||||
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`);
|
||||
|
||||
// This is because on some OSs (windows/macos mostly) the key is not the same as the keycode
|
||||
// e.g. CTRL+ALT+3 may be displayed as the euro sign
|
||||
let shortcut = event.key;
|
||||
// First, try to read the *physical* key via event.code.
|
||||
// If event.code is like "KeyS", "KeyA", ..., strip off "Key" → "S".
|
||||
// Otherwise, fall back to event.key (e.g. "F5", "Enter", etc.).
|
||||
let shortcut;
|
||||
if (event.code && event.code.startsWith('Key')) shortcut = event.code.slice(3);
|
||||
else shortcut = event.key;
|
||||
|
||||
shortcut = shortcut.replace(/Ctrl|Control|Shift|Alt|Option|Cmd|Meta/, ''); // Remove all modifiers
|
||||
|
||||
|
@ -1169,11 +1131,6 @@ Preferences.addAll([
|
|||
type: 'bool',
|
||||
default: true,
|
||||
},
|
||||
{
|
||||
id: 'zen.theme.color-prefs.use-workspace-colors',
|
||||
type: 'bool',
|
||||
default: false,
|
||||
},
|
||||
{
|
||||
id: 'zen.view.compact.color-toolbar',
|
||||
type: 'bool',
|
||||
|
@ -1190,7 +1147,7 @@ Preferences.addAll([
|
|||
default: true,
|
||||
},
|
||||
{
|
||||
id: 'zen.workspaces.container-specific-essentials-enabled',
|
||||
id: 'zen.workspaces.separate-essentials',
|
||||
type: 'bool',
|
||||
default: false,
|
||||
},
|
||||
|
@ -1219,4 +1176,9 @@ Preferences.addAll([
|
|||
type: 'bool',
|
||||
default: false,
|
||||
},
|
||||
{
|
||||
id: 'zen.mods.auto-update',
|
||||
type: 'bool',
|
||||
default: true,
|
||||
},
|
||||
]);
|
||||
|
|
|
@ -39,35 +39,9 @@
|
|||
data-l10n-id="zen-vertical-tabs-newtab-top-button-up"
|
||||
preference="zen.view.show-newtab-button-top"/>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
|
||||
<hbox id="zenLooksCategory"
|
||||
class="subcategory"
|
||||
hidden="true"
|
||||
data-category="paneZenLooks">
|
||||
<html:h1 data-l10n-id="pane-zen-looks-title"/>
|
||||
</hbox>
|
||||
|
||||
<groupbox id="zenLooksAndFeelGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
|
||||
<label><html:h2 data-l10n-id="zen-look-and-feel-colors-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-colors-description" />
|
||||
|
||||
<hbox id="zenLooksAndFeelColorOptions" align="center">
|
||||
</hbox>
|
||||
|
||||
<html:div id="zen-theme-builder-wrapper"></html:div>
|
||||
|
||||
<box class="indent">
|
||||
<checkbox id="zenLooksAndFeelUseWorkspaceColors"
|
||||
data-l10n-id="zen-look-and-feel-use-workspace-colors"
|
||||
preference="zen.theme.color-prefs.use-workspace-colors"/>
|
||||
</box>
|
||||
|
||||
<hbox id="zenLooksAndFeelGradientPickerParent"></hbox>
|
||||
|
||||
<html:div data-l10n-id="preferences-web-appearance-footer">
|
||||
<html:a id="web-appearance-manage-themes-link" class="text-link" data-l10n-name="themes-link" href="about:addons" target="_blank" />
|
||||
</html:div>
|
||||
<html:div data-l10n-id="preferences-web-appearance-footer">
|
||||
<html:a id="web-appearance-manage-themes-link" class="text-link" data-l10n-name="themes-link" href="about:addons" target="_blank" />
|
||||
</html:div>
|
||||
</groupbox>
|
||||
|
||||
<hbox id="zenThemeCategory"
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<script src="chrome://browser/content/zen-components/ZenCommonUtils.mjs" defer=""/>
|
||||
<script src="chrome://browser/content/zen-components/ZenThemesCommon.mjs" defer=""/>
|
||||
<html:template id="template-paneZenMarketplace">
|
||||
<hbox id="ZenMarketplaceCategory"
|
||||
class="subcategory"
|
||||
|
@ -21,6 +20,10 @@
|
|||
<button id="zenThemeMarketplaceCheckForUpdates" data-l10n-id="zen-theme-marketplace-check-for-updates-button" />
|
||||
</hbox>
|
||||
|
||||
<checkbox id="zenThemeMarketplaceAutoUpdate"
|
||||
data-l10n-id="zen-themes-auto-update"
|
||||
preference="zen.mods.auto-update"/>
|
||||
|
||||
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-success" hidden="true" id="zenThemeMarketplaceUpdatesSuccess" />
|
||||
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-failure" hidden="true" id="zenThemeMarketplaceUpdatesFailure" />
|
||||
|
||||
|
|
|
@ -31,26 +31,6 @@
|
|||
<html:h1 data-l10n-id="pane-zen-tabs-unloader-title"/>
|
||||
</hbox>
|
||||
|
||||
<groupbox id="zenTabsUnloadGroup" data-category="paneZenTabManagement" hidden="true" class="highlighting-group">
|
||||
<label><html:h2 data-l10n-id="zen-tabs-unloader-header"/></label>
|
||||
<description class="description-deemphasized" data-l10n-id="zen-tabs-unloader-description" />
|
||||
|
||||
<checkbox id="zenTabsUnloadActivate"
|
||||
data-l10n-id="zen-tabs-unloader-enabled"
|
||||
preference="zen.tab-unloader.enabled"/>
|
||||
|
||||
|
||||
<label><html:h2 data-l10n-id="zen-tabs-unloader-unload-delay"/></label>
|
||||
<hbox id="zenTabsUnloadDelayContainer">
|
||||
<description class="description-deemphasized" data-l10n-id="zen-tabs-unloader-unload-delay-description" />
|
||||
<html:input id="zenTabsUnloadDelay"
|
||||
type="number"
|
||||
min="1"
|
||||
max="1000"
|
||||
preference="zen.tab-unloader.timeout-minutes"/>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
<hbox id="zenPinnedTabsManagerCategory"
|
||||
class="subcategory"
|
||||
hidden="true"
|
||||
|
@ -67,7 +47,7 @@
|
|||
preference="zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url"/>
|
||||
<checkbox id="zenPinnedTabContainerSpecificEssentials"
|
||||
data-l10n-id="zen-pinned-tab-manager-container-specific-essentials-enabled"
|
||||
preference="zen.workspaces.container-specific-essentials-enabled"/>
|
||||
preference="zen.workspaces.separate-essentials"/>
|
||||
|
||||
<hbox align="center">
|
||||
<label id="zenPinnedTabCloseShortcutBehaviorLabel" data-l10n-id="zen-pinned-tab-manager-close-shortcut-behavior-label"/>
|
||||
|
|
13
src/browser/components/search/SearchUIUtils-sys-mjs.patch
Normal file
13
src/browser/components/search/SearchUIUtils-sys-mjs.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs
|
||||
index ecebaad93acfc9eb7dfd9d9f56fec2e1a4abe392..8bb1348b3258dbc518d23ec39181a81f87fc8c1e 100644
|
||||
--- a/browser/components/search/SearchUIUtils.sys.mjs
|
||||
+++ b/browser/components/search/SearchUIUtils.sys.mjs
|
||||
@@ -403,7 +403,7 @@ export var SearchUIUtils = {
|
||||
triggeringSearchEngine: engine.name,
|
||||
},
|
||||
});
|
||||
-
|
||||
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
|
||||
return { engine, url: submission.uri };
|
||||
},
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
index 11794372f8ff13387b54dabdf4111dfdb89ea998..0e51251a579cee759f25272894c82a1744d79b26 100644
|
||||
index be029379c101a0105d4837136e064e6007b67c3e..f998ad44015b05104e8a1dbeebd7b94e586e4fbd 100644
|
||||
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
@@ -2088,7 +2088,6 @@ var SessionStoreInternal = {
|
||||
@@ -2120,7 +2120,6 @@ var SessionStoreInternal = {
|
||||
if (closedWindowState) {
|
||||
let newWindowState;
|
||||
if (
|
||||
|
@ -10,7 +10,7 @@ index 11794372f8ff13387b54dabdf4111dfdb89ea998..0e51251a579cee759f25272894c82a17
|
|||
!lazy.SessionStartup.willRestore()
|
||||
) {
|
||||
// We want to split the window up into pinned tabs and unpinned tabs.
|
||||
@@ -2303,11 +2302,9 @@ var SessionStoreInternal = {
|
||||
@@ -2353,11 +2352,9 @@ var SessionStoreInternal = {
|
||||
tabbrowser.selectedTab.label;
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ index 11794372f8ff13387b54dabdf4111dfdb89ea998..0e51251a579cee759f25272894c82a17
|
|||
|
||||
// Store the window's close date to figure out when each individual tab
|
||||
// was closed. This timestamp should allow re-arranging data based on how
|
||||
@@ -3209,7 +3206,7 @@ var SessionStoreInternal = {
|
||||
@@ -3303,7 +3300,7 @@ var SessionStoreInternal = {
|
||||
if (!isPrivateWindow && tabState.isPrivate) {
|
||||
return;
|
||||
}
|
||||
|
@ -31,17 +31,36 @@ index 11794372f8ff13387b54dabdf4111dfdb89ea998..0e51251a579cee759f25272894c82a17
|
|||
return;
|
||||
}
|
||||
|
||||
@@ -3918,6 +3915,9 @@ var SessionStoreInternal = {
|
||||
@@ -4012,6 +4009,11 @@ var SessionStoreInternal = {
|
||||
Math.min(tabState.index, tabState.entries.length)
|
||||
);
|
||||
tabState.pinned = false;
|
||||
+ tabState.zenEssential = false;
|
||||
+ tabState.zenPinnedId = null;
|
||||
+ tabState.zenIsGlance = false;
|
||||
+ tabState.zenGlanceId = null;
|
||||
+ tabState.zenHasStaticLabel = false;
|
||||
|
||||
if (inBackground === false) {
|
||||
aWindow.gBrowser.selectedTab = newTab;
|
||||
@@ -5232,7 +5232,7 @@ var SessionStoreInternal = {
|
||||
@@ -4448,6 +4450,7 @@ var SessionStoreInternal = {
|
||||
// Append the tab if we're opening into a different window,
|
||||
tabIndex: aSource == aTargetWindow ? pos : Infinity,
|
||||
pinned: state.pinned,
|
||||
+ essential: state.zenEssential,
|
||||
userContextId: state.userContextId,
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
@@ -5303,7 +5306,7 @@ var SessionStoreInternal = {
|
||||
|
||||
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
|
||||
let tab = tabbrowser.tabs[i];
|
||||
- if (homePages.includes(tab.linkedBrowser.currentURI.spec)) {
|
||||
+ if (homePages.includes(tab.linkedBrowser.currentURI.spec) && !tab.hasAttribute("zen-empty-tab")) {
|
||||
removableTabs.push(tab);
|
||||
}
|
||||
}
|
||||
@@ -5363,7 +5366,7 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
let workspaceID = aWindow.getWorkspaceID();
|
||||
|
@ -50,7 +69,7 @@ index 11794372f8ff13387b54dabdf4111dfdb89ea998..0e51251a579cee759f25272894c82a17
|
|||
winData.workspaceID = workspaceID;
|
||||
}
|
||||
},
|
||||
@@ -5423,14 +5423,15 @@ var SessionStoreInternal = {
|
||||
@@ -5554,14 +5557,15 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
let tabbrowser = aWindow.gBrowser;
|
||||
|
@ -68,16 +87,29 @@ index 11794372f8ff13387b54dabdf4111dfdb89ea998..0e51251a579cee759f25272894c82a17
|
|||
continue;
|
||||
}
|
||||
let tabData = lazy.TabState.collect(tab, TAB_CUSTOM_VALUES.get(tab));
|
||||
@@ -5449,7 +5450,7 @@ var SessionStoreInternal = {
|
||||
@@ -5580,8 +5584,8 @@ var SessionStoreInternal = {
|
||||
// We don't store the Firefox View tab in Session Store, so if it was the last selected "tab" when
|
||||
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab,
|
||||
// since it's only inserted into the tab strip after it's selected).
|
||||
- if (aWindow.FirefoxViewHandler.tab?.selected) {
|
||||
- selectedIndex = 1;
|
||||
+ if (aWindow.FirefoxViewHandler.tab?.selected || tabbrowser.selectedTab.hasAttribute("zen-empty-tab")) {
|
||||
selectedIndex = 1;
|
||||
+ selectedIndex = 0;
|
||||
winData.title = tabbrowser.tabs[0].label;
|
||||
}
|
||||
@@ -5606,6 +5607,7 @@ var SessionStoreInternal = {
|
||||
winData.selected = selectedIndex;
|
||||
@@ -5693,8 +5697,8 @@ var SessionStoreInternal = {
|
||||
// selectTab represents.
|
||||
let selectTab = 0;
|
||||
if (overwriteTabs) {
|
||||
- selectTab = parseInt(winData.selected || 1, 10);
|
||||
- selectTab = Math.max(selectTab, 1);
|
||||
+ selectTab = parseInt(winData.selected || 0, 10);
|
||||
+ selectTab = Math.max(selectTab, 0);
|
||||
selectTab = Math.min(selectTab, winData.tabs.length);
|
||||
}
|
||||
|
||||
@@ -5737,6 +5741,7 @@ var SessionStoreInternal = {
|
||||
winData.tabs,
|
||||
winData.groups ?? []
|
||||
);
|
||||
|
@ -85,12 +117,13 @@ index 11794372f8ff13387b54dabdf4111dfdb89ea998..0e51251a579cee759f25272894c82a17
|
|||
this._log.debug(
|
||||
`restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs`
|
||||
);
|
||||
@@ -6155,8 +6157,23 @@ var SessionStoreInternal = {
|
||||
@@ -6286,6 +6291,22 @@ var SessionStoreInternal = {
|
||||
|
||||
// Most of tabData has been restored, now continue with restoring
|
||||
// attributes that may trigger external events.
|
||||
+ if (tabData.zenEssential) {
|
||||
+ tab.setAttribute("zen-essential", "true");
|
||||
+ tabData.pinned = true; // Essential tabs are always pinned.
|
||||
+ }
|
||||
+ if (tabData.zenIsEmpty) {
|
||||
+ tab.setAttribute("zen-empty-tab", "true");
|
||||
|
@ -105,8 +138,5 @@ index 11794372f8ff13387b54dabdf4111dfdb89ea998..0e51251a579cee759f25272894c82a17
|
|||
+ tab.setAttribute("zenDefaultUserContextId", true);
|
||||
+ }
|
||||
|
||||
- if (tabData.pinned) {
|
||||
+ if (tabData.pinned || tabData.zenEssential) {
|
||||
if (tabData.pinned) {
|
||||
tabbrowser.pinTab(tab);
|
||||
} else {
|
||||
tabbrowser.unpinTab(tab);
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
||||
index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..254849e13f7566029dc780c45e376e0f0d427cb5 100644
|
||||
index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..76f4cf5aef30cb580ef0295fe6928b5a6a362f4b 100644
|
||||
--- a/browser/components/sessionstore/TabState.sys.mjs
|
||||
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
||||
@@ -84,6 +84,16 @@ class _TabState {
|
||||
@@ -84,6 +84,18 @@ class _TabState {
|
||||
tabData.groupId = tab.group.id;
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,8 @@ index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..254849e13f7566029dc780c45e376e0f
|
|||
+ tabData.zenPinnedIcon = tab.getAttribute("zen-pinned-icon");
|
||||
+ tabData.zenIsEmpty = tab.hasAttribute("zen-empty-tab");
|
||||
+ tabData.zenHasStaticLabel = tab.hasAttribute("zen-has-static-label");
|
||||
+ tabData.zenGlanceId = tab.getAttribute("glance-id");
|
||||
+ tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab");
|
||||
+
|
||||
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
|
||||
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
diff --git a/browser/components/sessionstore/content/aboutSessionRestore.xhtml b/browser/components/sessionstore/content/aboutSessionRestore.xhtml
|
||||
index 05538be5d95492903e44076dc43e195cbc76c10d..3c2ee6a9d44802657c9e0d5ef6c78e0b3920a9a5 100644
|
||||
--- a/browser/components/sessionstore/content/aboutSessionRestore.xhtml
|
||||
+++ b/browser/components/sessionstore/content/aboutSessionRestore.xhtml
|
||||
@@ -20,6 +20,7 @@
|
||||
<link rel="localization" href="browser/aboutSessionRestore.ftl"/>
|
||||
<link rel="localization" href="branding/brand.ftl"/>
|
||||
<script src="chrome://browser/content/aboutSessionRestore.js"/>
|
||||
+ <script src="chrome://browser/content/zenThemeModifier.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
13
src/browser/components/tabbrowser/TabUnloader-sys-mjs.patch
Normal file
13
src/browser/components/tabbrowser/TabUnloader-sys-mjs.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs
|
||||
index 44846cc902fd3fc17d12be38ac9abccb47a12f23..c715c7cf47486066b3fd6f92bf78bc8a720759bc 100644
|
||||
--- a/browser/components/tabbrowser/TabUnloader.sys.mjs
|
||||
+++ b/browser/components/tabbrowser/TabUnloader.sys.mjs
|
||||
@@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1;
|
||||
*/
|
||||
let DefaultTabUnloaderMethods = {
|
||||
isNonDiscardable(tab, weight) {
|
||||
- if (tab.undiscardable || tab.selected) {
|
||||
+ if (tab.undiscardable || tab.selected || tab.zenModeActive) {
|
||||
return weight;
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||
index dc92771ebc65095dfebbddc238ee6d4fffd897bf..fa35f6835498f8e51f060479addb25237d3fe7ff 100644
|
||||
index 793ba822f087f4d198c9876ed208ff16d8a41e3b..e53ccd748de015997c355d5d37cb38cc73e90f3d 100644
|
||||
--- a/browser/components/tabbrowser/content/tab.js
|
||||
+++ b/browser/components/tabbrowser/content/tab.js
|
||||
@@ -21,6 +21,7 @@
|
||||
|
@ -21,7 +21,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..fa35f6835498f8e51f060479addb2523
|
|||
</hbox>
|
||||
</stack>
|
||||
`;
|
||||
@@ -175,7 +178,7 @@
|
||||
@@ -180,7 +183,7 @@
|
||||
}
|
||||
|
||||
set _visuallySelected(val) {
|
||||
|
@ -30,7 +30,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..fa35f6835498f8e51f060479addb2523
|
|||
return;
|
||||
}
|
||||
|
||||
@@ -211,7 +214,7 @@
|
||||
@@ -216,7 +219,7 @@
|
||||
}
|
||||
|
||||
get visible() {
|
||||
|
@ -39,7 +39,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..fa35f6835498f8e51f060479addb2523
|
|||
}
|
||||
|
||||
get hidden() {
|
||||
@@ -282,7 +285,7 @@
|
||||
@@ -287,7 +290,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -48,7 +48,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..fa35f6835498f8e51f060479addb2523
|
|||
}
|
||||
|
||||
get lastAccessed() {
|
||||
@@ -454,6 +457,8 @@
|
||||
@@ -459,6 +462,8 @@
|
||||
this.style.MozUserFocus = "ignore";
|
||||
} else if (
|
||||
event.target.classList.contains("tab-close-button") ||
|
||||
|
@ -57,7 +57,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..fa35f6835498f8e51f060479addb2523
|
|||
event.target.classList.contains("tab-icon-overlay") ||
|
||||
event.target.classList.contains("tab-audio-button")
|
||||
) {
|
||||
@@ -508,6 +513,10 @@
|
||||
@@ -513,6 +518,10 @@
|
||||
this.style.MozUserFocus = "";
|
||||
}
|
||||
|
||||
|
@ -68,15 +68,15 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..fa35f6835498f8e51f060479addb2523
|
|||
on_click(event) {
|
||||
if (event.button != 0) {
|
||||
return;
|
||||
@@ -554,6 +563,7 @@
|
||||
telemetrySource: lazy.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
||||
});
|
||||
@@ -561,6 +570,7 @@
|
||||
)
|
||||
);
|
||||
} else {
|
||||
+ gZenPinnedTabManager._removePinnedAttributes(this, true);
|
||||
gBrowser.removeTab(this, {
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
@@ -564,6 +574,14 @@
|
||||
@@ -573,6 +583,14 @@
|
||||
// (see tabbrowser-tabs 'click' handler).
|
||||
gBrowser.tabContainer._blockDblClick = true;
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..fa35f6835498f8e51f060479addb2523
|
|||
}
|
||||
|
||||
on_dblclick(event) {
|
||||
@@ -587,6 +605,8 @@
|
||||
@@ -596,6 +614,8 @@
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
});
|
||||
|
|
|
@ -1,19 +1,15 @@
|
|||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f255c4ebc9 100644
|
||||
index 37570c54b06f9cebc46aa232e2d01ac5d330e17a..3a62769d327e9aa5d5c447e3931f235f984de42c 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -415,11 +415,45 @@
|
||||
@@ -413,11 +413,41 @@
|
||||
return this.tabContainer.visibleTabs;
|
||||
}
|
||||
|
||||
+ zenInsertTabAtIndex(...args) {
|
||||
+ return this.#insertTabAtElementIndex(...args);
|
||||
+ }
|
||||
+
|
||||
+ get _numVisiblePinTabsWithoutCollapsed() {
|
||||
+ let i = 0;
|
||||
+ for (let item of this.tabContainer.ariaFocusableItems) {
|
||||
+ if (!!item?.classList?.contains("tab-group-label") && item.closest("tab-group").pinned) {
|
||||
+ if (this.isTabGroupLabel(item) && item.closest("tab-group")?.pinned) {
|
||||
+ i += 1;
|
||||
+ continue;
|
||||
+ }
|
||||
|
@ -50,7 +46,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
}
|
||||
return i;
|
||||
}
|
||||
@@ -571,6 +605,7 @@
|
||||
@@ -569,6 +599,7 @@
|
||||
this.tabpanels.appendChild(panel);
|
||||
|
||||
let tab = this.tabs[0];
|
||||
|
@ -58,7 +54,13 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
tab.linkedPanel = uniqueId;
|
||||
this._selectedTab = tab;
|
||||
this._selectedBrowser = browser;
|
||||
@@ -836,11 +871,13 @@
|
||||
@@ -829,16 +860,18 @@
|
||||
}
|
||||
|
||||
pinTab(aTab) {
|
||||
- if (aTab.pinned || aTab == FirefoxViewHandler.tab) {
|
||||
+ if (aTab.pinned || aTab == FirefoxViewHandler.tab || aTab.hasAttribute("zen-empty-tab")) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.showTab(aTab);
|
||||
|
@ -75,7 +77,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
this.moveTabTo(aTab, {
|
||||
tabIndex: this.pinnedTabCount,
|
||||
forceUngrouped: true,
|
||||
@@ -857,12 +894,15 @@
|
||||
@@ -855,12 +888,15 @@
|
||||
}
|
||||
|
||||
if (this.tabContainer.verticalMode) {
|
||||
|
@ -92,7 +94,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
});
|
||||
} else {
|
||||
this.moveTabTo(aTab, {
|
||||
@@ -1046,6 +1086,8 @@
|
||||
@@ -1044,6 +1080,8 @@
|
||||
|
||||
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
|
||||
|
||||
|
@ -101,7 +103,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
if (
|
||||
aIconURL &&
|
||||
!aLoadingPrincipal &&
|
||||
@@ -1056,6 +1098,9 @@
|
||||
@@ -1054,6 +1092,9 @@
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
@ -111,7 +113,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
|
||||
let browser = this.getBrowserForTab(aTab);
|
||||
browser.mIconURL = aIconURL;
|
||||
@@ -1305,6 +1350,7 @@
|
||||
@@ -1303,6 +1344,7 @@
|
||||
if (!this._previewMode) {
|
||||
newTab.recordTimeFromUnloadToReload();
|
||||
newTab.updateLastAccessed();
|
||||
|
@ -119,7 +121,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
oldTab.updateLastAccessed();
|
||||
// if this is the foreground window, update the last-seen timestamps.
|
||||
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
|
||||
@@ -1457,6 +1503,9 @@
|
||||
@@ -1455,6 +1497,9 @@
|
||||
}
|
||||
|
||||
let activeEl = document.activeElement;
|
||||
|
@ -129,7 +131,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
// If focus is on the old tab, move it to the new tab.
|
||||
if (activeEl == oldTab) {
|
||||
newTab.focus();
|
||||
@@ -1780,7 +1829,8 @@
|
||||
@@ -1778,7 +1823,8 @@
|
||||
}
|
||||
|
||||
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
|
||||
|
@ -139,7 +141,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
return false;
|
||||
}
|
||||
|
||||
@@ -1888,7 +1938,7 @@
|
||||
@@ -1886,7 +1932,7 @@
|
||||
newIndex = this.selectedTab._tPos + 1;
|
||||
}
|
||||
|
||||
|
@ -148,7 +150,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
if (this.isTabGroupLabel(targetTab)) {
|
||||
throw new Error(
|
||||
"Replacing a tab group label with a tab is not supported"
|
||||
@@ -2152,6 +2202,7 @@
|
||||
@@ -2150,6 +2196,7 @@
|
||||
uriIsAboutBlank,
|
||||
userContextId,
|
||||
skipLoad,
|
||||
|
@ -156,7 +158,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
} = {}) {
|
||||
let b = document.createXULElement("browser");
|
||||
// Use the JSM global to create the permanentKey, so that if the
|
||||
@@ -2225,8 +2276,7 @@
|
||||
@@ -2223,8 +2270,7 @@
|
||||
// we use a different attribute name for this?
|
||||
b.setAttribute("name", name);
|
||||
}
|
||||
|
@ -166,7 +168,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
b.setAttribute("transparent", "true");
|
||||
}
|
||||
|
||||
@@ -2391,7 +2441,7 @@
|
||||
@@ -2389,7 +2435,7 @@
|
||||
|
||||
let panel = this.getPanel(browser);
|
||||
let uniqueId = this._generateUniquePanelID();
|
||||
|
@ -175,7 +177,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
aTab.linkedPanel = uniqueId;
|
||||
|
||||
// Inject the <browser> into the DOM if necessary.
|
||||
@@ -2450,8 +2500,8 @@
|
||||
@@ -2448,8 +2494,8 @@
|
||||
// If we transitioned from one browser to two browsers, we need to set
|
||||
// hasSiblings=false on both the existing browser and the new browser.
|
||||
if (this.tabs.length == 2) {
|
||||
|
@ -186,15 +188,16 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
} else {
|
||||
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
|
||||
}
|
||||
@@ -2679,6 +2729,7 @@
|
||||
@@ -2679,6 +2725,8 @@
|
||||
schemelessInput,
|
||||
hasValidUserGestureActivation = false,
|
||||
textDirectiveUserActivation = false,
|
||||
+ _forZenEmptyTab,
|
||||
+ essential,
|
||||
} = {}
|
||||
) {
|
||||
// all callers of addTab that pass a params object need to pass
|
||||
@@ -2689,6 +2740,12 @@
|
||||
@@ -2689,6 +2737,12 @@
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -207,7 +210,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
if (!UserInteraction.running("browser.tabs.opening", window)) {
|
||||
UserInteraction.start("browser.tabs.opening", "initting", window);
|
||||
}
|
||||
@@ -2752,6 +2809,16 @@
|
||||
@@ -2752,6 +2806,19 @@
|
||||
noInitialLabel,
|
||||
skipBackgroundNotify,
|
||||
});
|
||||
|
@ -220,11 +223,22 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
+ }
|
||||
+ if (_forZenEmptyTab) {
|
||||
+ t.setAttribute("zen-empty-tab", "true");
|
||||
+ }
|
||||
+ if (essential) {
|
||||
+ t.setAttribute("zen-essential", "true");
|
||||
+ }
|
||||
if (insertTab) {
|
||||
if (typeof index == "number") {
|
||||
elementIndex = this.#tabIndexToElementIndex(index);
|
||||
@@ -2779,6 +2846,7 @@
|
||||
// Insert the tab into the tab container in the correct position.
|
||||
this.#insertTabAtIndex(t, {
|
||||
@@ -2760,6 +2827,7 @@
|
||||
ownerTab,
|
||||
openerTab,
|
||||
pinned,
|
||||
+ essential,
|
||||
bulkOrderedOpen,
|
||||
tabGroup: tabGroup ?? openerTab?.group,
|
||||
});
|
||||
@@ -2778,6 +2846,7 @@
|
||||
openWindowInfo,
|
||||
skipLoad,
|
||||
triggeringRemoteType,
|
||||
|
@ -232,7 +246,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
}));
|
||||
|
||||
if (focusUrlBar) {
|
||||
@@ -2898,6 +2966,12 @@
|
||||
@@ -2897,6 +2966,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -245,25 +259,8 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
// Additionally send pinned tab events
|
||||
if (pinned) {
|
||||
this._notifyPinnedStatus(t);
|
||||
@@ -2945,12 +3019,15 @@
|
||||
* @param {string} [label=]
|
||||
* @returns {MozTabbrowserTabGroup}
|
||||
*/
|
||||
- _createTabGroup(id, color, collapsed, label = "") {
|
||||
+ _createTabGroup(id, color, collapsed, label = "", pinned = false, essential = false, splitViewGroup = false) {
|
||||
let group = document.createXULElement("tab-group", { is: "tab-group" });
|
||||
group.id = id;
|
||||
group.collapsed = collapsed;
|
||||
group.color = color;
|
||||
group.label = label;
|
||||
+ group.pinned = pinned;
|
||||
+ group.essential = essential;
|
||||
+ if (splitViewGroup) group.setAttribute('split-view-group', true);
|
||||
return group;
|
||||
}
|
||||
|
||||
@@ -2993,10 +3070,10 @@
|
||||
insertBefore = null,
|
||||
@@ -2985,10 +3060,10 @@
|
||||
isAdoptingGroup = false,
|
||||
isUserTriggered = false,
|
||||
telemetryUserCreateSource = "unknown",
|
||||
+ forSplitView = false,
|
||||
|
@ -274,10 +271,10 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
}
|
||||
|
||||
if (!color) {
|
||||
@@ -3011,7 +3088,12 @@
|
||||
id = `${Date.now()}-${Math.round(Math.random() * 100)}`;
|
||||
}
|
||||
let group = this._createTabGroup(id, color, false, label);
|
||||
@@ -3009,7 +3084,12 @@
|
||||
label,
|
||||
isAdoptingGroup
|
||||
);
|
||||
- this.tabContainer.insertBefore(
|
||||
+ if (forSplitView) {
|
||||
+ group.setAttribute('split-view-group', true);
|
||||
|
@ -288,7 +285,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
group,
|
||||
insertBefore?.group ?? insertBefore
|
||||
);
|
||||
@@ -3342,6 +3424,7 @@
|
||||
@@ -3304,6 +3384,7 @@
|
||||
openWindowInfo,
|
||||
skipLoad,
|
||||
triggeringRemoteType,
|
||||
|
@ -296,7 +293,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
}
|
||||
) {
|
||||
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
|
||||
@@ -3411,6 +3494,7 @@
|
||||
@@ -3373,6 +3454,7 @@
|
||||
openWindowInfo,
|
||||
name,
|
||||
skipLoad,
|
||||
|
@ -304,7 +301,18 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
});
|
||||
}
|
||||
|
||||
@@ -3599,7 +3683,7 @@
|
||||
@@ -3518,7 +3600,9 @@
|
||||
let shouldUpdateForPinnedTabs = false;
|
||||
/** @type {Map<TabGroupStateData['id'], TabGroupWorkingData>} */
|
||||
let tabGroupWorkingData = new Map();
|
||||
-
|
||||
+ if (this._hasAlreadyInitializedZenSessionStore) {
|
||||
+ selectTab += 1; // SessionStoreInternal.restoreTabs expects a 1-based index.
|
||||
+ }
|
||||
for (const tabGroupData of tabGroupDataList) {
|
||||
tabGroupWorkingData.set(tabGroupData.id, {
|
||||
stateData: tabGroupData,
|
||||
@@ -3561,7 +3645,7 @@
|
||||
// Add a new tab if needed.
|
||||
if (!tab) {
|
||||
let createLazyBrowser =
|
||||
|
@ -313,37 +321,17 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
|
||||
let url = "about:blank";
|
||||
if (tabData.entries?.length) {
|
||||
@@ -3637,7 +3721,29 @@
|
||||
@@ -3599,7 +3683,8 @@
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
});
|
||||
-
|
||||
+ tab._originalUrl = url;
|
||||
|
||||
+ if (tabData.zenWorkspace) {
|
||||
+ tab.setAttribute("zen-workspace-id", tabData.zenWorkspace);
|
||||
+ }
|
||||
+ if (tabData.zenPinnedId) {
|
||||
+ tab.setAttribute("zen-pin-id", tabData.zenPinnedId);
|
||||
+ }
|
||||
+ if (tabData.zenIsEmpty) {
|
||||
+ tab.setAttribute("zen-empty-tab", "true");
|
||||
+ }
|
||||
+ if (tabData.zenHasStaticLabel) {
|
||||
+ tab.setAttribute("zen-has-static-label", "true");
|
||||
+ }
|
||||
+ if (tabData.zenEssential) {
|
||||
+ tab.setAttribute("zen-essential", "true");
|
||||
+ }
|
||||
+ if (tabData.zenDefaultUserContextId) {
|
||||
+ tab.setAttribute("zenDefaultUserContextId", "true");
|
||||
+ }
|
||||
+ if (tabData.zenPinnedEntry) {
|
||||
+ tab.setAttribute("zen-pinned-entry", tabData.zenPinnedEntry);
|
||||
+ }
|
||||
+ gZenSessionStore.restoreInitialTabData(tab, tabData);
|
||||
if (select) {
|
||||
tabToSelect = tab;
|
||||
}
|
||||
@@ -3661,7 +3767,8 @@
|
||||
@@ -3623,7 +3708,8 @@
|
||||
// needs calling:
|
||||
shouldUpdateForPinnedTabs = true;
|
||||
}
|
||||
|
@ -353,7 +341,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
let { groupId } = tabData;
|
||||
const tabGroup = tabGroupWorkingData.get(groupId);
|
||||
// if a tab refers to a tab group we don't know, skip any group
|
||||
@@ -3675,7 +3782,10 @@
|
||||
@@ -3637,7 +3723,10 @@
|
||||
tabGroup.stateData.id,
|
||||
tabGroup.stateData.color,
|
||||
tabGroup.stateData.collapsed,
|
||||
|
@ -365,45 +353,50 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
);
|
||||
tabsFragment.appendChild(tabGroup.node);
|
||||
}
|
||||
@@ -3723,8 +3833,16 @@
|
||||
@@ -3685,9 +3774,23 @@
|
||||
// to remove the old selected tab.
|
||||
if (tabToSelect) {
|
||||
let leftoverTab = this.selectedTab;
|
||||
- this.selectedTab = tabToSelect;
|
||||
- this.removeTab(leftoverTab);
|
||||
+ gZenWorkspaces._tabToRemoveForEmpty = leftoverTab;
|
||||
+ if (Services.prefs.getBoolPref("zen.workspaces.continue-where-left-off")) {
|
||||
+ gZenWorkspaces._tabToSelect = selectTab - 1;
|
||||
+ }
|
||||
+ if (gZenWorkspaces._initialTab && !gZenVerticalTabsManager._canReplaceNewTab) {
|
||||
+ gZenWorkspaces._initialTab._shouldRemove = true;
|
||||
+ if (this._hasAlreadyInitializedZenSessionStore || !gZenWorkspaces.workspaceEnabled) {
|
||||
this.selectedTab = tabToSelect;
|
||||
this.removeTab(leftoverTab);
|
||||
+ } else {
|
||||
+ gZenWorkspaces._tabToRemoveForEmpty = leftoverTab;
|
||||
+ if (Services.prefs.getBoolPref("zen.workspaces.continue-where-left-off")) {
|
||||
+ gZenWorkspaces._tabToSelect = selectTab - 1;
|
||||
+ }
|
||||
+ if (gZenWorkspaces._initialTab && !gZenVerticalTabsManager._canReplaceNewTab) {
|
||||
+ gZenWorkspaces._initialTab._shouldRemove = true;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ else {
|
||||
+ gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab;
|
||||
}
|
||||
+ this._hasAlreadyInitializedZenSessionStore = true;
|
||||
|
||||
if (tabs.length > 1 || !tabs[0].selected) {
|
||||
@@ -3912,7 +4030,7 @@
|
||||
this._updateTabsAfterInsert();
|
||||
@@ -3882,7 +3985,7 @@
|
||||
// Ensure we have an index if one was not provided.
|
||||
if (typeof index != "number") {
|
||||
if (typeof elementIndex != "number" && typeof tabIndex != "number") {
|
||||
// Move the new tab after another tab if needed, to the end otherwise.
|
||||
- index = Infinity;
|
||||
+ index = Services.prefs.getBoolPref("zen.view.show-newtab-button-top") ? this._numVisiblePinTabsWithoutCollapsed : Infinity;
|
||||
- elementIndex = Infinity;
|
||||
+ elementIndex = Services.prefs.getBoolPref("zen.view.show-newtab-button-top") ? this._numVisiblePinTabsWithoutCollapsed : Infinity;
|
||||
if (
|
||||
!bulkOrderedOpen &&
|
||||
((openerTab &&
|
||||
@@ -3935,7 +4053,7 @@
|
||||
@@ -3905,7 +4008,7 @@
|
||||
) {
|
||||
index = Infinity;
|
||||
elementIndex = Infinity;
|
||||
} else if (previousTab.visible) {
|
||||
- index = previousTab.elementIndex + 1;
|
||||
+ index = (typeof previousTab.elementIndex === 'undefined') ? index : (previousTab.elementIndex + 1);
|
||||
- elementIndex = previousTab.elementIndex + 1;
|
||||
+ elementIndex = (typeof previousTab.elementIndex === 'undefined') ? elementIndex : (previousTab.elementIndex + 1);
|
||||
} else if (previousTab == FirefoxViewHandler.tab) {
|
||||
index = 0;
|
||||
elementIndex = 0;
|
||||
}
|
||||
@@ -3958,18 +4076,18 @@
|
||||
|
||||
@@ -3933,14 +4036,14 @@
|
||||
}
|
||||
// Ensure index is within bounds.
|
||||
if (tab.pinned) {
|
||||
- index = Math.max(index, 0);
|
||||
|
@ -413,12 +406,16 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
} else {
|
||||
- index = Math.max(index, this.pinnedTabCount);
|
||||
+ index = Math.max(index, this._numVisiblePinTabsWithoutCollapsed);
|
||||
index = Math.min(index, this.tabContainer.ariaFocusableItems.length);
|
||||
index = Math.min(index, allItems.length);
|
||||
}
|
||||
|
||||
/** @type {MozTabbrowserTab|undefined} */
|
||||
- let itemAfter = this.tabContainer.ariaFocusableItems.at(index);
|
||||
+ let itemAfter = this.tabContainer.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).at(index);
|
||||
- let itemAfter = allItems.at(index);
|
||||
+ let itemAfter = gZenGlanceManager.getTabOrGlanceParent(allItems.at(index));
|
||||
|
||||
// Prevent a flash of unstyled content by setting up the tab content
|
||||
// and inherited attributes before appending it (see Bug 1592054):
|
||||
@@ -3948,7 +4051,7 @@
|
||||
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
|
||||
- if (tabGroup) {
|
||||
|
@ -426,17 +423,25 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
|
||||
// Place at the front of, or between tabs in, the same tab group
|
||||
this.tabContainer.insertBefore(tab, itemAfter);
|
||||
@@ -4290,6 +4408,9 @@
|
||||
@@ -3981,6 +4084,7 @@
|
||||
if (pinned) {
|
||||
this._updateTabBarForPinnedTabs();
|
||||
}
|
||||
+ gZenWorkspaces.fixTabInsertLocation(tab, itemAfter);
|
||||
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -4270,6 +4374,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
+ for (let tab of selectedTabs) {
|
||||
+ gZenPinnedTabManager._removePinnedAttributes(tab, true);
|
||||
+ }
|
||||
this.removeTabs(selectedTabs, { telemetrySource });
|
||||
this.removeTabs(selectedTabs, { isUserTriggered, telemetrySource });
|
||||
}
|
||||
|
||||
@@ -4542,6 +4663,7 @@
|
||||
@@ -4526,6 +4633,7 @@
|
||||
telemetrySource,
|
||||
} = {}
|
||||
) {
|
||||
|
@ -444,7 +449,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
||||
// can be considered equivalent to closing the window.
|
||||
if (
|
||||
@@ -4626,6 +4748,7 @@
|
||||
@@ -4615,6 +4723,7 @@
|
||||
if (lastToClose) {
|
||||
this.removeTab(lastToClose, aParams);
|
||||
}
|
||||
|
@ -452,7 +457,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
@@ -4663,6 +4786,12 @@
|
||||
@@ -4653,6 +4762,12 @@
|
||||
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
|
||||
}
|
||||
|
||||
|
@ -465,7 +470,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
// Handle requests for synchronously removing an already
|
||||
// asynchronously closing tab.
|
||||
if (!animate && aTab.closing) {
|
||||
@@ -4677,7 +4806,9 @@
|
||||
@@ -4667,7 +4782,9 @@
|
||||
// frame created for it (for example, by updating the visually selected
|
||||
// state).
|
||||
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
||||
|
@ -476,7 +481,15 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
if (
|
||||
!this._beginRemoveTab(aTab, {
|
||||
closeWindowFastpath: true,
|
||||
@@ -4840,7 +4971,7 @@
|
||||
@@ -4828,14 +4945,14 @@
|
||||
var newTab = false;
|
||||
if (
|
||||
aTab.visible &&
|
||||
- this.visibleTabs.length == 1 &&
|
||||
+ this.visibleTabs.length == 0 &&
|
||||
!this.tabsInCollapsedTabGroups.length
|
||||
) {
|
||||
closeWindow =
|
||||
closeWindowWithLastTab != null
|
||||
? closeWindowWithLastTab
|
||||
: !window.toolbar.visible ||
|
||||
|
@ -485,7 +498,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
|
||||
if (closeWindow) {
|
||||
// We've already called beforeunload on all the relevant tabs if we get here,
|
||||
@@ -4864,6 +4995,7 @@
|
||||
@@ -4859,6 +4976,7 @@
|
||||
|
||||
newTab = true;
|
||||
}
|
||||
|
@ -493,7 +506,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
aTab._endRemoveArgs = [closeWindow, newTab];
|
||||
|
||||
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
||||
@@ -4903,9 +5035,7 @@
|
||||
@@ -4899,9 +5017,7 @@
|
||||
aTab._mouseleave();
|
||||
|
||||
if (newTab) {
|
||||
|
@ -504,27 +517,15 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
} else {
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -5034,6 +5164,8 @@
|
||||
@@ -5035,6 +5151,7 @@
|
||||
this.tabs[i]._tPos = i;
|
||||
}
|
||||
|
||||
+ gZenWorkspaces.updateTabsContainers();
|
||||
+
|
||||
if (!this._windowIsClosing) {
|
||||
if (wasPinned) {
|
||||
this.tabContainer._positionPinnedTabs();
|
||||
@@ -5159,8 +5291,8 @@
|
||||
return closedCount;
|
||||
}
|
||||
|
||||
- async explicitUnloadTabs(tabs) {
|
||||
- let unloadBlocked = await this.runBeforeUnloadForTabs(tabs);
|
||||
+ async explicitUnloadTabs(tabs, skipPermitUnload = false) {
|
||||
+ let unloadBlocked = skipPermitUnload ? false : await this.runBeforeUnloadForTabs(tabs);
|
||||
if (unloadBlocked) {
|
||||
return;
|
||||
}
|
||||
@@ -5248,6 +5380,7 @@
|
||||
@@ -5249,6 +5366,7 @@
|
||||
}
|
||||
|
||||
let excludeTabs = new Set(aExcludeTabs);
|
||||
|
@ -532,7 +533,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
|
||||
// If this tab has a successor, it should be selectable, since
|
||||
// hiding or closing a tab removes that tab as a successor.
|
||||
@@ -5260,13 +5393,13 @@
|
||||
@@ -5261,13 +5379,13 @@
|
||||
!excludeTabs.has(aTab.owner) &&
|
||||
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
||||
) {
|
||||
|
@ -548,7 +549,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
);
|
||||
|
||||
let tab = this.tabContainer.findNextTab(aTab, {
|
||||
@@ -5282,7 +5415,7 @@
|
||||
@@ -5283,7 +5401,7 @@
|
||||
}
|
||||
|
||||
if (tab) {
|
||||
|
@ -557,7 +558,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
}
|
||||
|
||||
// If no qualifying visible tab was found, see if there is a tab in
|
||||
@@ -5303,7 +5436,7 @@
|
||||
@@ -5304,7 +5422,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -566,7 +567,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
}
|
||||
|
||||
_blurTab(aTab) {
|
||||
@@ -5704,10 +5837,10 @@
|
||||
@@ -5701,10 +5819,10 @@
|
||||
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
||||
}
|
||||
|
||||
|
@ -579,7 +580,16 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
aTab.selected ||
|
||||
aTab.closing ||
|
||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||
@@ -6001,7 +6134,7 @@
|
||||
@@ -5924,7 +6042,7 @@
|
||||
* `true` if element is a `<tab-group>`
|
||||
*/
|
||||
isTabGroup(element) {
|
||||
- return !!(element?.tagName == "tab-group");
|
||||
+ return !!(element?.tagName == "tab-group" || element?.tagName == "zen-folder");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -6001,7 +6119,7 @@
|
||||
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
if (this.isTab(element) && element.pinned) {
|
||||
|
@ -588,13 +598,13 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
} else {
|
||||
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
||||
}
|
||||
@@ -6027,10 +6160,16 @@
|
||||
@@ -6027,10 +6145,16 @@
|
||||
this.#handleTabMove(
|
||||
element,
|
||||
() => {
|
||||
- let neighbor = this.tabs[tabIndex];
|
||||
- if (forceUngrouped && neighbor.group) {
|
||||
+ let neighbor = gZenGlanceManager.getTabOrGlanceParent(this.tabs.filter(tab => !tab.hasAttribute("zen-glance-tab"))[tabIndex]);
|
||||
- if (forceUngrouped && neighbor?.group) {
|
||||
+ let neighbor = gZenGlanceManager.getTabOrGlanceParent(this.tabs[tabIndex]);
|
||||
+ if ((forceUngrouped && neighbor?.group) || neighbor?.group?.hasAttribute("split-view-group")) {
|
||||
neighbor = neighbor.group;
|
||||
}
|
||||
|
@ -607,7 +617,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
|
||||
neighbor.after(element);
|
||||
} else {
|
||||
@@ -6099,7 +6238,9 @@
|
||||
@@ -6099,17 +6223,29 @@
|
||||
targetElement = targetElement.group;
|
||||
}
|
||||
}
|
||||
|
@ -616,9 +626,17 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
+ element = element.group;
|
||||
+ }
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
if (element.pinned && !targetElement?.pinned) {
|
||||
targetElement = this.tabs[this.pinnedTabCount - 1];
|
||||
@@ -6109,7 +6250,14 @@
|
||||
- if (element.pinned && !targetElement?.pinned) {
|
||||
- targetElement = this.tabs[this.pinnedTabCount - 1];
|
||||
+ if (element.hasAttribute('zen-essential') && !targetElement?.hasAttribute('zen-essential')) {
|
||||
+ targetElement = this.tabs.filter(tab => !tab.hasAttribute('zen-glance-tab'))[this._numZenEssentials - 1];
|
||||
+ moveBefore = false;
|
||||
+ } else if (element.pinned && !targetElement?.pinned) {
|
||||
+ targetElement = this.tabs.filter(tab => !tab.hasAttribute('zen-glance-tab'))[this.pinnedTabCount - 1];
|
||||
moveBefore = false;
|
||||
} else if (!element.pinned && targetElement && targetElement.pinned) {
|
||||
- targetElement = this.tabs[this.pinnedTabCount];
|
||||
+ targetElement = this.tabs.filter(tab => !tab.hasAttribute('zen-glance-tab'))[this.pinnedTabCount];
|
||||
moveBefore = true;
|
||||
}
|
||||
|
||||
|
@ -633,7 +651,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
if (element.pinned && this.tabContainer.verticalMode) {
|
||||
return this.tabContainer.verticalPinnedTabsContainer;
|
||||
}
|
||||
@@ -6169,7 +6317,7 @@
|
||||
@@ -6169,7 +6305,7 @@
|
||||
if (!this.isTab(aTab)) {
|
||||
throw new Error("Can only move a tab into a tab group");
|
||||
}
|
||||
|
@ -642,7 +660,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
return;
|
||||
}
|
||||
if (aTab.group && aTab.group.id === aGroup.id) {
|
||||
@@ -6263,6 +6411,10 @@
|
||||
@@ -6263,6 +6399,10 @@
|
||||
|
||||
moveActionCallback();
|
||||
|
||||
|
@ -653,7 +671,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
// Clear tabs cache after moving nodes because the order of tabs may have
|
||||
// changed.
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
@@ -7080,7 +7232,7 @@
|
||||
@@ -7160,7 +7300,7 @@
|
||||
// preventDefault(). It will still raise the window if appropriate.
|
||||
break;
|
||||
}
|
||||
|
@ -662,7 +680,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
window.focus();
|
||||
aEvent.preventDefault();
|
||||
break;
|
||||
@@ -7981,6 +8133,7 @@
|
||||
@@ -8059,6 +8199,7 @@
|
||||
aWebProgress.isTopLevel
|
||||
) {
|
||||
this.mTab.setAttribute("busy", "true");
|
||||
|
@ -670,7 +688,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
gBrowser._tabAttrModified(this.mTab, ["busy"]);
|
||||
this.mTab._notselectedsinceload = !this.mTab.selected;
|
||||
}
|
||||
@@ -8954,7 +9107,7 @@ var TabContextMenu = {
|
||||
@@ -9022,7 +9163,7 @@ var TabContextMenu = {
|
||||
);
|
||||
contextUnpinSelectedTabs.hidden =
|
||||
!this.contextTab.pinned || !this.multiselected;
|
||||
|
@ -679,11 +697,11 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..5c49c43714b3914130f8d821d902f9f2
|
|||
// Move Tab items
|
||||
let contextMoveTabOptions = document.getElementById(
|
||||
"context_moveTabOptions"
|
||||
@@ -9223,6 +9376,7 @@ var TabContextMenu = {
|
||||
telemetrySource: gBrowser.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
||||
});
|
||||
@@ -9298,6 +9439,7 @@ var TabContextMenu = {
|
||||
)
|
||||
);
|
||||
} else {
|
||||
+ gZenPinnedTabManager._removePinnedAttributes(this.contextTab, true);
|
||||
gBrowser.removeTab(this.contextTab, {
|
||||
animate: true,
|
||||
telemetrySource: gBrowser.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
||||
...gBrowser.TabMetrics.userTriggeredContext(
|
||||
|
|
13
src/browser/components/tabbrowser/content/tabgroup-js.patch
Normal file
13
src/browser/components/tabbrowser/content/tabgroup-js.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
|
||||
index 6dc774ea335b0c5dba7dcf76cdb23728faae1343..b0b9ef236c2e8517db4bcf3270596456bbefe11d 100644
|
||||
--- a/browser/components/tabbrowser/content/tabgroup.js
|
||||
+++ b/browser/components/tabbrowser/content/tabgroup.js
|
||||
@@ -301,7 +301,7 @@
|
||||
*/
|
||||
addTabs(tabs, metricsContext) {
|
||||
for (let tab of tabs) {
|
||||
- if (tab.pinned) {
|
||||
+ if (tab.pinned !== this.pinned) {
|
||||
tab.ownerGlobal.gBrowser.unpinTab(tab);
|
||||
}
|
||||
let tabToMove =
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bffdf463489 100644
|
||||
index 67bba60cfc21b940f263e1eb26b8b5429355660f..9f73966429d8e82bb9ef0af73a996c8cff230eab 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -83,7 +83,7 @@
|
||||
|
@ -11,7 +11,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
}
|
||||
return true;
|
||||
};
|
||||
@@ -286,6 +286,7 @@
|
||||
@@ -293,6 +293,7 @@
|
||||
on_TabGroupCollapse(event) {
|
||||
this._invalidateCachedVisibleTabs();
|
||||
this._unlockTabSizing();
|
||||
|
@ -19,7 +19,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
|
||||
// If the user's selected tab is in the collapsing group, kick them off
|
||||
// the tab. If no tabs exist outside the group, create a new one and
|
||||
@@ -342,7 +343,7 @@
|
||||
@@ -349,7 +350,7 @@
|
||||
// and we're not hitting the scroll buttons.
|
||||
if (
|
||||
event.button != 0 ||
|
||||
|
@ -28,16 +28,16 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
event.composedTarget.localName == "toolbarbutton"
|
||||
) {
|
||||
return;
|
||||
@@ -692,7 +693,7 @@
|
||||
@@ -699,7 +700,7 @@
|
||||
if (this.#isContainerVerticalPinnedGrid(tab)) {
|
||||
// In expanded vertical mode, the max number of pinned tabs per row is dynamic
|
||||
// Set this before adjusting dragged tab's position
|
||||
- let pinnedTabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
|
||||
+ let pinnedTabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numZenEssentials);
|
||||
+ let pinnedTabs = this.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
|
||||
let tabsPerRow = 0;
|
||||
let position = 0;
|
||||
for (let pinnedTab of pinnedTabs) {
|
||||
@@ -764,7 +765,7 @@
|
||||
@@ -772,7 +773,7 @@
|
||||
} else if (isTabGroupLabel(tab) && !tab.group.collapsed) {
|
||||
this._lockTabSizing();
|
||||
this.#keepTabSizeLocked = true;
|
||||
|
@ -46,7 +46,16 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
expandGroupOnDrop = true;
|
||||
}
|
||||
}
|
||||
@@ -913,6 +914,10 @@
|
||||
@@ -871,7 +872,7 @@
|
||||
? event.screenY - window.screenY - tabOffset
|
||||
: event.screenY - window.screenY,
|
||||
scrollPos:
|
||||
- this.verticalMode && tab.pinned
|
||||
+ this.verticalMode && tab.pinned && false
|
||||
? this.verticalPinnedTabsContainer.scrollPosition
|
||||
: this.arrowScrollbox.scrollPosition,
|
||||
screenX: event.screenX,
|
||||
@@ -925,6 +926,10 @@
|
||||
}
|
||||
|
||||
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
||||
|
@ -57,7 +66,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
if (
|
||||
(effects == "move" || effects == "copy") &&
|
||||
document == draggedTab.ownerDocument &&
|
||||
@@ -1069,6 +1074,18 @@
|
||||
@@ -1081,6 +1086,18 @@
|
||||
|
||||
this._tabDropIndicator.hidden = true;
|
||||
event.stopPropagation();
|
||||
|
@ -76,32 +85,31 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
if (draggedTab && dropEffect == "copy") {
|
||||
let duplicatedDraggedTab;
|
||||
let duplicatedTabs = [];
|
||||
@@ -1108,10 +1125,11 @@
|
||||
@@ -1120,10 +1137,11 @@
|
||||
}
|
||||
} else {
|
||||
let isPinned = draggedTab.pinned;
|
||||
- let numPinned = gBrowser.pinnedTabCount;
|
||||
- let tabs = this.ariaFocusableItems.slice(
|
||||
- isPinned ? 0 : numPinned,
|
||||
- isPinned ? numPinned : undefined
|
||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||
+ let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(
|
||||
let tabs = this.ariaFocusableItems.slice(
|
||||
- isPinned ? 0 : numPinned,
|
||||
- isPinned ? numPinned : undefined
|
||||
+ isPinned ? (essential ? 0 : gBrowser._numZenEssentials) : numPinned,
|
||||
+ isPinned ? (essential ? gBrowser._numZenEssentials : numPinned) : undefined
|
||||
);
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
||||
@@ -1203,7 +1221,7 @@
|
||||
item.removeAttribute("tabdrop-samewindow");
|
||||
resolve();
|
||||
};
|
||||
- if (gReduceMotion) {
|
||||
+ if (true || gReduceMotion) {
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -1327,6 +1345,7 @@
|
||||
@@ -1172,7 +1190,7 @@
|
||||
(oldTranslateX && oldTranslateX != newTranslateX) ||
|
||||
(oldTranslateY && oldTranslateY != newTranslateY);
|
||||
} else if (this.verticalMode) {
|
||||
- shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY;
|
||||
+ shouldTranslate &&= oldTranslateY && oldTranslateY != newTranslateY && movingTabs.length === 1;
|
||||
} else {
|
||||
shouldTranslate &&= oldTranslateX && oldTranslateX != newTranslateX;
|
||||
}
|
||||
@@ -1341,6 +1359,7 @@
|
||||
|
||||
let nextItem = this.ariaFocusableItems[newIndex];
|
||||
let tabGroup = isTab(nextItem) && nextItem.group;
|
||||
|
@ -109,7 +117,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
gBrowser.loadTabs(urls, {
|
||||
inBackground,
|
||||
replace,
|
||||
@@ -1359,6 +1378,17 @@
|
||||
@@ -1373,6 +1392,17 @@
|
||||
|
||||
this.finishMoveTogetherSelectedTabs(draggedTab);
|
||||
this.finishAnimateTabMove();
|
||||
|
@ -127,7 +135,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
this.#expandGroupOnDrop(draggedTab);
|
||||
|
||||
if (
|
||||
@@ -1582,7 +1612,7 @@
|
||||
@@ -1601,7 +1631,7 @@
|
||||
}
|
||||
|
||||
get newTabButton() {
|
||||
|
@ -136,7 +144,15 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
}
|
||||
|
||||
get verticalMode() {
|
||||
@@ -1606,29 +1636,53 @@
|
||||
@@ -1617,6 +1647,7 @@
|
||||
}
|
||||
|
||||
get overflowing() {
|
||||
+ gZenWorkspaces.updateOverflowingTabs();
|
||||
return this.hasAttribute("overflow");
|
||||
}
|
||||
|
||||
@@ -1625,29 +1656,54 @@
|
||||
if (this.#allTabs) {
|
||||
return this.#allTabs;
|
||||
}
|
||||
|
@ -173,19 +189,20 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
...children,
|
||||
];
|
||||
+ const lastPinnedTabIdx = pinnedTabs.length - 1;
|
||||
+ for (let i = 0; i < allTabs.length; i++) {
|
||||
+ let i = 0;
|
||||
+ for (const tab of [...allTabs]) {
|
||||
+ // add glance tabs (tabs inside tabs) to the list
|
||||
+ const glanceTab = allTabs[i].glanceTab;
|
||||
+ const glanceTab = tab.glanceTab;
|
||||
+ if (glanceTab) {
|
||||
+ // insert right after the parent tab. note: it must be inserted before
|
||||
+ // the last pinned tab so it can be inserted in the correct order
|
||||
+ allTabs.splice(Math.max(i + 1, lastPinnedTabIdx), 0, glanceTab);
|
||||
+ i++;
|
||||
+ } else if (allTabs[i].classList.contains("vertical-pinned-tabs-container-separator")) {
|
||||
+ allTabs.splice(Math.max(i++ + 1, lastPinnedTabIdx), 0, glanceTab);
|
||||
+ } else if (tab.classList.contains("vertical-pinned-tabs-container-separator")) {
|
||||
+ // remove the separator from the list
|
||||
+ allTabs.splice(i, 1);
|
||||
+ i--;
|
||||
+ }
|
||||
+ i++;
|
||||
+ }
|
||||
+ this.#allTabs = allTabs;
|
||||
return this.#allTabs;
|
||||
|
@ -198,16 +215,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
}
|
||||
|
||||
/**
|
||||
@@ -1648,7 +1702,7 @@
|
||||
*/
|
||||
get visibleTabs() {
|
||||
if (!this.#visibleTabs) {
|
||||
- this.#visibleTabs = this.openTabs.filter(tab => tab.visible);
|
||||
+ this.#visibleTabs = this.openTabs.filter(tab => tab.visible && !tab.hasAttribute("zen-empty-tab"));
|
||||
}
|
||||
return this.#visibleTabs;
|
||||
}
|
||||
@@ -1683,36 +1737,40 @@
|
||||
@@ -1702,23 +1758,18 @@
|
||||
}
|
||||
|
||||
let elementIndex = 0;
|
||||
|
@ -235,21 +243,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
let visibleTabsInGroup = child.tabs.filter(tab => tab.visible);
|
||||
visibleTabsInGroup.forEach(tab => {
|
||||
tab.elementIndex = elementIndex++;
|
||||
});
|
||||
focusableItems.push(...visibleTabsInGroup);
|
||||
}
|
||||
+ for (let tab of child.tabs) {
|
||||
+ let glanceTab = tab.glanceTab;
|
||||
+ if (isTab(glanceTab)) {
|
||||
+ glanceTab.elementIndex = elementIndex - 1;
|
||||
+ focusableItems.push(glanceTab);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ let glanceTab = child.glanceTab;
|
||||
+ if (isTab(child) && glanceTab) {
|
||||
+ glanceTab.elementIndex = elementIndex - 1;
|
||||
+ focusableItems.push(glanceTab);
|
||||
@@ -1728,10 +1779,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -261,7 +255,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
|
||||
return this.#focusableItems;
|
||||
}
|
||||
@@ -1720,6 +1778,7 @@
|
||||
@@ -1739,6 +1787,7 @@
|
||||
_invalidateCachedTabs() {
|
||||
this.#allTabs = null;
|
||||
this._invalidateCachedVisibleTabs();
|
||||
|
@ -269,7 +263,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
}
|
||||
|
||||
_invalidateCachedVisibleTabs() {
|
||||
@@ -1734,8 +1793,8 @@
|
||||
@@ -1753,8 +1802,8 @@
|
||||
#isContainerVerticalPinnedGrid(tab) {
|
||||
return (
|
||||
this.verticalMode &&
|
||||
|
@ -280,7 +274,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
!this.expandOnHover
|
||||
);
|
||||
}
|
||||
@@ -1751,7 +1810,7 @@
|
||||
@@ -1770,7 +1819,7 @@
|
||||
|
||||
if (node == null) {
|
||||
// We have a container for non-tab elements at the end of the scrollbox.
|
||||
|
@ -289,7 +283,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
}
|
||||
|
||||
node.before(tab);
|
||||
@@ -1846,7 +1905,7 @@
|
||||
@@ -1865,7 +1914,7 @@
|
||||
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
|
||||
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
|
||||
// Attach the long click popup to all of them.
|
||||
|
@ -298,7 +292,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
const newTab2 = this.newTabButton;
|
||||
const newTabVertical = document.getElementById(
|
||||
"vertical-tabs-newtab-button"
|
||||
@@ -1941,10 +2000,12 @@
|
||||
@@ -1960,10 +2009,12 @@
|
||||
|
||||
_handleTabSelect(aInstant) {
|
||||
let selectedTab = this.selectedItem;
|
||||
|
@ -311,98 +305,53 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
selectedTab._notselectedsinceload = false;
|
||||
}
|
||||
|
||||
@@ -2085,16 +2146,15 @@
|
||||
// Move pinned tabs to another container when the tabstrip is toggled to vertical
|
||||
// and when session restore code calls _positionPinnedTabs; update styling whenever
|
||||
// the number of pinned tabs changes.
|
||||
- let verticalTabsContainer = document.getElementById(
|
||||
- "vertical-pinned-tabs-container"
|
||||
- );
|
||||
+ let verticalTabsContainer = this.verticalPinnedTabsContainer;
|
||||
let numPinned = gBrowser.pinnedTabCount;
|
||||
-
|
||||
- if (gBrowser.pinnedTabCount !== verticalTabsContainer.children.length) {
|
||||
- let tabs = this.visibleTabs;
|
||||
+ if (!gZenWorkspaces._hasInitializedTabsStrip) return;
|
||||
+ let count = gZenWorkspaces.makeSurePinTabIsInCorrectPosition();
|
||||
+ if (gBrowser.pinnedTabCount !== (verticalTabsContainer.children.length - count - 1 + gZenWorkspaces.getCurrentEssentialsContainer().children.length)) {
|
||||
+ let tabs = this.allTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
|
||||
for (let i = 0; i < numPinned; i++) {
|
||||
tabs[i].style.marginInlineStart = "";
|
||||
- verticalTabsContainer.appendChild(tabs[i]);
|
||||
+ tabs[i].hasAttribute("zen-essential") ? gZenWorkspaces.getCurrentEssentialsContainer().appendChild(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i]) : verticalTabsContainer.insertBefore(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i], verticalTabsContainer.lastChild);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2102,9 +2162,7 @@
|
||||
}
|
||||
|
||||
_resetVerticalPinnedTabs() {
|
||||
- let verticalTabsContainer = document.getElementById(
|
||||
- "vertical-pinned-tabs-container"
|
||||
- );
|
||||
+ let verticalTabsContainer = this.verticalPinnedTabsContainer;
|
||||
|
||||
if (!verticalTabsContainer.children.length) {
|
||||
return;
|
||||
@@ -2117,7 +2175,7 @@
|
||||
@@ -2136,6 +2187,7 @@
|
||||
}
|
||||
|
||||
_positionPinnedTabs() {
|
||||
- let tabs = this.visibleTabs;
|
||||
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
|
||||
+ if (true) return;
|
||||
let tabs = this.visibleTabs;
|
||||
let numPinned = gBrowser.pinnedTabCount;
|
||||
let absPositionHorizontalTabs =
|
||||
this.overflowing && tabs.length > numPinned && numPinned > 0;
|
||||
@@ -2127,7 +2185,7 @@
|
||||
|
||||
if (this.verticalMode) {
|
||||
this._updateVerticalPinnedTabs();
|
||||
- } else if (absPositionHorizontalTabs) {
|
||||
+ } else if (absPositionHorizontalTabs && false) {
|
||||
let layoutData = this._pinnedTabsLayoutCache;
|
||||
let uiDensity = document.documentElement.getAttribute("uidensity");
|
||||
if (!layoutData || layoutData.uiDensity != uiDensity) {
|
||||
@@ -2191,7 +2249,7 @@
|
||||
@@ -2210,7 +2262,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- let tabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
|
||||
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numZenEssentials);
|
||||
+ let tabs = this.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
|
||||
|
||||
let directionX = screenX > dragData.animLastScreenX;
|
||||
let directionY = screenY > dragData.animLastScreenY;
|
||||
@@ -2199,7 +2257,7 @@
|
||||
dragData.animLastScreenX = screenX;
|
||||
@@ -2219,6 +2271,8 @@
|
||||
|
||||
let { width: tabWidth, height: tabHeight } =
|
||||
- draggedTab.getBoundingClientRect();
|
||||
+ (draggedTab.group?.hasAttribute("split-view-group") ? draggedTab.group : draggedTab).getBoundingClientRect();
|
||||
draggedTab.getBoundingClientRect();
|
||||
+ tabWidth += 4; // Add 4px to account for the gap
|
||||
+ tabHeight += 4;
|
||||
let shiftSizeX = tabWidth * movingTabs.length;
|
||||
let shiftSizeY = tabHeight;
|
||||
dragData.tabWidth = tabWidth;
|
||||
@@ -2262,7 +2320,7 @@
|
||||
// * We're doing a binary search in order to reduce the amount of
|
||||
// tabs we need to check.
|
||||
|
||||
- tabs = tabs.filter(t => !movingTabs.includes(t) || t == draggedTab);
|
||||
+ tabs = tabs.filter(t => !movingTabs.includes(t) || t == draggedTab && !t.hasAttribute("zen-glance-tab"));
|
||||
let firstTabCenterX = firstMovingTabScreenX + translateX + tabWidth / 2;
|
||||
let lastTabCenterX = lastMovingTabScreenX + translateX + tabWidth / 2;
|
||||
let tabCenterX = directionX ? lastTabCenterX : firstTabCenterX;
|
||||
@@ -2374,12 +2432,16 @@
|
||||
@@ -2248,7 +2302,7 @@
|
||||
let translateX = screenX - dragData.screenX;
|
||||
let translateY = screenY - dragData.screenY;
|
||||
translateY +=
|
||||
- this.verticalPinnedTabsContainer.scrollPosition - dragData.scrollPos;
|
||||
+ dragData.scrollPos;
|
||||
let firstBoundX = firstTabInRow.screenX - firstMovingTabScreenX;
|
||||
let firstBoundY = firstTabInRow.screenY - firstMovingTabScreenY;
|
||||
let lastBoundX =
|
||||
@@ -2394,12 +2448,16 @@
|
||||
|
||||
this.#clearDragOverCreateGroupTimer();
|
||||
|
||||
- let isPinned = draggedTab.pinned;
|
||||
- let numPinned = gBrowser.pinnedTabCount;
|
||||
- let tabs = this.ariaFocusableItems.slice(
|
||||
- isPinned ? 0 : numPinned,
|
||||
- isPinned ? numPinned : undefined
|
||||
+ let isPinned = draggedTab?.group ? draggedTab.group.pinned : draggedTab.pinned;
|
||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||
+ let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(
|
||||
let tabs = this.ariaFocusableItems.slice(
|
||||
- isPinned ? 0 : numPinned,
|
||||
- isPinned ? numPinned : undefined
|
||||
+ isPinned ? (essential ? 0 : gBrowser._numZenEssentials) : numPinned,
|
||||
+ isPinned ? (essential ? gBrowser._numZenEssentials : numPinned) : undefined
|
||||
);
|
||||
|
@ -412,7 +361,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
|
||||
if (this.#rtlMode) {
|
||||
tabs.reverse();
|
||||
@@ -2393,7 +2455,7 @@
|
||||
@@ -2413,7 +2471,7 @@
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let translateAxis = this.verticalMode ? "translateY" : "translateX";
|
||||
let scrollDirection = this.verticalMode ? "scrollTop" : "scrollLeft";
|
||||
|
@ -421,7 +370,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
let translateX = event.screenX - dragData.screenX;
|
||||
let translateY = event.screenY - dragData.screenY;
|
||||
|
||||
@@ -2407,12 +2469,21 @@
|
||||
@@ -2427,12 +2485,21 @@
|
||||
let lastTab = tabs.at(-1);
|
||||
let lastMovingTab = movingTabs.at(-1);
|
||||
let firstMovingTab = movingTabs[0];
|
||||
|
@ -444,7 +393,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
translate +=
|
||||
this.arrowScrollbox.scrollbox[scrollDirection] - dragData.scrollPos;
|
||||
} else if (isPinned && this.verticalMode) {
|
||||
@@ -2431,12 +2502,15 @@
|
||||
@@ -2451,6 +2518,9 @@
|
||||
// Shift the `.tab-group-label-container` to shift the label element.
|
||||
item = item.parentElement;
|
||||
}
|
||||
|
@ -454,14 +403,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
item.style.transform = `${translateAxis}(${translate}px)`;
|
||||
}
|
||||
|
||||
dragData.translatePos = translate;
|
||||
|
||||
- tabs = tabs.filter(t => !movingTabs.includes(t) || t == draggedTab);
|
||||
+ tabs = tabs.filter(t => !movingTabs.includes(t) || t == draggedTab && !t.hasAttribute("zen-glance-tab"));
|
||||
|
||||
/**
|
||||
* When the `draggedTab` is just starting to move, the `draggedTab` is in
|
||||
@@ -2568,6 +2642,9 @@
|
||||
@@ -2588,6 +2658,9 @@
|
||||
break;
|
||||
}
|
||||
let element = tabs[mid];
|
||||
|
@ -471,20 +413,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
let elementForSize = isTabGroupLabel(element)
|
||||
? element.parentElement
|
||||
: element;
|
||||
@@ -2588,7 +2665,11 @@
|
||||
|
||||
let dropElement = getOverlappedElement();
|
||||
if (!dropElement) {
|
||||
- dropElement = this.ariaFocusableItems[oldDropElementIndex];
|
||||
+ dropElement = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab"))[oldDropElementIndex];
|
||||
+ }
|
||||
+ if (dropElement?.group?.hasAttribute("split-view-group")) {
|
||||
+ // We focus the group label element, not the group itself.
|
||||
+ dropElement = dropElement.group.labelElement;
|
||||
}
|
||||
let newDropElementIndex = dropElement
|
||||
? dropElement.elementIndex
|
||||
@@ -2598,7 +2679,7 @@
|
||||
@@ -2664,7 +2737,7 @@
|
||||
let shouldCreateGroupOnDrop;
|
||||
let dropBefore;
|
||||
if (dropElement) {
|
||||
|
@ -493,7 +422,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
? dropElement.parentElement
|
||||
: dropElement;
|
||||
|
||||
@@ -2660,12 +2741,12 @@
|
||||
@@ -2726,12 +2799,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -505,10 +434,19 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
// that dropping the tab(s) will create a new tab group.
|
||||
- shouldCreateGroupOnDrop =
|
||||
+ shouldCreateGroupOnDrop = false &&
|
||||
dropElement != draggedTab &&
|
||||
isTab(dropElement) &&
|
||||
!dropElement?.group &&
|
||||
@@ -2735,7 +2816,7 @@
|
||||
overlapPercent > dragOverGroupingThreshold;
|
||||
@@ -2773,7 +2846,7 @@
|
||||
// Dropping right before the tab group.
|
||||
dropElement = dropElementGroup;
|
||||
colorCode = undefined;
|
||||
- } else if (dropElementGroup.collapsed) {
|
||||
+ } else if (dropElement?.group?.hasAttribute("split-view-group")) {
|
||||
// Dropping right after the collapsed tab group.
|
||||
dropElement = dropElementGroup;
|
||||
colorCode = undefined;
|
||||
@@ -2803,7 +2876,7 @@
|
||||
// Shift background tabs to leave a gap where the dragged tab
|
||||
// would currently be dropped.
|
||||
for (let item of tabs) {
|
||||
|
@ -517,7 +455,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
continue;
|
||||
}
|
||||
|
||||
@@ -2744,6 +2825,9 @@
|
||||
@@ -2812,6 +2885,9 @@
|
||||
if (isTabGroupLabel(item)) {
|
||||
// Shift the `.tab-group-label-container` to shift the label element.
|
||||
item = item.parentElement;
|
||||
|
@ -527,7 +465,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
}
|
||||
item.style.transform = transform;
|
||||
}
|
||||
@@ -2796,8 +2880,9 @@
|
||||
@@ -2864,8 +2940,9 @@
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -539,7 +477,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
return;
|
||||
}
|
||||
|
||||
@@ -2809,6 +2894,12 @@
|
||||
@@ -2877,6 +2954,12 @@
|
||||
item = item.parentElement;
|
||||
}
|
||||
item.style.transform = "";
|
||||
|
@ -552,7 +490,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
item.removeAttribute("dragover-createGroup");
|
||||
}
|
||||
this.removeAttribute("movingtab-createGroup");
|
||||
@@ -2855,7 +2946,7 @@
|
||||
@@ -2923,7 +3006,7 @@
|
||||
let postTransitionCleanup = () => {
|
||||
movingTab._moveTogetherSelectedTabsData.animate = false;
|
||||
};
|
||||
|
@ -561,7 +499,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -3028,7 +3119,7 @@
|
||||
@@ -3096,7 +3179,7 @@
|
||||
}
|
||||
|
||||
_notifyBackgroundTab(aTab) {
|
||||
|
@ -570,7 +508,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..e8d5dc64609522b440fb01990fb19bff
|
|||
return;
|
||||
}
|
||||
|
||||
@@ -3154,6 +3245,9 @@
|
||||
@@ -3222,6 +3305,9 @@
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue