mirror of
https://github.com/zen-browser/desktop.git
synced 2025-10-09 11:26:44 +00:00
Compare commits
318 Commits
zen-settin
...
1.11.3b
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e04ec0a00b | ||
![]() |
0a61c26cc1 | ||
![]() |
ff35c58787 | ||
![]() |
0a464fa93a | ||
![]() |
a9958e88d0 | ||
![]() |
d3eb5907a4 | ||
![]() |
a2017cc4c7 | ||
![]() |
87124fdaf4 | ||
![]() |
394c2b54ce | ||
![]() |
7117f1ad62 | ||
![]() |
713e267c16 | ||
![]() |
3932ec21f5 | ||
![]() |
76dc50b052 | ||
![]() |
73749aa34c | ||
![]() |
897932f954 | ||
![]() |
5a2b469e8a | ||
![]() |
ad38e6c15e | ||
![]() |
f5c6fc13a8 | ||
![]() |
7c8625821a | ||
![]() |
8a696ad088 | ||
![]() |
3c1ca8b70f | ||
![]() |
87b0cee53a | ||
![]() |
a56aa7e308 | ||
![]() |
98220c5e74 | ||
![]() |
964c886fb6 | ||
![]() |
f6536aa1d2 | ||
![]() |
ec1c861b13 | ||
![]() |
ae07ed9445 | ||
![]() |
82b94db408 | ||
![]() |
54d716e4b6 | ||
![]() |
a0330465dd | ||
![]() |
af026cfe66 | ||
![]() |
b7d5f6655d | ||
![]() |
964dedba0f | ||
![]() |
f13537e812 | ||
![]() |
037f1bf09f | ||
![]() |
9ee4212060 | ||
![]() |
e3c60cb4d8 | ||
![]() |
6fa325065e | ||
![]() |
cc88c99c45 | ||
![]() |
9d36ed6b1b | ||
![]() |
a6b8843c5c | ||
![]() |
9cf4dbd710 | ||
![]() |
589335f665 | ||
![]() |
1a04cac47c | ||
![]() |
417c6d09bf | ||
![]() |
c36cb4a76a | ||
![]() |
e65b786b46 | ||
![]() |
713f1486c3 | ||
![]() |
a0d3447202 | ||
![]() |
286999599a | ||
![]() |
9b6fae2523 | ||
![]() |
c250279b46 | ||
![]() |
f687df335e | ||
![]() |
aeec7866b4 | ||
![]() |
b49c47516e | ||
![]() |
3bf854c6c3 | ||
![]() |
b55edb8ae9 | ||
![]() |
78bc66668c | ||
![]() |
f965abe7f1 | ||
![]() |
509cb2471d | ||
![]() |
3c273d817b | ||
![]() |
21817ca97a | ||
![]() |
b31e712d2c | ||
![]() |
8f1ee11ff2 | ||
![]() |
0cb80ace3f | ||
![]() |
295a2bb8b8 | ||
![]() |
dd6757be5b | ||
![]() |
e90e4b27a3 | ||
![]() |
2932ca6c2b | ||
![]() |
06a685fc31 | ||
![]() |
e06c20d2f6 | ||
![]() |
e5527cf825 | ||
![]() |
6864af1b2f | ||
![]() |
87ff59bfa7 | ||
![]() |
ecd407d924 | ||
![]() |
ce55e7eed5 | ||
![]() |
f9b3fed403 | ||
![]() |
484f77bffc | ||
![]() |
814e697675 | ||
![]() |
e469c04125 | ||
![]() |
a33e2cbd88 | ||
![]() |
4ecccd67bd | ||
![]() |
8af25b4c67 | ||
![]() |
d6c30caf1b | ||
![]() |
7025efa6f8 | ||
![]() |
d0877eb6bc | ||
![]() |
87c62b4319 | ||
![]() |
9d3382d773 | ||
![]() |
5333e92c42 | ||
![]() |
f2c6d0a6b9 | ||
![]() |
a7e217152b | ||
![]() |
91c993da13 | ||
![]() |
5e7423bdce | ||
![]() |
ba48e15f5f | ||
![]() |
4e407fb0b9 | ||
![]() |
5d1963e0ec | ||
![]() |
c9bb6b25e9 | ||
![]() |
3bf433992e | ||
![]() |
a3a82b9fe7 | ||
![]() |
513f04d41b | ||
![]() |
5b318a8aaf | ||
![]() |
c75de7a096 | ||
![]() |
2cd5140600 | ||
![]() |
eaca3d6cc8 | ||
![]() |
2ce89bf24b | ||
![]() |
97cbd76e8e | ||
![]() |
683bb7eb41 | ||
![]() |
8b0fd0af85 | ||
![]() |
80d177aa92 | ||
![]() |
dea4ccbe58 | ||
![]() |
d156d53307 | ||
![]() |
e1c6b720a4 | ||
![]() |
4033e5d966 | ||
![]() |
b677b9d46d | ||
![]() |
91494aaf1c | ||
![]() |
f1fd0521a3 | ||
![]() |
21e96c32ce | ||
![]() |
96db1ed6db | ||
![]() |
c996f4aab5 | ||
![]() |
eaf803fcc0 | ||
![]() |
b7e1e26c14 | ||
![]() |
f84e994b50 | ||
![]() |
5473afac23 | ||
![]() |
9762d74256 | ||
![]() |
abedfedac6 | ||
![]() |
cca5e22680 | ||
![]() |
69c406c3d6 | ||
![]() |
209428bdc7 | ||
![]() |
853811d387 | ||
![]() |
bb9711639c | ||
![]() |
8f571d5800 | ||
![]() |
f61bd68ad2 | ||
![]() |
a0f5101ac5 | ||
![]() |
6a14f85d22 | ||
![]() |
1e678008a2 | ||
![]() |
2bb183d675 | ||
![]() |
2a5c5e5d69 | ||
![]() |
0a51ad3725 | ||
![]() |
031926efb7 | ||
![]() |
ce8013124b | ||
![]() |
b40ab8a551 | ||
![]() |
b6d1ad3418 | ||
![]() |
3556c66435 | ||
![]() |
40813820da | ||
![]() |
aa673cc361 | ||
![]() |
b4269b9001 | ||
![]() |
dfc9119bbc | ||
![]() |
fea803d4ce | ||
![]() |
7507f72ac0 | ||
![]() |
2eb131fb0b | ||
![]() |
a9f9e0263e | ||
![]() |
200a721a61 | ||
![]() |
45284a3845 | ||
![]() |
32c56d718c | ||
![]() |
1f709f9350 | ||
![]() |
656f046efe | ||
![]() |
ddf4afdd78 | ||
![]() |
e699756093 | ||
![]() |
e180074022 | ||
![]() |
2010c3a5c7 | ||
![]() |
c10c8ac7a7 | ||
![]() |
40b80a21dd | ||
![]() |
5ef7690578 | ||
![]() |
7abae9d69e | ||
![]() |
16d125aa20 | ||
![]() |
006eb1b1e7 | ||
![]() |
12bdf7541f | ||
![]() |
b5abda5054 | ||
![]() |
baf2bc9527 | ||
![]() |
62db2aea7a | ||
![]() |
3e8402b686 | ||
![]() |
a3850551c5 | ||
![]() |
9147e46856 | ||
![]() |
e200b6080b | ||
![]() |
8391e6fc2f | ||
![]() |
fbaea7e419 | ||
![]() |
2d8687a853 | ||
![]() |
f8b6b05a25 | ||
![]() |
3f2334a3ad | ||
![]() |
d7cdfb2b5e | ||
![]() |
9bd7b5a900 | ||
![]() |
e6fad72a2a | ||
![]() |
eb8f8ee1da | ||
![]() |
7bec1c2025 | ||
![]() |
2408524660 | ||
![]() |
fd99c13ee7 | ||
![]() |
7dc45bb438 | ||
![]() |
a8ea2e6085 | ||
![]() |
7b18c40781 | ||
![]() |
923b049b85 | ||
![]() |
59b36847f6 | ||
![]() |
a78f8586f4 | ||
![]() |
14395263aa | ||
![]() |
60e96a73eb | ||
![]() |
35107c20cb | ||
![]() |
00d9b0ad55 | ||
![]() |
00d8f60a02 | ||
![]() |
0c6fe6f77c | ||
![]() |
2656f9e641 | ||
![]() |
da609c1747 | ||
![]() |
41752dcac5 | ||
![]() |
6a52500bd3 | ||
![]() |
ebd9419a94 | ||
![]() |
dac08aa448 | ||
![]() |
c60c9fbd30 | ||
![]() |
6f5671e41f | ||
![]() |
ad79b576a5 | ||
![]() |
e2b6884d46 | ||
![]() |
3e91ecb8d5 | ||
![]() |
f7678338bc | ||
![]() |
5462f035f8 | ||
![]() |
12edc9279c | ||
![]() |
b1ef2d237d | ||
![]() |
01b8628504 | ||
![]() |
3bb11e11c3 | ||
![]() |
bfae6d975c | ||
![]() |
aa4721428f | ||
![]() |
20cb086c76 | ||
![]() |
92de61442a | ||
![]() |
173242e2bb | ||
![]() |
1c1d4697e5 | ||
![]() |
d011bb9497 | ||
![]() |
e43f9729a7 | ||
![]() |
baafa12967 | ||
![]() |
c3e33fa7f3 | ||
![]() |
daf6d6aea8 | ||
![]() |
02c9ec67c0 | ||
![]() |
63d25a11ae | ||
![]() |
a4e703f2fd | ||
![]() |
360079d15e | ||
![]() |
1473675094 | ||
![]() |
a6e03680eb | ||
![]() |
c99d3d37db | ||
![]() |
b2fa05fa22 | ||
![]() |
77070be769 | ||
![]() |
3467e5070f | ||
![]() |
5fb8fe86de | ||
![]() |
afea93d327 | ||
![]() |
53ec2f15b6 | ||
![]() |
342186584e | ||
![]() |
bd5d3c00f1 | ||
![]() |
53eeb4e921 | ||
![]() |
f2909fb3bd | ||
![]() |
1039f1db38 | ||
![]() |
741ae9eb1e | ||
![]() |
76ff984b9c | ||
![]() |
f89478bf67 | ||
![]() |
f530c389a4 | ||
![]() |
a1ab0512b7 | ||
![]() |
3dad9896eb | ||
![]() |
ff9b0c79c0 | ||
![]() |
19ed3fb303 | ||
![]() |
09dd3c94c1 | ||
![]() |
e79afc87ca | ||
![]() |
f3ff74b0df | ||
![]() |
569ee488f5 | ||
![]() |
68ebe2d503 | ||
![]() |
8939e889f0 | ||
![]() |
796a52625e | ||
![]() |
0fbc5178f6 | ||
![]() |
d1505287b2 | ||
![]() |
8959adf9e0 | ||
![]() |
5961462cd7 | ||
![]() |
af0eeb710e | ||
![]() |
75a75d78ec | ||
![]() |
ddd8eb6da4 | ||
![]() |
d9d8437b6d | ||
![]() |
c2f2a589ed | ||
![]() |
c3d09c486c | ||
![]() |
897e817f3c | ||
![]() |
491234b310 | ||
![]() |
408206ace3 | ||
![]() |
4ec493950c | ||
![]() |
4f140893c9 | ||
![]() |
9c7c44cb49 | ||
![]() |
ba89f392d6 | ||
![]() |
04308fbaea | ||
![]() |
5d1021350d | ||
![]() |
800dae11e8 | ||
![]() |
ba5f816772 | ||
![]() |
1651956cbd | ||
![]() |
4a9967b8d0 | ||
![]() |
109eb96c08 | ||
![]() |
5d0807de4c | ||
![]() |
2d7832b132 | ||
![]() |
a7e2a05d80 | ||
![]() |
d36ce36235 | ||
![]() |
34c78dff52 | ||
![]() |
bd8a2fb287 | ||
![]() |
38770d9393 | ||
![]() |
c65e747dd2 | ||
![]() |
53f2baf52b | ||
![]() |
5b9be518b8 | ||
![]() |
e0de3b410b | ||
![]() |
2b1f2fe019 | ||
![]() |
37b5ab916c | ||
![]() |
af261e126a | ||
![]() |
2cbec90c96 | ||
![]() |
01c5bd61ef | ||
![]() |
e01291afd6 | ||
![]() |
a53b3130c8 | ||
![]() |
dea4818128 | ||
![]() |
2609248564 | ||
![]() |
5749879c1c | ||
![]() |
1f3b3f15ab | ||
![]() |
09c0f5143d | ||
![]() |
025f994c62 | ||
![]() |
ad04961d19 | ||
![]() |
b5c5bd5980 | ||
![]() |
bfe83dd653 | ||
![]() |
d808e72d2a | ||
![]() |
02a860ba19 | ||
![]() |
8902f3202e | ||
![]() |
c17779b6d4 | ||
![]() |
7f6c5f7211 | ||
![]() |
45f49738f3 | ||
![]() |
cf0662d0a4 |
48
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
48
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -6,7 +6,8 @@ body:
|
||||
value: |
|
||||
Thank you for filing a bug report!
|
||||
|
||||
## Important
|
||||
## 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.
|
||||
@@ -20,6 +21,10 @@ body:
|
||||
- label: I have read the instructions.
|
||||
- label: I have searched existing issues and avoided creating duplicates.
|
||||
- label: I am not filing an enhancement request.
|
||||
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
||||
- label: I have checked that this issue can be reproduced once I removed all my Mods and Custom CSS.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
@@ -28,19 +33,12 @@ body:
|
||||
placeholder: Tell us what you see!
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: firefox
|
||||
attributes:
|
||||
label: Reproducible?
|
||||
description: Is this issue reproducible on Firefox?
|
||||
options:
|
||||
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of our software are you running? Please do not use "latest" or "newest" as version numbers. Go to `Help -> About Zen` to find the version number.
|
||||
placeholder: 1.0.0
|
||||
placeholder: 1.0.0b
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
@@ -54,10 +52,40 @@ body:
|
||||
- Linux (Tarball)
|
||||
- macOS - aarch64
|
||||
- macOS - Intel
|
||||
- Windows
|
||||
- Windows - x64
|
||||
- Windows - aarch64
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: component
|
||||
attributes:
|
||||
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
|
||||
- Sync
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
|
58
.github/advanced-issue-labeler.yml
vendored
Normal file
58
.github/advanced-issue-labeler.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
policy:
|
||||
- section:
|
||||
- id: [component]
|
||||
label:
|
||||
# Make sure it's in sync with the dropdown in the issue template
|
||||
- name: 'component: sync'
|
||||
keys: ['Sync']
|
||||
- name: 'component: compact-mode'
|
||||
keys: ['Compact Mode']
|
||||
- name: 'component: workspaces'
|
||||
keys: ['Workspaces']
|
||||
- name: 'component: mods-themes'
|
||||
keys: ['Mods / Themes']
|
||||
- name: 'component: bookmarks'
|
||||
keys: ['Bookmarks']
|
||||
- name: 'component: glance'
|
||||
keys: ['Glance']
|
||||
- name: 'component: url-bar'
|
||||
keys: ['URL Bar']
|
||||
- name: 'component: tabs'
|
||||
keys: ['Tabs']
|
||||
- name: 'component: settings'
|
||||
keys: ['Settings']
|
||||
- name: 'component: privacy'
|
||||
keys: ['Privacy']
|
||||
- name: 'component: split-view'
|
||||
keys: ['Split View']
|
||||
- name: 'component: performance'
|
||||
keys: ['Performance']
|
||||
- name: 'component: media-controller'
|
||||
keys: ['Media Controler']
|
||||
- name: 'component: tab-unloading'
|
||||
keys: ['Tab unloading']
|
||||
- name: 'component: tab-folders'
|
||||
keys: ['Tab Folders']
|
||||
- name: 'component: keyboard-shortcuts'
|
||||
keys: ['Keyboard Shortcuts']
|
||||
- name: 'component: security'
|
||||
keys: ['Security']
|
||||
- name: 'component: extensions'
|
||||
keys: ['Extensions']
|
||||
- name: 'component: customizable-ui-toolbars'
|
||||
keys: ['Customizable UI / Toolbars']
|
||||
- name: 'component: localization'
|
||||
keys: ['Localization']
|
||||
- name: 'component: other'
|
||||
keys: ['Other']
|
||||
|
||||
- id: [platform]
|
||||
block-list: ['Other']
|
||||
label:
|
||||
# Make sure it's in sync with the dropdown in the issue template
|
||||
- name: 'platform: linux'
|
||||
keys: ['Linux (AppImage)', 'Linux (Flatpak)', 'Linux (Tarball)']
|
||||
- name: 'platform: macOS'
|
||||
keys: ['macOS - aarch64', 'macOS - Intel']
|
||||
- name: 'platform: windows'
|
||||
keys: ['Windows - x64', 'Windows - aarch64']
|
36
.github/workflows/build.yml
vendored
36
.github/workflows/build.yml
vendored
@@ -21,6 +21,11 @@ on:
|
||||
options:
|
||||
- 'release'
|
||||
- 'twilight'
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: 'boolean'
|
||||
default: false
|
||||
workflow_call:
|
||||
inputs:
|
||||
create_release:
|
||||
@@ -38,6 +43,11 @@ on:
|
||||
required: true
|
||||
default: 'release'
|
||||
type: 'string'
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: 'boolean'
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
debug-inputs:
|
||||
@@ -48,10 +58,10 @@ jobs:
|
||||
run: |
|
||||
echo "create_release: ${{ inputs.create_release }}"
|
||||
echo "update_version: ${{ inputs.update_version }}"
|
||||
echo "use sccache: ${{ inputs.use-sccache }}"
|
||||
echo "update_branch: ${{ inputs.update_branch }}"
|
||||
echo "GITHUB_REPOSITORY: ${{ github.repository }}"
|
||||
echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}"
|
||||
echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}"
|
||||
echo "GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}"
|
||||
|
||||
buildid:
|
||||
@@ -71,6 +81,7 @@ jobs:
|
||||
needs: debug-inputs
|
||||
steps:
|
||||
- name: Download aws-cli
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||
unzip awscliv2.zip
|
||||
@@ -283,6 +294,7 @@ jobs:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
with:
|
||||
use-sccache: ${{ inputs.use-sccache }}
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
generate-gpo: true
|
||||
profile-data-path-archive: zen-windows-profile-data-and-jarlog.zip
|
||||
@@ -313,6 +325,7 @@ jobs:
|
||||
generate-gpo: false
|
||||
release-branch: ${{ inputs.update_branch }}
|
||||
MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}}
|
||||
use-sccache: ${{ inputs.use-sccache }}
|
||||
|
||||
linux:
|
||||
name: Linux build
|
||||
@@ -325,6 +338,7 @@ jobs:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
release-branch: ${{ inputs.update_branch }}
|
||||
MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}}
|
||||
use-sccache: ${{ inputs.use-sccache }}
|
||||
|
||||
mac:
|
||||
name: macOS build
|
||||
@@ -337,6 +351,7 @@ jobs:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
release-branch: ${{ inputs.update_branch }}
|
||||
MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}}
|
||||
use-sccache: ${{ inputs.use-sccache }}
|
||||
|
||||
mac-uni:
|
||||
name: macOS build (Universal)
|
||||
@@ -386,23 +401,23 @@ jobs:
|
||||
set -eux
|
||||
export ARCH=${{ matrix.arch }}
|
||||
UPINFO="gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|desktop|latest|zen-$ARCH.AppImage.zsync"
|
||||
rm AppDir/.DirIcon || true
|
||||
cp configs/branding/${{ inputs.update_branch }}/logo128.png AppDir/usr/share/icons/hicolor/128x128/apps/zen.png
|
||||
cp configs/branding/${{ inputs.update_branch }}/logo128.png AppDir/zen.png && ln -s zen.png AppDir/.DirIcon
|
||||
rm build/AppDir/.DirIcon || true
|
||||
cp configs/branding/${{ inputs.update_branch }}/logo128.png build/AppDir/usr/share/icons/hicolor/128x128/apps/zen.png
|
||||
cp configs/branding/${{ inputs.update_branch }}/logo128.png build/AppDir/zen.png && ln -s zen.png build/AppDir/.DirIcon
|
||||
|
||||
if [ "${{ inputs.update_branch }}" = "twilight" ]; then
|
||||
sed -i -e 's/Name=Zen Browser/Name=Zen Twilight/g' AppDir/zen.desktop
|
||||
sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' AppDir/zen.desktop
|
||||
sed -i -e 's/Name=Zen Browser/Name=Zen Twilight/g' build/AppDir/zen.desktop
|
||||
sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' build/AppDir/zen.desktop
|
||||
fi
|
||||
|
||||
APPDIR=AppDir
|
||||
APPDIR=build/AppDir
|
||||
tar -xvf *.tar.* && rm -rf *.tar.*
|
||||
mv zen/* $APPDIR/
|
||||
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
|
||||
wget "https://github.com/VHSgunzo/uruntime/releases/latest/download/uruntime-appimage-squashfs-lite-$ARCH"
|
||||
chmod +x *.AppImage
|
||||
chmod +x ./uruntime-appimage-squashfs-lite-"$ARCH"
|
||||
chmod +x ./AppDir/AppRun
|
||||
chmod +x ./build/AppDir/AppRun
|
||||
|
||||
# keep the uruntime mountpoint (massively speeds up launch time)
|
||||
sed -i 's|URUNTIME_MOUNT=[0-9]|URUNTIME_MOUNT=0|' ./uruntime-appimage-squashfs-lite-"$ARCH"
|
||||
@@ -436,6 +451,7 @@ jobs:
|
||||
if: always()
|
||||
steps:
|
||||
- name: Download aws-cli
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||
unzip awscliv2.zip
|
||||
@@ -517,6 +533,8 @@ jobs:
|
||||
repository: ./updates-server
|
||||
|
||||
- name: Generate Release Notes
|
||||
env:
|
||||
RELEASE_BRANCH: ${{ inputs.update_branch }}
|
||||
run: bash .github/workflows/src/generate_release_notes.sh
|
||||
|
||||
# If we are on Twilight, we want to just update the Twilight tag's release
|
||||
@@ -689,7 +707,7 @@ jobs:
|
||||
--linux-archive zen.linux-x86_64.tar.xz \
|
||||
--linux-aarch64-archive zen.linux-aarch64.tar.xz \
|
||||
--output app.zen_browser.zen.yml \
|
||||
--template-root ./zen-browser/flatpak
|
||||
--template-root ./zen-browser/build/flatpak
|
||||
|
||||
- name: Commit changes
|
||||
run: |
|
||||
|
25
.github/workflows/clear-all-cache.yml
vendored
Normal file
25
.github/workflows/clear-all-cache.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: Cleanup cache
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
cleanup:
|
||||
runs-on: ubuntu-latest
|
||||
permissions: write-all
|
||||
steps:
|
||||
- name: Cleanup
|
||||
run: |
|
||||
echo "Fetching list of cache key"
|
||||
cacheKeysForPR=$(gh cache list --limit 1000 --json id --jq '.[].id')
|
||||
|
||||
## Setting this to not fail the workflow while deleting cache keys.
|
||||
set +e
|
||||
echo "Deleting caches..."
|
||||
for cacheKey in $cacheKeysForPR
|
||||
do
|
||||
gh cache delete $cacheKey
|
||||
done
|
||||
echo "Done"
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
GH_REPO: ${{ github.repository }}
|
33
.github/workflows/clear-cache.yml
vendored
33
.github/workflows/clear-cache.yml
vendored
@@ -1,33 +0,0 @@
|
||||
name: Clear cache
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
jobs:
|
||||
clear-cache:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Clear cache
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
console.log("About to clear")
|
||||
const caches = await github.rest.actions.getActionsCacheList({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
})
|
||||
|
||||
for (const cache of caches.data.actions_caches) {
|
||||
console.log(cache)
|
||||
await github.rest.actions.deleteActionsCacheById({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
cache_id: cache.id,
|
||||
})
|
||||
}
|
||||
|
||||
console.log("Clear completed")
|
34
.github/workflows/issue-labeler.yml
vendored
Normal file
34
.github/workflows/issue-labeler.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Issue labeler
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
label-component:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
# required for all workflows
|
||||
issues: write
|
||||
|
||||
# only required for workflows in private repositories
|
||||
actions: read
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Parse issue form
|
||||
uses: stefanbuck/github-issue-parser@v3
|
||||
id: issue-parser
|
||||
with:
|
||||
template-path: .github/ISSUE_TEMPLATE/bug_report.yml
|
||||
|
||||
- name: Set labels based on animals field
|
||||
uses: redhat-plumbers-in-action/advanced-issue-labeler@v2
|
||||
with:
|
||||
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
12
.github/workflows/linux-release-build.yml
vendored
12
.github/workflows/linux-release-build.yml
vendored
@@ -15,6 +15,11 @@ on:
|
||||
type: string
|
||||
required: true
|
||||
default: ''
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
build-linux:
|
||||
@@ -27,9 +32,9 @@ jobs:
|
||||
matrix:
|
||||
arch: [x86_64, aarch64]
|
||||
env:
|
||||
SCCACHE_GHA_ENABLED: 'true'
|
||||
SCCACHE_GHA_ENABLED: ${{ inputs.use-sccache && 'true' || 'false' }}
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTC_WRAPPER: 'sccache'
|
||||
RUSTC_WRAPPER: ${{ inputs.use-sccache && 'sccache' || '' }}
|
||||
CARGO_INCREMENTAL: 0
|
||||
name: Build Linux - ${{ matrix.arch }}
|
||||
|
||||
@@ -56,6 +61,7 @@ jobs:
|
||||
|
||||
- name: Run sccache-cache
|
||||
uses: mozilla-actions/sccache-action@main
|
||||
if: ${{ inputs.use-sccache }}
|
||||
with:
|
||||
disable_annotations: true
|
||||
|
||||
@@ -91,7 +97,7 @@ jobs:
|
||||
- name: Fix Rust version
|
||||
run: |
|
||||
# Install a rust version compatible with LLVM 18
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain)
|
||||
source $HOME/.cargo/env
|
||||
|
||||
if test "${{ matrix.arch }}" = "aarch64"; then
|
||||
|
12
.github/workflows/macos-release-build.yml
vendored
12
.github/workflows/macos-release-build.yml
vendored
@@ -15,6 +15,11 @@ on:
|
||||
type: string
|
||||
required: true
|
||||
default: ''
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
mac-build:
|
||||
@@ -26,9 +31,9 @@ jobs:
|
||||
matrix:
|
||||
arch: [x86_64, aarch64]
|
||||
env:
|
||||
SCCACHE_GHA_ENABLED: 'true'
|
||||
SCCACHE_GHA_ENABLED: ${{ inputs.use-sccache && 'true' || 'false' }}
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTC_WRAPPER: 'sccache'
|
||||
RUSTC_WRAPPER: ${{ inputs.use-sccache && 'sccache' || '' }}
|
||||
CARGO_INCREMENTAL: 0
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
@@ -44,6 +49,7 @@ jobs:
|
||||
|
||||
- name: Run sccache-cache
|
||||
uses: mozilla-actions/sccache-action@main
|
||||
if: ${{ inputs.use-sccache }}
|
||||
with:
|
||||
disable_annotations: true
|
||||
|
||||
@@ -82,7 +88,7 @@ jobs:
|
||||
|
||||
brew install watchman
|
||||
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain)
|
||||
source $HOME/.cargo/env
|
||||
|
||||
if test "${{ matrix.arch }}" = "aarch64"; then
|
||||
|
@@ -10,6 +10,11 @@ on:
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
twilight-release-schedule:
|
||||
@@ -20,6 +25,7 @@ jobs:
|
||||
with:
|
||||
create_release: ${{ github.event_name != 'workflow_dispatch' && true || inputs.create_release }}
|
||||
update_branch: twilight
|
||||
use-sccache: ${{ github.event_name != 'workflow_dispatch' && false || inputs.use-sccache }}
|
||||
update_version: false
|
||||
|
||||
post-build:
|
||||
|
6
.github/workflows/windows-profile-build.yml
vendored
6
.github/workflows/windows-profile-build.yml
vendored
@@ -90,15 +90,9 @@ jobs:
|
||||
echo "cd $workspace_dir" '' >> mozilla-build-run.sh
|
||||
echo 'export PATH=/c/mozilla-build/msys2/usr/bin:$PATH' '' >> mozilla-build-run.sh
|
||||
echo './mach --no-interactive bootstrap --application-choice browser' '' >> mozilla-build-run.sh
|
||||
echo 'ls /c/Users/runneradmin/.mozbuild/clang/bin' '' >> mozilla-build-run.sh
|
||||
echo 'LLVM_PROFDATA=/c/Users/runneradmin/.mozbuild/clang/bin/llvm-profdata.exe JARLOG_FILE=en-US.log ./mach python build/pgo/profileserver.py --binary /c/artifact/zen/zen.exe' '' >> mozilla-build-run.sh
|
||||
C:\mozilla-build\start-shell.bat $workspace_dir_current\mozilla-build-run.sh
|
||||
|
||||
- name: Debug session
|
||||
if: ${{ failure() }}
|
||||
uses: WarpBuilds/action-debugger@v1.3
|
||||
timeout-minutes: 15
|
||||
|
||||
- name: Move profile data
|
||||
if: ${{ matrix.arch == 'x86_64' }}
|
||||
run: |
|
||||
|
42
.github/workflows/windows-release-build.yml
vendored
42
.github/workflows/windows-release-build.yml
vendored
@@ -22,6 +22,11 @@ on:
|
||||
type: string
|
||||
required: true
|
||||
default: ''
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
windows-build:
|
||||
@@ -29,9 +34,9 @@ jobs:
|
||||
# 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' }}
|
||||
env:
|
||||
SCCACHE_GHA_ENABLED: 'true'
|
||||
SCCACHE_GHA_ENABLED: ${{ inputs.use-sccache && 'true' || 'false' }}
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTC_WRAPPER: 'sccache'
|
||||
RUSTC_WRAPPER: ${{ inputs.use-sccache && 'sccache' || '' }}
|
||||
CARGO_INCREMENTAL: 0
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -62,6 +67,7 @@ jobs:
|
||||
|
||||
- name: Run sccache-cache
|
||||
uses: mozilla-actions/sccache-action@main
|
||||
if: ${{ inputs.use-sccache }}
|
||||
with:
|
||||
disable_annotations: true
|
||||
|
||||
@@ -150,7 +156,7 @@ jobs:
|
||||
aria2
|
||||
echo Setup wine
|
||||
aria2c "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/gecko.cache.level-1.toolchains.v3.linux64-wine.latest/artifacts/public%2Fbuild%2Fwine.tar.zst" -o wine.tar.zst
|
||||
tar --zstd -xvf wine.tar.zst -C ~/win-cross
|
||||
tar --zstd -xf wine.tar.zst -C ~/win-cross
|
||||
rm wine.tar.zst
|
||||
echo Setup Visual Studio
|
||||
./mach python --virtualenv build taskcluster/scripts/misc/get_vs.py build/vs/vs2022.yaml ~/win-cross/vs2022
|
||||
@@ -176,14 +182,14 @@ jobs:
|
||||
- name: Setup Rust
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
run: |
|
||||
cd engine/
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.81
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain)
|
||||
source $HOME/.cargo/env
|
||||
if test "${{ matrix.arch }}" = "aarch64"; then
|
||||
rustup target add aarch64-pc-windows-msvc
|
||||
else
|
||||
rustup target add x86_64-pc-windows-msvc
|
||||
fi
|
||||
cd engine/
|
||||
cargo install cargo-download --locked
|
||||
cargo download -x windows=0.58.0
|
||||
export CARGO_INCREMENTAL=0
|
||||
@@ -249,11 +255,6 @@ jobs:
|
||||
ls ./dist
|
||||
ls .
|
||||
|
||||
- name: Debug session
|
||||
if: ${{ failure() }}
|
||||
uses: WarpBuilds/action-debugger@v1.3
|
||||
timeout-minutes: 15
|
||||
|
||||
- name: Move package for PGO upload
|
||||
if: ${{ inputs.generate-gpo && matrix.arch == 'x86_64' }}
|
||||
run: |
|
||||
@@ -279,21 +280,24 @@ jobs:
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
run: |
|
||||
set -x
|
||||
if test "${{ matrix.arch }}" = "aarch64"; then
|
||||
find engine/obj-aarch64-pc-windows-msvc/ -mindepth 1 -maxdepth 1 -type d -not -name 'dist' -exec rm -rf {} \;
|
||||
find engine/obj-aarch64-pc-windows-msvc/ -mindepth 1 -maxdepth 1 -type f -not -name 'dist' -exec rm -f {} \;
|
||||
else
|
||||
find engine/obj-x86_64-pc-windows-msvc/ -mindepth 1 -maxdepth 1 -type d -not -name 'dist' -exec rm -rf {} \;
|
||||
find engine/obj-x86_64-pc-windows-msvc/ -mindepth 1 -maxdepth 1 -type f -not -name 'dist' -exec rm -f {} \;
|
||||
fi
|
||||
mkdir obj-${{ matrix.arch }}-pc-windows-msvc/
|
||||
|
||||
rm -rf engine/obj-${{ matrix.arch }}-pc-windows-msvc/_tests
|
||||
rm -rf engine/obj-${{ matrix.arch }}-pc-windows-msvc/config/autoconf.mk
|
||||
rm -rf engine/obj-${{ matrix.arch }}-pc-windows-msvc/config.statusd/substs/
|
||||
rm -rf engine/obj-${{ matrix.arch }}-pc-windows-msvc/dist/install
|
||||
|
||||
find engine/obj-${{ matrix.arch }}-pc-windows-msvc/dist -maxdepth 1 -type f -name "*.zip" -delete
|
||||
|
||||
cp -r --no-dereference engine/obj-${{ matrix.arch }}-pc-windows-msvc/* obj-${{ matrix.arch }}-pc-windows-msvc/ || true
|
||||
|
||||
- name: Upload dist object
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
retention-days: 5
|
||||
retention-days: 2
|
||||
name: windows-x64-obj-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}
|
||||
path: engine/obj-${{ matrix.arch == 'aarch64' && 'aarch64' || 'x86_64' }}-pc-windows-msvc/
|
||||
path: obj-${{ matrix.arch }}-pc-windows-msvc
|
||||
|
||||
- name: Upload artifact (if Twilight branch, binary)
|
||||
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
|
||||
|
@@ -26,3 +26,5 @@ src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css
|
||||
src/browser/base/content/zen-styles/zen-compact-mode.css
|
||||
src/browser/base/zen-components/ZenEmojies.mjs
|
||||
build/codesign/codesign.bash
|
||||
|
||||
*.inc
|
||||
|
1
.rust-toolchain
Normal file
1
.rust-toolchain
Normal file
@@ -0,0 +1 @@
|
||||
1.82
|
@@ -6,7 +6,7 @@
|
||||
[](https://crowdin.com/project/zen-browser)
|
||||
[](https://github.com/zen-browser/desktop/actions/workflows/build.yml)
|
||||
|
||||
✨ Experience tranquillity while browsing the web without people tracking you! Zen is a privacy-focused browser that blocks trackers, ads, and other unwanted content while offering the best browsing experience!
|
||||
✨ Experience tranquillity while browsing the internet with Zen! Our mission is to give you a balance between speed, privacy and productivity!
|
||||
|
||||
<div flex="true">
|
||||
<a href="https://zen-browser.app/download">
|
||||
@@ -28,9 +28,9 @@
|
||||
|
||||
## 🖥️ Compatibility
|
||||
|
||||
Zen is currently built using Firefox version `136.0.1`! 🚀
|
||||
Zen is currently built using Firefox version `137.0.1`! 🚀
|
||||
|
||||
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 136.0`!
|
||||
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `137.0.1`!
|
||||
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
|
||||
- Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates!
|
||||
|
||||
|
1
build/firefox-cache/l10n-last-commit-hash
Normal file
1
build/firefox-cache/l10n-last-commit-hash
Normal file
@@ -0,0 +1 @@
|
||||
01c20afaa6fe914ff4f083689b8d234c1ba76961
|
@@ -28,7 +28,7 @@ finish-args:
|
||||
- --system-talk-name=org.freedesktop.NetworkManager
|
||||
- --talk-name=org.a11y.Bus
|
||||
- --env=GTK_PATH=/app/lib/gtkmodules
|
||||
- --env=MESA_SHADER_CACHE_DIR=$XDG_RUNTIME_DIR/app/$FLATPAK_ID/cache/mesa_shader_cache_db
|
||||
- --env=MESA_SHADER_CACHE_DIR=/var/cache/mesa_shader_cache_db
|
||||
modules:
|
||||
- name: zen_browser
|
||||
buildsystem: simple
|
||||
@@ -49,6 +49,12 @@ modules:
|
||||
strip-components: 0
|
||||
only-arches:
|
||||
- x86_64
|
||||
x-checker-data:
|
||||
type: json
|
||||
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
|
||||
version-query: .tag_name
|
||||
url-query: .assets[] | select(.name=="zen.linux-x86_64.tar.xz") | .browser_download_url
|
||||
is-main-source: true
|
||||
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.xz
|
||||
@@ -56,6 +62,12 @@ modules:
|
||||
strip-components: 0
|
||||
only-arches:
|
||||
- aarch64
|
||||
x-checker-data:
|
||||
type: json
|
||||
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
|
||||
version-query: .tag_name
|
||||
url-query: .assets[] | select(.name=="zen.linux-aarch64.tar.xz") | .browser_download_url
|
||||
is-main-source: true
|
||||
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar
|
7
build/winsign/bootstrap.ps1
Normal file
7
build/winsign/bootstrap.ps1
Normal file
@@ -0,0 +1,7 @@
|
||||
(New-Object System.Net.WebClient).DownloadFile("https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe", "C:\MozillaBuildSetup-Latest.exe")
|
||||
C:\MozillaBuildSetup-Latest.exe /S | out-null
|
||||
|
||||
rustup target add aarch64-pc-windows-msvc
|
||||
rustup target add x86_64-pc-windows-msvc
|
||||
|
||||
cp -r tests engine/browser/base/zen-components/
|
@@ -6,7 +6,7 @@ param(
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
echo "Preparing environment"
|
||||
git pull --recurse-submodules
|
||||
git pull --recurse
|
||||
mkdir windsign-temp -ErrorAction SilentlyContinue
|
||||
|
||||
# Download in parallel
|
||||
@@ -19,40 +19,140 @@ mkdir windsign-temp -ErrorAction SilentlyContinue
|
||||
# echo "Downloaded git objects repo to"
|
||||
#} -Verbose -ArgumentList $PWD -Debug
|
||||
|
||||
gh run download $GithubRunId --name windows-x64-obj-arm64 -D windsign-temp\windows-x64-obj-arm64
|
||||
echo "Downloaded arm64 artifacts"
|
||||
gh run download $GithubRunId --name windows-x64-obj-x86_64 -D windsign-temp\windows-x64-obj-x86_64
|
||||
echo "Downloaded x86_64 artifacts"
|
||||
Start-Job -Name "DownloadGitl10n" -ScriptBlock {
|
||||
param($PWD)
|
||||
cd $PWD
|
||||
$env:ZEN_L10N_CURR_DIR=[regex]::replace($PWD, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\", "/"
|
||||
C:\mozilla-build\start-shell.bat $PWD\scripts\download-language-packs.sh
|
||||
echo "Fetched l10n and firefox's one"
|
||||
} -Verbose -ArgumentList $PWD -Debug
|
||||
|
||||
Start-Job -Name "SurferInit" -ScriptBlock {
|
||||
param($PWD)
|
||||
cd $PWD
|
||||
surfer -- ci --brand release
|
||||
npm run import -- --verbose
|
||||
} -Verbose -ArgumentList $PWD -Debug
|
||||
|
||||
#Wait-Job -Name "DownloadGitObjectsRepo"
|
||||
echo "Downloading artifacts info"
|
||||
$artifactsInfo=gh api repos/zen-browser/desktop/actions/runs/$GithubRunId/artifacts
|
||||
$token = gh auth token
|
||||
|
||||
function New-TemporaryDirectory {
|
||||
$tmp = [System.IO.Path]::GetTempPath() # Not $env:TEMP, see https://stackoverflow.com/a/946017
|
||||
$name = (New-Guid).ToString("N")
|
||||
New-Item -ItemType Directory -Path (Join-Path $tmp $name)
|
||||
}
|
||||
|
||||
function DownloadFile($url, $targetFile) {
|
||||
$uri = New-Object "System.Uri" "$url"
|
||||
$request = [System.Net.HttpWebRequest]::Create($uri)
|
||||
$request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
|
||||
$request.Headers.Add("Authorization", "Bearer $token")
|
||||
$request.set_Timeout(15000) #15 second timeout
|
||||
$response = $request.GetResponse()
|
||||
$totalLength = [System.Math]::Floor($response.get_ContentLength()/1024)
|
||||
$responseStream = $response.GetResponseStream()
|
||||
$targetStream = New-Object -TypeName System.IO.FileStream -ArgumentList $targetFile, Create
|
||||
$buffer = new-object byte[] 10KB
|
||||
$count = $responseStream.Read($buffer,0,$buffer.length)
|
||||
$downloadedBytes = $count
|
||||
|
||||
while ($count -gt 0) {
|
||||
$targetStream.Write($buffer, 0, $count)
|
||||
$count = $responseStream.Read($buffer,0,$buffer.length)
|
||||
$downloadedBytes = $downloadedBytes + $count
|
||||
Write-Progress -activity "Downloading file '$($url.split('/') | Select -Last 1)'" -status "Downloaded ($([System.Math]::Floor($downloadedBytes/1024))K of $($totalLength)K): " -PercentComplete ((([System.Math]::Floor($downloadedBytes/1024)) / $totalLength) * 100)
|
||||
}
|
||||
|
||||
Write-Progress -activity "Finished downloading file '$($url.split('/') | Select -Last 1)'"
|
||||
|
||||
$targetStream.Flush()
|
||||
$targetStream.Close()
|
||||
$targetStream.Dispose()
|
||||
$responseStream.Dispose()
|
||||
}
|
||||
|
||||
function DownloadArtifacts($name) {
|
||||
echo "Downloading artifacts for $name"
|
||||
$artifactUrl=$($artifactsInfo | jq -r --arg NAME "windows-x64-obj-$name" '.artifacts[] | select(.name == $NAME) | .archive_download_url')
|
||||
echo "Artifact URL: $artifactUrl"
|
||||
|
||||
# download the artifact
|
||||
$outputPath="$PWD\windsign-temp\windows-x64-obj-$name"
|
||||
$tempDir = New-TemporaryDirectory
|
||||
$tempFile = Join-Path $tempDir "artifact-$($name).zip"
|
||||
|
||||
echo "Downloading artifact to $tempFile"
|
||||
DownloadFile $artifactUrl $tempFile
|
||||
|
||||
Start-Job -Name "UnzipArtifact$name" -ScriptBlock {
|
||||
param($tempFile, $outputPath)
|
||||
echo "Unzipping artifact to $outputPath"
|
||||
Expand-Archive -Path $tempFile -DestinationPath $outputPath -Force
|
||||
echo "Unzipped artifact to $outputPath"
|
||||
} -ArgumentList $tempFile, $outputPath -Verbose -Debug
|
||||
}
|
||||
|
||||
DownloadArtifacts arm64
|
||||
DownloadArtifacts x86_64
|
||||
|
||||
# Wait for the jobs to finish
|
||||
Wait-Job -Name "UnzipArtifactarm64"
|
||||
Wait-Job -Name "UnzipArtifactx86_64"
|
||||
|
||||
mkdir engine\obj-x86_64-pc-windows-msvc\ -ErrorAction SilentlyContinue
|
||||
|
||||
npm run surfer -- ci --brand release
|
||||
# Collect all .exe and .dll files into a list
|
||||
$files = Get-ChildItem windsign-temp\windows-x64-obj-x86_64\ -Recurse -Include *.exe
|
||||
$files += Get-ChildItem windsign-temp\windows-x64-obj-x86_64\ -Recurse -Include *.dll
|
||||
|
||||
$files += Get-ChildItem windsign-temp\windows-x64-obj-arm64\ -Recurse -Include *.exe
|
||||
$files += Get-ChildItem windsign-temp\windows-x64-obj-arm64\ -Recurse -Include *.dll
|
||||
|
||||
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files
|
||||
|
||||
$env:ZEN_RELEASE="true"
|
||||
$env:SURFER_SIGNING_MODE="true"
|
||||
Wait-Job -Name "SurferInit"
|
||||
Wait-Job -Name "DownloadGitl10n"
|
||||
|
||||
function SignAndPackage($name) {
|
||||
echo "Executing on $name"
|
||||
rmdir .\dist -Recurse -ErrorAction SilentlyContinue
|
||||
rmdir engine\obj-x86_64-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
|
||||
cp windsign-temp\windows-x64-obj-$name engine\obj-x86_64-pc-windows-msvc\ -Recurse
|
||||
echo "Signing $name"
|
||||
rmdir engine\obj-$name-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
|
||||
$objName=$name
|
||||
# instead of arm, use aarch64
|
||||
if ($name -eq "arm64") {
|
||||
$objName="aarch64"
|
||||
}
|
||||
|
||||
# Collect all .exe and .dll files into a list
|
||||
$files = Get-ChildItem engine\obj-x86_64-pc-windows-msvc\ -Recurse -Include *.exe
|
||||
$files += Get-ChildItem engine\obj-x86_64-pc-windows-msvc\ -Recurse -Include *.dll
|
||||
echo "Removing old obj dir"
|
||||
rmdir engine\obj-$objName-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
|
||||
|
||||
echo "Creating new obj dir"
|
||||
cp windsign-temp\windows-x64-obj-$name engine\obj-$objName-pc-windows-msvc\ -Recurse
|
||||
|
||||
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files
|
||||
echo "Packaging $name"
|
||||
$env:SURFER_SIGNING_MODE="sign"
|
||||
$env:MAR="$PWD\\build\\winsign\\mar.exe"
|
||||
echo "Copying setup.exe into obj dir"
|
||||
$env:ZEN_SETUP_EXE_PATH="$PWD\windsign-temp\windows-x64-obj-$name\browser\installer\windows\instgen\setup.exe"
|
||||
|
||||
$env:MAR="..\\build\\winsign\\mar.exe"
|
||||
if ($name -eq "arm64") {
|
||||
$env:SURFER_COMPAT="aarch64"
|
||||
} else {
|
||||
$env:SURFER_COMPAT="x86_64"
|
||||
}
|
||||
|
||||
echo "Compat Mode? $env:SURFER_COMPAT"
|
||||
|
||||
# Configure each time since we are cloning from a linux environment into
|
||||
# a windows environment, and the build system is not smart enough to detect that
|
||||
# we are on a different platform.
|
||||
cd .\engine
|
||||
echo "Configuring for $name"
|
||||
.\mach configure
|
||||
cd ..
|
||||
|
||||
echo "Packaging $name"
|
||||
npm run package -- --verbose
|
||||
|
||||
# In the release script, we do the following:
|
||||
@@ -62,7 +162,6 @@ function SignAndPackage($name) {
|
||||
# - update_manifest/*
|
||||
# - windows.mar
|
||||
# - zen.installer.exe
|
||||
# - zen.win-x86_64.zip
|
||||
echo "Creating tar for $name"
|
||||
rm .\windsign-temp\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
|
||||
mkdir windsign-temp\windows-x64-signed-$name
|
||||
@@ -83,30 +182,13 @@ function SignAndPackage($name) {
|
||||
mv .\dist\zen.installer.exe windsign-temp\windows-x64-signed-$name\zen.installer.exe
|
||||
}
|
||||
|
||||
# Move the zip
|
||||
echo "Moving zip for $name"
|
||||
if ($name -eq "arm64") {
|
||||
mv (Get-Item .\dist\*.en-US.win64-aarch64.zip) windsign-temp\windows-x64-signed-$name\zen.win-arm64.zip
|
||||
} else {
|
||||
mv (Get-Item .\dist\*.en-US.win64.zip) windsign-temp\windows-x64-signed-$name\zen.win-$name.zip
|
||||
}
|
||||
|
||||
# Extract the zip, sign everything inside, and repackage it
|
||||
Expand-Archive -Path windsign-temp\windows-x64-signed-$name\zen.win-$name.zip -DestinationPath windsign-temp\windows-x64-signed-$name\zen.win-$name
|
||||
rm windsign-temp\windows-x64-signed-$name\zen.win-$name.zip
|
||||
$files = Get-ChildItem windsign-temp\windows-x64-signed-$name\zen.win-$name -Recurse -Include *.exe
|
||||
$files += Get-ChildItem windsign-temp\windows-x64-signed-$name\zen.win-$name -Recurse -Include *.dll
|
||||
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files
|
||||
Compress-Archive -Path windsign-temp\windows-x64-signed-$name\zen.win-$name -DestinationPath windsign-temp\windows-x64-signed-$name\zen.win-$name.zip
|
||||
rmdir windsign-temp\windows-x64-signed-$name\zen.win-$name -Recurse -ErrorAction SilentlyContinue
|
||||
|
||||
# Move the manifest
|
||||
mv .\dist\update\. windsign-temp\windows-x64-signed-$name\update_manifest
|
||||
|
||||
echo "Invoking tar for $name"
|
||||
# note: We need to sign it into a parent folder, called windows-x64-signed-$name
|
||||
rmdir .\windsign-temp\windows-binaries\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
|
||||
mv windsign-temp\windows-x64-signed-$name .\windsign-temp\windows-binaries -Force
|
||||
rmdir engine\obj-$objName-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
|
||||
|
||||
echo "Finished $name"
|
||||
}
|
||||
@@ -114,6 +196,9 @@ function SignAndPackage($name) {
|
||||
SignAndPackage arm64
|
||||
SignAndPackage x86_64
|
||||
|
||||
$files = Get-ChildItem .\windsign-temp\windows-binaries -Recurse -Include *.exe
|
||||
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files
|
||||
|
||||
echo "All artifacts signed and packaged, ready for release!"
|
||||
echo "Commiting the changes to the repository"
|
||||
cd windsign-temp\windows-binaries
|
||||
|
@@ -1,14 +1,12 @@
|
||||
# Browser branding
|
||||
ac_add_options --with-app-name=${binName}
|
||||
ac_add_options --with-app-basename=Zen
|
||||
ac_add_options --enable-official-branding
|
||||
|
||||
# Localization (Must be an absolute path)
|
||||
ac_add_options --with-l10n-base="${topsrcdir}/browser/locales"
|
||||
|
||||
export MOZ_USER_DIR="${name}"
|
||||
export MOZ_APP_BASENAME=Zen
|
||||
export MOZ_APP_PROFILE=${binName}
|
||||
export MOZ_BRANDING_DIRECTORY=${brandingDir}
|
||||
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
|
||||
|
||||
@@ -25,15 +23,19 @@ export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
|
||||
ac_add_options --enable-application=browser
|
||||
|
||||
if test -x "$(command -v sccache)"; then
|
||||
ac_add_options --with-ccache=sccache
|
||||
elif test -f "$HOME/.mozbuild/sccache/sccache"; then
|
||||
ac_add_options --with-ccache="$HOME"/.mozbuild/sccache/sccache
|
||||
# Anything except 'SCCACHE_GHA_ENABLED == false'
|
||||
if ! test "$SCCACHE_GHA_ENABLED" = "false"; then
|
||||
if test -x "$(command -v sccache)"; then
|
||||
ac_add_options --with-ccache=sccache
|
||||
elif test -f "$HOME/.mozbuild/sccache/sccache"; then
|
||||
ac_add_options --with-ccache="$HOME"/.mozbuild/sccache/sccache
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$ZEN_RELEASE"; then
|
||||
|
||||
ac_add_options --enable-clang-plugin
|
||||
# TODO: Make this successful in builds
|
||||
# ac_add_options --enable-clang-plugin
|
||||
ac_add_options --enable-bootstrap=-sccache
|
||||
|
||||
ac_add_options --enable-release
|
||||
|
@@ -20,7 +20,7 @@ if test "$SURFER_COMPAT" = "x86_64"; then
|
||||
fi
|
||||
|
||||
# Optimization flags for SURFER_COMPAT
|
||||
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize -Qvec -mfpmath=sse -mprfchw -msse3 -mcx16 -msahf"
|
||||
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize -mfpmath=sse -mprfchw -msse3 -mcx16 -msahf"
|
||||
|
||||
export LDFLAGS="$LDFLAGS -Wl,-O3"
|
||||
export RUSTFLAGS="$RUSTFLAGS -Clink-args=--icf=safe"
|
||||
|
@@ -4,7 +4,6 @@ ac_add_options --disable-dmd
|
||||
ac_add_options --enable-eme=widevine
|
||||
|
||||
export MOZ_MACBUNDLE_ID=${appId}
|
||||
export MOZ_MACBUNDLE_NAME="Zen Browser.app"
|
||||
|
||||
# override LTO settings
|
||||
# TODO: Dont use LTO for now, it's causing a lot of issues
|
||||
@@ -32,6 +31,7 @@ if test "$SURFER_COMPAT" = "x86_64"; then
|
||||
export LDFLAGS="-Wl,-O3 -march=nehalem"
|
||||
export RUSTFLAGS="-Ctarget-cpu=nehalem"
|
||||
else
|
||||
ac_add_options --enable-clang-plugin
|
||||
ac_add_options --target=aarch64-apple-darwin
|
||||
|
||||
ac_add_options --enable-optimize="-O3 -mcpu=apple-m1 -march=armv8.3-a+simd"
|
||||
|
@@ -25,14 +25,14 @@ fi
|
||||
ac_add_options --disable-maintenance-service
|
||||
ac_add_options --disable-bits-download
|
||||
|
||||
ac_add_options --disable-clang-plugin
|
||||
|
||||
if test "$SURFER_COMPAT" = "x86_64"; then
|
||||
|
||||
ac_add_options --target=x86_64-pc-windows-msvc
|
||||
ac_add_options --enable-eme=widevine,wmfcdm
|
||||
|
||||
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize -Qvec -mfpmath=sse -mprfchw -msse3 -mcx16 -msahf"
|
||||
# ac_add_options --disable-jemalloc
|
||||
|
||||
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize -mfpmath=sse -mprfchw -msse3 -mcx16 -msahf"
|
||||
|
||||
export LDFLAGS="-Wl,-O3"
|
||||
export RUSTFLAGS="-Clink-args=--icf=safe"
|
||||
|
912
docs/issue-metrics/2025_2025-03-01..2025-03-31.md
Normal file
912
docs/issue-metrics/2025_2025-03-01..2025-03-31.md
Normal file
@@ -0,0 +1,912 @@
|
||||
# Issue Metrics
|
||||
|
||||
| Metric | Average | Median | 90th percentile |
|
||||
| --- | --- | --- | ---: |
|
||||
| Time to first response | 6 days, 8:09:03 | 1 day, 14:52:55 | 21 days, 21:21:10 |
|
||||
| Time to close | 10 days, 5:20:59 | 8 days, 2:01:25 | 24 days, 0:21:04 |
|
||||
|
||||
| Metric | Count |
|
||||
| --- | ---: |
|
||||
| Number of items that remain open | 134 |
|
||||
| Number of items closed | 760 |
|
||||
| Total number of items created | 894 |
|
||||
|
||||
| Title | URL | Time to first response | Time to close |
|
||||
| --- | --- | --- | --- |
|
||||
| After the recent updates, web fonts are blurry | https://github.com/zen-browser/desktop/issues/7160 | 7:52:59 | 1 day, 11:16:02 |
|
||||
| [Twilight 1.10.3] Many context menus have too much transparency | https://github.com/zen-browser/desktop/issues/7159 | 0:22:16 | 1 day, 12:39:30 |
|
||||
| Zen crashes when trying to access chrome://browser/content/browser.xhtml | https://github.com/zen-browser/desktop/issues/7158 | None | None |
|
||||
| Open network login page | https://github.com/zen-browser/desktop/issues/7157 | None | None |
|
||||
| Enabling HDR Causes Visual Artifact on UI Elements | https://github.com/zen-browser/desktop/issues/7155 | 10:29:19 | None |
|
||||
| Pinterest opening and working weirdly | https://github.com/zen-browser/desktop/issues/7153 | 12:49:28 | None |
|
||||
| Blocking "Override keyboard shortcuts" permission disables delete and backspace keys | https://github.com/zen-browser/desktop/issues/7150 | None | None |
|
||||
| Hovering over tabs now displays an x to close them | https://github.com/zen-browser/desktop/issues/7149 | 18:04:00 | 21:59:51 |
|
||||
| Sorry for what? | https://github.com/zen-browser/desktop/issues/7146 | 0:45:11 | 3:22:37 |
|
||||
| Simple tab group is locked loading in a new window | https://github.com/zen-browser/desktop/issues/7145 | 1 day, 20:18:06 | None |
|
||||
| Authentication on sites via a certificate (such as a Smart Card) broken on macOS since 1.10b | https://github.com/zen-browser/desktop/issues/7144 | None | None |
|
||||
| Browser flickers when using mission control | https://github.com/zen-browser/desktop/issues/7143 | 1:08:33 | None |
|
||||
| Workspace icons automatically pinned on Toolbar when removed from Sidebar | https://github.com/zen-browser/desktop/issues/7140 | None | None |
|
||||
| Mac OS Browser thinks there's one more tab open than there actually is | https://github.com/zen-browser/desktop/issues/7139 | None | None |
|
||||
| When using split view in incognito window, zen crashes, freezes after opening new tab & close tab. | https://github.com/zen-browser/desktop/issues/7136 | 1 day, 22:54:48 | None |
|
||||
| Problem with Context Menu and Pop-ups: Can Only Close with Escape | https://github.com/zen-browser/desktop/issues/7135 | None | None |
|
||||
| websites not loading ! | https://github.com/zen-browser/desktop/issues/7134 | 6:12:15 | None |
|
||||
| Twilight build auto-switching url from one workspace to another causes Zen to break | https://github.com/zen-browser/desktop/issues/7133 | 3:02:54 | 15:26:16 |
|
||||
| Web fonts are blurry with zen.view.experimental-rounded-view or GTK CSD on linux | https://github.com/zen-browser/desktop/issues/7132 | 3:25:04 | None |
|
||||
| Renamed pinned tab changes title upon loading, when unloading title changes back to previously set name | https://github.com/zen-browser/desktop/issues/7131 | None | None |
|
||||
| Open in split window in split window undefined behaviour | https://github.com/zen-browser/desktop/issues/7130 | None | None |
|
||||
| Close buttons on Mac positioned wrong when sidebar is collapsed | https://github.com/zen-browser/desktop/issues/7129 | None | None |
|
||||
| Inconsistent behaviour of middle click and right click -> new tab | https://github.com/zen-browser/desktop/issues/7128 | None | None |
|
||||
| Zen displayed as "Unknown App" in windows system media player | https://github.com/zen-browser/desktop/issues/7123 | 0:14:54 | None |
|
||||
| Search shortcuts are hardly usable with new URL bar popover | https://github.com/zen-browser/desktop/issues/7122 | None | 0:04:44 |
|
||||
| Dragging link from tab to same workspace in different window causes container indicator to show up | https://github.com/zen-browser/desktop/issues/7120 | None | None |
|
||||
| Pinned tab separator inconsistent width | https://github.com/zen-browser/desktop/issues/7119 | None | None |
|
||||
| Inconsistent spacing in compact modes | https://github.com/zen-browser/desktop/issues/7118 | None | None |
|
||||
| Sidebar/Tab Bar navigation buttons overflow | https://github.com/zen-browser/desktop/issues/7117 | None | None |
|
||||
| No default favicon for sites without Favicon | https://github.com/zen-browser/desktop/issues/7116 | 2 days, 18:03:49 | 3 days, 12:16:53 |
|
||||
| Text in modals are blank | https://github.com/zen-browser/desktop/issues/7115 | None | None |
|
||||
| Automatically leaving meetings when expanding a glance tab containing the meeting | https://github.com/zen-browser/desktop/issues/7114 | None | None |
|
||||
| Right clicking on VSCode running via Github Codespaces does not trigger the typical menu and only shows "Paste" | https://github.com/zen-browser/desktop/issues/7113 | 0:16:40 | 0:16:40 |
|
||||
| Dragging a tab to the edge of the sidebar detaches the tab from cursor | https://github.com/zen-browser/desktop/issues/7112 | None | None |
|
||||
| RAM usage spike | https://github.com/zen-browser/desktop/issues/7111 | 0:49:18 | 0:49:18 |
|
||||
| Default Browser issue | https://github.com/zen-browser/desktop/issues/7110 | 2 days, 20:45:37 | None |
|
||||
| Several problem with patch notes tab after update | https://github.com/zen-browser/desktop/issues/7109 | None | None |
|
||||
| Glance opens new window instead of glance | https://github.com/zen-browser/desktop/issues/7108 | None | None |
|
||||
| Floating sidebar is not kept open when cursor at the left-most position | https://github.com/zen-browser/desktop/issues/7107 | None | None |
|
||||
| Bookmark Bar persists when opening a bookmark from a folder | https://github.com/zen-browser/desktop/issues/7106 | None | None |
|
||||
| Pdf Printing doesn't have drawings in the right place | https://github.com/zen-browser/desktop/issues/7105 | 1:36:28 | 1:36:28 |
|
||||
| Zen crashes on right click on tab | https://github.com/zen-browser/desktop/issues/7104 | None | None |
|
||||
| Web Side Panel Issue | https://github.com/zen-browser/desktop/issues/7103 | None | None |
|
||||
| Bookmarks Menu Toolbar Keyboard Shortcut Opens Library, not List | https://github.com/zen-browser/desktop/issues/7102 | None | None |
|
||||
| Tab bar doesnt hide when all tabs closed | https://github.com/zen-browser/desktop/issues/7100 | 2:36:39 | None |
|
||||
| The media animation causes high CPU usage | https://github.com/zen-browser/desktop/issues/7099 | None | None |
|
||||
| Duplicate entry in Settings > Keyboard Shortcuts | https://github.com/zen-browser/desktop/issues/7098 | None | None |
|
||||
| Switch to Zen with low frame rate animation | https://github.com/zen-browser/desktop/issues/7097 | None | None |
|
||||
| Tab list still scrolls to top sometimes | https://github.com/zen-browser/desktop/issues/7096 | None | None |
|
||||
| Weird workspace scroll change behaviour with sidebar to the right | https://github.com/zen-browser/desktop/issues/7095 | None | None |
|
||||
| Top toolbar is shown when hovering the top side of the screen in "single toolbar" layout with "compact mode" | https://github.com/zen-browser/desktop/issues/7094 | 3:23:41 | None |
|
||||
| Workspace bottom indicator is not updated when scrolling the sidebar while another Zen window is focused | https://github.com/zen-browser/desktop/issues/7093 | None | None |
|
||||
| Keyboard shortcuts stop working in the keyboard shortcuts configuration page | https://github.com/zen-browser/desktop/issues/7092 | None | None |
|
||||
| Confusing case-insensitivity in the keyboard shortcuts configuration page | https://github.com/zen-browser/desktop/issues/7091 | None | None |
|
||||
| Broken keyboard shortcuts for compact mode | https://github.com/zen-browser/desktop/issues/7090 | 0:11:49 | 2 days, 10:19:52 |
|
||||
| UI glitch when glancing in split view | https://github.com/zen-browser/desktop/issues/7089 | 3:52:12 | 3:52:12 |
|
||||
| Scroll Freeze after drag-and-drop on laptop (TouchPad) | https://github.com/zen-browser/desktop/issues/7088 | None | None |
|
||||
| The sidebar shrinks too much when switching to compact mode while floating is enabled | https://github.com/zen-browser/desktop/issues/7087 | None | None |
|
||||
| Unable to define a Ctrl+Alt+Tab keyboard shortcut | https://github.com/zen-browser/desktop/issues/7086 | None | None |
|
||||
| WebPanel doesn't respect Multi-Account Containers proxy settings. | https://github.com/zen-browser/desktop/issues/7085 | None | None |
|
||||
| Certificate Manager does not work | https://github.com/zen-browser/desktop/issues/7083 | 18:44:46 | 23:16:08 |
|
||||
| Weird zooming and window placement issues on Windows | https://github.com/zen-browser/desktop/issues/7082 | None | None |
|
||||
| Default Translucency Not Working - Toolbar and Sidebar Colors Forced to Windows Theme | https://github.com/zen-browser/desktop/issues/7081 | None | None |
|
||||
| Browser Freezes When Expanding Toolbar Options Menu in Compact Window State | https://github.com/zen-browser/desktop/issues/7080 | None | None |
|
||||
| Workspaces working as tab groups and not as workspaces | https://github.com/zen-browser/desktop/issues/7079 | 0:09:06 | None |
|
||||
| Container Tabs dissappear when 'switch to workspace where container is set as default when opening container tabs' is enabled | https://github.com/zen-browser/desktop/issues/7078 | 3 days, 18:59:29 | None |
|
||||
| tab switcher is jumping 2-3 tabs ahead instead of the next tab | https://github.com/zen-browser/desktop/issues/7077 | None | None |
|
||||
| Some browser dialogs appear off-screen | https://github.com/zen-browser/desktop/issues/7076 | 1 day, 1:32:55 | None |
|
||||
| Mouse over floating sidebar prevents hide | https://github.com/zen-browser/desktop/issues/7075 | None | None |
|
||||
| CRX Installer Not working in Zen Browser. | https://github.com/zen-browser/desktop/issues/7074 | 2 days, 23:32:33 | 3 days, 2:39:52 |
|
||||
| Cannot resize native firefox sidebar when positioned on the right after restarting the browser | https://github.com/zen-browser/desktop/issues/7073 | None | None |
|
||||
| compact mode color bug | https://github.com/zen-browser/desktop/issues/7068 | 0:19:56 | 2:12:33 |
|
||||
| Unable to assign Cmd+Z for undo | https://github.com/zen-browser/desktop/issues/7067 | None | None |
|
||||
| "change theme colors" cannot be undone and breaks other theming features | https://github.com/zen-browser/desktop/issues/7066 | None | None |
|
||||
| Theme Color alpha hex functionality broken | https://github.com/zen-browser/desktop/issues/7065 | None | None |
|
||||
| Toolbar set to Hide, but intermittently get stuck unhidden | https://github.com/zen-browser/desktop/issues/7063 | None | None |
|
||||
| [Regression 1.8b+] Multiple tab issues regarding extensions | https://github.com/zen-browser/desktop/issues/7062 | 3 days, 9:25:56 | None |
|
||||
| Alt-Tab Behavior: Mouse Focus Interference | https://github.com/zen-browser/desktop/issues/7061 | None | None |
|
||||
| Sidebar icons misaligned in split view | https://github.com/zen-browser/desktop/issues/7060 | 2 days, 12:48:26 | None |
|
||||
| Is this window border line transparency effect(glitch?) an expected behavior? | https://github.com/zen-browser/desktop/issues/7059 | None | None |
|
||||
| Essentials tab with "messages.google.com", after browser restart, is now just an empty essentials tab. | https://github.com/zen-browser/desktop/issues/7058 | 0:35:22 | None |
|
||||
| 2FAS Extension problem - abnormal CPU usage in 1.9b - no problems on Firefox (REOPENED) | https://github.com/zen-browser/desktop/issues/7057 | 2:13:51 | 7:57:05 |
|
||||
| Cannot drag tabs in private mode | https://github.com/zen-browser/desktop/issues/7056 | 1:16:48 | 1 day, 11:09:47 |
|
||||
| Inconsistent/Incorrect behavior when using ctrl+enter from new tab addressbar | https://github.com/zen-browser/desktop/issues/7055 | None | None |
|
||||
| 1Password not connecting to desktop app | https://github.com/zen-browser/desktop/issues/7054 | 1:54:09 | 13:49:32 |
|
||||
| Welcome page after initial setup has absolute positioning for buttons | https://github.com/zen-browser/desktop/issues/7053 | None | None |
|
||||
| MacOS compact mode ignores mouse on traffic buttons and collapses the bar | https://github.com/zen-browser/desktop/issues/7052 | 0:18:46 | 0:18:46 |
|
||||
| URL/Search Bar misalignment | https://github.com/zen-browser/desktop/issues/7051 | 3 days, 11:31:03 | None |
|
||||
| Trying to export/share Rice softlocks the browser | https://github.com/zen-browser/desktop/issues/7049 | None | None |
|
||||
| Tabs and Essentials are being created in the same place | https://github.com/zen-browser/desktop/issues/7048 | 15:16:39 | None |
|
||||
| Gestures not working in Zen Browser | https://github.com/zen-browser/desktop/issues/7047 | None | None |
|
||||
| Text contrast in context menus is inadequate in default Light theme | https://github.com/zen-browser/desktop/issues/7046 | None | 0:10:12 |
|
||||
| Popup is cut in compact mode | https://github.com/zen-browser/desktop/issues/7045 | None | None |
|
||||
| App icon on the task bar disappears when personalizing toolbar seting the title bar visible | https://github.com/zen-browser/desktop/issues/7044 | None | None |
|
||||
| macOS passkeys not working on certain websites, such as Duo Authentication | https://github.com/zen-browser/desktop/issues/7043 | 17:48:19 | None |
|
||||
| Bookmarks in Toolbar disappearing when entering fullscreen | https://github.com/zen-browser/desktop/issues/7042 | 1 day, 0:15:33 | None |
|
||||
| blurry fonts on 32:9 aspect ratio | https://github.com/zen-browser/desktop/issues/7041 | 1:21:09 | 3 days, 13:30:02 |
|
||||
| iCloud Passwords extension broken | https://github.com/zen-browser/desktop/issues/7040 | 1 day, 20:47:39 | None |
|
||||
| Cmd + M to minimise doesn't work on 1.10.3b | https://github.com/zen-browser/desktop/issues/7039 | None | None |
|
||||
| Ram usage | https://github.com/zen-browser/desktop/issues/7038 | 1 day, 17:57:47 | 1 day, 19:52:42 |
|
||||
| Screen sharing is not working for calls on teams and google meet after the update | https://github.com/zen-browser/desktop/issues/7037 | None | None |
|
||||
| Zen Browser can not automatically update its self. | https://github.com/zen-browser/desktop/issues/7035 | None | None |
|
||||
| Bookmarks Toolbar "Always show" does not work | https://github.com/zen-browser/desktop/issues/7034 | None | None |
|
||||
| Bookmark title editing: Left/Right arrows trigger bookmark selection instead of text navigation | https://github.com/zen-browser/desktop/issues/7033 | None | None |
|
||||
| Ram usage | https://github.com/zen-browser/desktop/issues/7032 | 0:10:50 | 0:10:50 |
|
||||
| Tabs stuck and not clickable - suspect tab unload with popup dialog on tab close | https://github.com/zen-browser/desktop/issues/7031 | 1:06:39 | None |
|
||||
| Zen abruptly switches to unloaded tab If It has unsaved changes | https://github.com/zen-browser/desktop/issues/7030 | 2 days, 16:03:14 | None |
|
||||
| Enhance Tracking Protection icon shield does not work when present | https://github.com/zen-browser/desktop/issues/7029 | None | None |
|
||||
| URL Bar selection discarded upon floating | https://github.com/zen-browser/desktop/issues/7028 | None | None |
|
||||
| Glance's buttons are rendered above the sidebar | https://github.com/zen-browser/desktop/issues/7027 | None | None |
|
||||
| Browser gives no visual indication that a browser window is private | https://github.com/zen-browser/desktop/issues/7026 | None | None |
|
||||
| Not possible to use CTRL + F on a web panel | https://github.com/zen-browser/desktop/issues/7025 | 3 days, 20:07:32 | None |
|
||||
| Browser extensions no longer work in the web panel. | https://github.com/zen-browser/desktop/issues/7024 | None | None |
|
||||
| Installing mods overwrites all currently installed ones | https://github.com/zen-browser/desktop/issues/7022 | None | None |
|
||||
| Incorrect `MESA_SHADER_CACHE_DIR` | https://github.com/zen-browser/desktop/issues/7020 | None | None |
|
||||
| Firefox's screenshot tool exits unexpectedly when using change split tabs on hover | https://github.com/zen-browser/desktop/issues/7019 | 0:05:50 | None |
|
||||
| The name of the application displayed in the notification | https://github.com/zen-browser/desktop/issues/7018 | None | None |
|
||||
| Very high meory usage (Memory leak?) | https://github.com/zen-browser/desktop/issues/7017 | 21:15:37 | 21:15:37 |
|
||||
| Pinned extension icons move inside the web page when an extension reloads | https://github.com/zen-browser/desktop/issues/7016 | 0:24:01 | None |
|
||||
| Page screenshot buttons, `about:logins` and `Secure Site Not Available` page [seem to] use default accent color | https://github.com/zen-browser/desktop/issues/7015 | None | None |
|
||||
| Screenshots overlay out of place in split tabs view | https://github.com/zen-browser/desktop/issues/7014 | None | None |
|
||||
| Extension installation dialog is cut off screen | https://github.com/zen-browser/desktop/issues/7013 | None | None |
|
||||
| Black text on dark theme | https://github.com/zen-browser/desktop/issues/7012 | None | 0:00:07 |
|
||||
| Youtube and Youtube Music seeking in Media player is not synced | https://github.com/zen-browser/desktop/issues/7011 | None | None |
|
||||
| New Tab Opens in Current Tab Instead | https://github.com/zen-browser/desktop/issues/7010 | None | None |
|
||||
| Tab close button clickable area smaller than hover-highlighted area | https://github.com/zen-browser/desktop/issues/7008 | None | None |
|
||||
| browser.tabs.searchclipboardfor.middleclick enabled by default only on Linux | https://github.com/zen-browser/desktop/issues/7007 | None | 0:02:06 |
|
||||
| Unloaded Pinned Tabs Turn Into Blank 'New Tab' After Reopening | https://github.com/zen-browser/desktop/issues/7006 | None | None |
|
||||
| Zooming with Cmd + Scroll Wheel Not Working on Mac | https://github.com/zen-browser/desktop/issues/7005 | None | None |
|
||||
| "zen.theme.border-radius" dosen't work on linux. | https://github.com/zen-browser/desktop/issues/7004 | None | None |
|
||||
| Shortcut key (ALT + C) not working as it shoud | https://github.com/zen-browser/desktop/issues/7003 | 0:31:34 | None |
|
||||
| The UI is overlapping and there is no adaptive feature | https://github.com/zen-browser/desktop/issues/7002 | 15:53:29 | None |
|
||||
| Ring.com can't play videos (missing codec) | https://github.com/zen-browser/desktop/issues/7001 | 0:35:50 | None |
|
||||
| Unwanted Connections, Transparency and Default Search Engine | https://github.com/zen-browser/desktop/issues/7000 | None | None |
|
||||
| workforcenow.adp.com doesn't prompt for passkey | https://github.com/zen-browser/desktop/issues/6999 | 0:05:36 | None |
|
||||
| [Unload] Unloading/Closing (pinned) a playing YT Music tab breaks it and keeps the tab alive in the background | https://github.com/zen-browser/desktop/issues/6998 | None | 0:02:20 |
|
||||
| Slow New Window Opening | https://github.com/zen-browser/desktop/issues/6997 | None | None |
|
||||
| Transparent Url bar's background when clicking Ctrl+T while playing a video in fullscreen mode | https://github.com/zen-browser/desktop/issues/6996 | None | None |
|
||||
| Media Playback Continues After Unloading a Pinned Tab | https://github.com/zen-browser/desktop/issues/6995 | 0:09:56 | 4 days, 2:46:22 |
|
||||
| Publisher on the install registry shows `Mozilla` | https://github.com/zen-browser/desktop/issues/6994 | None | 16:35:26 |
|
||||
| Moving `Bookmark toolbar items` to sidebar && Closing and reopening `Customize toolbar…` expands bookmarks in `Customize toolbar…` | https://github.com/zen-browser/desktop/issues/6993 | None | None |
|
||||
| Unloading a Pinned Tab Does Not Correctly Focus the New Tab | https://github.com/zen-browser/desktop/issues/6992 | None | None |
|
||||
| Unexplained Black Background in full screen mode | https://github.com/zen-browser/desktop/issues/6991 | 3 days, 0:40:29 | 3 days, 4:47:09 |
|
||||
| Missing Menu Bar, but Menu Bar Button Present | https://github.com/zen-browser/desktop/issues/6990 | None | None |
|
||||
| When opening a external link from VS Code editor, the maximize, minimize, and close buttons are shown on the left corner instead of the right corner | https://github.com/zen-browser/desktop/issues/6989 | None | None |
|
||||
| Please reopen my issues | https://github.com/zen-browser/desktop/issues/6988 | None | 0:06:17 |
|
||||
| Right-Click (on a tab) Context Menu: Keyboard Shortcuts Require Enter to Activate The Shortcut | https://github.com/zen-browser/desktop/issues/6987 | None | None |
|
||||
| Search bar not autofocused on startup when zen.urlbar.replace-newtab is false | https://github.com/zen-browser/desktop/issues/6986 | None | None |
|
||||
| Zen crashes on right click on tab | https://github.com/zen-browser/desktop/issues/6985 | None | 0:00:13 |
|
||||
| Can't skip revamped welcome page | https://github.com/zen-browser/desktop/issues/6983 | 2 days, 6:25:43 | None |
|
||||
| Pinned tabs aren't restored properly when multiple windows are open | https://github.com/zen-browser/desktop/issues/6982 | 1:45:51 | None |
|
||||
| Tab synchronisation across different devices | https://github.com/zen-browser/desktop/issues/6981 | 1:06:34 | None |
|
||||
| Mac OS Browser thinks there's one more tab open than there actually is | https://github.com/zen-browser/desktop/issues/6980 | 1 day, 20:08:41 | 1 day, 20:08:41 |
|
||||
| Scroll bar can't be scrolled from the right edge of the window (Windows) | https://github.com/zen-browser/desktop/issues/6979 | 0:29:46 | None |
|
||||
| Close tab buttons slightly cut off when in compact mode (Windows) | https://github.com/zen-browser/desktop/issues/6978 | 0:32:01 | None |
|
||||
| "Change theme color" clears previous hex values | https://github.com/zen-browser/desktop/issues/6977 | None | None |
|
||||
| Mouse does not become pointer on hover | https://github.com/zen-browser/desktop/issues/6976 | None | None |
|
||||
| Change theme color wipes out previous hex codes | https://github.com/zen-browser/desktop/issues/6975 | None | 0:00:57 |
|
||||
| Letterboxing adds +1 to width when not in compact mode and sidebar is resized (e.g., 1400 → 1401) | https://github.com/zen-browser/desktop/issues/6974 | None | None |
|
||||
| Unable to log in to Pocket | https://github.com/zen-browser/desktop/issues/6973 | None | None |
|
||||
| Failing to drag tab for split window when native sidebar is on the right | https://github.com/zen-browser/desktop/issues/6972 | None | None |
|
||||
| Windows system theme switching does not work | https://github.com/zen-browser/desktop/issues/6971 | 3 days, 1:44:45 | None |
|
||||
| Compact mode sidebar sticking | https://github.com/zen-browser/desktop/issues/6970 | None | 1 day, 12:33:48 |
|
||||
| Failing to drag tab for split window when native sidebar is on the right | https://github.com/zen-browser/desktop/issues/6969 | None | 0:05:51 |
|
||||
| closing tab opened from essentials will leads to blank window | https://github.com/zen-browser/desktop/issues/6968 | None | None |
|
||||
| Blank dropdown in bookmark manager | https://github.com/zen-browser/desktop/issues/6967 | 4 days, 0:24:47 | None |
|
||||
| Split tab groups can break your browser in private windows | https://github.com/zen-browser/desktop/issues/6966 | None | None |
|
||||
| Theme Color alpha hex functionality broken | https://github.com/zen-browser/desktop/issues/6965 | 2:52:38 | None |
|
||||
| High GPU/CPU usage on some youtube videos | https://github.com/zen-browser/desktop/issues/6964 | None | None |
|
||||
| workforcenow.adp.com doesn't prompt for passkey | https://github.com/zen-browser/desktop/issues/6963 | 0:14:47 | 0:14:47 |
|
||||
| Split tab group favicon missaligned | https://github.com/zen-browser/desktop/issues/6962 | 0:01:05 | 4:14:59 |
|
||||
| cmd + m doesn’t work anymore on 1.10.3b | https://github.com/zen-browser/desktop/issues/6961 | 0:00:59 | 0:01:00 |
|
||||
| Windows system theme switching does not work | https://github.com/zen-browser/desktop/issues/6960 | 0:01:11 | 0:01:12 |
|
||||
| Zen applies themes incorectly | https://github.com/zen-browser/desktop/issues/6959 | 0:01:45 | 0:02:15 |
|
||||
| test | https://github.com/zen-browser/desktop/issues/6958 | None | 0:04:09 |
|
||||
| URL in email; click to open browser | https://github.com/zen-browser/desktop/issues/6954 | 1:17:19 | 1:17:20 |
|
||||
| Google Drive upload limited to 20MBit/s | https://github.com/zen-browser/desktop/issues/6953 | 2:42:08 | 2:42:09 |
|
||||
| Using File, Edit etc buttons brings up the sidebar | https://github.com/zen-browser/desktop/issues/6952 | 4:37:18 | 4:37:19 |
|
||||
| cmd + m broke | https://github.com/zen-browser/desktop/issues/6951 | 4:42:17 | 4:42:18 |
|
||||
| Bug: Search bar breaks UI above tab bar | https://github.com/zen-browser/desktop/issues/6947 | 10:39:20 | 10:39:21 |
|
||||
| Clicking non functional for some buttons on websites | https://github.com/zen-browser/desktop/issues/6945 | 13:03:39 | 13:03:40 |
|
||||
| High RAM usage with WhatsApp Web | https://github.com/zen-browser/desktop/issues/6944 | 13:09:03 | 13:09:03 |
|
||||
| Unloading a Pinned Tab Does Not Correctly Focus the New Tab | https://github.com/zen-browser/desktop/issues/6943 | 13:25:58 | 13:25:59 |
|
||||
| Media Playback Continues After Unloading a Pinned Tab | https://github.com/zen-browser/desktop/issues/6942 | 13:28:38 | 13:28:38 |
|
||||
| Essential and Pinned tabs icons not loading on startup | https://github.com/zen-browser/desktop/issues/6941 | 14:53:33 | 14:53:33 |
|
||||
| Site with Login Popup dialog doesnt work | https://github.com/zen-browser/desktop/issues/6939 | 16:22:37 | 16:22:38 |
|
||||
| closing tab opened from essentials will leads to blank window | https://github.com/zen-browser/desktop/issues/6938 | 19:53:55 | 19:53:56 |
|
||||
| Keyboard Shortcut Issue When Switching Languages in Zen | https://github.com/zen-browser/desktop/issues/6936 | 21:30:24 | 21:30:25 |
|
||||
| Live Stream Performance Issues: Douyu Live Room Loads Slowly and Douyin Live Freezes Every 3 Minutes | https://github.com/zen-browser/desktop/issues/6935 | 22:35:15 | 22:35:15 |
|
||||
| Any letter opens the control find box(ctrl + f) | https://github.com/zen-browser/desktop/issues/6934 | 0:51:47 | 23:15:00 |
|
||||
| Tab-box overflows into adjacent workspace | https://github.com/zen-browser/desktop/issues/6933 | 1 day, 1:24:50 | 1 day, 1:24:50 |
|
||||
| Zen applies themes incorectly | https://github.com/zen-browser/desktop/issues/6931 | 1 day, 2:58:17 | 1 day, 2:59:24 |
|
||||
| windows onboarding "idle" chewing 30-40% cpu | https://github.com/zen-browser/desktop/issues/6930 | 1 day, 3:04:32 | 1 day, 3:04:32 |
|
||||
| Add to Essentials - option disappears | https://github.com/zen-browser/desktop/issues/6927 | 1 day, 4:48:22 | 1 day, 4:48:22 |
|
||||
| Computer overheating | https://github.com/zen-browser/desktop/issues/6926 | 4:14:21 | 1 day, 5:46:28 |
|
||||
| File Handler Dialog not opening in Archlinux (Hyprland) | https://github.com/zen-browser/desktop/issues/6925 | 0:55:53 | 1 day, 5:58:11 |
|
||||
| Repeated Screen Sharing Permission Prompt Despite Existing Approval for Google Meet | https://github.com/zen-browser/desktop/issues/6924 | 1 day, 6:17:41 | 1 day, 6:17:41 |
|
||||
| Bookmark title editing: Left/Right arrows trigger bookmark selection instead of text navigation | https://github.com/zen-browser/desktop/issues/6923 | 1 day, 6:37:50 | 1 day, 6:37:51 |
|
||||
| Search Bar selection discarded upon floating | https://github.com/zen-browser/desktop/issues/6922 | 1 day, 6:51:59 | 1 day, 6:52:00 |
|
||||
| A new media player starts playing before actual youtube video starts | https://github.com/zen-browser/desktop/issues/6920 | 3:22:39 | 1 day, 7:47:32 |
|
||||
| Splitting a non-pinned tab with a pinned tabs pins it | https://github.com/zen-browser/desktop/issues/6918 | 1 day, 8:58:13 | 1 day, 8:58:14 |
|
||||
| Default Zen Homepage not accessible | https://github.com/zen-browser/desktop/issues/6915 | 5:02:51 | 7:20:33 |
|
||||
| The toolbar layout gets disrupted when I switch between browser layouts. | https://github.com/zen-browser/desktop/issues/6914 | 1 day, 13:03:34 | 1 day, 13:03:35 |
|
||||
| Mouse Back button often switches to different workspace | https://github.com/zen-browser/desktop/issues/6913 | 8:00:54 | 1 day, 13:12:41 |
|
||||
| New tab does not work properly when typing Chinese. | https://github.com/zen-browser/desktop/issues/6912 | 1 day, 13:33:11 | 1 day, 13:33:12 |
|
||||
| Add-ons Affecting Browser Performance and Behavior | https://github.com/zen-browser/desktop/issues/6911 | 1 day, 13:38:12 | 1 day, 13:38:13 |
|
||||
| Essentials and pinned tabs go blank (see image) | https://github.com/zen-browser/desktop/issues/6907 | 16:37:51 | 1 day, 15:54:52 |
|
||||
| Containerized Tabs Disappearing upon Switching Workspaces | https://github.com/zen-browser/desktop/issues/6904 | 0:21:59 | 2:15:45 |
|
||||
| Split tab breaks when placed in a tab group | https://github.com/zen-browser/desktop/issues/6903 | 1:11:36 | 1 day, 18:12:59 |
|
||||
| omega long loading times in www.icloud.lt | https://github.com/zen-browser/desktop/issues/6902 | 1 day, 11:09:34 | 12:55:47 |
|
||||
| whenever i do ctrl + tab to move between different pages while in compact mode ... i got the side bar pop up for 1-2 seconds... which is not helpful or logical | https://github.com/zen-browser/desktop/issues/6901 | 0:33:37 | 1:13:20 |
|
||||
| autofill just fill password without user and vice versa | https://github.com/zen-browser/desktop/issues/6897 | 1 day, 22:28:43 | 1 day, 22:28:43 |
|
||||
| Spotify Music Problem | https://github.com/zen-browser/desktop/issues/6895 | 0:28:47 | 2:52:23 |
|
||||
| [twilight] downloads icon not aligned to webpage border | https://github.com/zen-browser/desktop/issues/6894 | 0:45:03 | 1 day, 23:31:34 |
|
||||
| Icon Rendering Incorrectly in KDE Plasma 6 Wayland Window Switcher | https://github.com/zen-browser/desktop/issues/6892 | 7:33:56 | 2 days, 0:31:16 |
|
||||
| Unable to open Zen on an m1 pro | https://github.com/zen-browser/desktop/issues/6890 | 2 days, 2:29:43 | 2 days, 2:29:43 |
|
||||
| Laggy keyboard Input | https://github.com/zen-browser/desktop/issues/6889 | 2 days, 2:31:48 | 2 days, 2:31:48 |
|
||||
| Glitch for smaller windows heights | https://github.com/zen-browser/desktop/issues/6887 | 2 days, 3:49:40 | 2 days, 3:49:41 |
|
||||
| websites not loading ! | https://github.com/zen-browser/desktop/issues/6886 | 1 day, 22:18:25 | 2 days, 4:04:00 |
|
||||
| This site can’t provide a secure connection zen-browser.app sent an invalid response. ERR_SSL_PROTOCOL_ERROR | https://github.com/zen-browser/desktop/issues/6885 | 0:09:18 | 22:35:10 |
|
||||
| Muted video playing in a pinned tab prevent MacOS from sleeping | https://github.com/zen-browser/desktop/issues/6884 | 2:58:48 | 4:19:38 |
|
||||
| [twilight] random redirect to another semi-related website | https://github.com/zen-browser/desktop/issues/6883 | 0:41:41 | 1:20:40 |
|
||||
| [twilight] Essentials and workspace emoji are translucent and not in full colour | https://github.com/zen-browser/desktop/issues/6882 | 2 days, 4:52:41 | 2 days, 4:52:41 |
|
||||
| Toolobar Theming doesn't fully apply | https://github.com/zen-browser/desktop/issues/6881 | 7:13:07 | 23:34:52 |
|
||||
| High GPU/CPU usage on some youtube videos | https://github.com/zen-browser/desktop/issues/6880 | 6:07:33 | 2 days, 6:07:27 |
|
||||
| cookie related isssue | https://github.com/zen-browser/desktop/issues/6879 | 2 days, 6:24:50 | 2 days, 6:24:50 |
|
||||
| The "add extension" button does not appear on small screens | https://github.com/zen-browser/desktop/issues/6877 | 2 days, 9:33:17 | 2 days, 9:33:17 |
|
||||
| Opening new tab in a split tab causes them to disappear. | https://github.com/zen-browser/desktop/issues/6876 | 2 days, 11:09:48 | 2 days, 11:09:48 |
|
||||
| Super Url Bar | https://github.com/zen-browser/desktop/issues/6874 | 1:33:49 | 2 days, 14:28:38 |
|
||||
| On launch, will open first tab in tab list (can be inconsistent, not sure of exact trigger) | https://github.com/zen-browser/desktop/issues/6873 | 6:07:49 | 2 days, 16:35:57 |
|
||||
| Minor uneven UI spacing between essential tabs | https://github.com/zen-browser/desktop/issues/6871 | 2 days, 17:33:23 | 2 days, 17:33:23 |
|
||||
| Text blurry | https://github.com/zen-browser/desktop/issues/6870 | 2 days, 17:44:41 | 2 days, 17:44:42 |
|
||||
| Option "Open links in tabs instead of new windows" unchecked after restart browser | https://github.com/zen-browser/desktop/issues/6869 | 2 days, 18:08:58 | 2 days, 18:08:59 |
|
||||
| KeepassXC is added but i cant link my database | https://github.com/zen-browser/desktop/issues/6868 | 21:32:29 | 1 day, 0:11:31 |
|
||||
| Extensions do not open when no tabs are open | https://github.com/zen-browser/desktop/issues/6866 | 1:10:21 | 2 days, 22:06:54 |
|
||||
| Split favicon bug | https://github.com/zen-browser/desktop/issues/6864 | 2 days, 22:37:00 | 2 days, 22:37:01 |
|
||||
| Icon not visible when playing audio | https://github.com/zen-browser/desktop/issues/6863 | 1 day, 1:04:41 | 2 days, 22:56:26 |
|
||||
| Increased ram usage fro just 4-5 tabs | https://github.com/zen-browser/desktop/issues/6862 | 2 days, 22:59:53 | 2 days, 22:59:54 |
|
||||
| Screen sharing is not working on newer Macbook | https://github.com/zen-browser/desktop/issues/6861 | 2 days, 23:15:15 | 2 days, 23:15:15 |
|
||||
| Screen Sharing Malfunction in Google Meet (Windows) | https://github.com/zen-browser/desktop/issues/6860 | 2 days, 23:36:47 | 2 days, 23:36:47 |
|
||||
| "Customize Toolbar" Menu breaks when sidebar is at minimum width | https://github.com/zen-browser/desktop/issues/6859 | 3 days, 0:16:52 | 3 days, 0:16:52 |
|
||||
| Split tabs breaking when opening a glance window | https://github.com/zen-browser/desktop/issues/6858 | 3 days, 0:17:15 | 3 days, 0:17:15 |
|
||||
| Compact mode adds padding on the left misaligning icons in collapsed sidebar | https://github.com/zen-browser/desktop/issues/6857 | None | 0:08:37 |
|
||||
| Flickering unusable menus if `widget.wayland.fractional-scale.enabled` is enabled | https://github.com/zen-browser/desktop/issues/6856 | 3 days, 0:24:24 | 3 days, 0:24:24 |
|
||||
| Sidebar/TabBar too small on `multiple toolbar`, but right size in `single toolbars` mode - 1.10.2b (Firefox 136.0.3) (64-bit) | https://github.com/zen-browser/desktop/issues/6855 | 0:16:27 | 3 days, 1:18:50 |
|
||||
| extension downloadhelper | https://github.com/zen-browser/desktop/issues/6854 | 3 days, 1:31:24 | 3 days, 1:31:24 |
|
||||
| Can only interact with 1 tab when split | https://github.com/zen-browser/desktop/issues/6851 | 3 days, 4:17:12 | 3 days, 4:17:13 |
|
||||
| Cannot share screen on MacOS | https://github.com/zen-browser/desktop/issues/6850 | 12:46:43 | 3 days, 4:22:22 |
|
||||
| Mouse Cursor doesnt dissapear when watching Fullscreen Youtube Video | https://github.com/zen-browser/desktop/issues/6849 | 3 days, 4:35:46 | 3 days, 4:35:46 |
|
||||
| "ALT + C" shortcut key bug has not fixed in 1.10.2b | https://github.com/zen-browser/desktop/issues/6847 | 0:19:13 | 2:19:17 |
|
||||
| Tab bar doesnt hide when all tabs closed | https://github.com/zen-browser/desktop/issues/6846 | 1:11:00 | 3 days, 6:06:22 |
|
||||
| Issue with hidden sidebar on desktop with margins. | https://github.com/zen-browser/desktop/issues/6845 | 3 days, 6:26:39 | 3 days, 6:26:39 |
|
||||
| Google meet is not granted permissions for the first few seconds. | https://github.com/zen-browser/desktop/issues/6844 | 2:23:20 | 3 days, 6:55:39 |
|
||||
| Google meet will kick out of meeting on switching to another tab | https://github.com/zen-browser/desktop/issues/6843 | 2:29:00 | 3 days, 7:00:24 |
|
||||
| Can't click popup window javascript:setopenerValue | https://github.com/zen-browser/desktop/issues/6842 | 3 days, 8:03:52 | 3 days, 8:03:53 |
|
||||
| [1.10.1b] Focusing and Unfocusing out of split view has janky window resizing and rendering delays | https://github.com/zen-browser/desktop/issues/6841 | 3 days, 8:37:54 | 3 days, 8:37:54 |
|
||||
| [Twilight 1.10.2] Brief black flash when switching workspaces. | https://github.com/zen-browser/desktop/issues/6839 | None | 0:55:54 |
|
||||
| Slow New Window Opening | https://github.com/zen-browser/desktop/issues/6838 | 0:03:51 | 3 days, 9:31:19 |
|
||||
| Minimizing Full Screen Video Players make the toolbar temp pop up and slide in | https://github.com/zen-browser/desktop/issues/6836 | 3 days, 11:24:59 | 3 days, 11:24:59 |
|
||||
| window alert is hidden behind other split pane | https://github.com/zen-browser/desktop/issues/6832 | 3 days, 17:35:05 | 3 days, 17:35:06 |
|
||||
| Compact mode sidebar sticking | https://github.com/zen-browser/desktop/issues/6831 | 3 days, 17:39:13 | 3 days, 17:39:13 |
|
||||
| Upscayl site does not work properly | https://github.com/zen-browser/desktop/issues/6830 | 3 days, 18:07:45 | 3 days, 18:07:46 |
|
||||
| Unremovable duplicate workspace icon | https://github.com/zen-browser/desktop/issues/6829 | 3 days, 19:38:34 | 3 days, 19:38:35 |
|
||||
| Bookmarks Toolbar "Always show" does not work | https://github.com/zen-browser/desktop/issues/6828 | 2 days, 0:52:10 | 3 days, 20:14:50 |
|
||||
| Pined & Essential Tabs don't unload | https://github.com/zen-browser/desktop/issues/6827 | 3 days, 23:26:09 | 3 days, 23:26:10 |
|
||||
| Entire zen window transparent | https://github.com/zen-browser/desktop/issues/6825 | None | 20:47:40 |
|
||||
| Duplicate/duplicating a split tab causes erratic tab movements | https://github.com/zen-browser/desktop/issues/6824 | 3 days, 23:44:29 | 3 days, 23:44:29 |
|
||||
| "Full screen" item can be interacted with inside "Customise Toolbar..." Menu which breaks it | https://github.com/zen-browser/desktop/issues/6822 | 4 days, 0:54:03 | 4 days, 0:54:04 |
|
||||
| When Web Panel is open split tab movement indicators do not display correctly | https://github.com/zen-browser/desktop/issues/6819 | 4 days, 1:28:54 | 4 days, 1:28:55 |
|
||||
| When Web Panel is open Vertical Tab Splits can't be resized | https://github.com/zen-browser/desktop/issues/6817 | 16:18:30 | 4 days, 1:42:11 |
|
||||
| Anthropic's Claude freezes only on Zen browser | https://github.com/zen-browser/desktop/issues/6816 | 1 day, 6:43:57 | 4 days, 1:48:02 |
|
||||
| Cursor Auto-Highlight on Ctrl+Tab Disrupts Tab Cycling | https://github.com/zen-browser/desktop/issues/6815 | 4 days, 1:59:18 | 4 days, 1:59:19 |
|
||||
| Disabling "Use workspace colors as primary color" does nothing | https://github.com/zen-browser/desktop/issues/6812 | 4 days, 2:25:50 | 4 days, 2:25:51 |
|
||||
| Sites within WebPanel behaves wrong if navigator API is spoofed vie extension | https://github.com/zen-browser/desktop/issues/6811 | 4 days, 2:41:39 | 4 days, 2:41:40 |
|
||||
| When removing an extension, confirmation message has a mistake | https://github.com/zen-browser/desktop/issues/6810 | 4 days, 3:08:04 | 4 days, 3:08:04 |
|
||||
| Zen comes pre-installed with an English (United States) dictionary which can't be removed | https://github.com/zen-browser/desktop/issues/6809 | 4 days, 3:29:07 | 4 days, 3:29:07 |
|
||||
| UI bug: Responsive Design Mode reload notification being obscured by music player | https://github.com/zen-browser/desktop/issues/6808 | 4 days, 4:28:07 | 4 days, 4:28:07 |
|
||||
| Placing the "Zoom Controls" item in the Top Item Row of the Side Toolbar causes zoom indicator to not appear. | https://github.com/zen-browser/desktop/issues/6807 | 4 days, 4:37:37 | 4 days, 4:37:37 |
|
||||
| While in the "Customize Toolbar..." Menu the maximise window button is greyed out and not usable | https://github.com/zen-browser/desktop/issues/6806 | 4 days, 5:01:40 | 4 days, 5:01:40 |
|
||||
| Placing a Large Item as the first item in the Top Item Row of the Side Toolbar breaks entire Side Toolbar when in Collapsed Toolbar Layout | https://github.com/zen-browser/desktop/issues/6805 | 4 days, 5:38:36 | 4 days, 5:38:37 |
|
||||
| Top item row in Side Toolbar not aligned with items in Top Toolbar when using Collapsed Toolbar | https://github.com/zen-browser/desktop/issues/6804 | 2:30:37 | 4 days, 6:01:27 |
|
||||
| Toolbar with a lot of items can break single toolbar | https://github.com/zen-browser/desktop/issues/6803 | 4 days, 6:51:09 | 4 days, 6:51:09 |
|
||||
| Zen Webpanel (Sidebar) does not move | https://github.com/zen-browser/desktop/issues/6802 | 4 days, 6:56:53 | 4 days, 6:56:53 |
|
||||
| [Twilight 1.10.1t] All tabs are loading after update | https://github.com/zen-browser/desktop/issues/6801 | 0:08:03 | 21:25:15 |
|
||||
| Side flap bug | https://github.com/zen-browser/desktop/issues/6800 | None | 0:00:08 |
|
||||
| Pinned tabs glance does not reset | https://github.com/zen-browser/desktop/issues/6799 | 0:06:08 | 4 days, 9:00:07 |
|
||||
| [Twilight 1.10.1t] Last selected tab not respected if restoring split view group on launch | https://github.com/zen-browser/desktop/issues/6798 | None | 3 days, 5:15:16 |
|
||||
| [Twilight 1.10.1] Switching workspaces is not as fluid as before with a brief black flash when moving to new workspace. | https://github.com/zen-browser/desktop/issues/6797 | None | 1 day, 2:14:58 |
|
||||
| Theme not correctly working/resetting when switching workspace | https://github.com/zen-browser/desktop/issues/6796 | 4 days, 11:30:51 | 4 days, 11:30:51 |
|
||||
| Zen Browser Freeze When Downloading | https://github.com/zen-browser/desktop/issues/6795 | 4 days, 11:54:20 | 4 days, 11:54:21 |
|
||||
| Default Translucency Not Working - Toolbar and Sidebar Colors Forced to Windows Theme | https://github.com/zen-browser/desktop/issues/6794 | 4 days, 13:11:15 | 4 days, 13:11:16 |
|
||||
| Invisible Floating Bar | https://github.com/zen-browser/desktop/issues/6792 | None | 22:04:52 |
|
||||
| Unable to log in to Pocket | https://github.com/zen-browser/desktop/issues/6790 | 4 days, 17:42:50 | 4 days, 17:42:51 |
|
||||
| Workspaces working as tab groups and not as workspaces | https://github.com/zen-browser/desktop/issues/6789 | 4:18:48 | 4 days, 17:46:34 |
|
||||
| [Privacy] Unwanted Connections, Transparency and Default Search Engine | https://github.com/zen-browser/desktop/issues/6787 | 4 days, 20:40:43 | 4 days, 20:40:43 |
|
||||
| glance in Google drive | https://github.com/zen-browser/desktop/issues/6785 | 4 days, 22:23:09 | 4 days, 22:23:10 |
|
||||
| Winget adds desktop shortcut | https://github.com/zen-browser/desktop/issues/6784 | 0:22:29 | 4 days, 22:41:24 |
|
||||
| Theme Color alpha hex functionality broken | https://github.com/zen-browser/desktop/issues/6783 | 4 days, 6:08:04 | 5 days, 0:00:15 |
|
||||
| Kernel panics on macOS | https://github.com/zen-browser/desktop/issues/6781 | 4:00:11 | 5 days, 1:16:46 |
|
||||
| workforcenow.adp.com doesn't prompt for passkey | https://github.com/zen-browser/desktop/issues/6780 | 5 days, 1:58:56 | 5 days, 1:58:56 |
|
||||
| macOS Title Bar reg/yellow/green Buttons Are Colorless | https://github.com/zen-browser/desktop/issues/6776 | 0:12:16 | 5:53:54 |
|
||||
| Cant login to netflix | https://github.com/zen-browser/desktop/issues/6773 | 1:34:11 | 11:31:40 |
|
||||
| Tab unloader disregards preferences on unsaved tabs | https://github.com/zen-browser/desktop/issues/6770 | 5 days, 17:40:09 | 5 days, 17:40:09 |
|
||||
| Inconsistent sizes for bottom icons | https://github.com/zen-browser/desktop/issues/6769 | 5 days, 18:00:19 | 5 days, 18:00:20 |
|
||||
| Blank Screen Insted of Home screen | https://github.com/zen-browser/desktop/issues/6768 | 13:18:07 | 5 days, 18:57:14 |
|
||||
| Pin syncing on new devices | https://github.com/zen-browser/desktop/issues/6767 | 4 days, 3:54:28 | 5 days, 19:11:28 |
|
||||
| zen.mediacontrols.enabled doesn't appear in about:config | https://github.com/zen-browser/desktop/issues/6766 | 8:19:56 | 11:30:57 |
|
||||
| Address bar closes when switching input language with Cmd+Space on Wayland (Ubuntu) | https://github.com/zen-browser/desktop/issues/6765 | 1 day, 6:03:22 | 5 days, 20:53:14 |
|
||||
| New tab overlay hides when CTRL key is pressed | https://github.com/zen-browser/desktop/issues/6764 | 21:36:14 | 5 days, 21:13:53 |
|
||||
| New Tab Button | Error | https://github.com/zen-browser/desktop/issues/6762 | 16:35:56 | 21:18:08 |
|
||||
| Extensions doesn't load automatically | https://github.com/zen-browser/desktop/issues/6760 | 5 days, 22:22:05 | 5 days, 22:22:06 |
|
||||
| PowerToys Run still not working correctly (web search) | https://github.com/zen-browser/desktop/issues/6759 | 6 days, 0:37:43 | 6 days, 0:37:44 |
|
||||
| URL which beging with HTTPS Glace does not recognize | https://github.com/zen-browser/desktop/issues/6758 | 6 days, 0:46:54 | 6 days, 0:46:54 |
|
||||
| opening external files and links | https://github.com/zen-browser/desktop/issues/6757 | 6 days, 1:30:57 | 6 days, 1:30:58 |
|
||||
| editing pdfs do not export correctly | https://github.com/zen-browser/desktop/issues/6756 | 6 days, 1:32:26 | 6 days, 1:32:27 |
|
||||
| spotify can't play songs | https://github.com/zen-browser/desktop/issues/6755 | 1:46:04 | 2:43:09 |
|
||||
| Scrolling seems to be lagging back again in `v1.10.1b` while the browser rounded corner was disabled | https://github.com/zen-browser/desktop/issues/6754 | 6 days, 2:13:52 | 6 days, 2:13:53 |
|
||||
| Can't install mods | https://github.com/zen-browser/desktop/issues/6752 | 1 day, 10:42:01 | 6 days, 2:50:15 |
|
||||
| Ctrl-Q closes current tab before exit | https://github.com/zen-browser/desktop/issues/6751 | 6 days, 3:34:38 | 6 days, 3:34:38 |
|
||||
| Extensions spilling out of the sidebar | https://github.com/zen-browser/desktop/issues/6750 | 5:04:56 | 6 days, 4:23:46 |
|
||||
| heylogin popup empty | https://github.com/zen-browser/desktop/issues/6749 | None | 1 day, 8:42:50 |
|
||||
| The pip option often fails after a reboot | https://github.com/zen-browser/desktop/issues/6748 | 6 days, 4:59:02 | 6 days, 4:59:02 |
|
||||
| Movie Player error 6007-1001-3102: Please use an updated version of your browser or use another device | https://github.com/zen-browser/desktop/issues/6747 | None | 2:09:47 |
|
||||
| Zen crashes on right click on tab | https://github.com/zen-browser/desktop/issues/6746 | 1:10:39 | 6 days, 5:37:54 |
|
||||
| It would be useful to have a Restore/Reset icon next to changed keyboard shortcuts. | https://github.com/zen-browser/desktop/issues/6744 | 6 days, 5:49:25 | 6 days, 5:49:26 |
|
||||
| Opening the settings page not selecting the unloaded tab | https://github.com/zen-browser/desktop/issues/6743 | 6 days, 7:14:48 | 6 days, 7:14:49 |
|
||||
| Pinned Essentials clipping thorugh Workspace/Tabs area in Compact Mode | https://github.com/zen-browser/desktop/issues/6741 | 6 days, 9:36:36 | 6 days, 9:36:37 |
|
||||
| split with essentials not working | https://github.com/zen-browser/desktop/issues/6739 | 6 days, 16:29:52 | 6 days, 16:29:53 |
|
||||
| Media player music animation should respect animation accessibility settings | https://github.com/zen-browser/desktop/issues/6737 | 6 days, 17:23:48 | 6 days, 17:23:49 |
|
||||
| Unable to swipe through workspaces. | https://github.com/zen-browser/desktop/issues/6735 | 6 days, 19:53:12 | 6 days, 19:53:12 |
|
||||
| Automatically leaving meetings when expanding a glance tab containing the meeting | https://github.com/zen-browser/desktop/issues/6734 | 1 day, 15:01:01 | 6 days, 21:10:19 |
|
||||
| Zen crashes my Computer completely | https://github.com/zen-browser/desktop/issues/6732 | 3:19:38 | 6 days, 22:54:38 |
|
||||
| Tab bar width issues | https://github.com/zen-browser/desktop/issues/6730 | 6 days, 23:26:00 | 6 days, 23:26:01 |
|
||||
| Transparency no longer works with the 1.10.1b update on Linux | https://github.com/zen-browser/desktop/issues/6729 | 0:00:56 | 7 days, 0:06:00 |
|
||||
| Issues with css live edit | https://github.com/zen-browser/desktop/issues/6728 | 7 days, 0:43:26 | 7 days, 0:43:27 |
|
||||
| corner case: Media Player handling long media names | https://github.com/zen-browser/desktop/issues/6727 | 7 days, 0:46:48 | 7 days, 0:46:49 |
|
||||
| Vimium tab navigation broken since 1.9b | https://github.com/zen-browser/desktop/issues/6726 | 7 days, 0:50:09 | 7 days, 0:50:09 |
|
||||
| When i open zen it only shows black screen home page | https://github.com/zen-browser/desktop/issues/6725 | 0:22:12 | 7 days, 1:14:36 |
|
||||
| Shortcuts not working as intended/unclear. i.e: Does X instead of Y as stated in the Keyboard Shortcuts section. | https://github.com/zen-browser/desktop/issues/6724 | 7 days, 1:20:26 | 7 days, 1:20:26 |
|
||||
| Zen icon not showing in Plasma title bar | https://github.com/zen-browser/desktop/issues/6723 | 7 days, 1:38:55 | 7 days, 1:38:55 |
|
||||
| Windows system theme switching does not work | https://github.com/zen-browser/desktop/issues/6722 | 7 days, 2:41:59 | 7 days, 2:41:59 |
|
||||
| All of Essentials suddenly disappearing | https://github.com/zen-browser/desktop/issues/6721 | 4 days, 5:40:42 | 7 days, 2:43:33 |
|
||||
| New tab shortcut broken | https://github.com/zen-browser/desktop/issues/6719 | 4 days, 4:59:23 | 10 days, 9:35:09 |
|
||||
| having a lot of workspaces still require from me to have wide sidebar | https://github.com/zen-browser/desktop/issues/6718 | 22:37:20 | 23:25:25 |
|
||||
| YouTube essential disappear when reopening the browser | https://github.com/zen-browser/desktop/issues/6717 | 7 days, 5:24:03 | 7 days, 5:24:03 |
|
||||
| Window Control Buttons Misaligned in Compact Mode | https://github.com/zen-browser/desktop/issues/6716 | 0:24:05 | 7 days, 6:18:13 |
|
||||
| Certificate Manager is mostly broken | https://github.com/zen-browser/desktop/issues/6713 | 9:53:59 | 7 days, 7:51:20 |
|
||||
| Zen browser's implementation of Content Security Policy | https://github.com/zen-browser/desktop/issues/6712 | 6 days, 22:36:46 | 7 days, 8:01:58 |
|
||||
| macOS passkeys not working on certain websites | https://github.com/zen-browser/desktop/issues/6709 | 3 days, 0:44:40 | 7 days, 13:20:09 |
|
||||
| Website Appearance: Automatic broken on macOS | https://github.com/zen-browser/desktop/issues/6708 | 2 days, 20:48:35 | 7 days, 13:22:04 |
|
||||
| zen new tab process in new window is cpu heavy | https://github.com/zen-browser/desktop/issues/6707 | None | 1:22:09 |
|
||||
| Stopping YouTube video on Zen forcing Alcove (dynamic island app) to quit and cannot be launched again | https://github.com/zen-browser/desktop/issues/6704 | 0:32:40 | 7 days, 14:46:10 |
|
||||
| New tabs open on new windows | https://github.com/zen-browser/desktop/issues/6703 | 7 days, 15:11:33 | 7 days, 15:11:34 |
|
||||
| Query input dialog disappears when changing the language | https://github.com/zen-browser/desktop/issues/6702 | 7 days, 17:44:36 | 7 days, 17:44:36 |
|
||||
| adding new tab while being on full screen | https://github.com/zen-browser/desktop/issues/6701 | 17:49:38 | 7 days, 18:20:09 |
|
||||
| Trying to export/share Rice softlocks the browser | https://github.com/zen-browser/desktop/issues/6700 | 7 days, 18:55:49 | 7 days, 18:55:50 |
|
||||
| Changing tabs scrolls the tab bar to the top | https://github.com/zen-browser/desktop/issues/6699 | None | 1 day, 4:31:48 |
|
||||
| External Links - Opens the browser, but not the link. (ZenBrowser.x86_64.AppImage + POP!_os 22.04) | https://github.com/zen-browser/desktop/issues/6698 | 2 days, 15:10:42 | 7 days, 20:37:03 |
|
||||
| Problem with Youtube Music | https://github.com/zen-browser/desktop/issues/6697 | 2:07:46 | 7 days, 21:15:12 |
|
||||
| some website/graph is not rendered correctly | https://github.com/zen-browser/desktop/issues/6692 | None | 0:10:52 |
|
||||
| Preference "zen.workspaces.show-icon-strip=false" no-longer hides non-current workspaces. | https://github.com/zen-browser/desktop/issues/6690 | 0:03:14 | 8 days, 0:46:14 |
|
||||
| some sites wont load properly | https://github.com/zen-browser/desktop/issues/6689 | None | 16:58:42 |
|
||||
| 如何保证常驻标签页在关闭浏览器后,重新打开浏览器后常驻标签页的URL保持不变,而不是上一次关闭浏览器前最后访问的地址 | https://github.com/zen-browser/desktop/issues/6687 | 0:19:22 | 8 days, 3:16:36 |
|
||||
| Youtube and Youtube Music seeking in Media player is not synced | https://github.com/zen-browser/desktop/issues/6685 | 0:32:27 | 8 days, 3:18:50 |
|
||||
| Screen Sharing Bug on Mac | https://github.com/zen-browser/desktop/issues/6683 | 8 days, 3:49:00 | 8 days, 3:49:01 |
|
||||
| Weird workspace scroll change behaviour with sidebar to the right | https://github.com/zen-browser/desktop/issues/6680 | 8 days, 4:52:43 | 8 days, 4:52:44 |
|
||||
| Zen not drawing properly when first opened | https://github.com/zen-browser/desktop/issues/6679 | 3 days, 22:17:55 | 8 days, 5:02:06 |
|
||||
| The browser.tabs.allow_transparent_browser stoped working | https://github.com/zen-browser/desktop/issues/6678 | 0:14:11 | 8 days, 5:49:04 |
|
||||
| "Reading List" extension: Can't read or change data on this site | https://github.com/zen-browser/desktop/issues/6677 | 8 days, 6:42:58 | 8 days, 6:42:59 |
|
||||
| Media Control does not respect playback speed | https://github.com/zen-browser/desktop/issues/6675 | None | 3:03:07 |
|
||||
| Extension install confirm dialog goes offscreen in single toolbar mode | https://github.com/zen-browser/desktop/issues/6674 | 0:29:54 | 8 days, 7:25:57 |
|
||||
| bug: media player applet doesn't respect current progress when paused | https://github.com/zen-browser/desktop/issues/6672 | 0:18:24 | 8 days, 7:45:39 |
|
||||
| media playing asks if i want to leave | https://github.com/zen-browser/desktop/issues/6671 | 3:56:03 | 4:27:20 |
|
||||
| Showing previous version even after Updating | https://github.com/zen-browser/desktop/issues/6669 | 1:54:14 | 8 days, 12:38:12 |
|
||||
| Pin Tabs & Essential Tabs are Removed | https://github.com/zen-browser/desktop/issues/6668 | 8 days, 13:06:17 | 8 days, 13:06:17 |
|
||||
| Google Docs breaking | https://github.com/zen-browser/desktop/issues/6664 | 19:28:30 | 8 days, 16:13:47 |
|
||||
| Media freezes after toggling Zen from different window | https://github.com/zen-browser/desktop/issues/6663 | 8 days, 17:32:25 | 8 days, 17:32:26 |
|
||||
| CPU | https://github.com/zen-browser/desktop/issues/6662 | 22:12:03 | 8 days, 18:02:57 |
|
||||
| [ Twilight ] Loosing transparency | https://github.com/zen-browser/desktop/issues/6660 | 18:34:05 | 1 day, 0:27:29 |
|
||||
| Automaticallty leaving google meets. | https://github.com/zen-browser/desktop/issues/6659 | 0:51:01 | 13:36:13 |
|
||||
| Cannot reorder tabs or open split view in private browsing | https://github.com/zen-browser/desktop/issues/6658 | 8 days, 20:34:09 | 8 days, 20:34:09 |
|
||||
| Extension icons overflowing when pinned to toolbar | https://github.com/zen-browser/desktop/issues/6657 | 16:23:15 | 8 days, 20:53:25 |
|
||||
| Essential tabs frequently exhibit an overlay that obscures their content | https://github.com/zen-browser/desktop/issues/6655 | 8 days, 21:20:37 | 8 days, 21:20:37 |
|
||||
| Workspaces Icon Strip STILL never scrolls or stops expanding and it makes the browser unusable | https://github.com/zen-browser/desktop/issues/6652 | 16:08:33 | 16:08:33 |
|
||||
| Roboform extension is not filling logon form fields in Zen browswer | https://github.com/zen-browser/desktop/issues/6650 | None | 5 days, 18:03:32 |
|
||||
| Media player controller causes youtube music to stop playing after sometime | https://github.com/zen-browser/desktop/issues/6648 | 23:18:57 | 1 day, 0:47:45 |
|
||||
| Shortcut Override Disables Backspace Input | https://github.com/zen-browser/desktop/issues/6647 | 9 days, 1:23:39 | 9 days, 1:23:39 |
|
||||
| "leave"message keeps popping-up | https://github.com/zen-browser/desktop/issues/6646 | 0:19:09 | 9 days, 1:27:14 |
|
||||
| UI Scaling issue on linux desktop | https://github.com/zen-browser/desktop/issues/6644 | 9 days, 1:37:58 | 9 days, 1:37:58 |
|
||||
| Update 1.10b removes option to toggle displaying workspaces as icon strip | https://github.com/zen-browser/desktop/issues/6643 | 1:56:58 | 20:11:36 |
|
||||
| Flatpak theming issue with GTK | https://github.com/zen-browser/desktop/issues/6642 | 9 days, 2:15:14 | 9 days, 2:15:14 |
|
||||
| Some websites doesnt load but others load!!! | https://github.com/zen-browser/desktop/issues/6641 | 3:22:02 | 21:31:59 |
|
||||
| Problem with Zen In instagram | https://github.com/zen-browser/desktop/issues/6640 | 4 days, 3:24:24 | 9 days, 3:47:22 |
|
||||
| Media Control Keys Not Working | https://github.com/zen-browser/desktop/issues/6639 | 6:49:55 | 2 days, 1:54:44 |
|
||||
| DRM content get's paused abruptly | https://github.com/zen-browser/desktop/issues/6638 | 4 days, 5:05:32 | 4 days, 5:05:32 |
|
||||
| Google Meet disconnects after a few seconds if I switch tabs | https://github.com/zen-browser/desktop/issues/6637 | 0:28:11 | 2:43:39 |
|
||||
| Problems with Google meet, unusable in call continuos down | https://github.com/zen-browser/desktop/issues/6636 | 0:05:47 | 2:56:40 |
|
||||
| Deleted workpaces with tabs still exist(?) | https://github.com/zen-browser/desktop/issues/6635 | 9 days, 6:03:15 | 9 days, 6:03:15 |
|
||||
| Audio shut off after about 25 seconds on some website. | https://github.com/zen-browser/desktop/issues/6634 | 3:41:06 | 3:41:06 |
|
||||
| Essential and Pinned tabs not opening on startup | https://github.com/zen-browser/desktop/issues/6630 | 9 days, 11:09:25 | 9 days, 11:09:25 |
|
||||
| Youtube Music randomly switch to tab and showing leave page dialog. | https://github.com/zen-browser/desktop/issues/6627 | 0:27:21 | 10:06:53 |
|
||||
| Rendering Issues for Startpage, Vercel and other websites | https://github.com/zen-browser/desktop/issues/6626 | 4:36:44 | 9 days, 12:48:07 |
|
||||
| Few bugs | https://github.com/zen-browser/desktop/issues/6623 | 9 days, 15:23:47 | 9 days, 15:23:47 |
|
||||
| Dark mode on Google has darker boxes around each result compared to the background | https://github.com/zen-browser/desktop/issues/6622 | 15:46:04 | 9 days, 15:32:25 |
|
||||
| [1.10b] Focusing back into split windows causes janky resizing of websites along with rendering delay when exiting out of split view into other tabs | https://github.com/zen-browser/desktop/issues/6621 | None | 6 days, 6:36:15 |
|
||||
| Blur behind new tab isn't centered properly | https://github.com/zen-browser/desktop/issues/6620 | 0:23:52 | 0:43:53 |
|
||||
| The media animation causes high CPU usage | https://github.com/zen-browser/desktop/issues/6619 | 9 days, 16:13:08 | 9 days, 16:13:08 |
|
||||
| white streak on left side of window when i fullscreen | https://github.com/zen-browser/desktop/issues/6617 | 1:29:28 | 9 days, 17:18:57 |
|
||||
| [1.10b] Focusing back into split windows causes janky resizing animation | https://github.com/zen-browser/desktop/issues/6614 | None | 2:09:32 |
|
||||
| Color is not theme switching on audio widget | https://github.com/zen-browser/desktop/issues/6613 | 9 days, 17:54:09 | 9 days, 17:54:10 |
|
||||
| Authentication on sites via a certificate (such as a Smart Card) broken on macOS in 1.10b | https://github.com/zen-browser/desktop/issues/6612 | 9 days, 18:33:37 | 9 days, 18:33:37 |
|
||||
| Pinned tab separator inconsistent width | https://github.com/zen-browser/desktop/issues/6611 | 9 days, 19:23:43 | 9 days, 19:23:44 |
|
||||
| Sidebar/Tab Bar navigation buttons overflow | https://github.com/zen-browser/desktop/issues/6610 | 9 days, 19:28:07 | 9 days, 19:28:08 |
|
||||
| Inconsistent spacing in compact modes | https://github.com/zen-browser/desktop/issues/6609 | 9 days, 19:40:12 | 9 days, 19:40:13 |
|
||||
| No default favicon for sites without Favicon | https://github.com/zen-browser/desktop/issues/6608 | 20:08:49 | 9 days, 19:44:17 |
|
||||
| Music playback from Jellyfin fails if tab not focused | https://github.com/zen-browser/desktop/issues/6607 | None | 17:48:12 |
|
||||
| New "Media player controller" autoscrolls to top of tab list | https://github.com/zen-browser/desktop/issues/6605 | 21:45:39 | 2 days, 10:48:27 |
|
||||
| Autofill does not work in Mac OS | https://github.com/zen-browser/desktop/issues/6604 | 9 days, 20:41:25 | 9 days, 20:41:26 |
|
||||
| warning pop up randomly | https://github.com/zen-browser/desktop/issues/6603 | 0:20:03 | 18:13:51 |
|
||||
| Controls not visible in new media player controller | https://github.com/zen-browser/desktop/issues/6601 | 1:42:38 | 9 days, 21:46:37 |
|
||||
| Unexplained Black Background in full screen mode | https://github.com/zen-browser/desktop/issues/6600 | 9 days, 21:59:10 | 9 days, 21:59:11 |
|
||||
| can't delete a shortcut | https://github.com/zen-browser/desktop/issues/6599 | 0:02:25 | 19:13:46 |
|
||||
| With Media Player, pinned tabs playing audio/video do not unload | https://github.com/zen-browser/desktop/issues/6598 | None | 0:09:27 |
|
||||
| workspaces being displayed in a line made sidebar too wide resulting in multiple visual issues | https://github.com/zen-browser/desktop/issues/6597 | 1:21:34 | 1 day, 17:31:25 |
|
||||
| Close page alert appears out of nowhere randomly whenever using YouTube Music in the background | https://github.com/zen-browser/desktop/issues/6596 | 0:40:11 | 9 days, 23:14:36 |
|
||||
| All tabs keep crashing on Windows | https://github.com/zen-browser/desktop/issues/6595 | 9 days, 23:41:59 | 9 days, 23:42:00 |
|
||||
| Missing Profile Manager in Application Menu | https://github.com/zen-browser/desktop/issues/6594 | 7 days, 20:01:45 | 9 days, 23:51:00 |
|
||||
| google slides stops | https://github.com/zen-browser/desktop/issues/6592 | 0:18:30 | 10 days, 0:18:42 |
|
||||
| [1.10b] Google meet auto leaves if tab not in focus | https://github.com/zen-browser/desktop/issues/6591 | 0:51:20 | 21:44:10 |
|
||||
| Buggy UI when switching from Single toolbar to Collapsed toolbar [1.10b] | https://github.com/zen-browser/desktop/issues/6590 | 10 days, 0:56:02 | 10 days, 0:56:02 |
|
||||
| [1.10b] Unloaded pinned tab with middle click is still loaded | https://github.com/zen-browser/desktop/issues/6589 | None | 2 days, 18:22:26 |
|
||||
| Essentials tab with "messages.google.com", after browser restart, is now just an empty essentials window. | https://github.com/zen-browser/desktop/issues/6587 | 10 days, 1:47:23 | 10 days, 1:47:23 |
|
||||
| Customize toolbar glitch | https://github.com/zen-browser/desktop/issues/6584 | None | 0:07:05 |
|
||||
| Weird behaviour of media player | https://github.com/zen-browser/desktop/issues/6583 | 0:28:23 | 19:58:25 |
|
||||
| weird behavior of pinned tab when in unload state. (1.10b) | https://github.com/zen-browser/desktop/issues/6582 | None | 3 days, 4:21:05 |
|
||||
| Sidebar(Bookmarks) not resizable when on the right | https://github.com/zen-browser/desktop/issues/6581 | 10 days, 3:38:17 | 10 days, 3:38:17 |
|
||||
| Shortcut key (ALT + C) not working as it shoud | https://github.com/zen-browser/desktop/issues/6580 | 8:01:15 | 10 days, 3:47:52 |
|
||||
| Extension's options pop-up in the address after switching between single and multiple toolbars | https://github.com/zen-browser/desktop/issues/6579 | 7 days, 23:16:56 | 10 days, 3:48:18 |
|
||||
| search bar cuts out of screen | https://github.com/zen-browser/desktop/issues/6578 | 7 days, 7:58:30 | 10 days, 4:05:13 |
|
||||
| new media player controls invisible | https://github.com/zen-browser/desktop/issues/6577 | 2:40:31 | 4 days, 1:29:05 |
|
||||
| Broke layout when resizing on gnome | https://github.com/zen-browser/desktop/issues/6574 | 10 days, 5:06:32 | 10 days, 5:06:33 |
|
||||
| Split screen is still unusable | https://github.com/zen-browser/desktop/issues/6573 | 10 days, 5:22:13 | 10 days, 5:22:14 |
|
||||
| Bookmark toolbar hidden forever, cannot re-enable | https://github.com/zen-browser/desktop/issues/6572 | 4:29:45 | 10 days, 5:30:23 |
|
||||
| Music player disappears when I enter fullscreen mode. | https://github.com/zen-browser/desktop/issues/6571 | 10 days, 5:46:36 | 10 days, 5:46:37 |
|
||||
| Shortcut for compact mode not working | https://github.com/zen-browser/desktop/issues/6570 | 23:53:56 | 10 days, 5:48:07 |
|
||||
| The tab playing music suddenly tries to close | https://github.com/zen-browser/desktop/issues/6569 | 2:34:44 | 1 day, 3:41:49 |
|
||||
| pages are not loading. | https://github.com/zen-browser/desktop/issues/6568 | 0:36:26 | 6:12:21 |
|
||||
| [1.10b] Problem reproducing music after new update | https://github.com/zen-browser/desktop/issues/6567 | 4:36:27 | 1 day, 4:05:32 |
|
||||
| Website for `grok.com` unable to be opened | https://github.com/zen-browser/desktop/issues/6566 | 0:34:25 | 4:23:14 |
|
||||
| I don't see the new media player | https://github.com/zen-browser/desktop/issues/6565 | 0:01:31 | 0:19:53 |
|
||||
| Grouping tabs bug | https://github.com/zen-browser/desktop/issues/6564 | 1:25:58 | 10 days, 7:29:16 |
|
||||
| [1.10b]Music controls not visible in the sidebar media player - light mode | https://github.com/zen-browser/desktop/issues/6562 | 0:57:05 | 4 days, 5:49:17 |
|
||||
| [1.10b] The default icon for tabs with no favicon is a bit strange, kinda preferred the default globe icon. | https://github.com/zen-browser/desktop/issues/6558 | 9:12:57 | 10 days, 15:57:17 |
|
||||
| extension icons being cut off | https://github.com/zen-browser/desktop/issues/6556 | 5:21:38 | 10 days, 17:11:42 |
|
||||
| Cornerradius on websites | https://github.com/zen-browser/desktop/issues/6554 | 10 days, 17:31:17 | 10 days, 17:31:18 |
|
||||
| Floating tab bar breaks without any shortcuts set | https://github.com/zen-browser/desktop/issues/6552 | 10 days, 23:11:25 | 10 days, 23:11:25 |
|
||||
| Profiles manage page not open | https://github.com/zen-browser/desktop/issues/6549 | 1 day, 3:51:56 | 11 days, 1:55:12 |
|
||||
| SImple tab group is locked loading in a new window | https://github.com/zen-browser/desktop/issues/6547 | 11 days, 2:09:36 | 11 days, 2:09:36 |
|
||||
| Save to Koofr extension not working | https://github.com/zen-browser/desktop/issues/6546 | None | 0:20:09 |
|
||||
| Buttons not loading in ChatGPT | https://github.com/zen-browser/desktop/issues/6545 | 1 day, 1:59:28 | 11 days, 3:04:35 |
|
||||
| Multiple toolbars prevents access to window controls | https://github.com/zen-browser/desktop/issues/6544 | 8 days, 2:31:30 | 11 days, 3:12:41 |
|
||||
| Master Password not recognised | https://github.com/zen-browser/desktop/issues/6543 | None | 0:08:37 |
|
||||
| The 1.9.1B version of the browser is not compatible with Baidu Input Method, which may cause the page to freeze when text is entered into the search bar. | https://github.com/zen-browser/desktop/issues/6542 | 11 days, 3:44:20 | 11 days, 3:44:21 |
|
||||
| [ twilight ] Set alternatives languages issues | https://github.com/zen-browser/desktop/issues/6541 | 14:16:10 | 1 day, 3:56:17 |
|
||||
| Browser takes theme color on websites which don't have any background color #bug | https://github.com/zen-browser/desktop/issues/6539 | 11 days, 7:02:47 | 11 days, 7:02:48 |
|
||||
| Opening Zen via a keyboard shortcut causes a Open in troubleshoot mode. | https://github.com/zen-browser/desktop/issues/6538 | 8:37:13 | 11 days, 9:21:17 |
|
||||
| Microsoft Teams fails to init | https://github.com/zen-browser/desktop/issues/6537 | 11 days, 9:52:46 | 11 days, 9:52:46 |
|
||||
| logs off from every account on restart | https://github.com/zen-browser/desktop/issues/6536 | 13:39:58 | 11 days, 10:19:55 |
|
||||
| Page screenshot buttons, `about:logins` and `Secure Site Not Available` page [seem to] use default accent color | https://github.com/zen-browser/desktop/issues/6534 | 11 days, 16:25:09 | 11 days, 16:25:09 |
|
||||
| Enhanced tracking protection ("shield" icon) is gone | https://github.com/zen-browser/desktop/issues/6533 | 11 days, 6:57:39 | 11 days, 15:54:58 |
|
||||
| Browser does not record history | https://github.com/zen-browser/desktop/issues/6532 | 6:33:00 | 11 days, 18:30:23 |
|
||||
| White bar at the bottom of the window when having windows "Hide Taskbar" on | https://github.com/zen-browser/desktop/issues/6531 | 0:38:42 | 11 days, 20:09:24 |
|
||||
| Closing zen not working | https://github.com/zen-browser/desktop/issues/6529 | None | 9:45:39 |
|
||||
| Closing and reopening essentials results in pinned tab | https://github.com/zen-browser/desktop/issues/6528 | 11 days, 21:21:41 | 11 days, 21:21:42 |
|
||||
| Zen not opening last used tab when opening new window | https://github.com/zen-browser/desktop/issues/6527 | 11 days, 21:28:58 | 11 days, 21:28:58 |
|
||||
| Tab Reordering Issue when in Always Private Browsing Mode | https://github.com/zen-browser/desktop/issues/6526 | 11 days, 21:33:54 | 11 days, 21:33:55 |
|
||||
| Tab close button clickable area smaller than hover-highlighted area | https://github.com/zen-browser/desktop/issues/6525 | 11 days, 22:43:11 | 11 days, 22:43:11 |
|
||||
| On startup browser does not respect spacers in the tolbar customisation | https://github.com/zen-browser/desktop/issues/6524 | 11 days, 23:06:57 | 11 days, 23:06:57 |
|
||||
| Issues with opening link in a new tab from Essential tab from a different workspace/container | https://github.com/zen-browser/desktop/issues/6523 | 21:19:50 | 10 days, 7:52:33 |
|
||||
| pressing any key opens "Find in page..." | https://github.com/zen-browser/desktop/issues/6517 | 2:10:33 | 5:11:26 |
|
||||
| reopen closed window | https://github.com/zen-browser/desktop/issues/6516 | 12 days, 3:30:16 | 12 days, 3:30:16 |
|
||||
| Links should open in the Default Workspace (and assigned container, if set) instead of the last used one | https://github.com/zen-browser/desktop/issues/6515 | 12 days, 3:52:21 | 12 days, 3:52:21 |
|
||||
| Unable to download files from drive.google.com or gmail. | https://github.com/zen-browser/desktop/issues/6514 | 1 day, 10:45:46 | 12 days, 4:36:11 |
|
||||
| Code signature changed? | https://github.com/zen-browser/desktop/issues/6513 | 1 day, 16:33:41 | 3 days, 19:57:51 |
|
||||
| Closing mini window tab opened from pinned essential goes to new tab | https://github.com/zen-browser/desktop/issues/6510 | 12 days, 7:04:31 | 12 days, 7:04:32 |
|
||||
| New Tab -> Back to old tab doesn't work. | https://github.com/zen-browser/desktop/issues/6509 | 12 days, 7:37:46 | 12 days, 7:37:47 |
|
||||
| Multiple windows reopen on launch despite disabling "Open previous windows and tabs" | https://github.com/zen-browser/desktop/issues/6508 | 12 days, 8:13:19 | 12 days, 8:13:20 |
|
||||
| Canva Verify Payment Window Not Loading | https://github.com/zen-browser/desktop/issues/6506 | 12 days, 14:36:55 | 12 days, 14:36:56 |
|
||||
| New zen window / instance is opening by itself | https://github.com/zen-browser/desktop/issues/6504 | 12 days, 18:03:52 | 12 days, 18:03:53 |
|
||||
| External programs can't open links (Log in) using zen browser. | https://github.com/zen-browser/desktop/issues/6503 | None | 0:09:07 |
|
||||
| Opens first tab after update | https://github.com/zen-browser/desktop/issues/6502 | 0:16:15 | 0:16:15 |
|
||||
| Minimize and restore down buttons are not shown in KDE wayland session | https://github.com/zen-browser/desktop/issues/6501 | 12 days, 20:18:10 | 12 days, 20:18:11 |
|
||||
| Cannot bind certain keys for shortcuts | https://github.com/zen-browser/desktop/issues/6498 | 18:29:44 | 13 days, 1:18:14 |
|
||||
| Back and Forward Buttons Switch Workspace Instead of Page | https://github.com/zen-browser/desktop/issues/6497 | 11:07:22 | 11 days, 8:39:41 |
|
||||
| Can't close windows in compact mode (Windows) | https://github.com/zen-browser/desktop/issues/6495 | 13 days, 2:10:59 | 13 days, 2:10:59 |
|
||||
| URL bar narrow after compact mode | https://github.com/zen-browser/desktop/issues/6493 | 1 day, 12:31:52 | 13 days, 2:31:24 |
|
||||
| Cant rearrange tabs and splitview when in incogito | https://github.com/zen-browser/desktop/issues/6492 | 13 days, 3:15:56 | 13 days, 3:15:56 |
|
||||
| Web panels no longer appear when watching a fullscreen video. | https://github.com/zen-browser/desktop/issues/6491 | 13 days, 5:01:16 | 13 days, 5:01:17 |
|
||||
| Problem watching DRM content (specifically www.crunchyroll.com content) | https://github.com/zen-browser/desktop/issues/6490 | 11:50:38 | 13 days, 6:05:20 |
|
||||
| When using Baidu to search, the search bar appears blank and it is impossible to input text. If you force an input by using the space bar, the web page will return to the previous one. | https://github.com/zen-browser/desktop/issues/6489 | None | 2 days, 2:54:25 |
|
||||
| Major contrast/transparency visual background glitch | https://github.com/zen-browser/desktop/issues/6488 | 13 days, 7:25:57 | 13 days, 7:25:58 |
|
||||
| Tab page jitter in Split View mode | https://github.com/zen-browser/desktop/issues/6487 | 1 day, 13:01:10 | 13 days, 8:17:37 |
|
||||
| "command + shift + C" doesn't work for inspect element | https://github.com/zen-browser/desktop/issues/6485 | 1 day, 14:44:49 | 13 days, 14:53:24 |
|
||||
| Top edge of browser scaling on hover | https://github.com/zen-browser/desktop/issues/6484 | 13 days, 15:42:29 | 13 days, 15:42:30 |
|
||||
| Black screen, after reopen on Win10, than most tabs missing | https://github.com/zen-browser/desktop/issues/6483 | 13 days, 16:57:29 | 13 days, 16:57:29 |
|
||||
| Favicons not displayed for some websites | https://github.com/zen-browser/desktop/issues/6482 | 13 days, 17:29:54 | 13 days, 17:29:55 |
|
||||
| Background transparency flickering when OBS is on the background | https://github.com/zen-browser/desktop/issues/6479 | 13 days, 18:50:41 | 13 days, 18:50:42 |
|
||||
| Only five web panel icons show | https://github.com/zen-browser/desktop/issues/6478 | 1:04:04 | 1:05:50 |
|
||||
| Zen using too much system resources | https://github.com/zen-browser/desktop/issues/6477 | 12:40:56 | 12:40:58 |
|
||||
| Caton when playing video full-screen | https://github.com/zen-browser/desktop/issues/6476 | 14 days, 5:46:49 | 14 days, 5:46:49 |
|
||||
| Minor bug perhaps, click the current workspaces shortcut breaks scroll limit on tab list. | https://github.com/zen-browser/desktop/issues/6475 | 14 days, 5:55:03 | 14 days, 5:55:04 |
|
||||
| Missing icons in pdf viewer interface | https://github.com/zen-browser/desktop/issues/6471 | 8 days, 16:45:52 | 14 days, 8:31:01 |
|
||||
| Zen elastic scrolling | https://github.com/zen-browser/desktop/issues/6470 | 8:32:23 | 8:32:30 |
|
||||
| Slide Graphics Blinking (PowerPoint) | https://github.com/zen-browser/desktop/issues/6469 | 14 days, 13:37:01 | 14 days, 13:37:02 |
|
||||
| Zen ignores policies.json and keeps update popup | https://github.com/zen-browser/desktop/issues/6468 | 14 days, 13:56:24 | 14 days, 13:56:24 |
|
||||
| Drag to Split only works for creating new vertical splits | https://github.com/zen-browser/desktop/issues/6463 | 14 days, 21:31:52 | 14 days, 21:31:53 |
|
||||
| Scroll bar can't be scrolled from the right edge of the window (Windows) | https://github.com/zen-browser/desktop/issues/6461 | 7:04:49 | 15 days, 0:54:05 |
|
||||
| Discord does not play video on zen | https://github.com/zen-browser/desktop/issues/6459 | 22:26:18 | 12 days, 1:57:02 |
|
||||
| Close tab buttons slightly cut off when in compact mode (Windows) | https://github.com/zen-browser/desktop/issues/6458 | 6:26:54 | 15 days, 1:11:08 |
|
||||
| Screen sharing is not working for calls on teams and google meet after the update | https://github.com/zen-browser/desktop/issues/6457 | 4 days, 18:07:16 | 15 days, 1:12:33 |
|
||||
| The scroll is not smooth as on other browser | https://github.com/zen-browser/desktop/issues/6454 | 1:43:43 | 1 day, 1:36:57 |
|
||||
| When there are no tabs in the browser, the sidebar gets stuck in the expanded state, blocking the view and not retracting. | https://github.com/zen-browser/desktop/issues/6453 | 1:53:35 | 2:31:06 |
|
||||
| New window created when 3rd tab is split on the right | https://github.com/zen-browser/desktop/issues/6451 | None | 1 day, 11:40:57 |
|
||||
| Opening links in other apps open a new Zen window with just a blank page | https://github.com/zen-browser/desktop/issues/6450 | 2 days, 0:05:56 | 15 days, 3:37:39 |
|
||||
| Bug on pinned tabs | https://github.com/zen-browser/desktop/issues/6447 | 15 days, 5:27:45 | 15 days, 5:27:46 |
|
||||
| Tabs randomly mix all over the place when you split | https://github.com/zen-browser/desktop/issues/6446 | 15 days, 6:21:12 | 15 days, 6:21:13 |
|
||||
| The Extensions popup while adding new extensions is going out of the screen | https://github.com/zen-browser/desktop/issues/6445 | 4 days, 8:05:02 | 15 days, 6:25:14 |
|
||||
| Fullscreen mode shows window border (Linux) | https://github.com/zen-browser/desktop/issues/6443 | 2 days, 4:01:19 | 15 days, 7:41:07 |
|
||||
| Split view bug | https://github.com/zen-browser/desktop/issues/6442 | 15 days, 9:37:40 | 15 days, 9:37:40 |
|
||||
| Maxed out all 16 cores, 64GB of RAM and 16GB of swap | https://github.com/zen-browser/desktop/issues/6441 | 4:14:00 | 15 days, 9:40:52 |
|
||||
| Closing unpinned tabs below an Essential tab leaves the window stuck | https://github.com/zen-browser/desktop/issues/6437 | 7 days, 5:43:28 | 15 days, 12:15:12 |
|
||||
| Unexpected bottom border when fullscreen on Windows | https://github.com/zen-browser/desktop/issues/6435 | 4:16:15 | 15 days, 13:47:02 |
|
||||
| Right clicking for pasting new link on the address bar selects the current tab's link and overrides it when trying to open new tab through Ctrl+t | https://github.com/zen-browser/desktop/issues/6434 | 8 days, 6:34:51 | 15 days, 16:34:09 |
|
||||
| Sidebar UI Problem | https://github.com/zen-browser/desktop/issues/6433 | None | 4 days, 1:48:19 |
|
||||
| Zen forgets all tabs when the main browser is closed while Private Browsing is open | https://github.com/zen-browser/desktop/issues/6432 | 7 days, 0:32:05 | 15 days, 16:47:13 |
|
||||
| Websites refuse to work | https://github.com/zen-browser/desktop/issues/6431 | 11:01:23 | 15 days, 17:06:27 |
|
||||
| Sidebar Dragging Moves Entire Window | https://github.com/zen-browser/desktop/issues/6429 | 1 day, 12:51:50 | 2 days, 4:15:34 |
|
||||
| Chatbot support disabled by default | https://github.com/zen-browser/desktop/issues/6428 | 0:39:39 | 15 days, 20:17:43 |
|
||||
| Twitch: FrankerFaceZ extenstion | https://github.com/zen-browser/desktop/issues/6426 | 2:14:12 | 22:59:33 |
|
||||
| Kagi search page has bad font rendering when using flatpak | https://github.com/zen-browser/desktop/issues/6425 | 8 days, 17:42:46 | 15 days, 22:26:02 |
|
||||
| Failing to drag tab for split window when native sidebar is on the right | https://github.com/zen-browser/desktop/issues/6424 | 15 days, 23:02:32 | 15 days, 23:02:33 |
|
||||
| Open any url/tab = nothing happens | https://github.com/zen-browser/desktop/issues/6423 | 15 days, 23:23:46 | 15 days, 23:23:47 |
|
||||
| I have a problem creating a new tab in the browser. | https://github.com/zen-browser/desktop/issues/6420 | 0:29:25 | 16 days, 0:13:53 |
|
||||
| Dark theme menu bar glitched | https://github.com/zen-browser/desktop/issues/6419 | 16 days, 0:20:20 | 16 days, 0:20:20 |
|
||||
| New tab opens black page with only search option | https://github.com/zen-browser/desktop/issues/6418 | 1:30:09 | 1 day, 20:19:37 |
|
||||
| Black text on dark theme | https://github.com/zen-browser/desktop/issues/6416 | 1 day, 0:41:57 | 16 days, 1:56:48 |
|
||||
| Login pop-ups instant crashed. | https://github.com/zen-browser/desktop/issues/6414 | None | 3 days, 11:52:50 |
|
||||
| Only last workspace tabs are synced via firefox account | https://github.com/zen-browser/desktop/issues/6413 | 3:29:46 | 16 days, 2:45:09 |
|
||||
| Open in split window in split window undefined behaviour | https://github.com/zen-browser/desktop/issues/6412 | 16 days, 2:55:23 | 16 days, 2:55:24 |
|
||||
| Sidebar Stucked | https://github.com/zen-browser/desktop/issues/6411 | 16 days, 3:17:38 | 16 days, 3:17:39 |
|
||||
| Keyboard shortcuts not working with non-English layouts (e.g., Turkish) | https://github.com/zen-browser/desktop/issues/6410 | 16 days, 3:27:56 | 16 days, 3:27:56 |
|
||||
| Chinese input not work in Baidu search engine | https://github.com/zen-browser/desktop/issues/6409 | 4:27:38 | 16 days, 4:36:48 |
|
||||
| sidebar/toolbar overlap | https://github.com/zen-browser/desktop/issues/6408 | 13 days, 4:37:38 | 16 days, 4:54:10 |
|
||||
| Sidebar on the right | https://github.com/zen-browser/desktop/issues/6406 | 16 days, 5:57:44 | 16 days, 5:57:45 |
|
||||
| Floating video player doesn't follow virtual desktops | https://github.com/zen-browser/desktop/issues/6405 | 3 days, 3:21:41 | 16 days, 6:47:00 |
|
||||
| Opening an external link when browser is closed have a different behavior than when the browser is opened | https://github.com/zen-browser/desktop/issues/6404 | 16 days, 7:01:57 | 16 days, 7:01:57 |
|
||||
| Zen Browser opens on the last used virtual desktop instead of the current one | https://github.com/zen-browser/desktop/issues/6403 | 3 days, 11:14:01 | 16 days, 7:21:44 |
|
||||
| Workspace assigned to bookmarks not editable after creation | https://github.com/zen-browser/desktop/issues/6402 | 16 days, 7:27:34 | 16 days, 7:27:34 |
|
||||
| Split Tabs not Restored upon Hard Computer Reset | https://github.com/zen-browser/desktop/issues/6401 | 16 days, 7:41:46 | 16 days, 7:41:46 |
|
||||
| (Critical) refresh button broken! | https://github.com/zen-browser/desktop/issues/6399 | 16 days, 8:13:05 | 16 days, 8:13:06 |
|
||||
| Ai ChatBot unavailable in sidebar | https://github.com/zen-browser/desktop/issues/6398 | 5:17:58 | 1 day, 7:41:37 |
|
||||
| Browser slow to load on launch on notebook | https://github.com/zen-browser/desktop/issues/6397 | 16 days, 9:22:29 | 16 days, 9:22:29 |
|
||||
| Zen 1.9.1b auto-update from 1.9b breaks MacOS code-signature | https://github.com/zen-browser/desktop/issues/6394 | 5 days, 23:17:44 | 8 days, 4:56:29 |
|
||||
| Flexible space bug when placed on either sides of the URL bar in Multiple toolbars in Browser Layout | https://github.com/zen-browser/desktop/issues/6392 | 16 days, 12:08:43 | 16 days, 12:08:43 |
|
||||
| Pinned tabs aren't restored properly when multiple windows are open | https://github.com/zen-browser/desktop/issues/6391 | 16:40:17 | 16 days, 12:11:56 |
|
||||
| Compact Mode Toggle Shortcut Not Working | https://github.com/zen-browser/desktop/issues/6389 | 15:23:17 | 16 days, 14:30:44 |
|
||||
| Split View beyond two tabs fails | https://github.com/zen-browser/desktop/issues/6388 | 16 days, 14:45:49 | 16 days, 14:45:49 |
|
||||
| Access Violation (0xc0000005) Crash When Running with SentinelOne EDR Active (Windows ARM64) | https://github.com/zen-browser/desktop/issues/6386 | 16 days, 15:59:44 | 16 days, 15:59:44 |
|
||||
| book.ark toolbar and window controls persists when opening folder | https://github.com/zen-browser/desktop/issues/6385 | 16 days, 16:01:37 | 16 days, 16:01:38 |
|
||||
| Right click menu to Move tab to other Workspace does not show | https://github.com/zen-browser/desktop/issues/6384 | 0:20:11 | 1 day, 23:55:41 |
|
||||
| Windows Window Handling Is Problematic | https://github.com/zen-browser/desktop/issues/6382 | 16 days, 18:50:00 | 16 days, 18:50:01 |
|
||||
| Glance opens on magnet links | https://github.com/zen-browser/desktop/issues/6381 | 0:03:28 | 16 days, 19:56:51 |
|
||||
| Confirm Closing Feature for Glance does not Work | https://github.com/zen-browser/desktop/issues/6380 | 2:04:46 | 16 days, 19:57:26 |
|
||||
| Cant open extensions when no tab open. | https://github.com/zen-browser/desktop/issues/6378 | 12 days, 15:43:18 | 16 days, 20:11:00 |
|
||||
| Weird zooming and window placement issues on Windows | https://github.com/zen-browser/desktop/issues/6374 | 16 days, 22:37:04 | 16 days, 22:37:04 |
|
||||
| Search Engine Shortcuts Dont work after 1.9b, no mods on | https://github.com/zen-browser/desktop/issues/6373 | 2 days, 16:37:00 | 16 days, 22:41:27 |
|
||||
| Dragging Tabs to open Split view only works on the left, when the tabs are on the right | https://github.com/zen-browser/desktop/issues/6372 | None | 9 days, 2:10:52 |
|
||||
| misclick caused by tab context menu | https://github.com/zen-browser/desktop/issues/6371 | 16 days, 23:25:28 | 16 days, 23:25:29 |
|
||||
| URL Bar only showing up when typing. | https://github.com/zen-browser/desktop/issues/6369 | 1 day, 20:40:08 | 1 day, 23:49:44 |
|
||||
| why is it grayed out ? | https://github.com/zen-browser/desktop/issues/6368 | 22:27:41 | 22:28:35 |
|
||||
| SuperPins (v1.4.4) not wrapping to new row | https://github.com/zen-browser/desktop/issues/6365 | 0:36:25 | 17 days, 2:47:47 |
|
||||
| icons missaligned adress bar | https://github.com/zen-browser/desktop/issues/6364 | None | 1:46:18 |
|
||||
| Move selected tab(s) to new window opens a new window while CLOSING the (first) selected tab | https://github.com/zen-browser/desktop/issues/6363 | 1:36:57 | 1 day, 2:54:10 |
|
||||
| Japanese font doesn't work | https://github.com/zen-browser/desktop/issues/6362 | 17 days, 5:34:27 | 17 days, 5:34:27 |
|
||||
| --zen-sidebar-width not set correctly when opening Zen with compact mode enabled | https://github.com/zen-browser/desktop/issues/6361 | 17 days, 6:23:51 | 17 days, 6:23:52 |
|
||||
| Change tab from workspace (with default container) to other workspace loses tab | https://github.com/zen-browser/desktop/issues/6360 | 1 day, 7:46:11 | 15 days, 15:16:51 |
|
||||
| Browser gives no visual indication that a browser window is private | https://github.com/zen-browser/desktop/issues/6358 | 14:08:22 | 17 days, 7:14:46 |
|
||||
| Windows version eating up too much RAM | https://github.com/zen-browser/desktop/issues/6357 | 1:49:59 | 1 day, 5:24:46 |
|
||||
| Zen is being updated by another instance | https://github.com/zen-browser/desktop/issues/6355 | 14 days, 21:48:28 | 17 days, 12:00:20 |
|
||||
| Collapsed and Multiple toolbar does not hide completely (1.9b -> 1.10b still) | https://github.com/zen-browser/desktop/issues/6354 | 0:02:49 | 17 days, 12:07:24 |
|
||||
| Browser unresponsive after closing large amount of tabs | https://github.com/zen-browser/desktop/issues/6353 | 3 days, 17:13:21 | 17 days, 13:01:01 |
|
||||
| url bar icon not aligned center | https://github.com/zen-browser/desktop/issues/6352 | 17:24:58 | 17 days, 13:31:25 |
|
||||
| Incorrect user interface in side panel | https://github.com/zen-browser/desktop/issues/6351 | 5 days, 16:07:57 | 17 days, 14:06:04 |
|
||||
| Every time opening tabs in Essentials | https://github.com/zen-browser/desktop/issues/6350 | 17 days, 14:18:21 | 17 days, 14:18:21 |
|
||||
| Link is ignored if there's no active windows AND if Zen remembers history | https://github.com/zen-browser/desktop/issues/6349 | 0:06:18 | 3 days, 9:53:01 |
|
||||
| Dragging window into a new desktop results in blank zen window | https://github.com/zen-browser/desktop/issues/6348 | 0:26:07 | 1 day, 23:33:25 |
|
||||
| restoring pinned tabs converts it to blank | https://github.com/zen-browser/desktop/issues/6347 | None | 11 days, 13:47:41 |
|
||||
| mica broke again | https://github.com/zen-browser/desktop/issues/6346 | 17 days, 16:46:21 | 17 days, 16:46:21 |
|
||||
| Search engine selector gone | https://github.com/zen-browser/desktop/issues/6345 | 4 days, 20:07:21 | 17 days, 17:17:10 |
|
||||
| PDF files open to a blank page when Zen is closed | https://github.com/zen-browser/desktop/issues/6343 | 12:43:24 | 17 days, 18:13:02 |
|
||||
| Tab peek controls overlap firefox ai chat sidebar | https://github.com/zen-browser/desktop/issues/6342 | 17 days, 18:38:25 | 17 days, 18:38:26 |
|
||||
| Cant open a link with left click. | https://github.com/zen-browser/desktop/issues/6341 | 17 days, 18:56:56 | 17 days, 18:56:57 |
|
||||
| Distorted UI during first use - fresh install | https://github.com/zen-browser/desktop/issues/6340 | 17 days, 19:04:58 | 17 days, 19:04:59 |
|
||||
| Ctrl+Tab fails to switch tabs when dragging a file | https://github.com/zen-browser/desktop/issues/6339 | 17 days, 20:59:02 | 17 days, 20:59:03 |
|
||||
| freeze content when scrolling | https://github.com/zen-browser/desktop/issues/6338 | 1 day, 13:52:29 | 17 days, 20:59:52 |
|
||||
| Web Panel resets to initial state on tab change | https://github.com/zen-browser/desktop/issues/6336 | 17 days, 23:33:45 | 17 days, 23:33:45 |
|
||||
| New tab search bar doesn’t open when address bar suggestions are disabled | https://github.com/zen-browser/desktop/issues/6335 | 18 days, 2:21:42 | 18 days, 2:21:42 |
|
||||
| Sidebar gadient breaks | https://github.com/zen-browser/desktop/issues/6333 | 18 days, 3:30:31 | 18 days, 3:30:31 |
|
||||
| Show Sidebar is greyed out | https://github.com/zen-browser/desktop/issues/6332 | 7 days, 23:54:34 | 18 days, 3:42:42 |
|
||||
| Sidebar overlaps with page content in 'multiple toolbar' mode | https://github.com/zen-browser/desktop/issues/6330 | 18 days, 3:57:58 | 18 days, 3:57:58 |
|
||||
| Search shortcuts are missing in URL and Quick search bar | https://github.com/zen-browser/desktop/issues/6329 | 11 days, 11:42:02 | 18 days, 4:42:24 |
|
||||
| Tab order disrupted [Bug] | https://github.com/zen-browser/desktop/issues/6328 | None | 7 days, 22:29:09 |
|
||||
| Extension data being corrupted? (Bitwarden losing accounts) | https://github.com/zen-browser/desktop/issues/6327 | 18 days, 6:51:22 | 18 days, 6:51:22 |
|
||||
| Hovering over tabs now displays an x to close them | https://github.com/zen-browser/desktop/issues/6325 | 0:46:18 | 18 days, 8:15:53 |
|
||||
| Cannot split private tabs | https://github.com/zen-browser/desktop/issues/6323 | 0:15:38 | 8 days, 8:41:36 |
|
||||
| URL Bar is blocked when typing in it | https://github.com/zen-browser/desktop/issues/6322 | None | 6:17:45 |
|
||||
| Bookmark Bar not Minimizing | https://github.com/zen-browser/desktop/issues/6320 | None | 5:08:00 |
|
||||
| Buggy behaviour when dragging tab from the bar | https://github.com/zen-browser/desktop/issues/6319 | 0:49:26 | 18 days, 15:48:26 |
|
||||
| Bookmarks in Toolbar disappearing when entering fullscreen | https://github.com/zen-browser/desktop/issues/6318 | 1 day, 14:07:49 | 18 days, 16:41:09 |
|
||||
| Alt + Clicking a link to open it in glance mode does not work in http pages | https://github.com/zen-browser/desktop/issues/6317 | 18 days, 17:40:56 | 18 days, 17:40:56 |
|
||||
| iCloud Passwords extension broken | https://github.com/zen-browser/desktop/issues/6315 | 0:05:10 | 18 days, 19:11:03 |
|
||||
| High CPU Usage | https://github.com/zen-browser/desktop/issues/6311 | 2:11:38 | 2:11:38 |
|
||||
| Bookmark bad placement | https://github.com/zen-browser/desktop/issues/6310 | 11:00:26 | 1 day, 4:55:26 |
|
||||
| Missing top and bottom margins for the URL bar. | https://github.com/zen-browser/desktop/issues/6308 | 1 day, 5:38:11 | 1 day, 5:38:11 |
|
||||
| The knob for setting grains in theme setter is not circular | https://github.com/zen-browser/desktop/issues/6307 | 0:02:54 | 18 days, 23:12:49 |
|
||||
| zen.workspaces.natural-scroll. workspace gestures animation are the wrong direction | https://github.com/zen-browser/desktop/issues/6305 | 18 days, 23:51:15 | 18 days, 23:51:15 |
|
||||
| split screen moves pdfs | https://github.com/zen-browser/desktop/issues/6304 | 0:34:48 | 19 days, 0:38:55 |
|
||||
| Why are search box icons positioned differently? | https://github.com/zen-browser/desktop/issues/6303 | 0:34:03 | 1 day, 7:25:16 |
|
||||
| Zen does not get scrolling optimizations | https://github.com/zen-browser/desktop/issues/6302 | 4:31:26 | None |
|
||||
| Save files do not correctly remember last saving location | https://github.com/zen-browser/desktop/issues/6301 | 19 days, 1:03:38 | 19 days, 1:03:38 |
|
||||
| Close tab button tiny and at wrong position since update 1.9b | https://github.com/zen-browser/desktop/issues/6300 | 0:00:43 | 0:00:42 |
|
||||
| New tab (ctrl-t) often replaces current tab as if i pressed (ctrl-l) | https://github.com/zen-browser/desktop/issues/6299 | 2:40:29 | 19 days, 3:40:52 |
|
||||
| Gradient disappears if the window is unfocused | https://github.com/zen-browser/desktop/issues/6298 | 3:33:50 | 19 days, 3:46:23 |
|
||||
| New tab in container | https://github.com/zen-browser/desktop/issues/6296 | 4:14:30 | 4:17:52 |
|
||||
| Toolbar Doesn't Collapse When Hovering Over Tab Preview in Compact Mode | https://github.com/zen-browser/desktop/issues/6295 | 19 days, 4:41:23 | 19 days, 4:41:24 |
|
||||
| Some website have overlay graphics at the wrong location | https://github.com/zen-browser/desktop/issues/6294 | 4:49:46 | 19 days, 4:48:39 |
|
||||
| No way to open the sidebar while in compact mode on touchscreen | https://github.com/zen-browser/desktop/issues/6293 | 19 days, 5:01:49 | 19 days, 5:01:50 |
|
||||
| Copying Problem While Watching Something on YouTube | https://github.com/zen-browser/desktop/issues/6291 | 19 days, 5:25:06 | 19 days, 5:25:07 |
|
||||
| Zen Browser - Audio Icon Not Visible in "Audio TabIcon Plus" Mode | https://github.com/zen-browser/desktop/issues/6290 | 5:48:29 | 19 days, 5:44:15 |
|
||||
| when i start zen after 1.9b update it doesn't show anything except the top bar | https://github.com/zen-browser/desktop/issues/6288 | 7:21:54 | 4 days, 14:26:52 |
|
||||
| Expand sidebar button has no priority when shrunk | https://github.com/zen-browser/desktop/issues/6287 | 19 days, 6:36:54 | 19 days, 6:36:55 |
|
||||
| Zen stuck on Syncing... on MacOS | https://github.com/zen-browser/desktop/issues/6286 | 19 days, 6:50:36 | 19 days, 6:50:37 |
|
||||
| I can’t delete the profile. | https://github.com/zen-browser/desktop/issues/6285 | 2 days, 20:28:06 | 19 days, 7:25:46 |
|
||||
| Split tab shortcut not working in split view and other weird behavior | https://github.com/zen-browser/desktop/issues/6284 | 19 days, 7:35:52 | 19 days, 7:35:53 |
|
||||
| Split view blocks Zen now | https://github.com/zen-browser/desktop/issues/6280 | 19 days, 10:26:31 | 19 days, 10:26:32 |
|
||||
| Video Playback Issues | https://github.com/zen-browser/desktop/issues/6279 | 23:01:38 | 19 days, 10:46:34 |
|
||||
| Tab Sidebar opens due to irrelivent command | https://github.com/zen-browser/desktop/issues/6278 | None | 15 days, 6:43:34 |
|
||||
| Workspace Selector not working on bookmarks create/edit modal | https://github.com/zen-browser/desktop/issues/6277 | 1 day, 17:07:14 | 7 days, 3:18:48 |
|
||||
| Home showing blank page | https://github.com/zen-browser/desktop/issues/6275 | 0:09:49 | 4 days, 20:03:39 |
|
||||
| You can no longer split essentials | https://github.com/zen-browser/desktop/issues/6273 | 11:22:32 | 19 days, 16:19:50 |
|
||||
| Extensions no longer stay pinned to the toolbar | https://github.com/zen-browser/desktop/issues/6272 | 0:09:02 | 19 days, 17:20:49 |
|
||||
| Firefox tracker protection, PiP, and bookmark icons bugged | https://github.com/zen-browser/desktop/issues/6271 | 5:23:54 | 2 days, 0:09:16 |
|
||||
| 2FAS Extension problem - abnormal CPU usage in 1.9b - no problems on Firefox | https://github.com/zen-browser/desktop/issues/6270 | 10:04:32 | 19 days, 17:44:32 |
|
||||
| Be nice if I didn't have to install it every time I wanted to run it due to some bull sh t 0000000132 error. Pay nothing get nothing I suppose. Nothing ZEN about that. | https://github.com/zen-browser/desktop/issues/6269 | 1:44:24 | 19 days, 17:56:03 |
|
||||
| New Window action always creates to default newtab page | https://github.com/zen-browser/desktop/issues/6268 | 3:23:22 | 19 days, 18:32:03 |
|
||||
| Can't open new tab by dragging selected text to sidebar | https://github.com/zen-browser/desktop/issues/6267 | None | 23:14:40 |
|
||||
| Shortcuts don't work when they conflict with standard character key binds | https://github.com/zen-browser/desktop/issues/6266 | 19 days, 21:18:44 | 19 days, 21:18:44 |
|
||||
| All profiles Deleted automatically when using zen , can't restore them with about:profiles also | https://github.com/zen-browser/desktop/issues/6265 | 2:59:57 | 19 days, 21:40:08 |
|
||||
| Windows processes / the entire windows unresponsive when using any kind of AI chats on Zen | https://github.com/zen-browser/desktop/issues/6264 | 19 days, 22:04:11 | 19 days, 22:04:11 |
|
||||
| New window and tab doesnt work | https://github.com/zen-browser/desktop/issues/6263 | None | 0:12:28 |
|
||||
| New window and tab doesnt work | https://github.com/zen-browser/desktop/issues/6262 | None | 0:00:07 |
|
||||
| Spotify jumps through music by itself | https://github.com/zen-browser/desktop/issues/6261 | 10 days, 1:21:21 | 20 days, 0:00:17 |
|
||||
| refocusing new tab will change to current url instead | https://github.com/zen-browser/desktop/issues/6260 | 12:27:25 | 20 days, 0:08:48 |
|
||||
| Split view issue | https://github.com/zen-browser/desktop/issues/6255 | 0:50:33 | 20 days, 2:40:30 |
|
||||
| bookmark toolbar not animating out | https://github.com/zen-browser/desktop/issues/6253 | 8:32:28 | 1 day, 12:54:00 |
|
||||
| If I pick 3 colors in color picker, I can't set one color on sidebar like before | https://github.com/zen-browser/desktop/issues/6252 | 3:19:01 | 20 days, 3:41:14 |
|
||||
| Sub-tabs in Account tab have no text | https://github.com/zen-browser/desktop/issues/6250 | 20 days, 4:11:08 | 20 days, 4:11:09 |
|
||||
| Shield and Bookmark icon in searchbar is not aligned properly after new update 1.9b | https://github.com/zen-browser/desktop/issues/6248 | 4:10:26 | 16:34:35 |
|
||||
| Bookmarks on the bookmark toolbar duplicates when opening a new window while in fullscreen mode | https://github.com/zen-browser/desktop/issues/6246 | 20 days, 7:00:27 | 20 days, 7:00:27 |
|
||||
| Pin Tab Unpins When Using New Splitscreen Feature | https://github.com/zen-browser/desktop/issues/6245 | 9:32:04 | 20 days, 8:07:03 |
|
||||
| AppImage (64 bit) on Nobara Linux 41 fails to launch. | https://github.com/zen-browser/desktop/issues/6241 | 3:04:51 | 14:51:45 |
|
||||
| Alt+C not working as keybind | https://github.com/zen-browser/desktop/issues/6239 | 13:50:06 | 20 days, 13:12:19 |
|
||||
| Empty Split View is shown when dragging a tab out into a new window | https://github.com/zen-browser/desktop/issues/6238 | 1 day, 7:08:21 | 5 days, 9:50:49 |
|
||||
| Sidebar stays open when dragging/moving a tab out when using Compact mode | https://github.com/zen-browser/desktop/issues/6237 | 2:05:00 | 20 days, 13:17:36 |
|
||||
| Profile switcher button is gone/changed | https://github.com/zen-browser/desktop/issues/6235 | 3:32:55 | 9:09:52 |
|
||||
| blank tab (that shows when no tabs are open) is a dark grey instead of the theme colour | https://github.com/zen-browser/desktop/issues/6232 | 1:50:18 | 16:17:08 |
|
||||
| Zen ignores system trusted certs when run in flatpak | https://github.com/zen-browser/desktop/issues/6231 | 11 days, 15:50:17 | 20 days, 15:59:42 |
|
||||
| Taking a tab out of the window | https://github.com/zen-browser/desktop/issues/6230 | 12:03:30 | 12:03:30 |
|
||||
| Tabs not displaying correctly when opening second window | https://github.com/zen-browser/desktop/issues/6229 | 12:28:08 | 12:28:08 |
|
||||
| Tab list still scrolls to top sometimes | https://github.com/zen-browser/desktop/issues/6228 | 15 days, 16:02:36 | 20 days, 17:17:25 |
|
||||
| New tab opens alongside essentials! [kinda critical] | https://github.com/zen-browser/desktop/issues/6226 | 1 day, 17:57:06 | 20 days, 17:50:03 |
|
||||
| Cmd + K behaves strangely | https://github.com/zen-browser/desktop/issues/6225 | None | 12:31:04 |
|
||||
| Zen doesnt load default homepage, nor custom one | https://github.com/zen-browser/desktop/issues/6223 | 13 days, 13:41:38 | 20 days, 18:25:02 |
|
||||
| url is not centered on linux | https://github.com/zen-browser/desktop/issues/6222 | 8:05:01 | 13:46:11 |
|
||||
| Clicking on Links in non-zen applications opens Blank Page | https://github.com/zen-browser/desktop/issues/6221 | 15:46:23 | 17:06:20 |
|
||||
| Zen not working properly with PowerToys Run module | https://github.com/zen-browser/desktop/issues/6220 | 9:21:55 | 14:04:26 |
|
||||
| Three bugs UI and Functionality Issues in Browser Behavior | https://github.com/zen-browser/desktop/issues/6218 | 20 days, 19:06:04 | 20 days, 19:06:05 |
|
||||
| Essentials no longer have a highlight around them | https://github.com/zen-browser/desktop/issues/6217 | 20 days, 19:31:42 | 20 days, 19:31:43 |
|
||||
| right sidebar animation | https://github.com/zen-browser/desktop/issues/6216 | None | 14 days, 16:42:31 |
|
||||
| Picture in picture icon (URL Bar) | https://github.com/zen-browser/desktop/issues/6214 | 10:04:23 | 15:30:11 |
|
||||
| Sidebar glitching out and not showing items / having incorrect offset when switching workspaces in collapsed mode | https://github.com/zen-browser/desktop/issues/6213 | 8 days, 11:36:11 | 8 days, 23:24:08 |
|
||||
| Empty browser window from dragged out tab | https://github.com/zen-browser/desktop/issues/6210 | 4:54:45 | 16:18:40 |
|
||||
| Zen browser not displaying anything besides the UI | https://github.com/zen-browser/desktop/issues/6209 | 5 days, 13:43:00 | 20 days, 21:04:51 |
|
||||
| Home page shortcuts became smaller | https://github.com/zen-browser/desktop/issues/6208 | 6:20:48 | 20 days, 21:12:56 |
|
||||
| Icons at the end of the URL bar are misaligned | https://github.com/zen-browser/desktop/issues/6207 | 5:08:25 | 3 days, 4:04:54 |
|
||||
| 1.9b: Zen opens as a Blank page | https://github.com/zen-browser/desktop/issues/6205 | 3:41:04 | 20 days, 22:09:55 |
|
||||
| "change theme colors" cannot be undone and breaks other theming features | https://github.com/zen-browser/desktop/issues/6202 | 18 days, 0:58:38 | 20 days, 22:13:51 |
|
||||
| ISSUE WITH THE FLOATING URL BAR AND THE SIDEBAR | https://github.com/zen-browser/desktop/issues/6201 | 0:43:32 | 20 days, 23:03:13 |
|
||||
| "restore previous session" does not work, it opens blank windows without ever restoring the tabs | https://github.com/zen-browser/desktop/issues/6200 | 21:37:27 | 21:37:27 |
|
||||
| The appimage install command for Linux stops working in 1.9b version | https://github.com/zen-browser/desktop/issues/6199 | 18:11:44 | 5 days, 4:19:07 |
|
||||
| Homepage looks like this in the new version, could you improve it or return it to how it was before? | https://github.com/zen-browser/desktop/issues/6195 | 21 days, 1:14:05 | 21 days, 1:14:06 |
|
||||
| Profile switcher not showing in sidebar | https://github.com/zen-browser/desktop/issues/6194 | 0:14:44 | 1:42:41 |
|
||||
| position browser notifications are broken | https://github.com/zen-browser/desktop/issues/6192 | 19:51:41 | 20:57:09 |
|
||||
| Can't drag scrollbar because it's too small | https://github.com/zen-browser/desktop/issues/6191 | 13:33:59 | 21 days, 1:54:05 |
|
||||
| Searcbar not autofocused when zen.urlbar.replace-newtab is set to false | https://github.com/zen-browser/desktop/issues/6189 | 21 days, 2:14:02 | 21 days, 2:14:03 |
|
||||
| Need to drag a tab to the left half of the screen in tabs on the right mode | https://github.com/zen-browser/desktop/issues/6183 | 1 day, 18:38:34 | 2 days, 10:35:50 |
|
||||
| Closing private tab re-open non-private tab | https://github.com/zen-browser/desktop/issues/6182 | 4:18:20 | 4:51:14 |
|
||||
| New Tab Bug After the Update 1.8.1b | https://github.com/zen-browser/desktop/issues/6181 | None | 0:23:37 |
|
||||
| Previous profiles not showing in updated profiles tab (1.9b) | https://github.com/zen-browser/desktop/issues/6180 | 20:27:53 | 21 days, 4:01:07 |
|
||||
| Left Corners of Viewport not rounded | https://github.com/zen-browser/desktop/issues/6179 | 13:37:46 | 21 days, 4:06:34 |
|
||||
| The slider in the homepage settings looks broken | https://github.com/zen-browser/desktop/issues/6178 | 21 days, 4:19:49 | 21 days, 4:19:50 |
|
||||
| Dragging tab out to new window broken. | https://github.com/zen-browser/desktop/issues/6177 | 0:03:05 | 23:47:11 |
|
||||
| Opening existing tab in the new window kills it | https://github.com/zen-browser/desktop/issues/6176 | 0:03:18 | 23:48:12 |
|
||||
| Window Restoring Does not work | https://github.com/zen-browser/desktop/issues/6175 | 1 day, 21:28:01 | 21 days, 4:40:42 |
|
||||
| Splitscreen by dragging tabs is flickering when changing the size. | https://github.com/zen-browser/desktop/issues/6173 | 21 days, 5:10:19 | 21 days, 5:10:20 |
|
||||
| Top search input | https://github.com/zen-browser/desktop/issues/6172 | 21 days, 5:18:21 | 21 days, 5:18:21 |
|
||||
| In a new tab, the search bar appears on the left side of the screen and across the screen. | https://github.com/zen-browser/desktop/issues/6171 | 1:34:32 | 1:34:32 |
|
||||
| Tabs sometimes change places suddenly | https://github.com/zen-browser/desktop/issues/6170 | 21 days, 6:20:00 | 21 days, 6:20:00 |
|
||||
| In a new tab, the search bar appears on the left side of the screen and across the screen. | https://github.com/zen-browser/desktop/issues/6168 | 1:55:46 | 1:55:46 |
|
||||
| Zen browser remains at version 1.8.2b | https://github.com/zen-browser/desktop/issues/6167 | 0:05:28 | 1:57:40 |
|
||||
| Opening new tabs with CTRL-Enter to quickfill .com domains opens wrong URL | https://github.com/zen-browser/desktop/issues/6166 | 9 days, 8:44:39 | 21 days, 7:57:03 |
|
||||
| Extension→ Cant import Yomitan dictionaries when using Containers | https://github.com/zen-browser/desktop/issues/6164 | 21 days, 11:45:50 | 21 days, 11:45:50 |
|
||||
| Compact right tabs has gap | https://github.com/zen-browser/desktop/issues/6163 | 5:20:43 | 21 days, 15:35:02 |
|
||||
| Tab bar resizing area is tiny | https://github.com/zen-browser/desktop/issues/6162 | None | 5:44:57 |
|
||||
| Pinned Tabs are invisible | https://github.com/zen-browser/desktop/issues/6161 | 0:11:58 | 1:02:43 |
|
||||
| Videos wont go fullscreen in split view | https://github.com/zen-browser/desktop/issues/6159 | 21 days, 20:44:47 | 21 days, 20:44:47 |
|
||||
| YouTube is slow | https://github.com/zen-browser/desktop/issues/6157 | 1 day, 16:27:54 | 21 days, 21:07:26 |
|
||||
| Remapped picture-in-picture shortcut does not work for closing PIP | https://github.com/zen-browser/desktop/issues/6155 | 21 days, 21:18:40 | 21 days, 21:18:41 |
|
||||
| Zen mod Cleaned URL bar blur not working outside settings | https://github.com/zen-browser/desktop/issues/6154 | 21 days, 21:23:41 | 21 days, 21:23:42 |
|
||||
| Animated Dialog Element Does not Appear In Zen | https://github.com/zen-browser/desktop/issues/6153 | 21 days, 21:40:57 | 21 days, 21:40:57 |
|
||||
| When resizing the window, the buttons on the right don't disappear and stay in front of the URL bar. | https://github.com/zen-browser/desktop/issues/6152 | 21 days, 22:50:00 | 21 days, 22:50:01 |
|
||||
| Links opened by Thunderbird not recognised | https://github.com/zen-browser/desktop/issues/6150 | 21 days, 23:43:25 | 21 days, 23:43:26 |
|
||||
| Low contrast text if lighter background colors are chosen | https://github.com/zen-browser/desktop/issues/6149 | None | 5 days, 0:37:32 |
|
||||
| Color picker is not able to pick light colors, there's effectively no "light mode" | https://github.com/zen-browser/desktop/issues/6148 | 1 day, 7:05:26 | 5 days, 0:46:22 |
|
||||
| Some essentials missing after moving to a new tab | https://github.com/zen-browser/desktop/issues/6147 | 22 days, 1:10:02 | 22 days, 1:10:03 |
|
||||
| UI Config Saving issue with Toolbar | https://github.com/zen-browser/desktop/issues/6146 | 22 days, 1:20:51 | 22 days, 1:20:52 |
|
||||
| Unable to login into youtube with google account | https://github.com/zen-browser/desktop/issues/6144 | 1:24:03 | 22 days, 1:55:36 |
|
||||
| Close buttons on Mac positioned wrong when sidebar is collapsed | https://github.com/zen-browser/desktop/issues/6143 | 22 days, 1:58:07 | 22 days, 1:58:08 |
|
||||
| Video bug when entering a Google meeting | https://github.com/zen-browser/desktop/issues/6142 | 22 days, 2:21:19 | 22 days, 2:21:19 |
|
||||
| Theme colors leak into websites | https://github.com/zen-browser/desktop/issues/6141 | 2:13:26 | 22 days, 2:48:29 |
|
||||
| Imaginary tab when `zen.urlbar.replace-newtab` set to `false` | https://github.com/zen-browser/desktop/issues/6138 | 4 days, 14:49:34 | 22 days, 3:54:57 |
|
||||
| [1.9t] Icon sizing and positioning issues across UI | https://github.com/zen-browser/desktop/issues/6137 | 1 day, 1:23:48 | 11 days, 21:11:06 |
|
||||
| Extension icons hang off the side of the sidebar, and extension addition confirmation window hangs off the screen | https://github.com/zen-browser/desktop/issues/6135 | 18 days, 8:19:50 | 22 days, 6:38:20 |
|
||||
| Settings show zen-split-view-modifier which is unclear, I think it should be with spaces? | https://github.com/zen-browser/desktop/issues/6134 | 22 days, 7:27:49 | 22 days, 7:27:50 |
|
||||
| Grayish White Rounded Corners Visible when fullscreen in a video on youtube | https://github.com/zen-browser/desktop/issues/6132 | 8:50:42 | 22 days, 9:35:57 |
|
||||
| Zen Browser local building and running shows firefox only not zen type visual | https://github.com/zen-browser/desktop/issues/6128 | None | 3 days, 10:31:16 |
|
||||
| Cannot download files with the flatpak version of Zen | https://github.com/zen-browser/desktop/issues/6127 | 10:53:18 | 22 days, 18:27:20 |
|
||||
| File Browser doesnt list user home directory files | https://github.com/zen-browser/desktop/issues/6126 | 22 days, 18:35:54 | 22 days, 18:35:55 |
|
||||
| Dragging sidebar moves the window | https://github.com/zen-browser/desktop/issues/6125 | 19:01:23 | 22 days, 19:16:45 |
|
||||
| Option to add new tab to the sidebar dissappeared. | https://github.com/zen-browser/desktop/issues/6123 | 22 days, 21:12:43 | 22 days, 21:12:44 |
|
||||
| The sidebar shrinks too much when switching to compact mode while floating is enabled | https://github.com/zen-browser/desktop/issues/6122 | 22 days, 21:15:20 | 22 days, 21:15:20 |
|
||||
| Unable to define a Ctrl+Alt+Tab keyboard shortcut | https://github.com/zen-browser/desktop/issues/6121 | 22 days, 22:08:26 | 22 days, 22:08:26 |
|
||||
| Broken keyboard shortcuts for compact mode | https://github.com/zen-browser/desktop/issues/6120 | 22 days, 22:11:00 | 22 days, 22:11:01 |
|
||||
| Confusing case-insensitivity in the keyboard shortcuts configuration page | https://github.com/zen-browser/desktop/issues/6119 | 22 days, 22:20:02 | 22 days, 22:20:03 |
|
||||
| Keyboard shortcuts stop working in the keyboard shortcuts configuration page | https://github.com/zen-browser/desktop/issues/6118 | 22 days, 22:28:25 | 22 days, 22:28:26 |
|
||||
| "Bookmark this page" and "Show your bookmarks" show the same icon in the tool bar | https://github.com/zen-browser/desktop/issues/6117 | 22 days, 23:37:40 | 22 days, 23:37:41 |
|
||||
| cmd+t toolbar partly hidden form the viewport | https://github.com/zen-browser/desktop/issues/6115 | 21:52:58 | 23 days, 4:34:42 |
|
||||
| [1.8.2b] Print dialog invisible/does not appear. | https://github.com/zen-browser/desktop/issues/6113 | 6:55:27 | 9:17:48 |
|
||||
| Blinking issue when activating window | https://github.com/zen-browser/desktop/issues/6112 | 23 days, 6:09:34 | 23 days, 6:09:35 |
|
||||
| Workspace bottom indicator is not updated when scrolling the sidebar while another Zen window is focused | https://github.com/zen-browser/desktop/issues/6111 | 23 days, 6:38:54 | 23 days, 6:38:55 |
|
||||
| 'Restore Window' feature not restoring tabs | https://github.com/zen-browser/desktop/issues/6109 | 5 days, 9:13:22 | 23 days, 9:27:14 |
|
||||
| Can't open item in history | https://github.com/zen-browser/desktop/issues/6107 | 0:30:19 | 0:30:20 |
|
||||
| Opening browser changes tab order | https://github.com/zen-browser/desktop/issues/6106 | 12:05:44 | 23 days, 12:02:25 |
|
||||
| Sidebery box position incorrect for autohide | https://github.com/zen-browser/desktop/issues/6105 | 23 days, 14:15:07 | 23 days, 14:15:08 |
|
||||
| Tabs on right has an empty margin | https://github.com/zen-browser/desktop/issues/6103 | 23 days, 14:47:19 | 23 days, 14:47:20 |
|
||||
| Sidebery Mod page incorrect author | https://github.com/zen-browser/desktop/issues/6102 | 4:41:28 | 4:41:51 |
|
||||
| Top toolbar is shown when hovering the top side of the screen in "single toolbar" layout with "compact mode" | https://github.com/zen-browser/desktop/issues/6101 | 21 days, 17:27:45 | 23 days, 16:12:17 |
|
||||
| Blank Display when closing all non-pinned and non-essentials tabs | https://github.com/zen-browser/desktop/issues/6100 | 0:32:08 | 0:32:08 |
|
||||
| Unable to Move Last Tab to Second Last Position | https://github.com/zen-browser/desktop/issues/6099 | 1 day, 14:33:30 | 5 days, 14:21:59 |
|
||||
| New tab bar popup doesn't open when in full screen mode | https://github.com/zen-browser/desktop/issues/6098 | 23 days, 18:38:04 | 23 days, 18:38:05 |
|
||||
| research bar not showing text | https://github.com/zen-browser/desktop/issues/6097 | 8:21:53 | 23 days, 18:52:30 |
|
||||
| Research obscuring the bar | https://github.com/zen-browser/desktop/issues/6096 | 8:22:31 | 23 days, 18:53:34 |
|
||||
| Browser does not render pages even after minutes of being open | https://github.com/zen-browser/desktop/issues/6095 | 23 days, 19:59:56 | 23 days, 19:59:56 |
|
||||
| Status bar graphical issue | https://github.com/zen-browser/desktop/issues/6094 | 23 days, 20:00:58 | 23 days, 20:00:59 |
|
||||
| Can't scroll when cursor is all the way to the right | https://github.com/zen-browser/desktop/issues/6093 | 0:48:37 | 23 days, 20:47:17 |
|
||||
| Browser Freezes and Fails to Open | https://github.com/zen-browser/desktop/issues/6092 | None | 4 days, 16:43:45 |
|
||||
| Essential Tabs Are Forgetting the URL | https://github.com/zen-browser/desktop/issues/6090 | 16:29:57 | 17:55:06 |
|
||||
| Google Flights date picker slowing the browser | https://github.com/zen-browser/desktop/issues/6089 | 23 days, 22:28:19 | 23 days, 22:28:19 |
|
||||
| URL suggestions cover the URL bar while typing in "multiple toolbars" and "collapsed toolbar" modes | https://github.com/zen-browser/desktop/issues/6088 | 23 days, 22:50:14 | 23 days, 22:50:15 |
|
||||
| Cross-site cookies being blocked when they are allowed, only appearing with Salesforce | https://github.com/zen-browser/desktop/issues/6087 | 23 days, 22:50:41 | 23 days, 22:50:41 |
|
||||
| High Memory usage on windows | https://github.com/zen-browser/desktop/issues/6085 | 4:09:52 | 24 days, 0:01:10 |
|
||||
| Browser not properly filling up entire screen | https://github.com/zen-browser/desktop/issues/6084 | 24 days, 0:17:39 | 24 days, 0:17:40 |
|
||||
| Cannot Bind Specific Keyboard Shortcuts | https://github.com/zen-browser/desktop/issues/6083 | 24 days, 0:51:36 | 24 days, 0:51:37 |
|
||||
| Opening previous windows and tabs on start up | https://github.com/zen-browser/desktop/issues/6080 | 20:13:06 | 24 days, 1:31:18 |
|
||||
| YouTube not opening in theater mode | https://github.com/zen-browser/desktop/issues/6078 | 24 days, 1:55:03 | 24 days, 1:55:03 |
|
||||
| Cannot Finish Initial Config due to missing Next Button on Color / Accent Chooser | https://github.com/zen-browser/desktop/issues/6076 | 24 days, 2:23:02 | 24 days, 2:23:02 |
|
||||
| Unable to fully integrate GTK and QT themes | https://github.com/zen-browser/desktop/issues/6074 | 1 day, 4:58:09 | 24 days, 4:44:34 |
|
||||
| can not install any firefox themes | https://github.com/zen-browser/desktop/issues/6073 | 18:28:31 | 18:28:31 |
|
||||
| No icon on windows | https://github.com/zen-browser/desktop/issues/6071 | 0:12:31 | 0:23:42 |
|
||||
| Twilight Browser: Unexpected Blur Transparency After Update | https://github.com/zen-browser/desktop/issues/6069 | 7:36:42 | 24 days, 11:03:57 |
|
||||
| New tabs open as essentials; essentials do not retain order | https://github.com/zen-browser/desktop/issues/6068 | None | 1 day, 15:21:33 |
|
||||
| [macOS] Close, minimize, and maximize buttons remain grayed out in active window | https://github.com/zen-browser/desktop/issues/6067 | 2:27:22 | 19:10:27 |
|
||||
| [Regression 1.8b+] Tab session extensions cannot record across workspaces anymore | https://github.com/zen-browser/desktop/issues/6066 | 24 days, 15:28:29 | 24 days, 15:28:29 |
|
||||
| Address Bar Shifts Slightly When Clicking to Edit | https://github.com/zen-browser/desktop/issues/6065 | 24 days, 16:38:42 | 24 days, 16:38:43 |
|
||||
| Drag and Dropping files causes Zen to hang the system literally | https://github.com/zen-browser/desktop/issues/6062 | 24 days, 19:32:45 | 24 days, 19:32:46 |
|
||||
| Interfering tabs | https://github.com/zen-browser/desktop/issues/6061 | 16:53:50 | 24 days, 21:13:04 |
|
||||
| crashes on startup | https://github.com/zen-browser/desktop/issues/6060 | None | 5:35:50 |
|
||||
| Extension icons and buttons are behaving strangely | https://github.com/zen-browser/desktop/issues/6058 | None | 5 days, 2:56:33 |
|
||||
| Pink Youtube Filter | https://github.com/zen-browser/desktop/issues/6057 | 0:17:06 | 4 days, 17:58:17 |
|
||||
| Essentials & Pinned tabs icons disappear when browser history is cleared | https://github.com/zen-browser/desktop/issues/6056 | 24 days, 23:31:36 | 24 days, 23:31:37 |
|
||||
| word processor lag | https://github.com/zen-browser/desktop/issues/6055 | 10:55:49 | 24 days, 23:41:56 |
|
||||
| Renamed Tabs Not Detected | https://github.com/zen-browser/desktop/issues/6054 | 2:36:44 | 24 days, 23:42:42 |
|
||||
| Browser Freezes When Expanding Toolbar Options Menu in Shrinked Window State | https://github.com/zen-browser/desktop/issues/6052 | 25 days, 1:06:47 | 25 days, 1:06:47 |
|
||||
| [Nobara GNOME44] Modal dialog appears almost out of screen | https://github.com/zen-browser/desktop/issues/6051 | 6:11:27 | 8 days, 4:40:40 |
|
||||
| Zen doesn't follow KDE Plasma accent colors | https://github.com/zen-browser/desktop/issues/6050 | 25 days, 4:07:30 | 25 days, 4:07:30 |
|
||||
| [Twilight] Cannot get Drag and Drop split view to work. | https://github.com/zen-browser/desktop/issues/6049 | None | 8 days, 8:33:12 |
|
||||
| Browser lockup when closing tabs on prolonged browser usage | https://github.com/zen-browser/desktop/issues/6048 | 25 days, 4:22:26 | 25 days, 4:22:26 |
|
||||
| Sidebar icons off-center | https://github.com/zen-browser/desktop/issues/6047 | 25 days, 4:34:30 | 25 days, 4:34:31 |
|
||||
| Muffled headset after using Google Meet never worked again | https://github.com/zen-browser/desktop/issues/6045 | 8:04:31 | 25 days, 4:58:54 |
|
||||
| Zen only allows me to save file not open it with anything | https://github.com/zen-browser/desktop/issues/6044 | 25 days, 4:59:47 | 25 days, 4:59:47 |
|
||||
| Troubleshoot Mode dialog permanently opening | https://github.com/zen-browser/desktop/issues/6043 | 9 days, 0:26:55 | 25 days, 5:09:25 |
|
||||
| Sidebar greyed out + Error with split view | https://github.com/zen-browser/desktop/issues/6041 | 0:46:52 | 25 days, 6:00:03 |
|
||||
| Sidebar and toolbar permanently greyed out | https://github.com/zen-browser/desktop/issues/6039 | 8:32:06 | 25 days, 15:50:20 |
|
||||
| Audio glitches when playback in resource intensive situations | https://github.com/zen-browser/desktop/issues/6038 | 25 days, 16:36:18 | 25 days, 16:36:19 |
|
||||
| Appears unfocused when focused | https://github.com/zen-browser/desktop/issues/6036 | 25 days, 16:50:21 | 25 days, 16:50:22 |
|
||||
| Zen browser having blank window before starting ( Have to launch zen two times ) | https://github.com/zen-browser/desktop/issues/6033 | 25 days, 19:11:18 | 25 days, 19:11:19 |
|
||||
| 'Ask before closing multiple tabs' feature does not work as intended. | https://github.com/zen-browser/desktop/issues/6032 | 2 days, 9:20:00 | 25 days, 21:20:12 |
|
||||
| Can't focus on Tiktok live comments | https://github.com/zen-browser/desktop/issues/6029 | 25 days, 22:11:33 | 25 days, 22:11:34 |
|
||||
| can´t see downloads in toolbar | https://github.com/zen-browser/desktop/issues/6028 | 2:33:42 | 25 days, 22:22:07 |
|
||||
| New Tab popup does not allow right click context menu (for pasting etc) | https://github.com/zen-browser/desktop/issues/6027 | 25 days, 23:06:49 | 25 days, 23:06:50 |
|
||||
| Tab Resizing Bug on macOS on tab split (16" Integrated Display) | https://github.com/zen-browser/desktop/issues/6025 | 26 days, 1:01:54 | 26 days, 1:01:54 |
|
||||
| Floating url goes outside of the window | https://github.com/zen-browser/desktop/issues/6024 | 1:04:46 | 5 days, 20:24:46 |
|
||||
| Private Window - Focus URL bar when the window is opened | https://github.com/zen-browser/desktop/issues/6023 | 26 days, 2:29:05 | 26 days, 2:29:05 |
|
||||
| "grain" UI effect cause scroll lag | https://github.com/zen-browser/desktop/issues/6022 | 26 days, 2:58:31 | 26 days, 2:58:32 |
|
||||
| Sidebar buttons are visible on the devtools notification | https://github.com/zen-browser/desktop/issues/6020 | 6 days, 0:38:52 | 26 days, 3:20:13 |
|
||||
| Tabs from closed workspace appears in other workspace after reopening Zen | https://github.com/zen-browser/desktop/issues/6019 | 4 days, 4:06:04 | 26 days, 3:24:29 |
|
||||
| Bounce not working properly | https://github.com/zen-browser/desktop/issues/6018 | 4 days, 15:57:50 | 6 days, 18:00:59 |
|
||||
| [Twilight] Glance not auto opening in external links anymore | https://github.com/zen-browser/desktop/issues/6017 | None | 9 days, 8:55:46 |
|
||||
| Toolbar customisation doesn't update until window is moved | https://github.com/zen-browser/desktop/issues/6015 | 9 days, 3:38:13 | 26 days, 5:53:48 |
|
||||
| Websocket application not working. | https://github.com/zen-browser/desktop/issues/6014 | None | 1 day, 1:51:42 |
|
||||
| Bug when Title bar is turned off | https://github.com/zen-browser/desktop/issues/6013 | 26 days, 6:21:07 | 26 days, 6:21:07 |
|
||||
| Zen won't follow my system theme | https://github.com/zen-browser/desktop/issues/6011 | 26 days, 9:23:29 | 26 days, 9:23:30 |
|
||||
| Why WidevineCDM is not present if there is posible to include it for free | https://github.com/zen-browser/desktop/issues/6009 | None | 1 day, 3:10:51 |
|
||||
| Weird animation with lag in single toolbar | https://github.com/zen-browser/desktop/issues/6007 | 26 days, 11:57:52 | 26 days, 11:57:53 |
|
||||
| Zen-specific HotKey to forward workspace (Option + Cmd + E) does not work on MacOS | https://github.com/zen-browser/desktop/issues/6006 | 26 days, 12:26:40 | 26 days, 12:26:41 |
|
||||
| minor DRM popup compact mode bug | https://github.com/zen-browser/desktop/issues/6005 | 26 days, 12:55:13 | 26 days, 12:55:13 |
|
||||
| Can't skip revamped welcome page | https://github.com/zen-browser/desktop/issues/6004 | 26 days, 13:00:01 | 26 days, 13:00:01 |
|
||||
| Improve Chiniese translation | https://github.com/zen-browser/desktop/issues/6003 | 26 days, 13:28:27 | 26 days, 13:28:27 |
|
||||
| Restoring Windows and Tab orders. | https://github.com/zen-browser/desktop/issues/6002 | 26 days, 14:11:17 | 26 days, 14:11:17 |
|
||||
| Drag & drop images not working in compact mode | https://github.com/zen-browser/desktop/issues/6001 | 26 days, 14:11:20 | 26 days, 14:11:21 |
|
||||
| New tab is not a new tab, space bar is weird | https://github.com/zen-browser/desktop/issues/5997 | 12:24:08 | 26 days, 16:41:26 |
|
||||
| Bookmarks Menu Toolbar Keyboard Shortcut Opens Library, not List | https://github.com/zen-browser/desktop/issues/5996 | 26 days, 19:20:52 | 26 days, 19:20:53 |
|
||||
| Cannot open links in History menu | https://github.com/zen-browser/desktop/issues/5995 | 1:46:38 | 13:52:31 |
|
||||
| Gnome keeps asking to make it default browser | https://github.com/zen-browser/desktop/issues/5994 | 1:19:34 | 26 days, 20:28:53 |
|
||||
| Toggle floating sidebar shortcut doesn´t work | https://github.com/zen-browser/desktop/issues/5993 | 26 days, 20:30:19 | 26 days, 20:30:20 |
|
||||
| Unable to render PDF on Overleaf | https://github.com/zen-browser/desktop/issues/5992 | 26 days, 21:03:38 | 26 days, 21:03:39 |
|
||||
| half shown url bar when using compact mode | https://github.com/zen-browser/desktop/issues/5991 | 26 days, 21:20:04 | 26 days, 21:20:04 |
|
||||
| new tab floating bar in wrong location on 16:9 ultrawide display | https://github.com/zen-browser/desktop/issues/5990 | 0:20:32 | 26 days, 22:57:02 |
|
||||
| Electron has a weird thin white line at the top | https://github.com/zen-browser/desktop/issues/5989 | 26 days, 23:50:00 | 26 days, 23:50:01 |
|
||||
| Opens a weird tab after closing all tabs | https://github.com/zen-browser/desktop/issues/5985 | 20:00:45 | 27 days, 1:37:50 |
|
||||
| No option to close active "Essential" tabs | https://github.com/zen-browser/desktop/issues/5984 | None | 7:19:02 |
|
||||
| Not possible to open links from Bookmark Library Window | https://github.com/zen-browser/desktop/issues/5983 | 1 day, 1:26:26 | 4 days, 21:49:49 |
|
||||
| Location icon way too small visually | https://github.com/zen-browser/desktop/issues/5982 | 27 days, 2:18:13 | 27 days, 2:18:14 |
|
||||
| History links cannot be clicked/opened | https://github.com/zen-browser/desktop/issues/5975 | 1:28:47 | 1:33:11 |
|
||||
| Shows unnecessary scroll bar when maximized | https://github.com/zen-browser/desktop/issues/5974 | 27 days, 5:25:43 | 27 days, 5:25:44 |
|
||||
| Missing pinned tabs and big empty space in tab bar | https://github.com/zen-browser/desktop/issues/5973 | 3:37:37 | 27 days, 6:18:53 |
|
||||
| Browser switches to blank page instead of wrapping to the first/last tab when tabs switching is done by an add-on | https://github.com/zen-browser/desktop/issues/5970 | 4:23:43 | 13:37:22 |
|
||||
| Floating URL bar breaks after clearing browsing history | https://github.com/zen-browser/desktop/issues/5967 | 7:33:33 | 27 days, 15:10:30 |
|
||||
| taking its sweet time | https://github.com/zen-browser/desktop/issues/5966 | None | 6 days, 1:48:55 |
|
||||
| keyboard shortcut priority | https://github.com/zen-browser/desktop/issues/5963 | 7 days, 20:54:12 | 27 days, 15:42:11 |
|
||||
| M365 COPILOT OFFICE | https://github.com/zen-browser/desktop/issues/5962 | 2 days, 15:34:29 | 27 days, 15:43:50 |
|
||||
| Tab selection panel is visible as transparent after exiting full-screen while watching media on YouTube, Netflix and more.. | https://github.com/zen-browser/desktop/issues/5959 | 20:40:11 | 22:08:11 |
|
||||
| Moving a tab moves it one tab lower than it's supposed to | https://github.com/zen-browser/desktop/issues/5958 | 2 days, 18:28:41 | 27 days, 19:19:20 |
|
||||
| Profiles switcher gone | https://github.com/zen-browser/desktop/issues/5957 | 0:03:37 | 0:18:58 |
|
||||
| [Twilight] More split group issues | https://github.com/zen-browser/desktop/issues/5955 | 5:30:25 | 5:30:25 |
|
||||
| [Twilight] Split View Tabs Can be Removed From Group | https://github.com/zen-browser/desktop/issues/5954 | None | 6:17:14 |
|
||||
| ublock functionality is inconsistent in side panel | https://github.com/zen-browser/desktop/issues/5953 | 27 days, 23:14:03 | 27 days, 23:14:04 |
|
||||
| Unable to install CA certificate | https://github.com/zen-browser/desktop/issues/5951 | 3:31:20 | 28 days, 1:29:01 |
|
||||
| Glance (alt+click) in split tabs | https://github.com/zen-browser/desktop/issues/5950 | 8 days, 10:42:00 | 28 days, 1:32:54 |
|
||||
| No such native application org.gnome.chrome_gnome_shell | https://github.com/zen-browser/desktop/issues/5949 | 28 days, 1:33:24 | 28 days, 1:33:24 |
|
||||
| Solved / iCloud bookmarks extension won't work | https://github.com/zen-browser/desktop/issues/5948 | None | 0:06:26 |
|
||||
| Telemtry and privacy issues with the browser | https://github.com/zen-browser/desktop/issues/5947 | 10:18:42 | 10:27:06 |
|
||||
| Scrolling with Pen Tablet Only Works in Pinned Tabs | https://github.com/zen-browser/desktop/issues/5946 | 28 days, 3:05:38 | 28 days, 3:05:38 |
|
||||
| Scrolling with Pen Tablet Only Works in Pinned Tabs | https://github.com/zen-browser/desktop/issues/5945 | None | 0:00:59 |
|
||||
| Inconsistent Window Dragging | https://github.com/zen-browser/desktop/issues/5944 | 1 day, 10:40:42 | 28 days, 3:10:15 |
|
||||
| Inconsistent Window Dragging | https://github.com/zen-browser/desktop/issues/5943 | None | 0:01:24 |
|
||||
| Unload Tabs not working for pinned and essentials tabs | https://github.com/zen-browser/desktop/issues/5942 | 28 days, 3:40:31 | 28 days, 3:40:31 |
|
||||
| Randomized tabs | https://github.com/zen-browser/desktop/issues/5940 | 0:39:53 | 28 days, 5:15:03 |
|
||||
| Certificate Manager | https://github.com/zen-browser/desktop/issues/5936 | None | 2:37:58 |
|
||||
| Essential tabs keep getting re-arranged after closing zen | https://github.com/zen-browser/desktop/issues/5935 | None | 0:05:14 |
|
||||
| zen.urlbar.replace-newtab & zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed - Not working as intended in combination | https://github.com/zen-browser/desktop/issues/5933 | 22:25:28 | 28 days, 8:04:42 |
|
||||
| Do the new privacy changes to Firefox apply to zen? | https://github.com/zen-browser/desktop/issues/5932 | 2:05:45 | 2:35:47 |
|
||||
| security key is not being recognized | https://github.com/zen-browser/desktop/issues/5931 | 0:16:40 | 4:43:16 |
|
||||
| I can't watch anything on netflix | https://github.com/zen-browser/desktop/issues/5930 | 0:05:38 | 4:45:35 |
|
||||
| External links open in no container | https://github.com/zen-browser/desktop/issues/5929 | 2 days, 2:53:20 | 9 days, 6:53:45 |
|
||||
| CTRL + Shift + H (History) Is not working | https://github.com/zen-browser/desktop/issues/5928 | 22:03:13 | 2 days, 3:44:26 |
|
||||
| Automatically opens pinned tabs in the background without user action | https://github.com/zen-browser/desktop/issues/5927 | 2 days, 21:08:37 | 28 days, 10:24:22 |
|
||||
| Drag and Drop File Causes Browser to Close | https://github.com/zen-browser/desktop/issues/5926 | 25 days, 22:32:51 | 28 days, 10:31:17 |
|
||||
| App Takes Longer to Open After Update | https://github.com/zen-browser/desktop/issues/5925 | 28 days, 10:35:41 | 28 days, 10:35:42 |
|
||||
| system extensions don't work | https://github.com/zen-browser/desktop/issues/5923 | 28 days, 11:29:06 | 28 days, 11:29:06 |
|
||||
| If you pin a tab then try to switch to any other tab, the browser hangs trying to switch tabs. | https://github.com/zen-browser/desktop/issues/5922 | 28 days, 13:43:19 | 28 days, 13:43:19 |
|
||||
| DuckDuckGo Fills Suggestions & History | https://github.com/zen-browser/desktop/issues/5921 | 28 days, 13:44:28 | 28 days, 13:44:28 |
|
||||
| Restoring window from "Recently Closed Windows" does not work | https://github.com/zen-browser/desktop/issues/5920 | 2 days, 18:33:35 | 28 days, 14:10:13 |
|
||||
| [Twilight] Tab groups not persistent through session restart | https://github.com/zen-browser/desktop/issues/5919 | 21:48:30 | 21:48:30 |
|
||||
|
||||
_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-03-01..2025-03-31`
|
@@ -1,15 +0,0 @@
|
||||
# Zen Side Panels
|
||||
|
||||
The `zen.sidepanels.data` configuration will be a JSON string that follows the following data:
|
||||
|
||||
```json
|
||||
{
|
||||
"data": {
|
||||
"p1": {
|
||||
"url": "https://google.com",
|
||||
"ua": false // "ua" may not be declared! (default: false)
|
||||
}
|
||||
},
|
||||
"index": ["p1"]
|
||||
}
|
||||
```
|
@@ -1 +0,0 @@
|
||||
6ad0ab3c43a6208d8bcd997b40e802fccd48ba0a
|
2
l10n
2
l10n
Submodule l10n updated: c5a36ae64f...950562cd71
15
package-lock.json
generated
15
package-lock.json
generated
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"name": "zen-core",
|
||||
"name": "zen-desktop",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "zen-core",
|
||||
"name": "zen-desktop",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"license": "MPL-2.0",
|
||||
"dependencies": {
|
||||
"@zen-browser/surfer": "^1.10.5"
|
||||
"@zen-browser/surfer": "^1.11.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"husky": "^9.1.7",
|
||||
@@ -288,9 +288,10 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@zen-browser/surfer": {
|
||||
"version": "1.10.5",
|
||||
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.10.5.tgz",
|
||||
"integrity": "sha512-jpGArye02C6M65qy0b5kZWzDBO5sh/BY6k2otC1keAjICm9lxELsh5ELRz0tVQ6kwrBUC3yE4uP8jzUgQdCuCg==",
|
||||
"version": "1.11.7",
|
||||
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.11.7.tgz",
|
||||
"integrity": "sha512-ltIjDwPiSKmnKYjlTtD307t5h9+igi7YZu3pNlFl0SgvmTGRv9Ayit6CPllN5HGaMoI9jftOSeAaeFX2uRG4Yg==",
|
||||
"license": "MPL-2.0",
|
||||
"dependencies": {
|
||||
"@resvg/resvg-js": "^1.4.0",
|
||||
"async-icns": "^1.0.2",
|
||||
|
13
package.json
13
package.json
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "zen-core",
|
||||
"name": "zen-desktop",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"lint-staged": {
|
||||
@@ -17,7 +17,6 @@
|
||||
"package": "surfer package",
|
||||
"update-ff": "python3 scripts/update_ff.py",
|
||||
"update-ff:raw": "surfer update",
|
||||
"update-newtab": "python3 scripts/update_newtab.py",
|
||||
"update-ff:rc": "python3 scripts/update_ff.py --rc",
|
||||
"update-ff:l10n": "python3 scripts/update_ff.py --just-l10n",
|
||||
"pretty": "prettier . --write && autopep8 -r --in-place scripts/ src/",
|
||||
@@ -28,20 +27,20 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/zen-browser/core.git"
|
||||
"url": "git+https://github.com/zen-browser/desktop.git"
|
||||
},
|
||||
"hooks": {
|
||||
"pre-commit": "npm run prepare"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"license": "MPL-2.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/zen-browser/core/issues"
|
||||
"url": "https://github.com/zen-browser/desktop/issues"
|
||||
},
|
||||
"homepage": "https://github.com/zen-browser/core#readme",
|
||||
"homepage": "https://github.com/zen-browser/desktop#readme",
|
||||
"dependencies": {
|
||||
"@zen-browser/surfer": "^1.10.5"
|
||||
"@zen-browser/surfer": "^1.11.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"husky": "^9.1.7",
|
||||
|
@@ -1,4 +1,12 @@
|
||||
set -ex
|
||||
set -x
|
||||
|
||||
if ! [ -z "$ZEN_L10N_CURR_DIR" ]; then
|
||||
cd $ZEN_L10N_CURR_DIR
|
||||
fi
|
||||
|
||||
# remove "\r" from ./l10n/supported-languages
|
||||
# note: it's fine if it fails
|
||||
sed -i 's/\r$//' ./l10n/supported-languages
|
||||
|
||||
CURRENT_DIR=$(pwd)
|
||||
|
||||
@@ -7,7 +15,7 @@ git config --global fetch.prune true
|
||||
|
||||
cd $CURRENT_DIR
|
||||
|
||||
LAST_FIREFOX_L10N_COMMIT=$(cat ./firefox-cache/l10n-last-commit-hash)
|
||||
LAST_FIREFOX_L10N_COMMIT=$(cat ./build/firefox-cache/l10n-last-commit-hash)
|
||||
|
||||
cd ./l10n
|
||||
rm -rf firefox-l10n
|
||||
@@ -17,6 +25,16 @@ cd firefox-l10n
|
||||
git checkout $LAST_FIREFOX_L10N_COMMIT
|
||||
cd $CURRENT_DIR
|
||||
|
||||
rsyncExists=$(command -v rsync)
|
||||
|
||||
if [ -z "$rsyncExists" ]; then
|
||||
echo "rsync not found, using cp instead"
|
||||
else
|
||||
echo "rsync found!"
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
update_language() {
|
||||
langId=$1
|
||||
cd ./l10n
|
||||
@@ -24,7 +42,13 @@ update_language() {
|
||||
|
||||
echo "Updating $langId"
|
||||
# move the contents from ../firefox-l10n/$langId to ./l10n/$langId
|
||||
rsync -av --progress ../firefox-l10n/$langId/ . --exclude .git
|
||||
# if rsync exists, use it
|
||||
# if not, use cp
|
||||
if [ -z "$rsyncExists" ]; then
|
||||
cp -r $CURRENT_DIR/l10n/firefox-l10n/$langId/* .
|
||||
else
|
||||
rsync -av --progress ../firefox-l10n/$langId/ . --exclude .git
|
||||
fi
|
||||
|
||||
cd $CURRENT_DIR
|
||||
}
|
||||
|
26
scripts/recalculate-patches.sh
Normal file
26
scripts/recalculate-patches.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Recursively find all .patch files in the current directory and its subdirectories
|
||||
find src -type f -name "*.patch" | while read -r patch_file; do
|
||||
# Replace all - with . and remove the .patch extension
|
||||
new_file="${patch_file%/*}/$(basename "$patch_file" | sed 's/-/./' | sed 's/\.patch$//').patch"
|
||||
new_file="${new_file%.patch}"
|
||||
new_file="${new_file#src/}"
|
||||
|
||||
if [[ $new_file == *-mjs ]]; then
|
||||
new_file="${new_file/-mjs/.mjs}"
|
||||
fi
|
||||
if [[ $new_file == *-ftl ]]; then
|
||||
new_file="${new_file/-ftl/.ftl}"
|
||||
fi
|
||||
|
||||
# Create the new file with the same content as the original
|
||||
npm run export ${new_file} &
|
||||
done
|
||||
|
||||
for job in $(jobs -p); do
|
||||
echo $job
|
||||
wait $job || let "FAIL+=1"
|
||||
done
|
||||
|
||||
echo "All patches have been exported successfully."
|
@@ -1,21 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
gh_bulk_delete_workflow_runs() {
|
||||
local repo=$1
|
||||
local repo=zen-browser/$1
|
||||
|
||||
# Ensure the repo argument is provided
|
||||
if [[ -z "$repo" ]]; then
|
||||
echo "Usage: gh_bulk_delete_workflow_runs <owner/repo>"
|
||||
echo "Usage: gh_bulk_delete_workflow_runs <repo>"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Fetch workflow runs that are cancelled, failed, or timed out
|
||||
local runs
|
||||
runs=$(gh api repos/$repo/actions/runs --paginate \
|
||||
| jq -r '.workflow_runs[] |
|
||||
select(.conclusion == "cancelled" or
|
||||
.conclusion == "failure" or
|
||||
.conclusion == "timed_out") |
|
||||
| jq -r '.workflow_runs[] |
|
||||
select(.conclusion == "cancelled" or
|
||||
.conclusion == "failure" or
|
||||
.conclusion == "timed_out") |
|
||||
.id')
|
||||
|
||||
if [[ -z "$runs" ]]; then
|
||||
|
@@ -61,9 +61,15 @@ def update_l10n_last_commit_hash():
|
||||
L10N_REPO = "https://github.com/mozilla-l10n/firefox-l10n"
|
||||
try:
|
||||
os.system(f"git clone {L10N_REPO} l10n-temp --depth 1")
|
||||
if not os.path.exists("firefox-cache"):
|
||||
os.mkdir("firefox-cache")
|
||||
os.system("cat l10n-temp/.git/refs/heads/main > firefox-cache/l10n-last-commit-hash")
|
||||
if not os.path.exists("build/firefox-cache"):
|
||||
os.mkdir("build/firefox-cache")
|
||||
os.system("cat l10n-temp/.git/refs/heads/main > build/firefox-cache/l10n-last-commit-hash")
|
||||
# Remove new line character
|
||||
data = ""
|
||||
with open("build/firefox-cache/l10n-last-commit-hash", "r") as f:
|
||||
data = f.read()
|
||||
with open("build/firefox-cache/l10n-last-commit-hash", "w") as f:
|
||||
f.write(data.strip())
|
||||
except KeyboardInterrupt:
|
||||
print("Exiting...")
|
||||
shutil.rmtree("l10n-temp")
|
||||
|
@@ -1,41 +0,0 @@
|
||||
import os
|
||||
import subprocess
|
||||
import logging
|
||||
|
||||
# Set up logging
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
# Constants for paths
|
||||
NEW_TAB_DIR = "./engine/browser/components/newtab"
|
||||
ENGINE_DIR = "./engine"
|
||||
NPM_INSTALL_COMMANDS = ["npm install", "npm install meow@9.0.0"]
|
||||
BUNDLE_COMMAND = "npm run bundle --prefix=browser/components/newtab"
|
||||
|
||||
|
||||
def install_dependencies():
|
||||
"""Install necessary npm packages for the newtab component."""
|
||||
for command in NPM_INSTALL_COMMANDS:
|
||||
logging.info(f"Running command: {command} in {NEW_TAB_DIR}")
|
||||
subprocess.run(command.split(), cwd=NEW_TAB_DIR, check=True)
|
||||
|
||||
|
||||
def bundle_newtab_components():
|
||||
"""Bundle the newtab components."""
|
||||
logging.info(f"Bundling newtab components in {ENGINE_DIR}")
|
||||
subprocess.run(BUNDLE_COMMAND.split(), cwd=ENGINE_DIR, check=True)
|
||||
|
||||
|
||||
def update_newtab(init: bool = True):
|
||||
"""Update the newtab components, optionally initializing dependencies."""
|
||||
try:
|
||||
if init:
|
||||
install_dependencies()
|
||||
|
||||
bundle_newtab_components()
|
||||
except subprocess.CalledProcessError as e:
|
||||
logging.error(f"An error occurred: {e}")
|
||||
raise
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
update_newtab(init=False)
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index da2fbe8c40fa40a86c350f8adb33e26915fecc7b..e5a571fc41cd4fa8d2cdffdc15f9ad083e6d36fb 100644
|
||||
index c91f39b3afbe712355194593ae39514a83de6605..e6c2b77a69d9274ff1c7578ab4df4f07533f7441 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -3912,8 +3912,6 @@ dependencies = [
|
||||
@@ -3850,8 +3850,6 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "mime_guess"
|
||||
version = "2.0.4"
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index 19a470608b7de28a946353d4c09a56b4dd3fd69a..37e9687c86b5725ee5d5071b632b5927ffb6bd27 100644
|
||||
index a99b447250d36dd0146e031fa22503bc88eeae39..86829fc7075054f832a04825c98325a925cf5b0f 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -201,6 +201,9 @@ rure = { path = "third_party/rust/rure" }
|
||||
@@ -205,6 +205,9 @@ rure = { path = "third_party/rust/rure" }
|
||||
# Patch `plist` to work with `indexmap` 2.*
|
||||
plist = { path = "third_party/rust/plist" }
|
||||
|
||||
|
12
src/browser/actors/WebRTCParent-sys-mjs.patch
Normal file
12
src/browser/actors/WebRTCParent-sys-mjs.patch
Normal file
@@ -0,0 +1,12 @@
|
||||
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs
|
||||
index be66de4a1ef044341c2e1d6953806550897df45a..ff6ef3511076b25e00ca4d0189f666ec7aa94fe8 100644
|
||||
--- a/browser/actors/WebRTCParent.sys.mjs
|
||||
+++ b/browser/actors/WebRTCParent.sys.mjs
|
||||
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {
|
||||
|
||||
let tabbrowser = browser.ownerGlobal.gBrowser;
|
||||
if (tabbrowser) {
|
||||
+ browser.ownerGlobal.gZenMediaController.updateMediaSharing(state);
|
||||
tabbrowser.updateBrowserSharing(browser, {
|
||||
webRTC: state,
|
||||
});
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
|
||||
index a39a4f287ef843f7e0cdeac8320eeff81318116f..f84cdb85c249221522089667010d547cfab67819 100644
|
||||
index 97acbf826f9427b06e0a54679b30269ce7b695f5..aeadcd0c72816612cd5c1ca1199fe2a363c637f4 100644
|
||||
--- a/browser/app/profile/firefox.js
|
||||
+++ b/browser/app/profile/firefox.js
|
||||
@@ -3190,3 +3190,5 @@ pref("toolkit.contentRelevancy.enabled", false);
|
||||
@@ -3362,3 +3362,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);
|
||||
|
@@ -61,12 +61,16 @@ pref("alerts.showFavicons", true);
|
||||
// Toolbars
|
||||
pref("browser.tabs.closeWindowWithLastTab", false);
|
||||
pref("browser.tabs.loadBookmarksInTabs", false);
|
||||
pref("browser.tabs.dragdrop.moveOverThresholdPercent", 50);
|
||||
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);
|
||||
|
||||
// TODO:
|
||||
pref("browser.tabs.groups.enabled", false);
|
||||
|
||||
// Enable Do Not Track and GPC by default.
|
||||
pref("privacy.donottrackheader.enabled", false);
|
||||
pref("privacy.globalprivacycontrol.enabled", true);
|
||||
@@ -90,6 +94,8 @@ pref('zen.tabs.show-newtab-vertical', true);
|
||||
pref('zen.view.show-newtab-button-border-top', false);
|
||||
pref('zen.view.show-newtab-button-top', true);
|
||||
|
||||
pref('zen.mediacontrols.enabled', true);
|
||||
|
||||
#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);
|
||||
@@ -181,17 +187,9 @@ pref('zen.pinned-tab-manager.close-shortcut-behavior', 'reset-unload-switch');
|
||||
// TODO: Check this out!
|
||||
pref("browser.profiles.enabled", false);
|
||||
|
||||
// Zen webpanels (calling it sidebar due to legacy reasons)
|
||||
pref('zen.sidebar.data', "{\"data\":\n {\"p1\":{\n \"url\":\"https://www.wikipedia.org/\"\n },\n\"p2\":{\n \"url\":\"https://m.twitter.com/\",\n\"ua\": true\n },\n\"p3\": {\n \"url\": \"https://www.youtube.com/\",\n\"ua\": true\n},\n\"p4\": {\n \"url\": \"https://translate.google.com/\",\n\"ua\": true\n},\n\"p5\": {\n \"url\": \"https://todoist.com/\",\n\"ua\": true\n}},\n\"index\":[\"p1\",\"p2\",\"p3\",\"p4\",\"p5\"]}");
|
||||
pref('zen.sidebar.enabled', true);
|
||||
pref('zen.sidebar.close-on-blur', true);
|
||||
pref('zen.sidebar.max-webpanels', 8);
|
||||
pref('zen.sidebar.use-google-favicons', true);
|
||||
|
||||
// Zen Split View
|
||||
pref('zen.splitView.enable-tab-drop', true);
|
||||
pref('zen.splitView.min-resize-width', 7);
|
||||
pref('zen.splitView.change-on-hover', false);
|
||||
pref('zen.splitView.rearrange-hover-size', 24);
|
||||
|
||||
// Startup flags
|
||||
@@ -199,7 +197,6 @@ pref('zen.startup.smooth-scroll-in-tabs', true);
|
||||
|
||||
// Zen Workspaces
|
||||
pref('zen.workspaces.disabled_for_testing', false);
|
||||
pref('zen.workspaces.hide-deactivated-workspaces', 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);
|
||||
@@ -255,7 +252,7 @@ pref('browser.migrate.opera.enabled', true);
|
||||
// pref('network.trr.mode', 5);
|
||||
|
||||
// security: They must enable this themselves, to avoid people downloading malware
|
||||
pref('xpinstall.signatures.required', false);
|
||||
pref('xpinstall.signatures.required', true);
|
||||
|
||||
// Experimental Zen Features
|
||||
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
|
||||
@@ -383,6 +380,11 @@ pref('widget.macos.titlebar-blend-mode.behind-window', true);
|
||||
pref('zen.widget.macos.window-material', 3);
|
||||
#endif
|
||||
|
||||
// Enable transparent background for linux
|
||||
#ifdef MOZ_WIDGET_GTK
|
||||
pref('zen.widget.linux.transparency', false);
|
||||
#endif
|
||||
|
||||
// Urlbar and autocomplete
|
||||
pref("browser.urlbar.maxRichResults", 6);
|
||||
pref("browser.urlbar.trimHttps", true);
|
||||
|
@@ -30,7 +30,6 @@
|
||||
|
||||
this._initSidebarScrolling();
|
||||
|
||||
gZenCompactModeManager.init();
|
||||
ZenWorkspaces.init();
|
||||
gZenVerticalTabsManager.init();
|
||||
gZenUIManager.init();
|
||||
@@ -41,7 +40,34 @@
|
||||
} catch (e) {
|
||||
console.error('ZenThemeModifier: Error initializing browser layout', e);
|
||||
}
|
||||
ZenWorkspaces.promiseInitialized.then(() => {
|
||||
if (gBrowserInit.delayedStartupFinished) {
|
||||
this.delayedStartupFinished();
|
||||
} else {
|
||||
Services.obs.addObserver(this, 'browser-delayed-startup-finished');
|
||||
}
|
||||
},
|
||||
|
||||
observe(aSubject, aTopic) {
|
||||
// This nsIObserver method allows us to defer initialization until after
|
||||
// this window has finished painting and starting up.
|
||||
if (aTopic == 'browser-delayed-startup-finished' && aSubject == window) {
|
||||
Services.obs.removeObserver(this, 'browser-delayed-startup-finished');
|
||||
this.delayedStartupFinished();
|
||||
}
|
||||
},
|
||||
|
||||
delayedStartupFinished() {
|
||||
ZenWorkspaces.promiseInitialized.then(async () => {
|
||||
await delayedStartupPromise;
|
||||
await SessionStore.promiseAllWindowsRestored;
|
||||
setTimeout(() => {
|
||||
gZenCompactModeManager.init();
|
||||
setTimeout(() => {
|
||||
// A bit of a hack to make sure the tabs toolbar is updated.
|
||||
// Just in case we didn't get the right size.
|
||||
gZenUIManager.updateTabsToolbar();
|
||||
}, 100);
|
||||
}, 0);
|
||||
this.closeWatermark();
|
||||
});
|
||||
},
|
||||
@@ -58,7 +84,6 @@
|
||||
|
||||
closeWatermark() {
|
||||
document.documentElement.removeAttribute('zen-before-loaded');
|
||||
window.dispatchEvent(new window.Event('resize')); // To recalculate the layout
|
||||
if (Services.prefs.getBoolPref('zen.watermark.enabled', false)) {
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
@@ -77,12 +102,13 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
window.requestAnimationFrame(() => {
|
||||
window.dispatchEvent(new window.Event('resize')); // To recalculate the layout
|
||||
});
|
||||
},
|
||||
|
||||
_changeSidebarLocation() {
|
||||
const kElementsToAppend = ['sidebar-splitter', 'sidebar-box'];
|
||||
const appWrapepr = document.getElementById('zen-sidebar-box-container');
|
||||
appWrapepr.setAttribute('hidden', 'true');
|
||||
|
||||
const browser = document.getElementById('browser');
|
||||
const toolbox = document.getElementById('navigator-toolbox');
|
||||
|
@@ -65,7 +65,11 @@ var gZenUIManager = {
|
||||
tabs.style.removeProperty('flex');
|
||||
tabs.style.maxHeight = height + 'px';
|
||||
gZenVerticalTabsManager.actualWindowButtons.removeAttribute('zen-has-hover');
|
||||
gURLBar.updateLayoutBreakout();
|
||||
try {
|
||||
gURLBar.zenUpdateLayoutBreakout();
|
||||
} catch (error) {
|
||||
console.error('Error updating layout breakout:', error);
|
||||
}
|
||||
},
|
||||
|
||||
get tabsWrapper() {
|
||||
@@ -250,7 +254,7 @@ var gZenUIManager = {
|
||||
const toast = this._createToastElement(messageId, options);
|
||||
this._toastContainer.removeAttribute('hidden');
|
||||
this._toastContainer.appendChild(toast);
|
||||
await this.motion.animate(toast, { opacity: [0, 1], scale: [0.8, 1] }, { type: 'spring', bounce: 0.5, duration: 0.5 });
|
||||
await this.motion.animate(toast, { opacity: [0, 1], scale: [0.8, 1] }, { type: 'spring', bounce: 0.5, duration: 0.7 });
|
||||
await new Promise((resolve) => setTimeout(resolve, 3000));
|
||||
await this.motion.animate(toast, { opacity: [1, 0], scale: [1, 0.9] }, { duration: 0.2, bounce: 0 });
|
||||
const toastHeight = toast.getBoundingClientRect().height;
|
||||
@@ -265,14 +269,6 @@ var gZenUIManager = {
|
||||
get panelUIPosition() {
|
||||
return gZenVerticalTabsManager._hasSetSingleToolbar ? 'bottomleft topleft' : 'bottomright topright';
|
||||
},
|
||||
|
||||
openSettingsWindow() {
|
||||
window.openDialog(
|
||||
'chrome://browser/content/zen-components/windows/zen-settings.xhtml',
|
||||
'_blank',
|
||||
'centerscreen,chrome,dialog=no,resizable=no,titlebar'
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
var gZenVerticalTabsManager = {
|
||||
@@ -338,7 +334,7 @@ var gZenVerticalTabsManager = {
|
||||
type="checkbox"
|
||||
${Services.prefs.getBoolPref(kConfigKey) ? 'checked="true"' : ''}
|
||||
data-lazy-l10n-id="zen-toolbar-context-tabs-right"
|
||||
oncommand="gZenVerticalTabsManager.toggleTabsOnRight();"
|
||||
command="cmd_zenToggleTabsOnRight"
|
||||
/>
|
||||
`);
|
||||
document.getElementById('viewToolbarsMenuSeparator').before(fragment);
|
||||
@@ -468,6 +464,19 @@ var gZenVerticalTabsManager = {
|
||||
}
|
||||
},
|
||||
|
||||
recalculateURLBarHeight() {
|
||||
document.getElementById('urlbar').removeAttribute('--urlbar-height');
|
||||
if (!this._hasSetSingleToolbar) {
|
||||
document.getElementById('urlbar').style.setProperty('--urlbar-height', '32px');
|
||||
} else {
|
||||
try {
|
||||
gURLBar.zenUpdateLayoutBreakout();
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_updateEvent({ forCustomizableMode = false, dontRebuildAreas = false } = {}) {
|
||||
if (this._isUpdating) {
|
||||
return;
|
||||
@@ -548,7 +557,7 @@ var gZenVerticalTabsManager = {
|
||||
);
|
||||
elements = Array.from(elements).reverse();
|
||||
// Add separator if it doesn't exist
|
||||
if (!buttonsTarget.contains(this._topButtonsSeparatorElement)) {
|
||||
if (!this._hasSetSingleToolbar) {
|
||||
buttonsTarget.append(this._topButtonsSeparatorElement);
|
||||
}
|
||||
for (const button of elements) {
|
||||
@@ -646,20 +655,18 @@ var gZenVerticalTabsManager = {
|
||||
}
|
||||
|
||||
gZenCompactModeManager.updateCompactModeContext(isSingleToolbar);
|
||||
document.getElementById('urlbar').removeAttribute('--urlbar-height');
|
||||
if (!isSingleToolbar) {
|
||||
document.getElementById('urlbar').style.setProperty('--urlbar-height', '32px');
|
||||
} else {
|
||||
gURLBar.updateLayoutBreakout();
|
||||
}
|
||||
this.recalculateURLBarHeight();
|
||||
|
||||
// Always move the splitter next to the sidebar
|
||||
this.navigatorToolbox.after(document.getElementById('zen-sidebar-splitter'));
|
||||
window.dispatchEvent(new Event('resize'));
|
||||
if (!isCompactMode) {
|
||||
gZenCompactModeManager.getAndApplySidebarWidth();
|
||||
}
|
||||
gZenUIManager.updateTabsToolbar();
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
gZenUIManager.updateTabsToolbar();
|
||||
this._isUpdating = false;
|
||||
},
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js
|
||||
index 8c5c7768e0e716c196063b4c986dea2631185972..d31f57a176fffc9725b1c31b165fb5cdc55e186e 100644
|
||||
index f6e1391baf12abb91c85a95107bb3923118746c0..76c7b75a4e29056110f1631a50047c4ddd8b1f4a 100644
|
||||
--- a/browser/base/content/aboutDialog.js
|
||||
+++ b/browser/base/content/aboutDialog.js
|
||||
@@ -51,7 +51,7 @@ function init() {
|
||||
@@ -52,7 +52,7 @@ function init() {
|
||||
]);
|
||||
let versionIdKey = "base";
|
||||
let versionAttributes = {
|
||||
@@ -11,7 +11,7 @@ index 8c5c7768e0e716c196063b4c986dea2631185972..d31f57a176fffc9725b1c31b165fb5cd
|
||||
};
|
||||
|
||||
let arch = Services.sysinfo.get("arch");
|
||||
@@ -63,7 +63,7 @@ function init() {
|
||||
@@ -64,7 +64,7 @@ function init() {
|
||||
}
|
||||
|
||||
let version = Services.appinfo.version;
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml
|
||||
index 53e4616a99b7826453d5b6dea027184d90bc73f7..90c9fe5683411cf3087bebd3d0941decf6d23e89 100644
|
||||
index c64980810570fcea84e33fdc2d66ac42a79f4e46..b7198e810a7510fa82cc6801cfd01c88a08d42c1 100644
|
||||
--- a/browser/base/content/aboutDialog.xhtml
|
||||
+++ b/browser/base/content/aboutDialog.xhtml
|
||||
@@ -34,6 +34,7 @@
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
<html:link rel="localization" href="branding/brand.ftl"/>
|
||||
<html:link rel="localization" href="browser/aboutDialog.ftl"/>
|
||||
@@ -10,7 +10,7 @@ index 53e4616a99b7826453d5b6dea027184d90bc73f7..90c9fe5683411cf3087bebd3d0941dec
|
||||
</linkset>
|
||||
|
||||
<html:div id="aboutDialogContainer">
|
||||
@@ -124,21 +125,23 @@
|
||||
@@ -125,21 +126,23 @@
|
||||
</description>
|
||||
</vbox>
|
||||
<description class="text-blurb" id="communityDesc" data-l10n-id="community-2">
|
||||
@@ -30,8 +30,8 @@ index 53e4616a99b7826453d5b6dea027184d90bc73f7..90c9fe5683411cf3087bebd3d0941dec
|
||||
<vbox id="bottomBox">
|
||||
<hbox pack="center">
|
||||
<label is="text-link" class="bottom-link" useoriginprincipal="true" href="about:license" data-l10n-id="bottomLinks-license"/>
|
||||
- <label is="text-link" class="bottom-link" href="https://www.mozilla.org/about/legal/terms/firefox/" data-l10n-id="bottomLinks-rights"/>
|
||||
- <label is="text-link" class="bottom-link" href="https://www.mozilla.org/privacy/firefox/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-id="bottomLinks-privacy"/>
|
||||
- <label is="text-link" class="bottom-link" href="https://www.mozilla.org/about/legal/terms/firefox/" data-l10n-id="bottom-links-terms"/>
|
||||
- <label is="text-link" class="bottom-link" href="https://www.mozilla.org/privacy/firefox/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-id="bottom-links-privacy"/>
|
||||
+ <label is="text-link" class="bottom-link" href="about:rights" data-l10n-id="bottomLinks-rights"/>
|
||||
+ <label is="text-link" class="bottom-link" href="https://www.zen-browser.app/privacy-policy/" data-l10n-id="bottomLinks-privacy"/>
|
||||
</hbox>
|
||||
|
@@ -1,17 +1,16 @@
|
||||
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
|
||||
index 7d7e8697f02f90d4f336c9ab0a73a89848e0c21c..2fd19f3b43db4bdd99e65fecd1481f80d4541a7a 100644
|
||||
index 2ca8bdd2674fb4addf3bbf94ff17abc5c93c6293..dd965d8d190e8cdacbeb3d80995ad1a906e64079 100644
|
||||
--- a/browser/base/content/browser-box.inc.xhtml
|
||||
+++ b/browser/base/content/browser-box.inc.xhtml
|
||||
@@ -23,7 +23,14 @@
|
||||
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
|
||||
</vbox>
|
||||
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||
+#include zen-sidebar-panel.inc.xhtml
|
||||
@@ -26,7 +26,13 @@
|
||||
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||
<box id="after-splitter"></box>
|
||||
</div>
|
||||
+<vbox flex="1" id="zen-appcontent-wrapper">
|
||||
+<html:div id="zen-appcontent-navbar-container"></html:div>
|
||||
+<hbox id="zen-tabbox-wrapper" flex="1">
|
||||
<tabbox id="tabbrowser-tabbox" flex="1" tabcontainer="tabbrowser-tabs">
|
||||
+ #include zen-tabbrowser-elements.inc.xhtml
|
||||
+#include zen-tabbrowser-elements.inc.xhtml
|
||||
<tabpanels id="tabbrowser-tabpanels" flex="1" selectedIndex="0"/>
|
||||
</tabbox>
|
||||
</hbox>
|
||||
|
@@ -1,36 +1,17 @@
|
||||
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
|
||||
index 63100defacf66c6b3232b9e0a783a5fd14e3a46a..398d685b142a47a85619dfc55772ea98ccfad445 100644
|
||||
index 3d5173315812589c0b79beec5f0419fc37cb8868..c4216db9e414fbbaead6ecd89b40366b0d8a50c1 100644
|
||||
--- a/browser/base/content/browser-init.js
|
||||
+++ b/browser/base/content/browser-init.js
|
||||
@@ -162,13 +162,15 @@ var gBrowserInit = {
|
||||
elem.setAttribute("skipintoolbarset", "true");
|
||||
}
|
||||
}
|
||||
+ ZenCustomizableUI.init(window);
|
||||
for (let area of CustomizableUI.areas) {
|
||||
let type = CustomizableUI.getAreaType(area);
|
||||
- if (type == CustomizableUI.TYPE_TOOLBAR) {
|
||||
+ if (type == CustomizableUI.TYPE_TOOLBAR && !area.startsWith("zen-")) {
|
||||
let node = document.getElementById(area);
|
||||
CustomizableUI.registerToolbarNode(node);
|
||||
}
|
||||
}
|
||||
+ ZenCustomizableUI.registerToolbarNodes(window);
|
||||
if (isVerticalTabs) {
|
||||
// Show the vertical tabs toolbar
|
||||
setToolbarVisibility(
|
||||
@@ -287,6 +289,10 @@ var gBrowserInit = {
|
||||
gPrivateBrowsingUI.init();
|
||||
BrowserSearch.init();
|
||||
BrowserPageActions.init();
|
||||
+
|
||||
+Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window);
|
||||
+Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
|
||||
+
|
||||
if (gToolbarKeyNavEnabled) {
|
||||
ToolbarKeyboardNavigator.init();
|
||||
}
|
||||
@@ -365,6 +371,7 @@ var gBrowserInit = {
|
||||
@@ -175,6 +175,8 @@ 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");
|
||||
|
||||
this._cancelDelayedStartup();
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
||||
index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4782c0cdc 100644
|
||||
index b89846a1103827b7e65c0b6c9197e80761e3f5c0..cc7205765244738743db92bfcafc1f288919ae0d 100644
|
||||
--- a/browser/base/content/browser.js
|
||||
+++ b/browser/base/content/browser.js
|
||||
@@ -32,6 +32,7 @@ ChromeUtils.defineESModuleGetters(this, {
|
||||
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, {
|
||||
ContextualIdentityService:
|
||||
"resource://gre/modules/ContextualIdentityService.sys.mjs",
|
||||
CustomizableUI: "resource:///modules/CustomizableUI.sys.mjs",
|
||||
@@ -10,7 +10,7 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4
|
||||
DevToolsSocketStatus:
|
||||
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
|
||||
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
|
||||
@@ -3440,6 +3441,11 @@ var XULBrowserWindow = {
|
||||
@@ -2698,6 +2699,11 @@ var XULBrowserWindow = {
|
||||
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
|
||||
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
|
||||
|
||||
@@ -22,27 +22,7 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4
|
||||
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
|
||||
|
||||
if (!gMultiProcessBrowser) {
|
||||
@@ -4435,7 +4441,7 @@ nsBrowserAccess.prototype = {
|
||||
// Passing a null-URI to only create the content window,
|
||||
// and pass true for aSkipLoad to prevent loading of
|
||||
// about:blank
|
||||
- return this.getContentWindowOrOpenURIInFrame(
|
||||
+ let res = this.getContentWindowOrOpenURIInFrame(
|
||||
null,
|
||||
aParams,
|
||||
aWhere,
|
||||
@@ -4443,6 +4449,10 @@ nsBrowserAccess.prototype = {
|
||||
aName,
|
||||
true
|
||||
);
|
||||
+ if (typeof window.gZenGlanceManager !== "undefined" && window.toolbar.visible) {
|
||||
+ window.gZenGlanceManager.onTabOpen(res, aURI);
|
||||
+ }
|
||||
+ return res;
|
||||
},
|
||||
|
||||
openURIInFrame: function browser_openURIInFrame(
|
||||
@@ -6351,7 +6361,7 @@ function switchToTabHavingURI(
|
||||
@@ -5194,7 +5200,7 @@ function switchToTabHavingURI(
|
||||
ignoreQueryString || replaceQueryString,
|
||||
ignoreFragmentWhenComparing
|
||||
);
|
||||
@@ -51,7 +31,7 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4
|
||||
for (let i = 0; i < browsers.length; i++) {
|
||||
let browser = browsers[i];
|
||||
let browserCompare = cleanURL(
|
||||
@@ -6392,7 +6402,7 @@ function switchToTabHavingURI(
|
||||
@@ -5235,7 +5241,7 @@ function switchToTabHavingURI(
|
||||
}
|
||||
|
||||
if (!doAdopt) {
|
||||
|
@@ -1,9 +1,9 @@
|
||||
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
|
||||
index 493c593d66883082c2a4df87c4706f919ea675f8..aaaa833b64b0fd890aa2a0794eaeb7e41f002f06 100644
|
||||
index 269b025d7fb942602c1b1b6c9747540bcde11375..9dcecfe205cadacace5195ec84d8b2ee292a0632 100644
|
||||
--- a/browser/base/content/browser-sets.inc
|
||||
+++ b/browser/base/content/browser-sets.inc
|
||||
@@ -393,3 +393,4 @@
|
||||
@@ -405,3 +405,4 @@
|
||||
internal="true"/>
|
||||
#endif
|
||||
</keyset>
|
||||
+ <keyset id="zenKeyset"></keyset>
|
||||
+#include zen-keysets.inc.xhtml
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
|
||||
index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326a39cffda 100644
|
||||
index 0d0a559a6473149b50f4bf18d059e86907c4acd3..25ad798eb26f04262d069fdaf1f3fb00adec9807 100644
|
||||
--- a/browser/base/content/browser.xhtml
|
||||
+++ b/browser/base/content/browser.xhtml
|
||||
@@ -26,6 +26,7 @@
|
||||
@@ -10,7 +10,7 @@ index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326
|
||||
persist="screenX screenY width height sizemode"
|
||||
data-l10n-sync="true">
|
||||
<head>
|
||||
@@ -100,6 +101,8 @@
|
||||
@@ -104,6 +105,8 @@
|
||||
|
||||
<title data-l10n-id="browser-main-window-default-title"></title>
|
||||
|
||||
@@ -19,15 +19,15 @@ index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326
|
||||
# All JS files which are needed by browser.xhtml and other top level windows to
|
||||
# support MacOS specific features *must* go into the global-scripts.inc file so
|
||||
# that they can be shared with macWindow.inc.xhtml.
|
||||
@@ -169,6 +172,7 @@
|
||||
});
|
||||
});
|
||||
@@ -148,6 +151,7 @@
|
||||
window.addEventListener("DOMContentLoaded",
|
||||
gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
|
||||
</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)
|
||||
@@ -190,9 +194,13 @@
|
||||
@@ -169,9 +173,11 @@
|
||||
</vbox>
|
||||
</html:template>
|
||||
|
||||
@@ -37,8 +37,6 @@ index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326
|
||||
+ <hbox id="zen-main-app-wrapper" flex="1" persist="zen-compact-mode">
|
||||
+ <vbox id="zen-toast-container"></vbox>
|
||||
+ #include navigator-toolbox.inc.xhtml
|
||||
+ <html:span id="zen-sidebar-box-container">
|
||||
+ </html:span>
|
||||
+ #include browser-box.inc.xhtml
|
||||
+ </hbox>
|
||||
|
||||
|
@@ -1,19 +1,19 @@
|
||||
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
|
||||
index 959c523b21c642f29353b9de37b3ce6b5505b01b..4cd26ea85ad4905bade71dcd470b8678079787bd 100644
|
||||
index 198c188e074b7062169764fb7d81c692d3a2bdae..b412a3c1fabdc6470b4ea9e7be34c426cc76aafd 100644
|
||||
--- a/browser/base/content/main-popupset.inc.xhtml
|
||||
+++ b/browser/base/content/main-popupset.inc.xhtml
|
||||
@@ -206,6 +206,10 @@
|
||||
@@ -201,6 +201,10 @@
|
||||
hidden="true"
|
||||
tabspecific="true"
|
||||
aria-labelledby="editBookmarkPanelTitle">
|
||||
+ <html:div id="zenEditBookmarkPanelFaviconContainer">
|
||||
+ <html:img id="zenEditBookmarkPanelFavicon"/>
|
||||
+ </html:div>
|
||||
+ <vbox>
|
||||
+ <html:div id="zenEditBookmarkPanelFaviconContainer">
|
||||
+ <html:img id="zenEditBookmarkPanelFavicon"/>
|
||||
+ </html:div>
|
||||
+ <vbox>
|
||||
<box class="panel-header">
|
||||
<html:h1>
|
||||
<html:span id="editBookmarkPanelTitle"/>
|
||||
@@ -231,6 +235,7 @@
|
||||
@@ -226,6 +230,7 @@
|
||||
class="footer-button"/>
|
||||
</html:moz-button-group>
|
||||
</vbox>
|
||||
@@ -21,21 +21,7 @@ index 959c523b21c642f29353b9de37b3ce6b5505b01b..4cd26ea85ad4905bade71dcd470b8678
|
||||
</panel>
|
||||
</html:template>
|
||||
|
||||
@@ -426,11 +431,13 @@
|
||||
observes="cmd_CustomizeToolbars"
|
||||
class="viewCustomizeToolbar"
|
||||
data-lazy-l10n-id="toolbar-context-menu-view-customize-toolbar-2"/>
|
||||
+#if 0
|
||||
<menuseparator id="sidebarRevampSeparator"/>
|
||||
<menuitem id="toolbar-context-toggle-vertical-tabs"
|
||||
data-lazy-l10n-id="toolbar-context-turn-on-vertical-tabs"/>
|
||||
<menuitem id="toolbar-context-customize-sidebar"
|
||||
data-lazy-l10n-id="toolbar-context-customize-sidebar"/>
|
||||
+#endif
|
||||
<menuseparator contexttype="fullscreen"/>
|
||||
<menuitem id="toolbar-context-full-screen-autohide"
|
||||
class="fullscreen-context-autohide"
|
||||
@@ -565,6 +572,8 @@
|
||||
@@ -567,6 +572,8 @@
|
||||
|
||||
#include popup-notifications.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 a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1c0d9968c 100644
|
||||
index feb9e4ef7e872b4cfbf0d55f24a34db275951c66..3ce9b9919ff736885b8aa8943bbbce3c5d0f33a6 100644
|
||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
@@ -2,7 +2,7 @@
|
||||
@@ -11,20 +11,18 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1
|
||||
<script src="chrome://browser/content/navigator-toolbox.js" />
|
||||
|
||||
<!-- Menu -->
|
||||
@@ -17,9 +17,11 @@
|
||||
@@ -17,9 +17,8 @@
|
||||
#include browser-menubar.inc
|
||||
</toolbaritem>
|
||||
<spacer flex="1" skipintoolbarset="true" style="order: 1000;"/>
|
||||
+#if 0
|
||||
#include titlebar-items.inc.xhtml
|
||||
+#endif
|
||||
-#include titlebar-items.inc.xhtml
|
||||
</toolbar>
|
||||
-
|
||||
+<hbox id="titlebar">
|
||||
<toolbar id="TabsToolbar"
|
||||
class="browser-toolbar browser-titlebar"
|
||||
fullscreentoolbar="true"
|
||||
@@ -32,7 +34,7 @@
|
||||
@@ -32,7 +31,7 @@
|
||||
|
||||
<hbox class="titlebar-spacer" type="pre-tabs"/>
|
||||
|
||||
@@ -33,18 +31,15 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1
|
||||
<toolbartabstop/>
|
||||
<hbox id="TabsToolbar-customization-target" flex="1">
|
||||
<toolbarbutton id="firefox-view-button"
|
||||
@@ -40,9 +42,9 @@
|
||||
@@ -40,6 +39,7 @@
|
||||
data-l10n-id="toolbar-button-firefox-view-2"
|
||||
role="button"
|
||||
aria-pressed="false"
|
||||
+ hidden="true"
|
||||
cui-areatype="toolbar"
|
||||
removable="true"/>
|
||||
-
|
||||
<tabs id="tabbrowser-tabs"
|
||||
is="tabbrowser-tabs"
|
||||
aria-multiselectable="true"
|
||||
@@ -50,6 +52,10 @@
|
||||
|
||||
@@ -50,6 +50,10 @@
|
||||
tooltip="tabbrowser-tab-tooltip"
|
||||
orient="horizontal"
|
||||
stopwatchid="FX_TAB_CLICK_MS">
|
||||
@@ -55,16 +50,7 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1
|
||||
<hbox class="tab-drop-indicator" hidden="true"/>
|
||||
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
|
||||
# significantly, there is an optimization in
|
||||
@@ -57,7 +63,7 @@
|
||||
# the current structure that we may want to revisit.
|
||||
<html:div id="vertical-pinned-tabs-container" tabindex="-1"></html:div>
|
||||
<html:div id="vertical-pinned-tabs-container-separator"></html:div>
|
||||
- <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
|
||||
+ <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="vertical" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
|
||||
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
|
||||
<hbox id="tabbrowser-arrowscrollbox-periphery">
|
||||
<toolbartabstop/>
|
||||
@@ -75,6 +81,8 @@
|
||||
@@ -75,6 +79,8 @@
|
||||
tooltip="dynamic-shortcut-tooltip"
|
||||
data-l10n-id="tabs-toolbar-new-tab"/>
|
||||
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
||||
@@ -73,33 +59,28 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1
|
||||
</tabs>
|
||||
|
||||
<toolbarbutton id="new-tab-button"
|
||||
@@ -100,11 +108,12 @@
|
||||
@@ -100,10 +106,10 @@
|
||||
#include private-browsing-indicator.inc.xhtml
|
||||
<toolbarbutton id="content-analysis-indicator"
|
||||
class="toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||
-
|
||||
+#if 0
|
||||
#include titlebar-items.inc.xhtml
|
||||
-
|
||||
+#endif
|
||||
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||
|
||||
-#include titlebar-items.inc.xhtml
|
||||
+#include zen-sidebar-icons.inc.xhtml
|
||||
|
||||
</toolbar>
|
||||
-
|
||||
+</hbox>
|
||||
<toolbar id="nav-bar"
|
||||
class="browser-toolbar chromeclass-location"
|
||||
data-l10n-id="navbar-accessible"
|
||||
@@ -490,10 +499,12 @@
|
||||
@@ -489,10 +495,10 @@
|
||||
consumeanchor="PanelUI-button"
|
||||
data-l10n-id="appmenu-menu-button-closed2"/>
|
||||
</toolbaritem>
|
||||
+#include titlebar-items.inc.xhtml
|
||||
<hbox class="titlebar-spacer" type="post-tabs"/>
|
||||
#include private-browsing-indicator.inc.xhtml
|
||||
-
|
||||
+#if 0
|
||||
#include titlebar-items.inc.xhtml
|
||||
+#endif
|
||||
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||
-#include titlebar-items.inc.xhtml
|
||||
</toolbar>
|
||||
|
||||
<toolbar id="PersonalToolbar"
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
|
||||
index 7f3dc585937c5ac96c0d09a786515305afb4fe1a..9216931e7d805743f0b00e74039be042456e63f3 100644
|
||||
index 94d3c2bb401c2e4246340a6c2d63c9d3561ff5e1..62c599f78748e708c8f36c05935822e8808996b5 100644
|
||||
--- a/browser/base/content/nsContextMenu.sys.mjs
|
||||
+++ b/browser/base/content/nsContextMenu.sys.mjs
|
||||
@@ -1047,6 +1047,13 @@ export class nsContextMenu {
|
||||
@@ -1109,6 +1109,13 @@ export class nsContextMenu {
|
||||
!this.isSecureAboutPage()
|
||||
);
|
||||
|
||||
|
@@ -19,7 +19,6 @@
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-decks.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-folders.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-glance.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-sidebar-panels.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-popup.css" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-compact-mode.css" />
|
||||
@@ -30,20 +29,21 @@
|
||||
</linkset>
|
||||
|
||||
# Scripts used all over the browser
|
||||
<script src="chrome://browser/content/zen-components/ZenFolders.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenThemesCommon.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenThemesImporter.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenCompactMode.mjs" />
|
||||
<script src="chrome://browser/content/ZenUIManager.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenSidebarManager.mjs"/>
|
||||
<script src="chrome://browser/content/zen-components/ZenTabUnloader.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenPinnedTabManager.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenGradientGenerator.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"/>
|
||||
<script src="chrome://browser/content/zen-components/ZenGlanceManager.mjs" />
|
||||
<script src="chrome://browser/content/zen-components/ZenMediaController.mjs" />
|
||||
<script>
|
||||
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/ZenUIManager.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);
|
||||
|
||||
# Unimportant scripts
|
||||
<script src="chrome://browser/content/zen-components/ZenRices.mjs" />
|
||||
// Unimportant scripts
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenRices.mjs", this);
|
||||
</script>
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
content/browser/zenThemeModifier.js (content/zenThemeModifier.js)
|
||||
content/browser/ZenStartup.mjs (content/ZenStartup.mjs)
|
||||
content/browser/zen-sets.js (content/zen-sets.js)
|
||||
content/browser/ZenUIManager.mjs (content/ZenUIManager.mjs)
|
||||
content/browser/ZenCustomizableUI.sys.mjs (content/ZenCustomizableUI.sys.mjs)
|
||||
content/browser/zen-components/ZenUIMigration.mjs (zen-components/ZenUIMigration.mjs)
|
||||
@@ -11,7 +12,6 @@
|
||||
content/browser/zen-components/ZenWorkspaces.mjs (zen-components/ZenWorkspaces.mjs)
|
||||
content/browser/zen-components/ZenWorkspacesStorage.mjs (zen-components/ZenWorkspacesStorage.mjs)
|
||||
content/browser/zen-components/ZenWorkspacesSync.mjs (zen-components/ZenWorkspacesSync.mjs)
|
||||
content/browser/zen-components/ZenSidebarManager.mjs (zen-components/ZenSidebarManager.mjs)
|
||||
content/browser/zen-components/ZenKeyboardShortcuts.mjs (zen-components/ZenKeyboardShortcuts.mjs)
|
||||
content/browser/zen-components/ZenThemesImporter.mjs (zen-components/ZenThemesImporter.mjs)
|
||||
content/browser/zen-components/ZenTabUnloader.mjs (zen-components/ZenTabUnloader.mjs)
|
||||
@@ -45,15 +45,12 @@
|
||||
content/browser/zen-styles/zen-workspaces.css (content/zen-styles/zen-workspaces.css)
|
||||
content/browser/zen-styles/zen-urlbar.css (content/zen-styles/zen-urlbar.css)
|
||||
content/browser/zen-styles/zen-popup.css (content/zen-styles/zen-popup.css)
|
||||
content/browser/zen-styles/zen-sidebar-panels.css (content/zen-styles/zen-sidebar-panels.css)
|
||||
content/browser/zen-styles/zen-gradient-generator.css (content/zen-styles/zen-gradient-generator.css)
|
||||
content/browser/zen-styles/zen-rices.css (content/zen-styles/zen-rices.css)
|
||||
content/browser/zen-styles/zen-branding.css (content/zen-styles/zen-branding.css)
|
||||
content/browser/zen-styles/zen-welcome.css (content/zen-styles/zen-welcome.css)
|
||||
content/browser/zen-styles/zen-media-controls.css (content/zen-styles/zen-media-controls.css)
|
||||
|
||||
content/browser/zen-styles/windows/zen-settings.css (content/zen-styles/windows/zen-settings.css)
|
||||
|
||||
content/browser/zen-styles/zen-panels/bookmarks.css (content/zen-styles/zen-panels/bookmarks.css)
|
||||
content/browser/zen-styles/zen-panels/extensions.css (content/zen-styles/zen-panels/extensions.css)
|
||||
content/browser/zen-styles/zen-panels/print.css (content/zen-styles/zen-panels/print.css)
|
||||
@@ -83,6 +80,3 @@
|
||||
# JS Vendor
|
||||
content/browser/zen-vendor/tsparticles.confetti.bundle.min.js (content/zen-vendor/tsparticles.confetti.bundle.min.js)
|
||||
content/browser/zen-vendor/motion.min.mjs (content/zen-vendor/motion.min.mjs)
|
||||
|
||||
# Windows
|
||||
content/browser/zen-components/windows/zen-settings.xhtml (zen-components/windows/zen-settings.xhtml)
|
||||
|
@@ -1,4 +1,5 @@
|
||||
<vbox id="zen-glance-sidebar-container" hidden="true">
|
||||
<toolbarbutton id="zen-glance-sidebar-close" data-l10n-id="zen-general-confirm" class="toolbarbutton-1" oncommand="gZenGlanceManager.closeGlance({ onTabClose: true })"/>
|
||||
<toolbarbutton id="zen-glance-sidebar-open" class="toolbarbutton-1" oncommand="gZenGlanceManager.fullyOpenGlance()"/>
|
||||
<toolbarbutton id="zen-glance-sidebar-close" data-l10n-id="zen-general-confirm" class="toolbarbutton-1"/>
|
||||
<toolbarbutton id="zen-glance-sidebar-open" class="toolbarbutton-1"/>
|
||||
<toolbarbutton id="zen-glance-sidebar-split" class="toolbarbutton-1"/>
|
||||
</vbox>
|
||||
|
48
src/browser/base/content/zen-keysets.inc.xhtml
Normal file
48
src/browser/base/content/zen-keysets.inc.xhtml
Normal file
@@ -0,0 +1,48 @@
|
||||
<commandset id="zenCommandSet">
|
||||
<command id="cmd_zenCompactModeToggle" />
|
||||
<command id="cmd_zenCompactModeShowSidebar" />
|
||||
<command id="cmd_zenCompactModeShowToolbar" />
|
||||
|
||||
<command id="cmd_zenWorkspaceForward" />
|
||||
<command id="cmd_zenWorkspaceBackward" />
|
||||
|
||||
<command id="cmd_zenSplitViewGrid" />
|
||||
<command id="cmd_zenSplitViewVertical" />
|
||||
<command id="cmd_zenSplitViewHorizontal" />
|
||||
<command id="cmd_zenSplitViewUnsplit" />
|
||||
<command id="cmd_zenSplitViewLinkInNewTab" />
|
||||
|
||||
<!-- Workspace commands -->
|
||||
<command id="cmd_zenWorkspaceSwitch1" />
|
||||
<command id="cmd_zenWorkspaceSwitch2" />
|
||||
<command id="cmd_zenWorkspaceSwitch3" />
|
||||
<command id="cmd_zenWorkspaceSwitch4" />
|
||||
<command id="cmd_zenWorkspaceSwitch5" />
|
||||
<command id="cmd_zenWorkspaceSwitch6" />
|
||||
<command id="cmd_zenWorkspaceSwitch7" />
|
||||
<command id="cmd_zenWorkspaceSwitch8" />
|
||||
<command id="cmd_zenWorkspaceSwitch9" />
|
||||
<command id="cmd_zenWorkspaceSwitch10" />
|
||||
|
||||
<command id="cmd_zenOpenZenThemePicker" />
|
||||
<command id="cmd_zenChangeWorkspaceTab" />
|
||||
<command id="cmd_zenToggleTabsOnRight" />
|
||||
|
||||
<command id="cmd_zenReplacePinnedUrlWithCurrent" />
|
||||
<command id="cmd_zenAddToEssentials" />
|
||||
<command id="cmd_zenRemoveFromEssentials" />
|
||||
|
||||
<command id="cmd_zenPinnedTabReset" />
|
||||
<command id="cmd_zenPinnedTabResetNoTab" />
|
||||
|
||||
<command id="cmd_zenToggleSidebar" />
|
||||
|
||||
<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,4 +1,4 @@
|
||||
<link rel="localization" href="browser/zen-web-side-panels.ftl"/>
|
||||
|
||||
<link rel="localization" href="browser/zen-workspaces.ftl"/>
|
||||
<link rel="localization" href="browser/zen-split-view.ftl"/>
|
||||
<link rel="localization" href="browser/zen-general.ftl"/>
|
||||
|
@@ -13,38 +13,35 @@
|
||||
</vbox>
|
||||
<hbox id="zen-media-buttons-hbox">
|
||||
<toolbarbutton id="zen-media-pip-button"
|
||||
class="toolbarbutton-1"
|
||||
oncommand="gZenMediaController.onMediaPip();" />
|
||||
class="toolbarbutton-1" />
|
||||
<toolbarbutton id="zen-media-close-button"
|
||||
class="toolbarbutton-1"
|
||||
oncommand="gZenMediaController.onControllerClose();" />
|
||||
class="toolbarbutton-1" />
|
||||
</hbox>
|
||||
</hbox>
|
||||
<hbox id="zen-media-progress-hbox" class="show-on-hover">
|
||||
<label id="zen-media-current-time">0:00</label>
|
||||
<html:input type="range" id="zen-media-progress-bar"
|
||||
value="0" min="0" max="100" step="0.1"
|
||||
oninput="gZenMediaController.onMediaSeekDrag(event);"
|
||||
onchange="gZenMediaController.onMediaSeekComplete(event);"/>
|
||||
value="0" min="0" max="100" step="0.1"/>
|
||||
<label id="zen-media-duration">0:00</label>
|
||||
</hbox>
|
||||
</vbox>
|
||||
<hbox id="zen-media-controls-hbox">
|
||||
<toolbarbutton id="zen-media-focus-button"
|
||||
class="toolbarbutton-1"
|
||||
oncommand="gZenMediaController.onMediaFocus();" />
|
||||
class="toolbarbutton-1" />
|
||||
<toolbarbutton id="zen-media-previoustrack-button"
|
||||
class="toolbarbutton-1"
|
||||
oncommand="gZenMediaController.onMediaPlayPrev();" />
|
||||
class="toolbarbutton-1" />
|
||||
<toolbarbutton id="zen-media-playpause-button"
|
||||
class="toolbarbutton-1"
|
||||
oncommand="gZenMediaController.onMediaToggle();" />
|
||||
class="toolbarbutton-1" />
|
||||
<toolbarbutton id="zen-media-nexttrack-button"
|
||||
class="toolbarbutton-1"
|
||||
oncommand="gZenMediaController.onMediaPlayNext();" />
|
||||
class="toolbarbutton-1" />
|
||||
<toolbarbutton id="zen-media-mute-button"
|
||||
class="toolbarbutton-1"
|
||||
oncommand="gZenMediaController.onMediaMute();" />
|
||||
class="toolbarbutton-1" />
|
||||
<hbox id="media-device-buttons">
|
||||
<toolbarbutton id="zen-media-mute-mic-button"
|
||||
class="toolbarbutton-1" />
|
||||
<toolbarbutton id="zen-media-mute-camera-button"
|
||||
class="toolbarbutton-1" />
|
||||
</hbox>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</toolbaritem>
|
@@ -1,86 +1,3 @@
|
||||
<menupopup id="zenWebPanelContextMenu"
|
||||
onpopupshowing="if (event.target == this) gZenBrowserManagerSidebar.updateContextMenu(this);"
|
||||
onpopuphidden="if (event.target == this) gZenBrowserManagerSidebar.contextTab = null;">
|
||||
<menuitem id="context_zenUnloadWebPanel" oncommand="gZenBrowserManagerSidebar.contextUnload();" data-l10n-id="zen-web-side-panel-context-unload"/>
|
||||
<menuitem id="context_zenToggleMuteWebPanel" oncommand="gZenBrowserManagerSidebar.contextToggleMuteAudio();"/>
|
||||
<menuitem id="context_zenOpenNewTabWebPanel" oncommand="gZenBrowserManagerSidebar.contextOpenNewTab();" data-l10n-id="zen-web-side-panel-open-in-new-tab"/>
|
||||
<menuseparator/>
|
||||
<menu id="context_zenWebPanelContextInContainer"
|
||||
data-l10n-id="zen-web-side-panel-context-open-in-container-tab"
|
||||
selection-type="single"
|
||||
node-type="link"
|
||||
hide-if-private-browsing="true"
|
||||
hide-if-usercontext-disabled="true">
|
||||
<menupopup oncommand="gZenBrowserManagerSidebar.contextChangeContainerTab(event);"
|
||||
onpopupshowing="return gZenBrowserManagerSidebar.createContainerTabMenu(event);" />
|
||||
</menu>
|
||||
<menuitem id="context_zenToogleUAWebPanel" oncommand="gZenBrowserManagerSidebar.contextToggleUserAgent();"/>
|
||||
<menuseparator/>
|
||||
<menuitem id="context_zenDeleteWebPanel" oncommand="gZenBrowserManagerSidebar.contextDelete();" data-l10n-id="zen-web-side-panel-context-delete"/>
|
||||
</menupopup>
|
||||
|
||||
<html:template id="template-zen-split-view-modifier">
|
||||
<panel id="zenSplitViewModifier"
|
||||
class="panel-no-padding"
|
||||
orient="vertical"
|
||||
role="alertdialog"
|
||||
type="arrow"
|
||||
onpopupshowing="gZenViewSplitter.disableTabRearrangeView();"
|
||||
aria-labelledby="zen-split-view-modifier-header"
|
||||
tabspecific="true">
|
||||
<panelmultiview id="zenSplitViewModifierMultiview"
|
||||
mainViewId="zenSplitViewModifierViewDefault">
|
||||
<panelview id="zenSplitViewModifierViewDefault"
|
||||
class="PanelUI-subView"
|
||||
role="document"
|
||||
mainview-with-header="true"
|
||||
has-custom-header="true">
|
||||
<box id="zenSplitViewModifierHeader"
|
||||
class="panel-header panel-header-with-additional-element panel-header-with-info-button">
|
||||
<html:h1>
|
||||
<html:span data-l10n-id="zen-split-view-modifier-header"></html:span>
|
||||
</html:h1>
|
||||
<toolbarbutton id="zenSplitViewModifierActivateReallocation"
|
||||
class="panel-info-button"
|
||||
oncommand="gZenViewSplitter.enableTabRearrangeView();"
|
||||
data-l10n-id="zen-split-view-modifier-activate-reallocation">
|
||||
<image/>
|
||||
</toolbarbutton>
|
||||
</box>
|
||||
<hbox id="zenSplitViewModifierContent">
|
||||
<vbox>
|
||||
<box class="zen-split-view-modifier-preview grid">
|
||||
<box></box>
|
||||
<box></box>
|
||||
<box></box>
|
||||
</box>
|
||||
<p>Grid Layout</p>
|
||||
</vbox>
|
||||
<vbox>
|
||||
<box class="zen-split-view-modifier-preview vsep">
|
||||
<box></box>
|
||||
<box></box>
|
||||
</box>
|
||||
<p>Vertical</p>
|
||||
</vbox>
|
||||
<vbox>
|
||||
<box class="zen-split-view-modifier-preview hsep">
|
||||
<box></box>
|
||||
<box></box>
|
||||
</box>
|
||||
<p>Horizontal</p>
|
||||
</vbox>
|
||||
<vbox>
|
||||
<box class="zen-split-view-modifier-preview unsplit">
|
||||
<box></box>
|
||||
</box>
|
||||
<p>Unsplit</p>
|
||||
</vbox>
|
||||
</hbox>
|
||||
</panelview>
|
||||
</panelmultiview>
|
||||
</panel>
|
||||
</html:template>
|
||||
|
||||
<panel flip="side" type="arrow" orient="vertical" id="PanelUI-zen-gradient-generator" position="bottomright topright" mainview="true" side="left" onpopuphidden="gZenThemePicker.handlePanelClose();" onpopupshowing="gZenThemePicker.handlePanelOpen();">
|
||||
<panelmultiview id="PanelUI-zen-gradient-generator-multiview" mainViewId="PanelUI-zen-gradient-generator-view">
|
||||
|
@@ -2,6 +2,7 @@
|
||||
# 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/ZenWorkspaces.mjs", this);
|
||||
|
92
src/browser/base/content/zen-sets.js
Normal file
92
src/browser/base/content/zen-sets.js
Normal file
@@ -0,0 +1,92 @@
|
||||
document.addEventListener(
|
||||
'MozBeforeInitialXULLayout',
|
||||
() => {
|
||||
// <commandset id="mainCommandSet"> defined in browser-sets.inc
|
||||
document
|
||||
.getElementById('zenCommandSet')
|
||||
// eslint-disable-next-line complexity
|
||||
.addEventListener('command', (event) => {
|
||||
switch (event.target.id) {
|
||||
case 'cmd_zenCompactModeToggle':
|
||||
gZenCompactModeManager.toggle();
|
||||
break;
|
||||
case 'cmd_zenCompactModeShowSidebar':
|
||||
gZenCompactModeManager.toggleSidebar();
|
||||
break;
|
||||
case 'cmd_zenCompactModeShowToolbar':
|
||||
gZenCompactModeManager.toggleToolbar();
|
||||
break;
|
||||
case 'cmd_zenWorkspaceForward':
|
||||
ZenWorkspaces.changeWorkspaceShortcut();
|
||||
break;
|
||||
case 'cmd_zenWorkspaceBackward':
|
||||
ZenWorkspaces.changeWorkspaceShortcut(-1);
|
||||
break;
|
||||
case 'cmd_zenSplitViewGrid':
|
||||
gZenViewSplitter.toggleShortcut('grid');
|
||||
break;
|
||||
case 'cmd_zenSplitViewVertical':
|
||||
gZenViewSplitter.toggleShortcut('vsep');
|
||||
break;
|
||||
case 'cmd_zenSplitViewHorizontal':
|
||||
gZenViewSplitter.toggleShortcut('hsep');
|
||||
break;
|
||||
case 'cmd_zenSplitViewUnsplit':
|
||||
gZenViewSplitter.toggleShortcut('unsplit');
|
||||
break;
|
||||
case 'cmd_zenCopyCurrentURLMarkdown':
|
||||
gZenCommonActions.copyCurrentURLAsMarkdownToClipboard();
|
||||
break;
|
||||
case 'cmd_zenCopyCurrentURL':
|
||||
gZenCommonActions.copyCurrentURLToClipboard();
|
||||
break;
|
||||
case 'cmd_zenPinnedTabReset':
|
||||
gZenPinnedTabManager.resetPinnedTab(gBrowser.selectedTab);
|
||||
break;
|
||||
case 'cmd_zenPinnedTabResetNoTab':
|
||||
gZenPinnedTabManager.resetPinnedTab();
|
||||
break;
|
||||
case 'cmd_zenToggleSidebar':
|
||||
gZenVerticalTabsManager.toggleExpand();
|
||||
break;
|
||||
case 'cmd_zenOpenZenThemePicker':
|
||||
gZenThemePicker.openThemePicker(event);
|
||||
break;
|
||||
case 'cmd_zenChangeWorkspaceTab':
|
||||
ZenWorkspaces.changeTabWorkspace(event.sourceEvent.target.getAttribute('zen-workspace-id'));
|
||||
break;
|
||||
case 'cmd_zenToggleTabsOnRight':
|
||||
gZenVerticalTabsManager.toggleTabsOnRight();
|
||||
break;
|
||||
case 'cmd_zenSplitViewLinkInNewTab':
|
||||
gZenViewSplitter.splitLinkInNewTab();
|
||||
break;
|
||||
case 'cmd_zenReplacePinnedUrlWithCurrent':
|
||||
gZenPinnedTabManager.replacePinnedUrlWithCurrent();
|
||||
break;
|
||||
case 'cmd_zenAddToEssentials':
|
||||
gZenPinnedTabManager.addToEssentials();
|
||||
break;
|
||||
case 'cmd_zenRemoveFromEssentials':
|
||||
gZenPinnedTabManager.removeEssentials();
|
||||
break;
|
||||
case 'cmd_zenUnloadTab':
|
||||
gZenTabUnloader.unloadTab();
|
||||
break;
|
||||
case 'cmd_zenPreventUnloadTab':
|
||||
gZenTabUnloader.preventUnloadTab();
|
||||
break;
|
||||
case 'cmd_zenIgnoreUnloadTab':
|
||||
gZenTabUnloader.ignoreUnloadTab();
|
||||
break;
|
||||
default:
|
||||
if (event.target.id.startsWith('cmd_zenWorkspaceSwitch')) {
|
||||
const index = parseInt(event.target.id.replace('cmd_zenWorkspaceSwitch', ''), 10) - 1;
|
||||
ZenWorkspaces.shortcutSwitchTo(index);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
},
|
||||
{ once: true }
|
||||
);
|
@@ -1,4 +1,4 @@
|
||||
#include zen-media-player.inc.xhtml
|
||||
#include zen-media-controls.inc.xhtml
|
||||
<toolbar brighttext="true"
|
||||
id="zen-sidebar-bottom-buttons"
|
||||
fullscreentoolbar="true"
|
||||
@@ -9,6 +9,5 @@
|
||||
context="toolbar-context-menu"
|
||||
mode="icons">
|
||||
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" data-l10n-id="sidebar-zen-expand" cui-areatype="toolbar" oncommand="gZenVerticalTabsManager.toggleExpand();"></toolbarbutton>
|
||||
<toolbarbutton removable="true" class="toolbarbutton-1 zen-sidebar-action-button zen-compact-mode-ignore" id="zen-sidepanel-button" data-l10n-id="sidebar-zen-sidepanel" onclick="gZenBrowserManagerSidebar.toggle();"></toolbarbutton>
|
||||
<toolbarbutton id="zen-workspaces-button" class="chromeclass-toolbar-additional" overflows="false" removable="false"></toolbarbutton>
|
||||
</toolbar>
|
||||
|
@@ -1,34 +0,0 @@
|
||||
<hbox id="zen-sidebar-web-panel-wrapper">
|
||||
<box id="zen-sidebar-web-panel" class="chromeclass-extrachrome" hidden="true" persist="pinned style hidden" pinned="true">
|
||||
<toolbar mode="icons" flex="1" id="zen-sidebar-web-header" fullscreentoolbar="true">
|
||||
<hbox>
|
||||
<toolbarbutton id="zen-sidebar-web-panel-back" class="toolbarbutton-1 chromeclass-toolbar-additional" oncommand="gZenBrowserManagerSidebar.back();"/>
|
||||
<toolbarbutton id="zen-sidebar-web-panel-forward" class="toolbarbutton-1 chromeclass-toolbar-additional" oncommand="gZenBrowserManagerSidebar.forward();"/>
|
||||
<toolbarbutton id="zen-sidebar-web-panel-reload" class="toolbarbutton-1 chromeclass-toolbar-additional" oncommand="gZenBrowserManagerSidebar.reload();"/>
|
||||
</hbox>
|
||||
<hbox id="zen-sidebar-web-panel-title" flex="1">
|
||||
</hbox>
|
||||
<hbox>
|
||||
<toolbarbutton id="zen-sidebar-web-panel-home" class="toolbarbutton-1 chromeclass-toolbar-additional" oncommand="gZenBrowserManagerSidebar.home();"/>
|
||||
<toolbarbutton id="zen-sidebar-web-panel-pinned" class="toolbarbutton-1 chromeclass-toolbar-additional" pinned="true" oncommand="gZenBrowserManagerSidebar.togglePinned(this);"/>
|
||||
<toolbarbutton id="zen-sidebar-web-panel-close" class="toolbarbutton-1 chromeclass-toolbar-additional" oncommand="gZenBrowserManagerSidebar.close();"/>
|
||||
</hbox>
|
||||
</toolbar>
|
||||
<vbox id="zen-sidebar-web-panel-browser-containers">
|
||||
<vbox id="zen-sidebar-introduction-panel" hidden="true">
|
||||
<html:h1 data-l10n-id="zen-webpanel-introduction-title"/>
|
||||
<html:p data-l10n-id="zen-webpanel-introduction-description"/>
|
||||
</vbox>
|
||||
</vbox>
|
||||
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-wrapper" fullscreentoolbar="true">
|
||||
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-sites" fullscreentoolbar="true">
|
||||
|
||||
</toolbar>
|
||||
<toolbarbutton id="zen-sidebar-add-panel-button" class="zen-sidebar-panel-button toolbarbutton-1 chromeclass-toolbar-additional" onclick="gZenBrowserManagerSidebar._openAddPanelDialog();"/>
|
||||
</toolbar>
|
||||
<html:span class="zen-sidebar-web-panel-splitter" side="left"></html:span>
|
||||
<html:span class="zen-sidebar-web-panel-splitter" side="right"></html:span>
|
||||
<html:span class="zen-sidebar-web-panel-splitter" orient="horizontal" side="top"></html:span>
|
||||
<html:span class="zen-sidebar-web-panel-splitter" orient="horizontal" side="bottom"></html:span>
|
||||
</box>
|
||||
</hbox>
|
@@ -1,49 +0,0 @@
|
||||
@namespace html 'http://www.w3.org/1999/xhtml';
|
||||
@namespace xul 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul';
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
:root {
|
||||
font: message-box;
|
||||
}
|
||||
|
||||
body {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#main-content {
|
||||
background: var(--zen-themed-toolbar-bg-transparent);
|
||||
@supports (-moz-osx-font-smoothing: auto) {
|
||||
appearance: -moz-window-titlebar;
|
||||
}
|
||||
|
||||
user-select: none;
|
||||
touch-action: none;
|
||||
pointer-events: auto;
|
||||
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
|
||||
gap: 2rem;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.section {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
gap: 0.6rem;
|
||||
|
||||
.section-content {
|
||||
width: 100%;
|
||||
background: var(--zen-toolbar-element-bg);
|
||||
border-radius: 6px;
|
||||
padding: 1em;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
}
|
@@ -18,14 +18,20 @@
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes zen-jello-animation-alt {
|
||||
@keyframes zen-jello-animation-macos {
|
||||
0% {
|
||||
transform: scale3d(0.8, 0.8, 0.8);
|
||||
opacity: 0;
|
||||
-moz-window-transform: scale(0.3);
|
||||
}
|
||||
|
||||
to {
|
||||
50% {
|
||||
opacity: 1;
|
||||
transform: scale3d(1, 1, 1);
|
||||
-moz-window-transform: scale(1.04);
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
-moz-window-transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -19,11 +19,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.experimental-rounded-view') {
|
||||
@media -moz-pref('zen.view.experimental-rounded-view') {
|
||||
#tabbrowser-tabpanels {
|
||||
mix-blend-mode: multiply;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
isolation: isolate;
|
||||
:root:not([zen-no-padding='true']) & {
|
||||
mix-blend-mode: multiply;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
isolation: isolate;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -52,7 +52,7 @@
|
||||
transition: background-color var(--inactive-window-transition);
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.theme.gradient') {
|
||||
@media -moz-pref('zen.theme.gradient') {
|
||||
&[animating='true']::after {
|
||||
background: var(--zen-main-browser-background-old);
|
||||
backdrop-filter: blur(5px);
|
||||
@@ -61,7 +61,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (not (-moz-windows-mica)) and (-moz-bool-pref: 'zen.view.grey-out-inactive-windows') {
|
||||
@media (not (-moz-windows-mica)) and -moz-pref('zen.view.grey-out-inactive-windows') {
|
||||
transition: color var(--inactive-window-transition);
|
||||
:root:not([zen-welcome-stage]) &:-moz-window-inactive {
|
||||
color: var(--toolbox-textcolor-inactive);
|
||||
@@ -109,7 +109,7 @@
|
||||
}
|
||||
|
||||
#zen-main-app-wrapper {
|
||||
background: transparent;
|
||||
background: var(--zen-themed-toolbar-bg-transparent);
|
||||
overflow: hidden;
|
||||
|
||||
& > * {
|
||||
@@ -173,7 +173,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.widget.mac.mono-window-controls') {
|
||||
@media -moz-pref('zen.widget.mac.mono-window-controls') {
|
||||
.titlebar-buttonbox-container {
|
||||
/* Draw 3 dots as background to represent the window controls,
|
||||
all with the same cololr as the titlebar */
|
||||
@@ -187,3 +187,46 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:root[zen-window-buttons-reversed='true'][zen-right-side='true'] .titlebar-buttonbox-container {
|
||||
margin-inline-start: calc(var(--zen-element-separation) - 3px);
|
||||
}
|
||||
|
||||
.zen-split-view-splitter[orient='vertical'],
|
||||
#zen-sidebar-splitter {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: var(--zen-element-separation);
|
||||
background: transparent;
|
||||
border: none;
|
||||
cursor: ew-resize;
|
||||
z-index: 3;
|
||||
|
||||
&:is(.zen-split-view-splitter[orient='vertical']) {
|
||||
/* Bit of a hacky solution, but it works */
|
||||
width: var(--zen-split-row-gap);
|
||||
margin-left: calc(var(--zen-element-separation) * -1 - 1px);
|
||||
height: unset;
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
||||
&::before {
|
||||
height: 50px;
|
||||
width: 2px;
|
||||
background: var(--button-primary-bgcolor);
|
||||
border-radius: 2px;
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
opacity: 0;
|
||||
transition: opacity 0.1s ease-in-out;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&:hover::before {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
@@ -7,285 +7,286 @@
|
||||
|
||||
:root[zen-compact-mode='true']:not([customizing]):not([inDOMFullscreen='true']) {
|
||||
%include zen-tabs/vertical-tabs-topbuttons-fix.css
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.compact.hide-tabbar') or (-moz-bool-pref: 'zen.view.use-single-toolbar') {
|
||||
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel[pinned='true']) {
|
||||
margin-left: var(--zen-sidebar-web-panel-spacing) !important;
|
||||
}
|
||||
|
||||
#zen-tabbox-wrapper {
|
||||
/* Remove extra 1px of margine we have to add to the tabbox */
|
||||
margin-left: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
|
||||
#zen-appcontent-wrapper {
|
||||
margin-left: var(--zen-element-separation) !important;
|
||||
margin-right: var(--zen-element-separation) !important;
|
||||
|
||||
& #tabbrowser-tabbox {
|
||||
margin-left: 0 !important;
|
||||
@media -moz-pref('zen.view.compact.hide-tabbar') or -moz-pref('zen.view.use-single-toolbar') {
|
||||
&:not([zen-compact-animating]) {
|
||||
& #zen-sidebar-splitter {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
#zen-sidebar-top-buttons-customization-target {
|
||||
padding-inline-start: calc(var(--zen-toolbox-padding) - var(--toolbarbutton-outer-padding)) !important;
|
||||
}
|
||||
#zen-tabbox-wrapper {
|
||||
/* Remove extra 1px of margine we have to add to the tabbox */
|
||||
margin-left: var(--zen-element-separation) !important;
|
||||
margin-right: var(--zen-element-separation) !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-splitter {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#navigator-toolbox {
|
||||
--zen-toolbox-max-width: 64px !important;
|
||||
--zen-compact-float: var(--zen-element-separation);
|
||||
|
||||
/* Initial padding for when we are animating */
|
||||
padding: 0 0 0 var(--zen-toolbox-padding) !important;
|
||||
|
||||
&:not([animate='true']) {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
transition:
|
||||
left 0.15s ease,
|
||||
right 0.15s ease,
|
||||
opacity 1.5s ease;
|
||||
top: 0;
|
||||
bottom: var(--zen-element-separation);
|
||||
padding: 0 var(--zen-compact-float) !important;
|
||||
opacity: 0;
|
||||
|
||||
:root[zen-single-toolbar='true'] & {
|
||||
top: calc(var(--zen-element-separation) / 2);
|
||||
height: calc(100% - var(--zen-element-separation));
|
||||
}
|
||||
|
||||
& #zen-sidebar-top-buttons {
|
||||
margin: 0 0 calc(var(--zen-toolbox-padding) / 2) 0;
|
||||
#zen-appcontent-wrapper {
|
||||
& #tabbrowser-tabbox {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
&:not([zen-right-side='true']) #nav-bar {
|
||||
margin-left: 0 !important;
|
||||
#zen-sidebar-splitter {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
&:not([zen-right-side='true']) #navigator-toolbox {
|
||||
left: calc(-1 * var(--actual-zen-sidebar-width) + 1px);
|
||||
}
|
||||
|
||||
/* When we have multiple toolbars and the top-toolbar is NOT being hidden,
|
||||
* we need to adjust the top-padding of the toolbox to account for the
|
||||
* extra toolbar height. */
|
||||
@media not (-moz-bool-pref: 'zen.view.compact.hide-toolbar') {
|
||||
&:not([zen-single-toolbar='true']) #navigator-toolbox:not([animate='true']) {
|
||||
margin-top: var(--zen-toolbar-height) !important;
|
||||
#zen-sidebar-top-buttons-customization-target {
|
||||
padding-inline-start: calc(var(--zen-toolbox-padding) - var(--toolbarbutton-outer-padding)) !important;
|
||||
}
|
||||
}
|
||||
|
||||
&[zen-right-side='true'] {
|
||||
& #navigator-toolbox {
|
||||
--zen-compact-float: calc(var(--zen-element-separation) + 1px);
|
||||
&:not([zen-window-buttons-reversed='true']) #zen-appcontent-navbar-container #nav-bar {
|
||||
margin-left: var(--zen-element-separation) !important;
|
||||
}
|
||||
|
||||
&[zen-window-buttons-reversed='true'] #zen-appcontent-navbar-container #nav-bar {
|
||||
margin-right: var(--zen-element-separation) !important;
|
||||
margin-left: calc(var(--zen-element-separation) - 3px) !important;
|
||||
}
|
||||
|
||||
#navigator-toolbox {
|
||||
--zen-toolbox-max-width: 64px !important;
|
||||
--zen-compact-float: var(--zen-element-separation);
|
||||
|
||||
/* Initial padding for when we are animating */
|
||||
padding: 0 0 0 var(--zen-toolbox-padding) !important;
|
||||
|
||||
&:not([animate='true']) {
|
||||
right: calc(-1 * var(--actual-zen-sidebar-width) + 1px);
|
||||
position: fixed;
|
||||
z-index: 10;
|
||||
transition:
|
||||
left 0.15s ease,
|
||||
right 0.15s ease,
|
||||
opacity 1.5s ease;
|
||||
top: 0;
|
||||
bottom: var(--zen-element-separation);
|
||||
padding: 0 var(--zen-compact-float) !important;
|
||||
opacity: 0;
|
||||
|
||||
:root[zen-single-toolbar='true'] & {
|
||||
top: calc(var(--zen-element-separation) / 2);
|
||||
height: calc(100% - var(--zen-element-separation));
|
||||
}
|
||||
|
||||
& #zen-sidebar-top-buttons {
|
||||
margin: 0 0 calc(var(--zen-toolbox-padding) / 2) 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:not([zen-right-side='true']) #nav-bar {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
& .browserSidebarContainer {
|
||||
margin-left: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
&:not([zen-right-side='true']) #navigator-toolbox {
|
||||
left: calc(-1 * var(--actual-zen-sidebar-width) + 1px);
|
||||
}
|
||||
}
|
||||
|
||||
#navigator-toolbox:not([animate='true']) #titlebar {
|
||||
box-shadow: var(--zen-big-shadow);
|
||||
border-radius: calc(var(--zen-native-inner-radius) + var(--zen-element-separation) / 4);
|
||||
padding: var(--zen-toolbox-padding) !important;
|
||||
position: relative;
|
||||
background: var(--zen-dialog-background);
|
||||
border: 1px solid var(--zen-colors-border-contrast);
|
||||
/* times 4 because we have the inner padding and the outter padding to consider */
|
||||
:root[zen-sidebar-expanded='true'] & {
|
||||
&[has-animated-padding='true'] {
|
||||
/* When we have multiple toolbars and the top-toolbar is NOT being hidden,
|
||||
* we need to adjust the top-padding of the toolbox to account for the
|
||||
* extra toolbar height. */
|
||||
@media not -moz-pref('zen.view.compact.hide-toolbar') {
|
||||
&:not([zen-single-toolbar='true']) {
|
||||
#navigator-toolbox:not([animate='true']) {
|
||||
margin-top: var(--zen-toolbar-height) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&[zen-right-side='true'] {
|
||||
& #navigator-toolbox {
|
||||
--zen-compact-float: calc(var(--zen-element-separation) + 1px);
|
||||
|
||||
&:not([animate='true']) {
|
||||
right: calc(-1 * var(--actual-zen-sidebar-width) + 1px);
|
||||
}
|
||||
}
|
||||
|
||||
& .browserSidebarContainer {
|
||||
margin-left: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
#navigator-toolbox:not([animate='true']) #titlebar {
|
||||
box-shadow: var(--zen-big-shadow);
|
||||
border-radius: calc(var(--zen-native-inner-radius) + var(--zen-element-separation) / 4);
|
||||
padding: var(--zen-toolbox-padding) !important;
|
||||
position: relative;
|
||||
background: var(--zen-dialog-background);
|
||||
outline: 1px solid var(--zen-colors-border-contrast);
|
||||
outline-offset: -1px;
|
||||
min-width: var(--zen-toolbox-min-width);
|
||||
|
||||
:root[zen-sidebar-expanded='true'] & {
|
||||
width: calc(var(--zen-sidebar-width) + var(--zen-toolbox-padding));
|
||||
}
|
||||
|
||||
&:not([has-animated-padding='true']) {
|
||||
width: calc(var(--zen-sidebar-width) - var(--zen-toolbox-padding));
|
||||
:root[zen-single-toolbar='true'] {
|
||||
padding-top: 0 !important;
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
|
||||
@media -moz-pref('zen.view.compact.color-sidebar') {
|
||||
background: var(--zen-main-browser-background-toolbar) !important;
|
||||
background-attachment: fixed !important;
|
||||
background-size: 2000px !important; /* Dont ask me why */
|
||||
/* NOTE: We MUST not add a backdrop-filter if we want the URL
|
||||
* bar to be floating correctly:
|
||||
* https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_display/Containing_block#identifying_the_containing_block */
|
||||
}
|
||||
|
||||
& #urlbar[open][zen-floating-urlbar='true'] {
|
||||
transition: left 0.05s ease;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-image: url(chrome://browser/content/zen-images/grain-bg.png);
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
opacity: var(--zen-grainy-background-opacity, 0);
|
||||
mix-blend-mode: overlay;
|
||||
}
|
||||
}
|
||||
|
||||
:root[zen-single-toolbar='true'] {
|
||||
padding-top: 0 !important;
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
#navigator-toolbox[zen-has-hover]:not(:has(#urlbar[zen-floating-urlbar='true']:hover)),
|
||||
#navigator-toolbox[zen-user-show],
|
||||
#navigator-toolbox[zen-has-empty-tab],
|
||||
#navigator-toolbox[flash-popup],
|
||||
#navigator-toolbox[has-popup-menu],
|
||||
#navigator-toolbox[movingtab],
|
||||
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||
&[zen-renaming-tab='true'] #navigator-toolbox,
|
||||
#navigator-toolbox:has(
|
||||
*:is([panelopen='true'], [open='true'], #urlbar:focus-within):not(#urlbar[zen-floating-urlbar='true']):not(tab):not(.zen-compact-mode-ignore)
|
||||
) {
|
||||
&:not([animate='true']) {
|
||||
--zen-compact-mode-func: linear(
|
||||
0 0%,
|
||||
0.002748 1%,
|
||||
0.010544 2%,
|
||||
0.022757 3%,
|
||||
0.038804 4%,
|
||||
0.058151 5%,
|
||||
0.080308 6%,
|
||||
0.104828 7.000000000000001%,
|
||||
0.131301 8%,
|
||||
0.159358 9%,
|
||||
0.188662 10%,
|
||||
0.21891 11%,
|
||||
0.249828 12%,
|
||||
0.281172 13%,
|
||||
0.312724 14.000000000000002%,
|
||||
0.344288 15%,
|
||||
0.375693 16%,
|
||||
0.40679 17%,
|
||||
0.437447 18%,
|
||||
0.467549 19%,
|
||||
0.497 20%,
|
||||
0.525718 21%,
|
||||
0.553633 22%,
|
||||
0.580688 23%,
|
||||
0.60684 24%,
|
||||
0.632052 25%,
|
||||
0.656298 26%,
|
||||
0.679562 27%,
|
||||
0.701831 28.000000000000004%,
|
||||
0.723104 28.999999999999996%,
|
||||
0.743381 30%,
|
||||
0.76267 31%,
|
||||
0.780983 32%,
|
||||
0.798335 33%,
|
||||
0.814744 34%,
|
||||
0.830233 35%,
|
||||
0.844826 36%,
|
||||
0.858549 37%,
|
||||
0.87143 38%,
|
||||
0.883498 39%,
|
||||
0.894782 40%,
|
||||
0.905314 41%,
|
||||
0.915125 42%,
|
||||
0.924247 43%,
|
||||
0.93271 44%,
|
||||
0.940547 45%,
|
||||
0.947787 46%,
|
||||
0.954463 47%,
|
||||
0.960603 48%,
|
||||
0.966239 49%,
|
||||
0.971397 50%,
|
||||
0.976106 51%,
|
||||
0.980394 52%,
|
||||
0.984286 53%,
|
||||
0.987808 54%,
|
||||
0.990984 55.00000000000001%,
|
||||
0.993837 56.00000000000001%,
|
||||
0.99639 56.99999999999999%,
|
||||
0.998664 57.99999999999999%,
|
||||
1.000679 59%,
|
||||
1.002456 60%,
|
||||
1.004011 61%,
|
||||
1.005363 62%,
|
||||
1.006528 63%,
|
||||
1.007522 64%,
|
||||
1.008359 65%,
|
||||
1.009054 66%,
|
||||
1.009618 67%,
|
||||
1.010065 68%,
|
||||
1.010405 69%,
|
||||
1.010649 70%,
|
||||
1.010808 71%,
|
||||
1.01089 72%,
|
||||
1.010904 73%,
|
||||
1.010857 74%,
|
||||
1.010757 75%,
|
||||
1.010611 76%,
|
||||
1.010425 77%,
|
||||
1.010205 78%,
|
||||
1.009955 79%,
|
||||
1.009681 80%,
|
||||
1.009387 81%,
|
||||
1.009077 82%,
|
||||
1.008754 83%,
|
||||
1.008422 84%,
|
||||
1.008083 85%,
|
||||
1.00774 86%,
|
||||
1.007396 87%,
|
||||
1.007052 88%,
|
||||
1.00671 89%,
|
||||
1.006372 90%,
|
||||
1.00604 91%,
|
||||
1.005713 92%,
|
||||
1.005394 93%,
|
||||
1.005083 94%,
|
||||
1.004782 95%,
|
||||
1.004489 96%,
|
||||
1.004207 97%,
|
||||
1.003935 98%,
|
||||
1.003674 99%,
|
||||
1.003423 100%
|
||||
);
|
||||
transition:
|
||||
left 0.25s var(--zen-compact-mode-func),
|
||||
right 0.25s var(--zen-compact-mode-func);
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.compact.color-sidebar') {
|
||||
background: var(--zen-main-browser-background-toolbar) !important;
|
||||
background-attachment: fixed !important;
|
||||
background-size: 2000px !important; /* Dont ask me why */
|
||||
/* NOTE: We MUST not add a backdrop-filter if we want the URL
|
||||
* bar to be floating correctly:
|
||||
* https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_display/Containing_block#identifying_the_containing_block */
|
||||
}
|
||||
|
||||
& #urlbar[open][zen-floating-urlbar='true'] {
|
||||
transition: left 0.05s ease;
|
||||
visibility: visible;
|
||||
|
||||
#navigator-toolbox:has(&) {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-image: url(chrome://browser/content/zen-images/grain-bg.png);
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
opacity: var(--zen-grainy-background-opacity, 0);
|
||||
mix-blend-mode: overlay;
|
||||
}
|
||||
}
|
||||
|
||||
#navigator-toolbox[zen-has-hover]:not(:has(#urlbar[zen-floating-urlbar='true']:hover)),
|
||||
#navigator-toolbox[zen-user-show],
|
||||
#navigator-toolbox[zen-has-empty-tab],
|
||||
#navigator-toolbox[flash-popup],
|
||||
#navigator-toolbox[has-popup-menu],
|
||||
#navigator-toolbox[movingtab],
|
||||
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||
&[zen-renaming-tab='true'] #navigator-toolbox,
|
||||
#navigator-toolbox:has(
|
||||
*:is([panelopen='true'], [open='true'], #urlbar:focus-within):not(#urlbar[zen-floating-urlbar='true']):not(tab):not(.zen-compact-mode-ignore)
|
||||
) {
|
||||
&:not([animate='true']) {
|
||||
--zen-compact-mode-func: linear(
|
||||
0 0%,
|
||||
0.002748 1%,
|
||||
0.010544 2%,
|
||||
0.022757 3%,
|
||||
0.038804 4%,
|
||||
0.058151 5%,
|
||||
0.080308 6%,
|
||||
0.104828 7.000000000000001%,
|
||||
0.131301 8%,
|
||||
0.159358 9%,
|
||||
0.188662 10%,
|
||||
0.21891 11%,
|
||||
0.249828 12%,
|
||||
0.281172 13%,
|
||||
0.312724 14.000000000000002%,
|
||||
0.344288 15%,
|
||||
0.375693 16%,
|
||||
0.40679 17%,
|
||||
0.437447 18%,
|
||||
0.467549 19%,
|
||||
0.497 20%,
|
||||
0.525718 21%,
|
||||
0.553633 22%,
|
||||
0.580688 23%,
|
||||
0.60684 24%,
|
||||
0.632052 25%,
|
||||
0.656298 26%,
|
||||
0.679562 27%,
|
||||
0.701831 28.000000000000004%,
|
||||
0.723104 28.999999999999996%,
|
||||
0.743381 30%,
|
||||
0.76267 31%,
|
||||
0.780983 32%,
|
||||
0.798335 33%,
|
||||
0.814744 34%,
|
||||
0.830233 35%,
|
||||
0.844826 36%,
|
||||
0.858549 37%,
|
||||
0.87143 38%,
|
||||
0.883498 39%,
|
||||
0.894782 40%,
|
||||
0.905314 41%,
|
||||
0.915125 42%,
|
||||
0.924247 43%,
|
||||
0.93271 44%,
|
||||
0.940547 45%,
|
||||
0.947787 46%,
|
||||
0.954463 47%,
|
||||
0.960603 48%,
|
||||
0.966239 49%,
|
||||
0.971397 50%,
|
||||
0.976106 51%,
|
||||
0.980394 52%,
|
||||
0.984286 53%,
|
||||
0.987808 54%,
|
||||
0.990984 55.00000000000001%,
|
||||
0.993837 56.00000000000001%,
|
||||
0.99639 56.99999999999999%,
|
||||
0.998664 57.99999999999999%,
|
||||
1.000679 59%,
|
||||
1.002456 60%,
|
||||
1.004011 61%,
|
||||
1.005363 62%,
|
||||
1.006528 63%,
|
||||
1.007522 64%,
|
||||
1.008359 65%,
|
||||
1.009054 66%,
|
||||
1.009618 67%,
|
||||
1.010065 68%,
|
||||
1.010405 69%,
|
||||
1.010649 70%,
|
||||
1.010808 71%,
|
||||
1.01089 72%,
|
||||
1.010904 73%,
|
||||
1.010857 74%,
|
||||
1.010757 75%,
|
||||
1.010611 76%,
|
||||
1.010425 77%,
|
||||
1.010205 78%,
|
||||
1.009955 79%,
|
||||
1.009681 80%,
|
||||
1.009387 81%,
|
||||
1.009077 82%,
|
||||
1.008754 83%,
|
||||
1.008422 84%,
|
||||
1.008083 85%,
|
||||
1.00774 86%,
|
||||
1.007396 87%,
|
||||
1.007052 88%,
|
||||
1.00671 89%,
|
||||
1.006372 90%,
|
||||
1.00604 91%,
|
||||
1.005713 92%,
|
||||
1.005394 93%,
|
||||
1.005083 94%,
|
||||
1.004782 95%,
|
||||
1.004489 96%,
|
||||
1.004207 97%,
|
||||
1.003935 98%,
|
||||
1.003674 99%,
|
||||
1.003423 100%
|
||||
);
|
||||
transition:
|
||||
left 0.25s var(--zen-compact-mode-func),
|
||||
right 0.25s var(--zen-compact-mode-func);
|
||||
opacity: 1;
|
||||
|
||||
&:not([supress-primary-adjustment='true']) {
|
||||
left: calc(var(--zen-element-separation) / -2);
|
||||
:root[zen-right-side='true'] & {
|
||||
right: calc(var(--zen-element-separation) / -2);
|
||||
left: auto;
|
||||
&:not([supress-primary-adjustment='true']) {
|
||||
opacity: 1;
|
||||
left: calc(var(--zen-element-separation) / -2);
|
||||
:root[zen-right-side='true'] & {
|
||||
right: calc(var(--zen-element-separation) / -2);
|
||||
left: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.compact.hide-toolbar') {
|
||||
@media -moz-pref('zen.view.compact.hide-toolbar') {
|
||||
&:not([zen-single-toolbar='true']) {
|
||||
& #navigator-toolbox {
|
||||
top: 0;
|
||||
@@ -334,10 +335,10 @@
|
||||
}
|
||||
|
||||
& #urlbar {
|
||||
opacity: 0;
|
||||
opacity: 0 !important;
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.compact.color-toolbar') {
|
||||
@media -moz-pref('zen.view.compact.color-toolbar') {
|
||||
background-attachment: fixed;
|
||||
background: var(--zen-main-browser-background-toolbar);
|
||||
background-size: 100% 2000px;
|
||||
@@ -346,6 +347,7 @@
|
||||
}
|
||||
|
||||
& #zen-appcontent-navbar-container[zen-has-hover],
|
||||
& #zen-appcontent-navbar-container:hover,
|
||||
& #zen-appcontent-navbar-container:focus-within,
|
||||
& #zen-appcontent-navbar-container[zen-user-show],
|
||||
& #zen-appcontent-navbar-container[has-popup-menu],
|
||||
@@ -372,7 +374,7 @@
|
||||
}
|
||||
|
||||
& #urlbar {
|
||||
opacity: 1;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
& #urlbar[breakout-extend='true']:not([zen-floating-urlbar='true']) {
|
||||
|
@@ -44,10 +44,21 @@
|
||||
}
|
||||
|
||||
#tabbrowser-tabpanels[zen-split-view='true'] .browserSidebarContainer.deck-selected {
|
||||
outline: 1px solid var(--zen-primary-color) !important;
|
||||
&:not(.zen-glance-overlay) {
|
||||
outline: 1px solid var(--zen-primary-color) !important;
|
||||
}
|
||||
|
||||
&.zen-glance-overlay {
|
||||
flex: 1;
|
||||
margin-top: calc(var(--zen-element-separation) / 2);
|
||||
}
|
||||
}
|
||||
|
||||
#tabbrowser-tabbox:has(#tabbrowser-tabpanels[zen-split-view='true']) {
|
||||
:root[zen-no-padding='true'] & {
|
||||
--zen-element-separation: 8px;
|
||||
}
|
||||
|
||||
--zen-split-row-gap: var(--zen-element-separation);
|
||||
--zen-split-column-gap: calc(var(--zen-element-separation) + 1px);
|
||||
margin-right: calc(-1 * var(--zen-split-column-gap));
|
||||
@@ -56,7 +67,7 @@
|
||||
#tabbrowser-tabpanels:has(> [zen-split='true']),
|
||||
#zen-splitview-overlay {
|
||||
:root:not([zen-compact-mode='true']):not([customizing]) & {
|
||||
@media (-moz-bool-pref: 'zen.view.compact.hide-toolbar') {
|
||||
@media -moz-pref('zen.view.compact.hide-toolbar') {
|
||||
& {
|
||||
margin-top: calc(var(--zen-split-column-gap) * -1);
|
||||
}
|
||||
@@ -99,113 +110,6 @@
|
||||
display: flex !important;
|
||||
}
|
||||
|
||||
/* Split view panel */
|
||||
|
||||
#zenSplitViewModifierViewDefault {
|
||||
min-width: 180px;
|
||||
min-height: 180px;
|
||||
|
||||
padding: 15px;
|
||||
padding-top: 12px;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-template-rows: 1fr 1fr;
|
||||
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent > vbox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview {
|
||||
border-radius: 5px;
|
||||
border: 1px solid var(--zen-colors-border);
|
||||
width: 100px;
|
||||
height: 70px;
|
||||
overflow: hidden;
|
||||
padding: 5px;
|
||||
user-select: none;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview.active {
|
||||
box-shadow: 0 0 0 2px var(--zen-primary-color);
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent p {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview {
|
||||
& box {
|
||||
background-color: var(--zen-colors-secondary);
|
||||
border-radius: 3px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
transition: 0.1s;
|
||||
}
|
||||
|
||||
&:hover box {
|
||||
background-color: var(--zen-primary-color);
|
||||
}
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview.hsep {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview.hsep box:last-child {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview.vsep box:last-child {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview.grid {
|
||||
display: grid;
|
||||
grid-template-areas: 'a b' 'c b';
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview.grid box:nth-child(1) {
|
||||
grid-area: a;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview.grid box:nth-child(2) {
|
||||
grid-area: b;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierContent .zen-split-view-modifier-preview.grid box:nth-child(3) {
|
||||
grid-area: c;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierHeader {
|
||||
min-height: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
#zenSplitViewModifierEnabledToast {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#zenSplitViewModifier:not([has-enabled-realloc])[toast] #zenSplitViewModifierEnabledToast {
|
||||
display: revert;
|
||||
}
|
||||
|
||||
.zen-view-splitter-header-container {
|
||||
position: absolute;
|
||||
top: calc(var(--zen-split-column-gap) / -2);
|
||||
|
@@ -17,7 +17,7 @@ tab-group[split-view-group] {
|
||||
padding: 0 2px;
|
||||
--tab-min-height: 30px;
|
||||
--tab-collapsed-width: 38px;
|
||||
margin: 0 auto;
|
||||
margin: 0 4px;
|
||||
--tab-min-width: 34px;
|
||||
}
|
||||
|
||||
@@ -58,6 +58,13 @@ tab-group[split-view-group] {
|
||||
right: 50%;
|
||||
transform: translateX(50%);
|
||||
}
|
||||
|
||||
& .tab-content {
|
||||
min-width: 0;
|
||||
:root[zen-sidebar-expanded='true'] & {
|
||||
justify-content: unset !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:has(> tab:is([visuallyselected], [multiselected])) {
|
||||
@@ -115,8 +122,7 @@ tab-group[split-view-group] .tabbrowser-tab {
|
||||
}
|
||||
|
||||
tab-group[split-view-group] .tab-group-label-container {
|
||||
display: none;
|
||||
width: 100%;
|
||||
visibility: collapse;
|
||||
}
|
||||
|
||||
tab-group[split-view-group] .tab-close-button {
|
||||
|
@@ -4,11 +4,6 @@
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
.browserSidebarContainer:has([zen-glance-selected]),
|
||||
.browserSidebarContainer.zen-glance-overlay {
|
||||
visibility: inherit;
|
||||
}
|
||||
|
||||
#zen-glance-sidebar-container {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
@@ -88,18 +83,32 @@
|
||||
}
|
||||
}
|
||||
|
||||
:root[zen-no-padding='true'] .browserSidebarContainer.zen-glance-background {
|
||||
--zen-native-inner-radius: 6px;
|
||||
--zen-element-separation: 6px;
|
||||
}
|
||||
|
||||
.browserSidebarContainer.zen-glance-background,
|
||||
.browserSidebarContainer.zen-glance-overlay .browserContainer {
|
||||
border-radius: var(--zen-native-inner-radius);
|
||||
box-shadow: var(--zen-big-shadow);
|
||||
}
|
||||
|
||||
.browserSidebarContainer.zen-glance-overlay {
|
||||
box-shadow: none !important;
|
||||
visibility: inherit;
|
||||
|
||||
:root[zen-no-padding='true'] & {
|
||||
--zen-native-inner-radius: 0px;
|
||||
}
|
||||
|
||||
& .browserContainer {
|
||||
background: var(--zen-dialog-background);
|
||||
position: fixed;
|
||||
border-radius: var(--zen-native-inner-radius);
|
||||
opacity: 0;
|
||||
top: 0;
|
||||
left: 0;
|
||||
flex: unset !important;
|
||||
box-shadow: var(--zen-big-shadow);
|
||||
|
||||
&[has-finished-animation='true'] {
|
||||
position: relative !important;
|
||||
|
@@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
#PanelUI-zen-gradient-generator {
|
||||
--panel-width: 300px;
|
||||
--panel-width: 320px;
|
||||
--panel-padding: 10px;
|
||||
min-width: var(--panel-width);
|
||||
}
|
||||
@@ -133,7 +133,7 @@
|
||||
padding: 5px;
|
||||
position: relative;
|
||||
|
||||
& .zen-theme-picker-dot-custom {
|
||||
& .zen-theme-picker-dot.custom {
|
||||
background: var(--zen-theme-picker-dot-color);
|
||||
border: 1px solid var(--zen-colors-border);
|
||||
border-radius: 5px;
|
||||
@@ -261,7 +261,7 @@
|
||||
transform: translateX(-50%);
|
||||
& .separator,
|
||||
& #PanelUI-zen-gradient-generator-color-toggle-algo {
|
||||
background: light-dark(rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0.1));
|
||||
background: light-dark(rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0.5));
|
||||
}
|
||||
|
||||
& button {
|
||||
@@ -296,7 +296,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media not (-moz-bool-pref: 'zen.theme.gradient.show-custom-colors') {
|
||||
@media not -moz-pref('zen.theme.gradient.show-custom-colors') {
|
||||
#PanelUI-zen-gradient-generator-custom-colors {
|
||||
display: none !important;
|
||||
}
|
||||
|
@@ -19,6 +19,24 @@
|
||||
--toolbarbutton-outer-padding: 2px;
|
||||
}
|
||||
|
||||
&:not([media-sharing]) {
|
||||
#media-device-buttons {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
#media-device-buttons {
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
&[media-sharing] #zen-media-controls-hbox > toolbarbutton:not(:first-child) {
|
||||
display: none;
|
||||
|
||||
#media-device-buttons {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
&:not([can-pip]) {
|
||||
#zen-media-info-vbox {
|
||||
width: calc(100% - 26px);
|
||||
@@ -141,7 +159,6 @@
|
||||
background-color: var(--zen-media-control-bg);
|
||||
backdrop-filter: saturate(3) contrast(2) blur(10px);
|
||||
width: 100%;
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.show-on-hover {
|
||||
@@ -163,6 +180,7 @@
|
||||
font-size: x-small;
|
||||
opacity: 0.7;
|
||||
font-weight: 500;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,7 +224,7 @@
|
||||
}
|
||||
|
||||
#zen-media-info-vbox {
|
||||
#zen-media-controls-toolbar:not([media-position-hidden='true']) & {
|
||||
#zen-media-controls-toolbar:not([media-position-hidden]) & {
|
||||
transition-delay: 0.01s !important;
|
||||
}
|
||||
overflow-x: hidden;
|
||||
@@ -247,11 +265,11 @@
|
||||
|
||||
#zen-media-progress-hbox {
|
||||
flex-grow: 1;
|
||||
height: 1.1rem;
|
||||
height: 2rem;
|
||||
align-items: center;
|
||||
padding-top: 0px !important;
|
||||
|
||||
#zen-media-controls-toolbar[media-position-hidden='true'] & {
|
||||
#zen-media-controls-toolbar[media-position-hidden] & {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
@@ -3,14 +3,64 @@
|
||||
* 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'][animate][animate='open']::part(content) {
|
||||
animation: zen-jello-animation 0.35s ease;
|
||||
|
||||
panel[type='arrow'][animate='open'] {
|
||||
@media (-moz-platform: macos) {
|
||||
animation: zen-jello-animation-alt 0.2s ease-out;
|
||||
animation: zen-jello-animation-macos 0.4s ease-out;
|
||||
&[side='bottom'] {
|
||||
/* Animate from the bottom */
|
||||
-zen-window-transform-origin: 0 100%;
|
||||
}
|
||||
:root[zen-right-side='true'] & {
|
||||
/* Animate from the right */
|
||||
-zen-window-transform-origin: 100% 0;
|
||||
|
||||
&[side='bottom'] {
|
||||
/* Animate from the bottom right */
|
||||
-zen-window-transform-origin: 100% 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
@media (-moz-platform: linux) or ((-moz-platform: windows) and (not (-moz-windows-mica-popups))) {
|
||||
/* Mica popups have a weird background while the animation is running */
|
||||
&::part(content) {
|
||||
animation: zen-jello-animation 0.35s ease;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
panel[type='arrow'][animate]:not([animate='open'])::part(content) {
|
||||
panel[type='arrow'][animate]:not([animate='open']) {
|
||||
animation: zen-jello-out-animation 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
menupopup,
|
||||
panel[type='arrow'] {
|
||||
@media (-moz-windows-mica-popups) {
|
||||
appearance: auto !important;
|
||||
-moz-default-appearance: menupopup;
|
||||
/* The blur behind doesn't blur all that much, add a semi-transparent
|
||||
* background to improve contrast */
|
||||
--panel-background: light-dark(rgba(255, 255, 255, 0.5), rgba(0, 0, 0, 0.5)) !important;
|
||||
--panel-border-color: transparent !important;
|
||||
--panel-shadow-margin: 0px !important;
|
||||
|
||||
transition-duration: 0s !important;
|
||||
|
||||
&::part(content) {
|
||||
animation: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-platform: macos) {
|
||||
appearance: auto !important;
|
||||
-moz-default-appearance: menupopup;
|
||||
/* We set the default background here, rather than on ::part(content),
|
||||
* because otherwise it'd interfere with the native look. Non-native-looking
|
||||
* popups should get their background via --panel-background */
|
||||
background-color: Menu;
|
||||
--panel-shadow-margin: 0px !important;
|
||||
--panel-background: transparent !important;
|
||||
--panel-border-color: transparent;
|
||||
/* This should be kept in sync with GetMenuMaskImage() */
|
||||
--panel-border-radius: 6px;
|
||||
}
|
||||
}
|
||||
|
@@ -3,9 +3,12 @@
|
||||
* 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/.
|
||||
*/
|
||||
/* Zen Welcome idalog override */
|
||||
/* Zen Welcome dialog override */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.dialogBox:not(.spotlightBox) {
|
||||
border: 1px solid var(--zen-colors-border);
|
||||
}
|
||||
}
|
||||
.dialogBox:not(.spotlightBox) {
|
||||
min-width: min(80vw, 376px);
|
||||
}
|
||||
|
@@ -32,21 +32,7 @@
|
||||
--uc-permission-item-margin-block: 4px;
|
||||
--uc-permission-item-padding-inline: 16px;
|
||||
|
||||
--uc-contextmenu-border-radius: 8px;
|
||||
--uc-contextmenu-padding: calc(4px - var(--uc-contextmenu-menuitem-border-width)) 0;
|
||||
--uc-contextmenu-menuitem-border-radius: calc(4px + var(--uc-contextmenu-menuitem-border-width));
|
||||
--uc-contextmenu-menuitem-padding-block: 6px;
|
||||
--uc-contextmenu-menuitem-padding-inline: 10px;
|
||||
--uc-contextmenu-menuitem-border-width: 2px;
|
||||
--uc-contextmenu-menuicon-margin-inline: 12px;
|
||||
--uc-contextmenu-menuitem-margin-inline: calc(4px - var(--uc-contextmenu-menuitem-border-width));
|
||||
--uc-contextmenu-menuitem-margin-block: 0px;
|
||||
--uc-contextmenu-menuitem-margin: var(--uc-contextmenu-menuitem-margin-block) var(--uc-contextmenu-menuitem-margin-inline);
|
||||
--uc-contextmenu-separator-vertical: calc(4px - var(--uc-contextmenu-menuitem-border-width));
|
||||
--uc-contextmenu-separator-horizontal: 0;
|
||||
|
||||
--panel-separator-color: var(--zen-colors-border);
|
||||
|
||||
--zen-panel-separator-width: 1px;
|
||||
}
|
||||
|
||||
@@ -351,18 +337,30 @@ menuitem {
|
||||
#zen-toast-container {
|
||||
position: fixed;
|
||||
top: calc(var(--zen-element-separation) * 2);
|
||||
right: calc(var(--zen-element-separation) * 2);
|
||||
z-index: 1000;
|
||||
gap: 1rem;
|
||||
display: flex;
|
||||
align-items: end;
|
||||
|
||||
:root:not([zen-right-side='true']) & {
|
||||
right: calc(var(--zen-element-separation) * 2);
|
||||
}
|
||||
|
||||
:root[zen-right-side='true'] & {
|
||||
left: calc(var(--zen-element-separation) * 2);
|
||||
}
|
||||
|
||||
& .zen-toast {
|
||||
padding: 0.9rem 0.8rem;
|
||||
padding: 0.5rem 0.6rem;
|
||||
border-radius: 12px;
|
||||
background: linear-gradient(170deg, light-dark(rgb(187, 187, 187), rgb(240, 240, 240)) -40%, var(--zen-primary-color) 140%);
|
||||
background: linear-gradient(
|
||||
170deg,
|
||||
var(--zen-primary-color) -40%,
|
||||
color-mix(in srgb, var(--zen-primary-color) 85%, #0f0f0f 15%)
|
||||
);
|
||||
color: var(--button-primary-color);
|
||||
box-shadow: 0 0 16px 3px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 0 0 14px 3px rgba(0, 0, 0, 0.05);
|
||||
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||
display: flex;
|
||||
font-weight: 500;
|
||||
gap: 5px;
|
||||
|
@@ -1,306 +0,0 @@
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#zen-sidebar-panels-wrapper {
|
||||
/*min-height: 500px;*/
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
#zen-sidebar-panels-sites {
|
||||
background: transparent;
|
||||
max-width: 1px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#zen-sidebar-add-panel-button:not(:hover) image,
|
||||
.zen-sidebar-panel-button:not([selected='true'], #zen-sidebar-add-panel-button) image {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
.zen-sidebar-panel-button {
|
||||
width: var(--zen-sidebar-action-button-width);
|
||||
height: var(--zen-sidebar-action-button-width);
|
||||
max-height: var(--zen-sidebar-action-button-width);
|
||||
padding: 0 3px !important;
|
||||
margin: 0;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.zen-sidebar-panel-button image {
|
||||
border-radius: 10px !important;
|
||||
border: 2px solid transparent;
|
||||
}
|
||||
|
||||
.zen-sidebar-panel-button:hover image {
|
||||
background: color-mix(in srgb, var(--toolbarbutton-hover-background) 12%, transparent);
|
||||
}
|
||||
|
||||
.zen-sidebar-panel-button[selected='true'] image {
|
||||
border-color: var(--zen-primary-color);
|
||||
}
|
||||
|
||||
/** Sidebar view */
|
||||
|
||||
#zen-sidebar-web-panel-wrapper {
|
||||
--zen-default-sidebar-width: 300px;
|
||||
--zen-sidebar-web-panel-spacing: var(--zen-element-separation);
|
||||
position: relative;
|
||||
margin-right: 0;
|
||||
display: flex;
|
||||
pointer-events: none;
|
||||
transition: width 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel[hidden='true']) {
|
||||
max-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel[pinned='true']) {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
width: calc(100% - var(--zen-sidebar-web-panel-spacing) * 3);
|
||||
margin: var(--zen-sidebar-web-panel-spacing);
|
||||
/* Why times 3?
|
||||
* + 1 for the top margin, making the element overflow the view.
|
||||
* + 1 for the margin we want to add at the bottom
|
||||
* + 1 so that the panel can be correctly spaced from the border of the webview
|
||||
*/
|
||||
height: calc(100% - var(--zen-sidebar-web-panel-spacing) * 4);
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel {
|
||||
border-radius: var(--zen-native-inner-radius);
|
||||
z-index: 2;
|
||||
box-shadow: var(--zen-big-shadow);
|
||||
background: var(--zen-colors-tertiary);
|
||||
opacity: 0;
|
||||
animation-delay: 0.1s;
|
||||
flex-direction: column;
|
||||
min-width: var(--zen-default-sidebar-width);
|
||||
max-width: 720px;
|
||||
min-height: var(--zen-default-sidebar-width);
|
||||
width: calc(var(--zen-default-sidebar-width) + 200px);
|
||||
pointer-events: all;
|
||||
height: calc(100% - 20px);
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel:not([pinned='true']) {
|
||||
/* We need to always override the height */
|
||||
height: unset !important;
|
||||
}
|
||||
|
||||
.zen-sidebar-web-panel-splitter,
|
||||
.zen-split-view-splitter[orient='vertical'],
|
||||
#zen-sidebar-splitter {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: var(--zen-element-separation);
|
||||
background: transparent;
|
||||
border: none;
|
||||
cursor: ew-resize;
|
||||
z-index: 2;
|
||||
|
||||
&:is(.zen-split-view-splitter[orient='vertical']) {
|
||||
/* Bit of a hacky solution, but it works */
|
||||
width: var(--zen-split-row-gap);
|
||||
margin-left: calc(var(--zen-element-separation) * -1 - 1px);
|
||||
height: unset;
|
||||
cursor: ew-resize;
|
||||
}
|
||||
|
||||
&::before {
|
||||
height: 50px;
|
||||
width: 2px;
|
||||
background: var(--button-primary-bgcolor);
|
||||
border-radius: 2px;
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
opacity: 0;
|
||||
transition: opacity 0.1s ease-in-out;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&:hover::before {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.zen-sidebar-web-panel-splitter[side='right'] {
|
||||
left: 100%;
|
||||
}
|
||||
|
||||
.zen-sidebar-web-panel-splitter[side='left'] {
|
||||
right: 100%;
|
||||
}
|
||||
|
||||
.zen-sidebar-web-panel-splitter[orient='horizontal'] {
|
||||
width: 100%;
|
||||
height: 7px;
|
||||
cursor: ns-resize;
|
||||
|
||||
&::before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.zen-sidebar-web-panel-splitter[side='bottom'] {
|
||||
top: initial;
|
||||
bottom: -2px;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel[hidden='true'] .zen-sidebar-web-panel-splitter,
|
||||
#zen-sidebar-web-panel-wrapper[hidden='true'] + .zen-sidebar-web-panel-splitter,
|
||||
#zen-sidebar-web-panel:not([pinned='true']) .zen-sidebar-web-panel-splitter[orient='horizontal'],
|
||||
#zen-sidebar-web-panel:not([pinned='true']) .zen-sidebar-web-panel-splitter[side='left'] {
|
||||
display: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#main-window[customizing='true'] #zen-sidebar-web-panel-wrapper {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel:not([hidden='true']) {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel[pinned='true'] {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel[hidden='true'][pinned='true'] {
|
||||
display: flex;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-header,
|
||||
#zen-sidebar-panels-wrapper {
|
||||
width: 100%;
|
||||
min-height: var(--zen-toolbar-height) !important;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 5px;
|
||||
border: var(--zen-appcontent-border);
|
||||
border-width: 0 !important;
|
||||
border-bottom-width: 1px !important;
|
||||
background: transparent;
|
||||
position: relative;
|
||||
color-scheme: var(--toolbar-color-scheme);
|
||||
-moz-window-dragging: no-drag;
|
||||
|
||||
--toolbarbutton-inner-padding: var(--zen-toolbar-button-inner-padding) !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-header {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-header toolbarbutton {
|
||||
fill: color-mix(in srgb, var(--toolbarbutton-icon-fill) 70%, transparent);
|
||||
}
|
||||
|
||||
#zen-sidebar-panels-wrapper {
|
||||
border-top-width: 1px !important;
|
||||
border-bottom-width: 0px !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel-browser-containers {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#zen-sidebar-introduction-panel {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin: 0 auto;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
#zen-sidebar-introduction-panel[hidden='true'] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#zen-sidebar-introduction-panel h1 {
|
||||
font-size: 1.5em;
|
||||
font-weight: 600;
|
||||
margin: 0;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
#zen-sidebar-introduction-panel p {
|
||||
opacity: 0.7;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel browser[zen-sidebar-id] {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel-title {
|
||||
font-size: 0.9em;
|
||||
font-weight: 600;
|
||||
margin: 0 10px;
|
||||
padding: 0;
|
||||
color: var(--text-color-deemphasized);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
width: -moz-available;
|
||||
text-align: center;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel[pinned] {
|
||||
transform-origin: 50% 20%;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel[pinned]:not([hidden]) {
|
||||
animation: better-sidebar-pinned-show 0.15s ease-in-out forwards !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel[pinned][hidden] {
|
||||
animation: better-sidebar-pinned-hide 0.15s ease-in-out forwards !important;
|
||||
}
|
||||
|
||||
/** UNPINNED **/
|
||||
#zen-sidebar-web-panel {
|
||||
/* Sets perspective */
|
||||
transform-origin: 50% 20%;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel:not([hidden]) #zen-sidebar-introduction-panel * {
|
||||
opacity: 0;
|
||||
animation: better-sidebar-intro-show 0.5s 0.4s ease-out forwards !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel:not([hidden]) #zen-sidebar-introduction-panel p {
|
||||
animation: better-sidebar-intro-show 0.5s 0.8s ease-out forwards !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel:not([hidden]) {
|
||||
animation: better-sidebar-show 0.15s ease-in-out forwards !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-web-panel[hidden] {
|
||||
animation: better-sidebar-hide 0.15s ease-in-out forwards !important;
|
||||
}
|
@@ -49,7 +49,12 @@
|
||||
border-radius: var(--zen-native-inner-radius);
|
||||
box-shadow: var(--zen-big-shadow);
|
||||
overflow: hidden;
|
||||
|
||||
&[positionend=''] {
|
||||
order: 6;
|
||||
& ~ #sidebar-splitter {
|
||||
order: 5;
|
||||
}
|
||||
}
|
||||
:root:not([zen-right-side='true']) &[positionend='true'] {
|
||||
margin-right: var(--zen-element-separation);
|
||||
}
|
||||
|
@@ -12,7 +12,7 @@
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.workspaces.hide-default-container-indicator') {
|
||||
@media -moz-pref('zen.workspaces.hide-default-container-indicator') {
|
||||
.tabbrowser-tab[zenDefaultUserContextId='true'] .tab-context-line {
|
||||
display: none !important;
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
@media not (-moz-bool-pref: 'zen.tabs.vertical') {
|
||||
@media not -moz-pref('zen.tabs.vertical') {
|
||||
:root #browser {
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
height: var(--zen-toolbar-height);
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.hide-window-controls') {
|
||||
@media -moz-pref('zen.view.hide-window-controls') {
|
||||
& {
|
||||
transition:
|
||||
height 0.15s ease,
|
||||
@@ -24,7 +24,7 @@ height: var(--zen-toolbar-height);
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.experimental-no-window-controls') {
|
||||
@media -moz-pref('zen.view.experimental-no-window-controls') {
|
||||
&:has(#PersonalToolbar[collapsed='true']) {
|
||||
max-height: 0 !important;
|
||||
overflow: hidden;
|
||||
|
@@ -19,7 +19,7 @@
|
||||
height: var(--zen-toolbar-height);
|
||||
}
|
||||
|
||||
@media (-moz-platform: macos) and (not (-moz-bool-pref: 'zen.view.mac.show-three-dot-menu')) {
|
||||
@media (-moz-platform: macos) and (not -moz-pref('zen.view.mac.show-three-dot-menu')) {
|
||||
&:not([customizing]) #PanelUI-button:not([open]):not([panelopen]) {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
@@ -38,7 +38,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.tabs.vertical') {
|
||||
@media -moz-pref('zen.tabs.vertical') {
|
||||
:root:not([zen-window-buttons-reversed='true']) {
|
||||
& .titlebar-buttonbox-container {
|
||||
margin-left: auto;
|
||||
@@ -269,7 +269,7 @@
|
||||
}
|
||||
|
||||
#tabbrowser-tabs:not([movingtab]) & .tab-content > image:active {
|
||||
scale: var(--zen-active-tab-scale);
|
||||
scale: 0.92;
|
||||
}
|
||||
|
||||
& .tab-icon-image {
|
||||
@@ -294,7 +294,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.tabs.dim-pending') {
|
||||
@media -moz-pref('zen.tabs.dim-pending') {
|
||||
&[pending='true'] .tab-icon-image {
|
||||
opacity: 0.5;
|
||||
}
|
||||
@@ -474,9 +474,6 @@
|
||||
}
|
||||
|
||||
& #zen-workspaces-button {
|
||||
margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
|
||||
& .zen-workspace-sidebar-icon[no-icon='true'] {
|
||||
display: none;
|
||||
}
|
||||
@@ -631,7 +628,7 @@
|
||||
|
||||
:root:not([zen-sidebar-expanded='true']) {
|
||||
--tab-min-width: 36px !important;
|
||||
--zen-toolbox-padding: calc(var(--zen-element-separation) / 2 + 1px);
|
||||
--zen-toolbox-padding: 6px !important;
|
||||
--zen-toolbox-max-width: calc(var(--tab-min-width) + var(--zen-toolbox-padding) * 2);
|
||||
}
|
||||
|
||||
@@ -639,6 +636,7 @@
|
||||
#navigator-toolbox:not([zen-sidebar-expanded='true']) {
|
||||
max-width: var(--zen-toolbox-max-width) !important;
|
||||
min-width: var(--zen-toolbox-max-width) !important;
|
||||
padding-bottom: var(--zen-toolbox-padding);
|
||||
& .zen-current-workspace-indicator-name,
|
||||
& .toolbarbutton-text {
|
||||
display: none !important;
|
||||
@@ -737,7 +735,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@media (-moz-bool-pref: 'zen.view.sidebar-collapsed.hide-mute-button') {
|
||||
@media -moz-pref('zen.view.sidebar-collapsed.hide-mute-button') {
|
||||
& .tab-icon-overlay:is([soundplaying], [muted]):not([selected]) {
|
||||
display: none !important;
|
||||
:is(
|
||||
@@ -967,7 +965,7 @@
|
||||
padding-inline-start: var(--toolbarbutton-outer-padding);
|
||||
}
|
||||
|
||||
:root[zen-right-side='true'] & {
|
||||
:root[zen-right-side='true']:not([zen-window-buttons-reversed='true']) {
|
||||
padding-inline-end: var(--zen-toolbox-padding);
|
||||
}
|
||||
|
||||
@@ -995,7 +993,7 @@
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.tabs.show-newtab-vertical') {
|
||||
@media -moz-pref('zen.tabs.show-newtab-vertical') {
|
||||
#tabs-newtab-button {
|
||||
display: flex !important;
|
||||
transition: scale 0.1s ease;
|
||||
@@ -1021,11 +1019,11 @@
|
||||
--zen-colors-border: var(--zen-colors-tertiary);
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.show-newtab-button-top') {
|
||||
@media -moz-pref('zen.view.show-newtab-button-top') {
|
||||
order: -1;
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.show-newtab-button-border-top') and (not (-moz-bool-pref: 'zen.view.show-newtab-button-top')) {
|
||||
@media -moz-pref('zen.view.show-newtab-button-border-top') and (not -moz-pref('zen.view.show-newtab-button-top')) {
|
||||
#tabbrowser-arrowscrollbox:has(tab:not([hidden])) & {
|
||||
margin-top: 15px;
|
||||
position: relative;
|
||||
@@ -1050,14 +1048,14 @@
|
||||
#zen-essentials-container {
|
||||
padding-bottom: var(--zen-toolbox-padding);
|
||||
overflow: hidden;
|
||||
gap: 3px;
|
||||
gap: calc(var(--zen-toolbox-padding) - 2px);
|
||||
}
|
||||
|
||||
#zen-essentials-container {
|
||||
overflow: hidden;
|
||||
transition: max-height 0.3s ease-out;
|
||||
opacity: 1;
|
||||
grid-template-columns: repeat(auto-fit, minmax(48px, auto));
|
||||
grid-template-columns: repeat(auto-fit, minmax(49px, auto));
|
||||
overflow: hidden;
|
||||
scrollbar-width: thin;
|
||||
display: grid;
|
||||
@@ -1104,12 +1102,12 @@
|
||||
background: var(--tab-selected-bgcolor);
|
||||
}
|
||||
|
||||
@media (-moz-bool-pref: 'zen.theme.essentials-favicon-bg') {
|
||||
@media -moz-pref('zen.theme.essentials-favicon-bg') {
|
||||
&[visuallyselected] > .tab-stack > .tab-background {
|
||||
&::after {
|
||||
content: "";
|
||||
inset: -50%;
|
||||
filter: blur(15px) brightness(1.2);
|
||||
filter: blur(20px);
|
||||
position: absolute;
|
||||
background-size: 100% 100%;
|
||||
background-clip: padding-box;
|
||||
|
@@ -64,7 +64,6 @@
|
||||
--in-content-primary-button-border-color: transparent !important;
|
||||
--in-content-primary-button-border-hover: transparent !important;
|
||||
--in-content-primary-button-border-active: var(--zen-colors-border) !important;
|
||||
--in-content-box-border-color: var(--zen-colors-border) !important;
|
||||
|
||||
--in-content-accent-color: var(--zen-colors-primary) !important;
|
||||
--in-content-accent-color-active: currentColor !important;
|
||||
@@ -119,6 +118,7 @@
|
||||
--toolbar-field-focus-background-color: var(--urlbar-box-bgcolor) !important;
|
||||
--zen-input-border-color: light-dark(rgb(204, 204, 204), rgb(66, 65, 77));
|
||||
--urlbar-box-hover-bgcolor: var(--toolbarbutton-hover-background) !important;
|
||||
--input-bgcolor: light-dark(rgba(255, 255, 255, 0.2), rgba(0, 0, 0, 0.2)) !important;
|
||||
|
||||
/* XUL */
|
||||
--zen-main-browser-background: light-dark(rgb(235, 235, 235), #1b1b1b);
|
||||
@@ -158,16 +158,21 @@
|
||||
--zen-themed-toolbar-bg: light-dark(rgb(240, 240, 244), #171717);
|
||||
--zen-themed-toolbar-bg-transparent: light-dark(var(--zen-branding-bg), #171717);
|
||||
|
||||
--zen-workspace-indicator-height: 45px;
|
||||
--zen-workspace-indicator-height: 48px;
|
||||
|
||||
@media (-moz-windows-mica) or (-moz-platform: macos) {
|
||||
background: transparent;
|
||||
--zen-themed-toolbar-bg-transparent: transparent;
|
||||
@media (-moz-bool-pref: 'zen.widget.windows.acrylic') {
|
||||
--zen-themed-toolbar-bg-transparent: color-mix(in srgb, var(--zen-themed-toolbar-bg) 75%, transparent 25%);
|
||||
@media -moz-pref('zen.widget.windows.acrylic') {
|
||||
--zen-themed-toolbar-bg-transparent: color-mix(in srgb, var(--zen-themed-toolbar-bg) 35%, transparent 65%);
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-platform: linux) and -moz-pref('zen.widget.linux.transparency') {
|
||||
background: transparent;
|
||||
--zen-themed-toolbar-bg-transparent: transparent;
|
||||
}
|
||||
|
||||
--toolbar-field-background-color: var(--zen-colors-input-bg) !important;
|
||||
--arrowpanel-background: var(--zen-dialog-background) !important;
|
||||
|
||||
|
@@ -9,5 +9,5 @@
|
||||
}
|
||||
|
||||
:root[inDOMFullscreen='true'] #zen-appcontent-navbar-container {
|
||||
display: none;
|
||||
visibility: collapse;
|
||||
}
|
||||
|
@@ -365,10 +365,6 @@ button.popup-notification-dropmarker {
|
||||
}
|
||||
|
||||
:root:not([zen-single-toolbar='true']) {
|
||||
& #nav-bar {
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
|
||||
&[zen-right-side='true']:not([zen-window-buttons-reversed='true']) #nav-bar {
|
||||
margin-inline-start: var(--zen-element-separation);
|
||||
}
|
||||
@@ -464,7 +460,7 @@ button.popup-notification-dropmarker {
|
||||
}
|
||||
}
|
||||
|
||||
@media not (-moz-bool-pref: 'zen.urlbar.show-protections-icon') {
|
||||
@media not -moz-pref('zen.urlbar.show-protections-icon') {
|
||||
#tracking-protection-icon-container {
|
||||
display: none !important;
|
||||
}
|
||||
|
@@ -20,13 +20,15 @@
|
||||
--toolbarbutton-hover-background: transparent !important;
|
||||
border-radius: var(--zen-button-border-radius) !important;
|
||||
background: transparent;
|
||||
padding: 2px;
|
||||
appearance: unset !important;
|
||||
height: fit-content;
|
||||
gap: 3px;
|
||||
|
||||
container-type: inline-size;
|
||||
width: 100%;
|
||||
|
||||
& toolbarbutton {
|
||||
margin: auto;
|
||||
margin: 0;
|
||||
width: 25px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
@@ -34,8 +36,43 @@
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
@media (-moz-bool-pref: 'zen.workspaces.hide-deactivated-workspaces') {
|
||||
&:not([active='true']):not(:hover) {
|
||||
& .zen-workspace-icon[no-icon='true'] {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
background: light-dark(rgba(0, 0, 0, 0.4), rgba(255, 255, 255, 0.4));
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
filter: grayscale(1);
|
||||
opacity: 0.5;
|
||||
transition:
|
||||
filter 0.2s,
|
||||
opacity 0.2s,
|
||||
width 0.1s;
|
||||
|
||||
&[active='true'],
|
||||
&:hover {
|
||||
filter: grayscale(0);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: var(--zen-toolbar-element-bg);
|
||||
}
|
||||
}
|
||||
|
||||
&[overflow] {
|
||||
gap: 0 !important;
|
||||
|
||||
& toolbarbutton {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
& toolbarbutton:not([active='true']),
|
||||
&:has(toolbarbutton:hover) toolbarbutton[active='true'] {
|
||||
&:not(:hover) {
|
||||
width: min(var(--zen-overflowed-workspace-button-width), 25px);
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
@@ -58,33 +95,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
& .zen-workspace-icon[no-icon='true'] {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
background: light-dark(rgba(0, 0, 0, 0.4), rgba(255, 255, 255, 0.4));
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
@media not (-moz-bool-pref: 'zen.workspaces.hide-deactivated-workspaces') {
|
||||
& {
|
||||
filter: grayscale(1);
|
||||
opacity: 0.5;
|
||||
transition:
|
||||
filter 0.2s,
|
||||
opacity 0.2s;
|
||||
}
|
||||
|
||||
&[active='true'],
|
||||
&:hover {
|
||||
filter: grayscale(0);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: var(--zen-toolbar-element-bg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,10 +128,11 @@
|
||||
|
||||
& #zen-workspaces-button {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
display: flex;
|
||||
gap: 0.5ch;
|
||||
overflow-x: auto;
|
||||
scrollbar-width: none;
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,7 +436,7 @@
|
||||
}
|
||||
|
||||
.zen-current-workspace-indicator {
|
||||
padding: 15px calc(4px + var(--tab-inline-padding));
|
||||
padding: calc(15px + var(--zen-toolbox-padding)) calc(4px + var(--tab-inline-padding));
|
||||
font-weight: 600;
|
||||
position: absolute;
|
||||
max-height: var(--zen-workspace-indicator-height);
|
||||
@@ -443,11 +454,10 @@
|
||||
pointer-events: none;
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
left: 2px;
|
||||
z-index: -1;
|
||||
width: calc(100% - 4px);
|
||||
height: calc(100% - 10px);
|
||||
top: var(--zen-toolbox-padding);
|
||||
left: calc(var(--zen-toolbox-padding) / 2);
|
||||
width: calc(100% - var(--zen-toolbox-padding));
|
||||
height: calc(100% - var(--zen-toolbox-padding) * 2);
|
||||
}
|
||||
|
||||
&:hover,
|
||||
@@ -473,7 +483,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media not (-moz-bool-pref: 'zen.workspaces.show-workspace-indicator') {
|
||||
@media not -moz-pref('zen.workspaces.show-workspace-indicator') {
|
||||
#zen-current-workspace-indicator-container {
|
||||
display: none !important;
|
||||
}
|
||||
|
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
const kZenThemePrefsList = ['zen.theme.accent-color', 'zen.theme.border-radius', 'zen.theme.content-element-separation'];
|
||||
const kZenMaxElementSeparation = 12;
|
||||
|
||||
/**
|
||||
* ZenThemeModifier controls the application of theme data to the browser,
|
||||
@@ -68,7 +69,7 @@ var ZenThemeModifier = {
|
||||
},
|
||||
|
||||
updateElementSeparation() {
|
||||
const separation = Services.prefs.getIntPref('zen.theme.content-element-separation');
|
||||
let separation = this.elementSeparation;
|
||||
document.documentElement.style.setProperty('--zen-element-separation', separation + 'px');
|
||||
if (separation == 0) {
|
||||
document.documentElement.setAttribute('zen-no-padding', true);
|
||||
@@ -77,6 +78,10 @@ var ZenThemeModifier = {
|
||||
}
|
||||
},
|
||||
|
||||
get elementSeparation() {
|
||||
return Math.min(Services.prefs.getIntPref('zen.theme.content-element-separation'), kZenMaxElementSeparation);
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the accent color.
|
||||
*/
|
||||
|
@@ -27,7 +27,17 @@ var gZenCompactModeManager = {
|
||||
_flashTimeouts: {},
|
||||
_evenListeners: [],
|
||||
_removeHoverFrames: {},
|
||||
_animating: false,
|
||||
|
||||
preInit() {
|
||||
// Remove it before initializing so we can properly calculate the width
|
||||
// of the sidebar at startup and avoid overflowing items not being hidden
|
||||
const isCompactMode = lazyCompactMode.mainAppWrapper.getAttribute('zen-compact-mode') === 'true';
|
||||
lazyCompactMode.mainAppWrapper.removeAttribute('zen-compact-mode');
|
||||
this._wasInCompactMode = isCompactMode;
|
||||
|
||||
this.addMouseActions();
|
||||
this.addContextMenu();
|
||||
},
|
||||
|
||||
init() {
|
||||
Services.prefs.addObserver('zen.tabs.vertical.right-side', this._updateSidebarIsOnRight.bind(this));
|
||||
@@ -35,9 +45,6 @@ var gZenCompactModeManager = {
|
||||
gZenUIManager.addPopupTrackingAttribute(this.sidebar);
|
||||
gZenUIManager.addPopupTrackingAttribute(document.getElementById('zen-appcontent-navbar-container'));
|
||||
|
||||
this.addMouseActions();
|
||||
this.addContextMenu();
|
||||
|
||||
// Clear hover states when window state changes (minimize, maximize, etc.)
|
||||
window.addEventListener('sizemodechange', () => this._clearAllHoverStates());
|
||||
|
||||
@@ -48,26 +55,19 @@ var gZenCompactModeManager = {
|
||||
buttons.removeAttribute('zen-has-hover');
|
||||
});
|
||||
}
|
||||
this.preference = this._wasInCompactMode;
|
||||
},
|
||||
|
||||
get preference() {
|
||||
if (!document.documentElement.hasAttribute('zen-compact-mode')) {
|
||||
window.addEventListener(
|
||||
'MozAfterPaint',
|
||||
() => {
|
||||
document.documentElement.setAttribute(
|
||||
'zen-compact-mode',
|
||||
lazyCompactMode.mainAppWrapper.getAttribute('zen-compact-mode')
|
||||
);
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
}
|
||||
return lazyCompactMode.mainAppWrapper.getAttribute('zen-compact-mode') === 'true';
|
||||
},
|
||||
|
||||
set preference(value) {
|
||||
if (this.preference === value || this._animating) {
|
||||
if (this.preference === value || document.documentElement.hasAttribute('zen-compact-animating')) {
|
||||
if (typeof this._wasInCompactMode !== 'undefined') {
|
||||
// We wont do anything with it anyway, so we remove it
|
||||
delete this._wasInCompactMode;
|
||||
}
|
||||
// We dont want the user to be able to spam the button
|
||||
return value;
|
||||
}
|
||||
@@ -95,6 +95,11 @@ var gZenCompactModeManager = {
|
||||
},
|
||||
|
||||
flashSidebarIfNecessary(aInstant = false) {
|
||||
// This function is called after exiting DOM fullscreen mode,
|
||||
// so we do a bit of a hack to re-calculate the URL height
|
||||
if (aInstant) {
|
||||
gZenVerticalTabsManager.recalculateURLBarHeight();
|
||||
}
|
||||
if (!aInstant && this.preference && lazyCompactMode.COMPACT_MODE_FLASH_ENABLED && !gZenGlanceManager._animating) {
|
||||
this.flashSidebar();
|
||||
}
|
||||
@@ -146,20 +151,33 @@ var gZenCompactModeManager = {
|
||||
this._evenListeners.push(callback);
|
||||
},
|
||||
|
||||
_updateEvent() {
|
||||
this._evenListeners.forEach((callback) => callback());
|
||||
async _updateEvent() {
|
||||
// IF we are animating IN, call the callbacks first so we can calculate the width
|
||||
// once the window buttons are shown
|
||||
this.updateContextMenu();
|
||||
this.animateCompactMode();
|
||||
if (!this.preference) {
|
||||
this._evenListeners.forEach((callback) => callback());
|
||||
await this.animateCompactMode();
|
||||
} else {
|
||||
await this.animateCompactMode();
|
||||
this._evenListeners.forEach((callback) => callback());
|
||||
}
|
||||
gZenUIManager.updateTabsToolbar();
|
||||
},
|
||||
|
||||
// NOTE: Dont actually use event, it's just so we make sure
|
||||
// the caller is from the ResizeObserver
|
||||
getAndApplySidebarWidth(event = undefined) {
|
||||
if (this._ignoreNextResize) {
|
||||
this._ignoreNextResize = false;
|
||||
return;
|
||||
}
|
||||
let sidebarWidth = this.sidebar.getBoundingClientRect().width;
|
||||
if (sidebarWidth > 1) {
|
||||
gZenUIManager.restoreScrollbarState();
|
||||
// Second variable to get the genuine width of the sidebar
|
||||
this.sidebar.style.setProperty('--actual-zen-sidebar-width', `${sidebarWidth}px`);
|
||||
window.dispatchEvent(new window.Event('resize')); // To recalculate the layout
|
||||
if (event && this.preference) {
|
||||
return;
|
||||
}
|
||||
@@ -169,104 +187,124 @@ var gZenCompactModeManager = {
|
||||
},
|
||||
|
||||
animateCompactMode() {
|
||||
this._animating = true;
|
||||
const isCompactMode = this.preference;
|
||||
const canHideSidebar =
|
||||
Services.prefs.getBoolPref('zen.view.compact.hide-tabbar') || gZenVerticalTabsManager._hasSetSingleToolbar;
|
||||
const canAnimate =
|
||||
lazyCompactMode.COMPACT_MODE_CAN_ANIMATE_SIDEBAR &&
|
||||
!this.sidebar.hasAttribute('zen-user-show') &&
|
||||
!this.sidebar.hasAttribute('zen-has-empty-tab') &&
|
||||
!this.sidebar.hasAttribute('zen-has-hover');
|
||||
// Do this so we can get the correct width ONCE compact mode styled have been applied
|
||||
const titlebar = this.sidebar.querySelector('#titlebar');
|
||||
if (canAnimate) {
|
||||
this.sidebar.setAttribute('animate', 'true');
|
||||
titlebar.setAttribute('has-animated-padding', 'true');
|
||||
} else {
|
||||
titlebar.removeAttribute('has-animated-padding');
|
||||
}
|
||||
this.sidebar.style.removeProperty('margin-right');
|
||||
this.sidebar.style.removeProperty('margin-left');
|
||||
this.sidebar.style.removeProperty('transform');
|
||||
window.requestAnimationFrame(() => {
|
||||
let sidebarWidth = this.getAndApplySidebarWidth();
|
||||
if (!canAnimate) {
|
||||
this.sidebar.removeAttribute('animate');
|
||||
this._animating = false;
|
||||
return;
|
||||
return new Promise((resolve) => {
|
||||
// Get the splitter width before hiding it (we need to hide it before animating on right)
|
||||
document.documentElement.setAttribute('zen-compact-animating', 'true');
|
||||
// We need to set the splitter width before hiding it
|
||||
let splitterWidth = document.getElementById('zen-sidebar-splitter').getBoundingClientRect().width;
|
||||
const isCompactMode = this.preference;
|
||||
const canHideSidebar =
|
||||
Services.prefs.getBoolPref('zen.view.compact.hide-tabbar') || gZenVerticalTabsManager._hasSetSingleToolbar;
|
||||
let canAnimate =
|
||||
lazyCompactMode.COMPACT_MODE_CAN_ANIMATE_SIDEBAR &&
|
||||
!this.sidebar.hasAttribute('zen-user-show') &&
|
||||
!this.sidebar.hasAttribute('zen-has-empty-tab') &&
|
||||
!this.sidebar.hasAttribute('zen-has-hover');
|
||||
if (typeof this._wasInCompactMode !== 'undefined') {
|
||||
canAnimate = false;
|
||||
delete this._wasInCompactMode;
|
||||
}
|
||||
if (canHideSidebar && isCompactMode) {
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
this.sidebar,
|
||||
this.sidebarIsOnRight
|
||||
? {
|
||||
marginRight: `-${sidebarWidth}px`,
|
||||
}
|
||||
: { marginLeft: `-${sidebarWidth}px` },
|
||||
{
|
||||
ease: 'easeIn',
|
||||
type: 'spring',
|
||||
bounce: 0,
|
||||
duration: 0.2,
|
||||
// Do this so we can get the correct width ONCE compact mode styled have been applied
|
||||
if (canAnimate) {
|
||||
this.sidebar.setAttribute('animate', 'true');
|
||||
}
|
||||
this.sidebar.style.removeProperty('margin-right');
|
||||
this.sidebar.style.removeProperty('margin-left');
|
||||
this.sidebar.style.removeProperty('transform');
|
||||
window.requestAnimationFrame(() => {
|
||||
let sidebarWidth = this.getAndApplySidebarWidth();
|
||||
if (!canAnimate) {
|
||||
this.sidebar.removeAttribute('animate');
|
||||
document.documentElement.removeAttribute('zen-compact-animating');
|
||||
|
||||
this.getAndApplySidebarWidth({});
|
||||
this._ignoreNextResize = true;
|
||||
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
if (canHideSidebar && isCompactMode) {
|
||||
const elementSeparation = ZenThemeModifier.elementSeparation;
|
||||
if (document.documentElement.hasAttribute('zen-sidebar-expanded')) {
|
||||
sidebarWidth -= 0.5 * splitterWidth;
|
||||
if (elementSeparation < splitterWidth) {
|
||||
// Subtract from the splitter width to end up with the correct element separation
|
||||
sidebarWidth += 1.5 * splitterWidth - elementSeparation;
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
window.requestAnimationFrame(() => {
|
||||
}
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
this.sidebar,
|
||||
{
|
||||
marginRight: this.sidebarIsOnRight ? `-${sidebarWidth}px` : 0,
|
||||
marginLeft: this.sidebarIsOnRight ? 0 : `-${sidebarWidth}px`,
|
||||
},
|
||||
{
|
||||
ease: 'easeIn',
|
||||
type: 'spring',
|
||||
bounce: 0,
|
||||
duration: 0.2,
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
this.sidebar.style.transition = 'none';
|
||||
this.sidebar.style.opacity = 0;
|
||||
setTimeout(() => {
|
||||
this.sidebar.removeAttribute('animate');
|
||||
document.documentElement.removeAttribute('zen-compact-animating');
|
||||
|
||||
this.getAndApplySidebarWidth({});
|
||||
this._ignoreNextResize = true;
|
||||
|
||||
this.sidebar.style.removeProperty('margin-right');
|
||||
this.sidebar.style.removeProperty('margin-left');
|
||||
this.sidebar.style.removeProperty('opacity');
|
||||
this.sidebar.style.removeProperty('transition');
|
||||
|
||||
resolve();
|
||||
}, 0);
|
||||
});
|
||||
} else if (canHideSidebar && !isCompactMode) {
|
||||
document.getElementById('browser').style.overflow = 'clip';
|
||||
if (this.sidebarIsOnRight) {
|
||||
this.sidebar.style.marginRight = `-${sidebarWidth}px`;
|
||||
} else {
|
||||
this.sidebar.style.marginLeft = `-${sidebarWidth}px`;
|
||||
}
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
this.sidebar,
|
||||
this.sidebarIsOnRight
|
||||
? {
|
||||
marginRight: [`-${sidebarWidth}px`, 0],
|
||||
transform: ['translateX(100%)', 'translateX(0)'],
|
||||
}
|
||||
: { marginLeft: 0 },
|
||||
{
|
||||
ease: 'easeOut',
|
||||
type: 'spring',
|
||||
bounce: 0,
|
||||
duration: 0.2,
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
this.sidebar.removeAttribute('animate');
|
||||
this.sidebar.style.visibility = 'hidden';
|
||||
document.getElementById('browser').style.removeProperty('overflow');
|
||||
this.sidebar.style.transition = 'none';
|
||||
this.sidebar.style.removeProperty('margin-right');
|
||||
this.sidebar.style.removeProperty('margin-left');
|
||||
this.sidebar.style.removeProperty('transform');
|
||||
document.documentElement.removeAttribute('zen-compact-animating');
|
||||
setTimeout(() => {
|
||||
this._animating = false;
|
||||
this.sidebar.style.removeProperty('visibility');
|
||||
this.sidebar.style.removeProperty('transition');
|
||||
this.sidebar.style.removeProperty('opacity');
|
||||
}, 300);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
} else if (canHideSidebar && !isCompactMode) {
|
||||
document.getElementById('browser').style.overflow = 'clip';
|
||||
if (this.sidebarIsOnRight) {
|
||||
this.sidebar.style.marginRight = `-${sidebarWidth}px`;
|
||||
} else {
|
||||
this.sidebar.style.marginLeft = `-${sidebarWidth}px`;
|
||||
this.sidebar.removeAttribute('animate'); // remove the attribute if we are not animating
|
||||
document.documentElement.removeAttribute('zen-compact-animating');
|
||||
}
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
this.sidebar,
|
||||
this.sidebarIsOnRight
|
||||
? {
|
||||
marginRight: [`-${sidebarWidth}px`, 0],
|
||||
transform: ['translateX(100%)', 'translateX(0)'],
|
||||
}
|
||||
: { marginLeft: 0 },
|
||||
{
|
||||
ease: 'easeOut',
|
||||
type: 'spring',
|
||||
bounce: 0,
|
||||
duration: 0.2,
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
this.sidebar.removeAttribute('animate');
|
||||
document.getElementById('browser').style.removeProperty('overflow');
|
||||
this.sidebar.style.transition = 'none';
|
||||
this.sidebar.style.removeProperty('margin-right');
|
||||
this.sidebar.style.removeProperty('margin-left');
|
||||
this.sidebar.style.removeProperty('transform');
|
||||
this._animating = false;
|
||||
setTimeout(() => {
|
||||
this.sidebar.style.removeProperty('transition');
|
||||
});
|
||||
});
|
||||
} else {
|
||||
this.sidebar.removeAttribute('animate'); // remove the attribute if we are not animating
|
||||
this._animating = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
@@ -392,12 +430,6 @@ var gZenCompactModeManager = {
|
||||
}
|
||||
}
|
||||
|
||||
// When moving the cursor between the url bar and bookmarks, or in-between bookmarks in the bookmark bar, the
|
||||
// mouseLeave event is triggered without a relatedTarget.
|
||||
if (event.relatedTarget == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// If it's a child element but not the target, ignore the event
|
||||
if (target.contains(event.explicitOriginalTarget) && event.explicitOriginalTarget !== target) {
|
||||
return;
|
||||
@@ -475,3 +507,11 @@ var gZenCompactModeManager = {
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
document.addEventListener(
|
||||
'MozBeforeInitialXULLayout',
|
||||
() => {
|
||||
gZenCompactModeManager.preInit();
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
|
@@ -9,6 +9,8 @@
|
||||
document.addEventListener('TabUngrouped', this.#onTabUngrouped.bind(this));
|
||||
document.addEventListener('TabGroupRemoved', this.#onTabGroupRemoved.bind(this));
|
||||
document.addEventListener('TabGroupCreate', this.#onTabGroupCreate.bind(this));
|
||||
document.addEventListener('TabPinned', this.#onTabPinned.bind(this));
|
||||
document.addEventListener('TabUnpinned', this.#onTabUnpinned.bind(this));
|
||||
}
|
||||
|
||||
#onTabGrouped(event) {
|
||||
@@ -49,6 +51,22 @@
|
||||
|
||||
#onTabGroupRemoved(event) {}
|
||||
|
||||
#onTabPinned(event) {
|
||||
const tab = event.target;
|
||||
const group = tab.group;
|
||||
if (group && group.hasAttribute('split-view-group')) {
|
||||
group.pinned = true;
|
||||
}
|
||||
}
|
||||
|
||||
#onTabUnpinned(event) {
|
||||
const tab = event.target;
|
||||
const group = tab.group;
|
||||
if (group && group.hasAttribute('split-view-group')) {
|
||||
group.pinned = false;
|
||||
}
|
||||
}
|
||||
|
||||
expandGroupTabs(group) {
|
||||
for (const tab of group.tabs.reverse()) {
|
||||
gBrowser.ungroupTab(tab);
|
||||
|
@@ -20,10 +20,30 @@
|
||||
);
|
||||
|
||||
ChromeUtils.defineLazyGetter(this, 'sidebarButtons', () => document.getElementById('zen-glance-sidebar-container'));
|
||||
|
||||
document.getElementById('tabbrowser-tabpanels').addEventListener('click', this.onOverlayClick.bind(this));
|
||||
|
||||
Services.obs.addObserver(this, 'quit-application-requested');
|
||||
|
||||
this.#addSidebarButtonListeners();
|
||||
}
|
||||
|
||||
#addSidebarButtonListeners() {
|
||||
this.sidebarButtons.addEventListener('command', (event) => {
|
||||
const button = event.target.closest('toolbarbutton');
|
||||
if (!button) {
|
||||
return;
|
||||
}
|
||||
switch (button.id) {
|
||||
case 'zen-glance-sidebar-close':
|
||||
this.closeGlance({ onTabClose: true });
|
||||
break;
|
||||
case 'zen-glance-sidebar-open':
|
||||
this.fullyOpenGlance();
|
||||
break;
|
||||
case 'zen-glance-sidebar-split':
|
||||
this.splitGlance();
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
get #currentBrowser() {
|
||||
@@ -206,14 +226,29 @@
|
||||
});
|
||||
}
|
||||
|
||||
closeGlance({ noAnimation = false, onTabClose = false, setNewID = null, isDifferent = false, hasFocused = false } = {}) {
|
||||
_clearContainerStyles(container) {
|
||||
const inset = container.style.inset;
|
||||
container.removeAttribute('style');
|
||||
container.style.inset = inset;
|
||||
}
|
||||
|
||||
closeGlance({
|
||||
noAnimation = false,
|
||||
onTabClose = false,
|
||||
setNewID = null,
|
||||
isDifferent = false,
|
||||
hasFocused = false,
|
||||
skipPermitUnload = false,
|
||||
} = {}) {
|
||||
if (this._animating || !this.#currentBrowser || this.animatingOpen || this._duringOpening) {
|
||||
return;
|
||||
}
|
||||
|
||||
let { permitUnload } = this.#currentBrowser.permitUnload();
|
||||
if (!permitUnload) {
|
||||
return;
|
||||
if (!skipPermitUnload) {
|
||||
let { permitUnload } = this.#currentBrowser.permitUnload();
|
||||
if (!permitUnload) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (onTabClose && hasFocused && !this.#confirmationTimeout) {
|
||||
@@ -228,7 +263,7 @@
|
||||
|
||||
this.browserWrapper.removeAttribute('has-finished-animation');
|
||||
if (noAnimation) {
|
||||
this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer').removeAttribute('style');
|
||||
this._clearContainerStyles(this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer'));
|
||||
this.quickCloseGlance({ closeCurrentTab: false });
|
||||
return;
|
||||
}
|
||||
@@ -270,7 +305,7 @@
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer').removeAttribute('style');
|
||||
this._clearContainerStyles(this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer'));
|
||||
});
|
||||
this.browserWrapper.style.opacity = 1;
|
||||
gZenUIManager.motion
|
||||
@@ -429,8 +464,12 @@
|
||||
this.#currentGlanceID = tab.getAttribute('glance-id');
|
||||
if (gBrowser.selectedTab === this.#currentParentTab && this.#currentBrowser) {
|
||||
const curTab = this.#currentTab;
|
||||
const prevTab = event.detail.previousTab;
|
||||
setTimeout(() => {
|
||||
gBrowser.selectedTab = curTab;
|
||||
if (prevTab?.linkedBrowser) {
|
||||
prevTab.linkedBrowser.closest('.browserSidebarContainer').classList.remove('deck-selected');
|
||||
}
|
||||
}, 0);
|
||||
} else if (gBrowser.selectedTab === this.#currentTab) {
|
||||
setTimeout(this.onLocationChangeOpenGlance.bind(this), 0);
|
||||
@@ -469,6 +508,11 @@
|
||||
if (url1.startsWith('about:')) {
|
||||
return true;
|
||||
}
|
||||
// https://github.com/zen-browser/desktop/issues/7173: Only glance up links that are http(s) or file
|
||||
const url2Spec = url2.spec;
|
||||
if (!url2Spec.startsWith('http') && !url2Spec.startsWith('https') && !url2Spec.startsWith('file')) {
|
||||
return false;
|
||||
}
|
||||
return Services.io.newURI(url1).host !== url2.host;
|
||||
} catch (e) {
|
||||
return true;
|
||||
@@ -510,29 +554,31 @@
|
||||
ZenWorkspaces.updateTabsContainers();
|
||||
this.browserWrapper.removeAttribute('animate-full');
|
||||
this.overlay.classList.remove('zen-glance-overlay');
|
||||
this.browserWrapper.removeAttribute('style');
|
||||
this._clearContainerStyles(this.browserWrapper);
|
||||
this.animatingFullOpen = false;
|
||||
this.closeGlance({ noAnimation: true });
|
||||
this.closeGlance({ noAnimation: true, skipPermitUnload: true });
|
||||
this.#glances.delete(this.#currentGlanceID);
|
||||
}
|
||||
|
||||
async fullyOpenGlance() {
|
||||
async fullyOpenGlance({ forSplit = false } = {}) {
|
||||
this.animatingFullOpen = true;
|
||||
this.#currentTab.setAttribute('zen-dont-split-glance', true);
|
||||
|
||||
gBrowser._insertTabAtIndex(this.#currentTab, {
|
||||
index: this.getTabPosition(this.#currentTab),
|
||||
});
|
||||
|
||||
this.browserWrapper.removeAttribute('style');
|
||||
this.#currentTab.removeAttribute('zen-glance-tab');
|
||||
this._clearContainerStyles(this.browserWrapper);
|
||||
this.browserWrapper.removeAttribute('has-finished-animation');
|
||||
this.browserWrapper.setAttribute('animate-full', true);
|
||||
this.#currentTab.removeAttribute('zen-glance-tab');
|
||||
this.#currentTab.removeAttribute('glance-id');
|
||||
this.#currentParentTab.removeAttribute('glance-id');
|
||||
gBrowser.selectedTab = this.#currentTab;
|
||||
this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer').classList.remove('zen-glance-background');
|
||||
this.#currentParentTab._visuallySelected = false;
|
||||
this.hideSidebarButtons();
|
||||
if (gReduceMotion) {
|
||||
if (gReduceMotion || forSplit) {
|
||||
this.finishOpeningGlance();
|
||||
return;
|
||||
}
|
||||
@@ -585,6 +631,20 @@
|
||||
getFocusedTab(aDir) {
|
||||
return aDir < 0 ? this.#currentParentTab : this.#currentTab;
|
||||
}
|
||||
|
||||
async splitGlance() {
|
||||
if (this.#currentGlanceID) {
|
||||
const currentTab = this.#currentTab;
|
||||
const currentParentTab = this.#currentParentTab;
|
||||
|
||||
await this.fullyOpenGlance({ forSplit: true });
|
||||
gZenViewSplitter.splitTabs([currentTab, currentParentTab], 'vsep', 1);
|
||||
const browserContainer = currentTab.linkedBrowser?.closest('.browserSidebarContainer');
|
||||
if (!gReduceMotion && browserContainer) {
|
||||
gZenViewSplitter.animateBrowserDrop(browserContainer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.gZenGlanceManager = new ZenGlanceManager();
|
||||
|
@@ -52,7 +52,7 @@
|
||||
const menu = window.MozXULElement.parseXULToFragment(`
|
||||
<menuitem id="zenToolbarThemePicker"
|
||||
data-lazy-l10n-id="zen-workspaces-change-gradient"
|
||||
oncommand="gZenThemePicker.openThemePicker(event);"/>
|
||||
command="cmd_zenOpenZenThemePicker"/>
|
||||
`);
|
||||
document.getElementById('toolbar-context-customize').before(menu);
|
||||
}
|
||||
@@ -366,13 +366,13 @@
|
||||
addColorToCustomList(color) {
|
||||
const listItems = window.MozXULElement.parseXULToFragment(`
|
||||
<hbox class="zen-theme-picker-custom-list-item">
|
||||
<html:div class="zen-theme-picker-dot-custom"></html:div>
|
||||
<html:div class="zen-theme-picker-dot custom"></html:div>
|
||||
<label class="zen-theme-picker-custom-list-item-label"></label>
|
||||
<toolbarbutton class="zen-theme-picker-custom-list-item-remove toolbarbutton-1" oncommand="gZenThemePicker.removeCustomColor(event);"></toolbarbutton>
|
||||
</hbox>
|
||||
`);
|
||||
listItems.querySelector('.zen-theme-picker-custom-list-item').setAttribute('data-color', color);
|
||||
listItems.querySelector('.zen-theme-picker-dot-custom').style.setProperty('--zen-theme-picker-dot-color', color);
|
||||
listItems.querySelector('.zen-theme-picker-dot').style.setProperty('--zen-theme-picker-dot-color', color);
|
||||
listItems.querySelector('.zen-theme-picker-custom-list-item-label').textContent = color;
|
||||
|
||||
this.customColorList.appendChild(listItems);
|
||||
@@ -500,9 +500,8 @@
|
||||
const centerPosition = { x: rect.width / 2, y: rect.height / 2 };
|
||||
|
||||
const harmonyAngles = getColorHarmonyType(dots.length + (action === 'add' ? 1 : action === 'remove' ? -1 : 0), this.dots);
|
||||
if (!harmonyAngles || harmonyAngles.angles.length === 0) return dots;
|
||||
|
||||
this.useAlgo = harmonyAngles.type;
|
||||
if (!harmonyAngles || harmonyAngles.angles.length === 0) return dots;
|
||||
|
||||
let primaryDot = dots.find((dot) => dot.ID === 0);
|
||||
if (!primaryDot) return [];
|
||||
@@ -638,7 +637,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
let colorPositions = this.calculateCompliments(this.dots, 'remove', this.useAlgo);
|
||||
let colorPositions = this.calculateCompliments(this.dots, 'remove');
|
||||
this.handleColorPositions(colorPositions);
|
||||
this.updateCurrentWorkspace();
|
||||
return;
|
||||
@@ -780,7 +779,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
let colorPositions = this.calculateCompliments(this.dots, 'remove', this.useAlgo);
|
||||
let colorPositions = this.calculateCompliments(this.dots, 'remove');
|
||||
this.handleColorPositions(colorPositions);
|
||||
|
||||
this.updateCurrentWorkspace();
|
||||
@@ -870,8 +869,11 @@
|
||||
if (color.isCustom) {
|
||||
return color.c;
|
||||
}
|
||||
const toolbarBg = forToolbar ? this.getToolbarModifiedBase() : 'var(--zen-themed-toolbar-bg-transparent)';
|
||||
return `color-mix(in srgb, rgb(${color.c[0]}, ${color.c[1]}, ${color.c[2]}) ${this.currentOpacity * 100}%, ${toolbarBg} ${(1 - this.currentOpacity) * 100}%)`;
|
||||
if (forToolbar) {
|
||||
const toolbarBg = this.getToolbarModifiedBase();
|
||||
return `color-mix(in srgb, rgb(${color.c[0]}, ${color.c[1]}, ${color.c[2]}) ${this.currentOpacity * 100}%, ${toolbarBg} ${(1 - this.currentOpacity) * 100}%)`;
|
||||
}
|
||||
return `rgba(${color.c[0]}, ${color.c[1]}, ${color.c[2]}, ${this.currentOpacity})`;
|
||||
}
|
||||
|
||||
getGradient(colors, forToolbar = false) {
|
||||
|
@@ -403,11 +403,7 @@ class KeyShortcut {
|
||||
}
|
||||
key.setAttribute('modifiers', this.#modifiers.toString());
|
||||
if (this.#action) {
|
||||
if (this.#action?.startsWith('code:')) {
|
||||
key.setAttribute('oncommand', this.#action.substring(5));
|
||||
} else {
|
||||
key.setAttribute('command', this.#action);
|
||||
}
|
||||
key.setAttribute('command', this.#action);
|
||||
}
|
||||
if (this.#disabled) {
|
||||
key.setAttribute('disabled', this.#disabled);
|
||||
@@ -442,6 +438,11 @@ class KeyShortcut {
|
||||
return this.#action;
|
||||
}
|
||||
|
||||
// Only used for migration!
|
||||
_setAction(action) {
|
||||
this.#action = action;
|
||||
}
|
||||
|
||||
getL10NID() {
|
||||
return this.#l10nId;
|
||||
}
|
||||
@@ -603,7 +604,7 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_COMPACT_MODE_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, alt: true }),
|
||||
'code:gZenCompactModeManager.toggle()',
|
||||
'cmd_zenCompactModeToggle',
|
||||
'zen-compact-mode-shortcut-toggle'
|
||||
)
|
||||
);
|
||||
@@ -614,7 +615,7 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_COMPACT_MODE_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, alt: true }),
|
||||
'code:gZenCompactModeManager.toggleSidebar()',
|
||||
'cmd_zenCompactModeShowSidebar',
|
||||
'zen-compact-mode-shortcut-show-sidebar'
|
||||
)
|
||||
);
|
||||
@@ -625,12 +626,12 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_COMPACT_MODE_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, alt: true }),
|
||||
'code:gZenCompactModeManager.toggleToolbar()',
|
||||
'cmd_zenCompactModeShowToolbar',
|
||||
'zen-compact-mode-shortcut-show-toolbar'
|
||||
)
|
||||
);
|
||||
|
||||
// Workspace's keyset
|
||||
// Workspace shortcuts
|
||||
for (let i = 10; i > 0; i--) {
|
||||
newShortcutList.push(
|
||||
new KeyShortcut(
|
||||
@@ -639,7 +640,7 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_WORKSPACE_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({}),
|
||||
`code:ZenWorkspaces.shortcutSwitchTo(${i - 1})`,
|
||||
`cmd_zenWorkspaceSwitch${i}`,
|
||||
`zen-workspace-shortcut-switch-${i}`
|
||||
)
|
||||
);
|
||||
@@ -651,7 +652,7 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_WORKSPACE_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, alt: true }),
|
||||
'code:ZenWorkspaces.changeWorkspaceShortcut()',
|
||||
'cmd_zenWorkspaceForward',
|
||||
'zen-workspace-shortcut-forward'
|
||||
)
|
||||
);
|
||||
@@ -662,24 +663,11 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_WORKSPACE_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, alt: true }),
|
||||
'code:ZenWorkspaces.changeWorkspaceShortcut(-1)',
|
||||
'cmd_zenWorkspaceBackward',
|
||||
'zen-workspace-shortcut-backward'
|
||||
)
|
||||
);
|
||||
|
||||
// Other keyset
|
||||
newShortcutList.push(
|
||||
new KeyShortcut(
|
||||
'zen-toggle-web-panel',
|
||||
'P',
|
||||
'',
|
||||
ZEN_OTHER_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ alt: true }),
|
||||
'code:gZenBrowserManagerSidebar.toggle()',
|
||||
'zen-web-panel-shortcut-toggle'
|
||||
)
|
||||
);
|
||||
|
||||
// Split view
|
||||
newShortcutList.push(
|
||||
new KeyShortcut(
|
||||
@@ -688,7 +676,7 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_SPLIT_VIEW_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, alt: true }),
|
||||
"code:gZenViewSplitter.toggleShortcut('grid')",
|
||||
'cmd_zenSplitViewGrid',
|
||||
'zen-split-view-shortcut-grid'
|
||||
)
|
||||
);
|
||||
@@ -699,7 +687,7 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_SPLIT_VIEW_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, alt: true }),
|
||||
"code:gZenViewSplitter.toggleShortcut('vsep')",
|
||||
'cmd_zenSplitViewVertical',
|
||||
'zen-split-view-shortcut-vertical'
|
||||
)
|
||||
);
|
||||
@@ -710,7 +698,7 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_SPLIT_VIEW_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, alt: true }),
|
||||
"code:gZenViewSplitter.toggleShortcut('hsep')",
|
||||
'cmd_zenSplitViewHorizontal',
|
||||
'zen-split-view-shortcut-horizontal'
|
||||
)
|
||||
);
|
||||
@@ -721,7 +709,7 @@ class ZenKeyboardShortcutsLoader {
|
||||
'',
|
||||
ZEN_SPLIT_VIEW_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, alt: true }),
|
||||
"code:gZenViewSplitter.toggleShortcut('unsplit')",
|
||||
'cmd_zenSplitViewUnsplit',
|
||||
'zen-split-view-shortcut-unsplit'
|
||||
)
|
||||
);
|
||||
@@ -756,7 +744,7 @@ class ZenKeyboardShortcutsLoader {
|
||||
}
|
||||
|
||||
class ZenKeyboardShortcutsVersioner {
|
||||
static LATEST_KBS_VERSION = 8;
|
||||
static LATEST_KBS_VERSION = 9;
|
||||
|
||||
constructor() {}
|
||||
|
||||
@@ -848,7 +836,7 @@ class ZenKeyboardShortcutsVersioner {
|
||||
'',
|
||||
ZEN_OTHER_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({}),
|
||||
'code:gZenPinnedTabManager.resetPinnedTab(gBrowser.selectedTab)',
|
||||
'cmd_zenPinnedTabReset',
|
||||
'zen-pinned-tab-shortcut-reset'
|
||||
)
|
||||
);
|
||||
@@ -885,7 +873,7 @@ class ZenKeyboardShortcutsVersioner {
|
||||
'',
|
||||
ZEN_OTHER_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ alt: true }),
|
||||
'code:gZenVerticalTabsManager.toggleExpand()',
|
||||
'cmd_zenToggleSidebar',
|
||||
'zen-sidebar-shortcut-toggle'
|
||||
)
|
||||
);
|
||||
@@ -900,7 +888,7 @@ class ZenKeyboardShortcutsVersioner {
|
||||
'',
|
||||
ZEN_OTHER_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, shift: true }),
|
||||
'code:gZenCommonActions.copyCurrentURLToClipboard()',
|
||||
'cmd_zenCopyCurrentURL',
|
||||
'zen-text-action-copy-url-shortcut'
|
||||
)
|
||||
);
|
||||
@@ -932,11 +920,50 @@ class ZenKeyboardShortcutsVersioner {
|
||||
'',
|
||||
ZEN_OTHER_SHORTCUTS_GROUP,
|
||||
KeyShortcutModifiers.fromObject({ accel: true, shift: true, alt: true }),
|
||||
'code:gZenCommonActions.copyCurrentURLAsMarkdownToClipboard()',
|
||||
'cmd_zenCopyCurrentURLMarkdown',
|
||||
'zen-text-action-copy-url-markdown-shortcut'
|
||||
)
|
||||
);
|
||||
}
|
||||
if (version < 9) {
|
||||
// Migrate from version 8 to 9
|
||||
// Due to security concerns, replace "code:" actions with corresponding <command> IDs
|
||||
// we also remove 'zen-toggle-web-panel' since it's not used anymore
|
||||
data = data.filter((shortcut) => shortcut.getID() != 'zen-toggle-web-panel');
|
||||
for (let shortcut of data) {
|
||||
if (shortcut.getAction()?.startsWith('code:')) {
|
||||
const id = shortcut.getID();
|
||||
|
||||
// Map old shortcut IDs to new <command> IDs
|
||||
const commandMap = {
|
||||
'zen-compact-mode-toggle': 'cmd_zenCompactModeToggle',
|
||||
'zen-compact-mode-show-sidebar': 'cmd_zenCompactModeShowSidebar',
|
||||
'zen-compact-mode-show-toolbar': 'cmd_zenCompactModeShowToolbar',
|
||||
'zen-workspace-forward': 'cmd_zenWorkspaceForward',
|
||||
'zen-workspace-backward': 'cmd_zenWorkspaceBackward',
|
||||
'zen-split-view-grid': 'cmd_zenSplitViewGrid',
|
||||
'zen-split-view-vertical': 'cmd_zenSplitViewVertical',
|
||||
'zen-split-view-horizontal': 'cmd_zenSplitViewHorizontal',
|
||||
'zen-split-view-unsplit': 'cmd_zenSplitViewUnsplit',
|
||||
'zen-copy-url': 'cmd_zenCopyCurrentURL',
|
||||
'zen-copy-url-markdown': 'cmd_zenCopyCurrentURLMarkdown',
|
||||
'zen-pinned-tab-reset-shortcut': 'cmd_zenPinnedTabReset',
|
||||
'zen-toggle-sidebar': 'cmd_zenToggleSidebar',
|
||||
};
|
||||
|
||||
// Dynamically handle workspace switch shortcuts (zen-workspace-switch-1 to 10)
|
||||
if (id?.startsWith('zen-workspace-switch-')) {
|
||||
const num = id.replace('zen-workspace-switch-', '');
|
||||
commandMap[id] = `cmd_zenWorkspaceSwitch${num}`;
|
||||
}
|
||||
|
||||
// Replace action if a corresponding command exists
|
||||
if (commandMap[id]) {
|
||||
shortcut._setAction(commandMap[id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -944,6 +971,7 @@ class ZenKeyboardShortcutsVersioner {
|
||||
var gZenKeyboardShortcutsManager = {
|
||||
loader: new ZenKeyboardShortcutsLoader(),
|
||||
_hasToLoadDevtools: false,
|
||||
_inlineCommands: [],
|
||||
|
||||
beforeInit() {
|
||||
if (!this.inBrowserView) {
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -386,8 +386,8 @@
|
||||
await this._resetTabToStoredState(tab);
|
||||
}
|
||||
|
||||
async replacePinnedUrlWithCurrent() {
|
||||
const tab = TabContextMenu.contextTab;
|
||||
async replacePinnedUrlWithCurrent(tab = undefined) {
|
||||
tab ??= TabContextMenu.contextTab;
|
||||
if (!tab || !tab.pinned || !tab.getAttribute('zen-pin-id')) {
|
||||
return;
|
||||
}
|
||||
@@ -510,6 +510,10 @@
|
||||
case 'unload-switch':
|
||||
case 'reset-switch':
|
||||
case 'switch':
|
||||
let { permitUnload } = selectedTab.linkedBrowser?.permitUnload();
|
||||
if (!permitUnload) {
|
||||
return;
|
||||
}
|
||||
this._handleTabSwitch(selectedTab);
|
||||
if (behavior.includes('reset')) {
|
||||
this._resetTabToStoredState(selectedTab);
|
||||
@@ -520,8 +524,7 @@
|
||||
}
|
||||
// Do not unload about:* pages
|
||||
if (!selectedTab.linkedBrowser?.currentURI.spec.startsWith('about:')) {
|
||||
gBrowser.explicitUnloadTabs([selectedTab]);
|
||||
selectedTab.removeAttribute('linkedpanel');
|
||||
gZenTabUnloader.explicitUnloadTabs([selectedTab], { permitUnload });
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -669,11 +672,11 @@
|
||||
<menuitem id="context_zen-replace-pinned-url-with-current"
|
||||
data-lazy-l10n-id="tab-context-zen-replace-pinned-url-with-current"
|
||||
hidden="true"
|
||||
oncommand="gZenPinnedTabManager.replacePinnedUrlWithCurrent();"/>
|
||||
command="cmd_zenReplacePinnedUrlWithCurrent"/>
|
||||
<menuitem id="context_zen-reset-pinned-tab"
|
||||
data-lazy-l10n-id="tab-context-zen-reset-pinned-tab"
|
||||
hidden="true"
|
||||
oncommand="gZenPinnedTabManager.resetPinnedTab();"/>
|
||||
command="cmd_zenPinnedTabResetNoTab"/>
|
||||
`);
|
||||
document.getElementById('tabContextMenu').appendChild(elements);
|
||||
|
||||
@@ -681,11 +684,11 @@
|
||||
<menuitem id="context_zen-add-essential"
|
||||
data-lazy-l10n-id="tab-context-zen-add-essential"
|
||||
hidden="true"
|
||||
oncommand="gZenPinnedTabManager.addToEssentials();"/>
|
||||
command="cmd_zenAddToEssentials"/>
|
||||
<menuitem id="context_zen-remove-essential"
|
||||
data-lazy-l10n-id="tab-context-zen-remove-essential"
|
||||
hidden="true"
|
||||
oncommand="gZenPinnedTabManager.removeEssentials();"/>
|
||||
command="cmd_zenRemoveFromEssentials"/>
|
||||
`);
|
||||
|
||||
document.getElementById('context_pinTab')?.before(element);
|
||||
@@ -778,7 +781,11 @@
|
||||
newIndex++;
|
||||
}
|
||||
}
|
||||
gBrowser.moveTabTo(draggedTab, newIndex);
|
||||
// If it's the last tab, move it to the end
|
||||
if (tabsTarget === gBrowser.tabs.at(-1)) {
|
||||
newIndex++;
|
||||
}
|
||||
gBrowser.moveTabTo(draggedTab, newIndex, { forceStandaloneTab: true });
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -799,8 +806,11 @@
|
||||
if (!pin) {
|
||||
return;
|
||||
}
|
||||
// Remove # and ? from the url
|
||||
const pinUrl = pin.url.split('#')[0].split('?')[0];
|
||||
const currentUrl = browser.currentURI.spec.split('#')[0].split('?')[0];
|
||||
// Add an indicator that the pin has been changed
|
||||
if (pin.url === browser.currentURI.spec) {
|
||||
if (pinUrl === currentUrl) {
|
||||
this.resetPinChangedUrl(tab);
|
||||
return;
|
||||
}
|
||||
@@ -831,7 +841,7 @@
|
||||
removeTabContainersDragoverClass() {
|
||||
this.dragIndicator.remove();
|
||||
this._dragIndicator = null;
|
||||
ZenWorkspaces.activeWorkspaceIndicator.removeAttribute('open');
|
||||
ZenWorkspaces.activeWorkspaceIndicator?.removeAttribute('open');
|
||||
}
|
||||
|
||||
get dragIndicator() {
|
||||
@@ -891,9 +901,9 @@
|
||||
targetTab = targetTab?.group || targetTab;
|
||||
if (event.target.closest('.zen-current-workspace-indicator')) {
|
||||
this.removeTabContainersDragoverClass();
|
||||
ZenWorkspaces.activeWorkspaceIndicator.setAttribute('open', true);
|
||||
ZenWorkspaces.activeWorkspaceIndicator?.setAttribute('open', true);
|
||||
} else {
|
||||
ZenWorkspaces.activeWorkspaceIndicator.removeAttribute('open');
|
||||
ZenWorkspaces.activeWorkspaceIndicator?.removeAttribute('open');
|
||||
}
|
||||
|
||||
// If there's no valid target tab, nothing to do
|
||||
@@ -960,6 +970,20 @@
|
||||
indicator.style.removeProperty('top');
|
||||
}
|
||||
}
|
||||
|
||||
async onTabLabelChanged(tab) {
|
||||
if (!this._pinsCache) {
|
||||
return;
|
||||
}
|
||||
// If our current pin in the cache point to about:blank, we need to update the entry
|
||||
const pin = this._pinsCache.find((pin) => pin.uuid === tab.getAttribute('zen-pin-id'));
|
||||
if (!pin) {
|
||||
return;
|
||||
}
|
||||
if (pin.url === 'about:blank') {
|
||||
await this.replacePinnedUrlWithCurrent(tab);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.gZenPinnedTabManager = new ZenPinnedTabManager();
|
||||
|
@@ -1,793 +0,0 @@
|
||||
class ZenBrowserManagerSidebar extends ZenDOMOperatedFeature {
|
||||
_sidebarElement = null;
|
||||
_currentPanel = null;
|
||||
_lastOpenedPanel = null;
|
||||
_hasChangedConfig = true;
|
||||
_splitterElement = null;
|
||||
_hSplitterElement = null;
|
||||
_hasRegisteredPinnedClickOutside = false;
|
||||
_isDragging = false;
|
||||
contextTab = null;
|
||||
sidebar = null;
|
||||
forwardButton = null;
|
||||
backButton = null;
|
||||
progressListener = null;
|
||||
_tabBrowserSet = new WeakMap();
|
||||
tabBox;
|
||||
|
||||
DEFAULT_MOBILE_USER_AGENT = `Mozilla/5.0 (Android 12; Mobile; rv:129.0) Gecko/20100101 Firefox/${AppConstants.ZEN_FIREFOX_VERSION}`;
|
||||
MAX_SIDEBAR_PANELS = Services.prefs.getIntPref('zen.sidebar.max-webpanels');
|
||||
|
||||
init() {
|
||||
ChromeUtils.defineLazyGetter(this, 'sidebar', () => document.getElementById('zen-sidebar-web-panel'));
|
||||
ChromeUtils.defineLazyGetter(this, 'forwardButton', () => document.getElementById('zen-sidebar-web-panel-forward'));
|
||||
ChromeUtils.defineLazyGetter(this, 'backButton', () => document.getElementById('zen-sidebar-web-panel-back'));
|
||||
ChromeUtils.defineLazyGetter(this, 'tabBox', () => document.getElementById('tabbrowser-tabbox'));
|
||||
|
||||
this.onlySafeWidthAndHeight();
|
||||
|
||||
this.initProgressListener();
|
||||
this.close(); // avoid caching
|
||||
this.tabBox.prepend(this.sidebarWrapper);
|
||||
this.listenForPrefChanges();
|
||||
this.insertIntoContextMenu();
|
||||
this.addPositioningListeners();
|
||||
this.syncPinnedState();
|
||||
}
|
||||
|
||||
onlySafeWidthAndHeight() {
|
||||
const panel = this.sidebar;
|
||||
const width = panel.style.width;
|
||||
const height = panel.style.height;
|
||||
panel.setAttribute('style', '');
|
||||
panel.style.width = width;
|
||||
panel.style.height = height;
|
||||
}
|
||||
|
||||
initProgressListener() {
|
||||
this.progressListener = {
|
||||
QueryInterface: ChromeUtils.generateQI(['nsIWebProgressListener', 'nsISupportsWeakReference']),
|
||||
onLocationChange: function (aWebProgress, aRequest, aLocation, aFlags) {
|
||||
const browser = this._getCurrentBrowser();
|
||||
if (!browser) return;
|
||||
const forwardDisabled = this.forwardButton.hasAttribute('disabled');
|
||||
const backDisabled = this.backButton.hasAttribute('disabled');
|
||||
|
||||
if (browser.canGoForward === forwardDisabled) {
|
||||
if (browser.canGoForward) {
|
||||
this.forwardButton.removeAttribute('disabled');
|
||||
} else {
|
||||
this.forwardButton.setAttribute('disabled', true);
|
||||
}
|
||||
}
|
||||
if (browser.canGoBack === backDisabled) {
|
||||
if (browser.canGoBack) {
|
||||
this.backButton.removeAttribute('disabled');
|
||||
} else {
|
||||
this.backButton.setAttribute('disabled', true);
|
||||
}
|
||||
}
|
||||
}.bind(gZenBrowserManagerSidebar),
|
||||
};
|
||||
}
|
||||
|
||||
get sidebarData() {
|
||||
let services = Services.prefs.getStringPref('zen.sidebar.data');
|
||||
if (services === '') {
|
||||
return {};
|
||||
}
|
||||
return JSON.parse(services);
|
||||
}
|
||||
|
||||
get shouldCloseOnBlur() {
|
||||
return Services.prefs.getBoolPref('zen.sidebar.close-on-blur');
|
||||
}
|
||||
|
||||
listenForPrefChanges() {
|
||||
Services.prefs.addObserver('zen.sidebar.data', this.handleEvent.bind(this));
|
||||
Services.prefs.addObserver('zen.sidebar.enabled', this.handleEvent.bind(this));
|
||||
|
||||
this.handleEvent();
|
||||
}
|
||||
|
||||
addPositioningListeners() {
|
||||
this.sidebar
|
||||
.querySelectorAll('.zen-sidebar-web-panel-splitter')
|
||||
.forEach((s) => s.addEventListener('mousedown', this.handleSplitterMouseDown.bind(this)));
|
||||
this.sidebarHeader.addEventListener('mousedown', this.handleDragPanel.bind(this));
|
||||
window.addEventListener('resize', this.onWindowResize.bind(this));
|
||||
}
|
||||
|
||||
syncPinnedState() {
|
||||
const sidebar = document.getElementById('zen-sidebar-web-panel');
|
||||
const pinButton = document.getElementById('zen-sidebar-web-panel-pinned');
|
||||
|
||||
if (sidebar.hasAttribute('pinned')) {
|
||||
pinButton.setAttribute('pinned', 'true');
|
||||
} else {
|
||||
pinButton.removeAttribute('pinned');
|
||||
}
|
||||
}
|
||||
|
||||
handleSplitterMouseDown(mouseDownEvent) {
|
||||
if (this._isDragging) return;
|
||||
this._isDragging = true;
|
||||
|
||||
const isHorizontal = mouseDownEvent.target.getAttribute('orient') === 'horizontal';
|
||||
setCursor(isHorizontal ? 'ns-resize' : 'ew-resize');
|
||||
const reverse = ['left', 'top'].includes(mouseDownEvent.target.getAttribute('side'));
|
||||
const direction = isHorizontal ? 'height' : 'width';
|
||||
const axis = isHorizontal ? 'Y' : 'X';
|
||||
|
||||
const computedStyle = window.getComputedStyle(this.sidebar);
|
||||
const maxSize = parseInt(computedStyle.getPropertyValue(`max-${direction}`).match(/(\d+)px/)?.[1]) || Infinity;
|
||||
const minSize = parseInt(computedStyle.getPropertyValue(`min-${direction}`).match(/(\d+)px/)?.[1]) || 0;
|
||||
|
||||
const sidebarSizeStart = this.sidebar.getBoundingClientRect()[direction];
|
||||
|
||||
const startPos = mouseDownEvent[`screen${axis}`];
|
||||
|
||||
const toAdjust = isHorizontal ? 'top' : 'left';
|
||||
const sidebarPosStart = parseInt(this.sidebar.style[toAdjust].match(/\d+/));
|
||||
|
||||
let mouseMove = function (e) {
|
||||
let mouseMoved = e[`screen${axis}`] - startPos;
|
||||
if (reverse) {
|
||||
mouseMoved *= -1;
|
||||
}
|
||||
let newSize = sidebarSizeStart + mouseMoved;
|
||||
let currentMax = maxSize;
|
||||
const wrapperBox = this.sidebarWrapper.getBoundingClientRect();
|
||||
let maxWrapperSize = Infinity;
|
||||
if (this.isFloating) {
|
||||
maxWrapperSize = reverse ? sidebarPosStart + sidebarSizeStart : wrapperBox[direction] - sidebarPosStart;
|
||||
}
|
||||
newSize = Math.max(minSize, Math.min(currentMax, maxWrapperSize, newSize));
|
||||
|
||||
window.requestAnimationFrame(() => {
|
||||
if (reverse) {
|
||||
const actualMoved = newSize - sidebarSizeStart;
|
||||
this.sidebar.style[toAdjust] = sidebarPosStart - actualMoved + 'px';
|
||||
}
|
||||
this.sidebar.style[direction] = `${newSize}px`;
|
||||
});
|
||||
}.bind(this);
|
||||
|
||||
document.addEventListener('mousemove', mouseMove);
|
||||
document.addEventListener(
|
||||
'mouseup',
|
||||
() => {
|
||||
document.removeEventListener('mousemove', mouseMove);
|
||||
this._isDragging = false;
|
||||
setCursor('auto');
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
}
|
||||
|
||||
handleDragPanel(mouseDownEvent) {
|
||||
if (this.sidebarHeaderButtons.find((b) => b.contains(mouseDownEvent.target))) {
|
||||
return;
|
||||
}
|
||||
this._isDragging = true;
|
||||
const startTop = this.sidebar.style.top?.match(/\d+/)?.[0] || 0;
|
||||
const startLeft = this.sidebar.style.left?.match(/\d+/)?.[0] || 0;
|
||||
|
||||
const sidebarBBox = this.sidebar.getBoundingClientRect();
|
||||
const sideBarHeight = sidebarBBox.height;
|
||||
const sideBarWidth = sidebarBBox.width;
|
||||
|
||||
const topMouseOffset = startTop - mouseDownEvent.screenY;
|
||||
const leftMouseOffset = startLeft - mouseDownEvent.screenX;
|
||||
const moveListener = (mouseMoveEvent) => {
|
||||
window.requestAnimationFrame(() => {
|
||||
let top = mouseMoveEvent.clientY + topMouseOffset;
|
||||
let left = mouseMoveEvent.clientX + leftMouseOffset;
|
||||
|
||||
const wrapperBounds = this.sidebarWrapper.getBoundingClientRect();
|
||||
top = Math.max(0, Math.min(top, wrapperBounds.height - sideBarHeight));
|
||||
left = Math.max(0, Math.min(left, wrapperBounds.width - sideBarWidth));
|
||||
|
||||
this.sidebar.style.top = top + 'px';
|
||||
this.sidebar.style.left = left + 'px';
|
||||
});
|
||||
};
|
||||
|
||||
document.addEventListener('mousemove', moveListener);
|
||||
document.addEventListener(
|
||||
'mouseup',
|
||||
() => {
|
||||
document.removeEventListener('mousemove', moveListener);
|
||||
this._isDragging = false;
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
}
|
||||
|
||||
onWindowResize() {
|
||||
if (!this.isFloating) return;
|
||||
const top = parseInt(this.sidebar.style.top?.match(/\d+/)?.[0] || 0);
|
||||
const left = parseInt(this.sidebar.style.left?.match(/\d+/)?.[0] || 0);
|
||||
const wrapperRect = this.sidebarWrapper.getBoundingClientRect();
|
||||
const sidebarRect = this.sidebar.getBoundingClientRect();
|
||||
|
||||
if (sidebarRect.height < wrapperRect.height && top + sidebarRect.height > wrapperRect.height) {
|
||||
this.sidebar.style.top = wrapperRect.height - sidebarRect.height + 'px';
|
||||
}
|
||||
if (sidebarRect.width < wrapperRect.width && left + sidebarRect.width > wrapperRect.width) {
|
||||
this.sidebar.style.left = wrapperRect.width - sidebarRect.width + 'px';
|
||||
}
|
||||
}
|
||||
|
||||
get isFloating() {
|
||||
return document.getElementById('zen-sidebar-web-panel').hasAttribute('pinned');
|
||||
}
|
||||
|
||||
handleEvent() {
|
||||
this._hasChangedConfig = true;
|
||||
this.update();
|
||||
this._hasChangedConfig = false;
|
||||
|
||||
// https://stackoverflow.com/questions/11565471/removing-event-listener-which-was-added-with-bind
|
||||
var clickOutsideHandler = this._handleClickOutside.bind(this);
|
||||
let isFloating = this.isFloating;
|
||||
if (isFloating && !this._hasRegisteredPinnedClickOutside) {
|
||||
document.addEventListener('mouseup', clickOutsideHandler);
|
||||
this._hasRegisteredPinnedClickOutside = true;
|
||||
} else if (!isFloating && this._hasRegisteredPinnedClickOutside) {
|
||||
document.removeEventListener('mouseup', clickOutsideHandler);
|
||||
this._hasRegisteredPinnedClickOutside = false;
|
||||
}
|
||||
|
||||
const button = document.getElementById('zen-sidepanel-button');
|
||||
if (!button) return;
|
||||
if (Services.prefs.getBoolPref('zen.sidebar.enabled')) {
|
||||
button.removeAttribute('hidden');
|
||||
} else {
|
||||
button.setAttribute('hidden', 'true');
|
||||
this._closeSidebarPanel();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
_handleClickOutside(event) {
|
||||
if (!this.sidebar.hasAttribute('pinned') || this._isDragging || !this.shouldCloseOnBlur) {
|
||||
return;
|
||||
}
|
||||
let target = event.target;
|
||||
const closestSelector = [
|
||||
'#zen-sidebar-web-panel',
|
||||
'#zen-sidebar-panels-wrapper',
|
||||
'#zenWebPanelContextMenu',
|
||||
'#zen-sidebar-web-panel-splitter',
|
||||
'#contentAreaContextMenu',
|
||||
'#zen-sidepanel-button',
|
||||
].join(', ');
|
||||
if (target.closest(closestSelector)) {
|
||||
return;
|
||||
}
|
||||
this.close();
|
||||
}
|
||||
|
||||
toggle() {
|
||||
if (!this._currentPanel) {
|
||||
this._currentPanel = this._lastOpenedPanel;
|
||||
}
|
||||
if (document.getElementById('zen-sidebar-web-panel').hasAttribute('hidden')) {
|
||||
this.open();
|
||||
return;
|
||||
}
|
||||
this.close();
|
||||
}
|
||||
|
||||
open() {
|
||||
let sidebar = document.getElementById('zen-sidebar-web-panel');
|
||||
sidebar.removeAttribute('hidden');
|
||||
this.update();
|
||||
}
|
||||
|
||||
update() {
|
||||
this._updateWebPanels();
|
||||
this._updateSidebarButton();
|
||||
this._updateWebPanel();
|
||||
this._updateButtons();
|
||||
}
|
||||
|
||||
_updateSidebarButton() {
|
||||
let button = document.getElementById('zen-sidepanel-button');
|
||||
if (!button) return;
|
||||
if (!document.getElementById('zen-sidebar-web-panel').hasAttribute('hidden')) {
|
||||
button.setAttribute('open', 'true');
|
||||
} else {
|
||||
button.removeAttribute('open');
|
||||
}
|
||||
}
|
||||
|
||||
_updateWebPanels() {
|
||||
if (Services.prefs.getBoolPref('zen.sidebar.enabled')) {
|
||||
this.sidebarElement.removeAttribute('hidden');
|
||||
} else {
|
||||
this.sidebarElement.setAttribute('hidden', 'true');
|
||||
this._closeSidebarPanel();
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't reload content if at least one of the panel tabs was loaded
|
||||
if (this._lastOpenedPanel) {
|
||||
return;
|
||||
}
|
||||
|
||||
let data = this.sidebarData;
|
||||
if (!data.data || !data.index) {
|
||||
return;
|
||||
}
|
||||
this.sidebarElement.innerHTML = '';
|
||||
for (let site of data.index) {
|
||||
let panel = data.data[site];
|
||||
if (!panel || !panel.url) {
|
||||
continue;
|
||||
}
|
||||
let button = document.createXULElement('toolbarbutton');
|
||||
button.classList.add('zen-sidebar-panel-button', 'toolbarbutton-1', 'chromeclass-toolbar-additional');
|
||||
button.setAttribute('flex', '1');
|
||||
button.setAttribute('zen-sidebar-id', site);
|
||||
button.setAttribute('context', 'zenWebPanelContextMenu');
|
||||
this._getWebPanelIcon(panel.url, button);
|
||||
button.addEventListener('click', this._handleClick.bind(this));
|
||||
button.addEventListener('dragstart', this._handleDragStart.bind(this));
|
||||
button.addEventListener('dragover', this._handleDragOver.bind(this));
|
||||
button.addEventListener('dragenter', this._handleDragEnter.bind(this));
|
||||
button.addEventListener('dragend', this._handleDragEnd.bind(this));
|
||||
this.sidebarElement.appendChild(button);
|
||||
}
|
||||
const addButton = document.getElementById('zen-sidebar-add-panel-button');
|
||||
if (data.index.length < this.MAX_SIDEBAR_PANELS) {
|
||||
addButton.removeAttribute('hidden');
|
||||
} else {
|
||||
addButton.setAttribute('hidden', 'true');
|
||||
}
|
||||
}
|
||||
|
||||
async _openAddPanelDialog() {
|
||||
let dialogURL = 'chrome://browser/content/places/zenNewWebPanel.xhtml';
|
||||
let features = 'centerscreen,chrome,modal,resizable=no';
|
||||
let aParentWindow = Services.wm.getMostRecentWindow('navigator:browser');
|
||||
|
||||
if (aParentWindow?.gDialogBox) {
|
||||
await aParentWindow.gDialogBox.open(dialogURL, {});
|
||||
} else {
|
||||
aParentWindow.openDialog(dialogURL, '', features, {});
|
||||
}
|
||||
}
|
||||
|
||||
_setPinnedToElements() {
|
||||
let sidebar = document.getElementById('zen-sidebar-web-panel');
|
||||
sidebar.setAttribute('pinned', 'true');
|
||||
document.getElementById('zen-sidebar-web-panel-pinned').setAttribute('pinned', 'true');
|
||||
}
|
||||
|
||||
_removePinnedFromElements() {
|
||||
let sidebar = document.getElementById('zen-sidebar-web-panel');
|
||||
sidebar.removeAttribute('pinned');
|
||||
document.getElementById('zen-sidebar-web-panel-pinned').removeAttribute('pinned');
|
||||
}
|
||||
|
||||
_closeSidebarPanel() {
|
||||
let sidebar = document.getElementById('zen-sidebar-web-panel');
|
||||
sidebar.setAttribute('hidden', 'true');
|
||||
this._lastOpenedPanel = this._currentPanel;
|
||||
this._currentPanel = null;
|
||||
}
|
||||
|
||||
_handleClick(event) {
|
||||
let target = event.target;
|
||||
let panelId = target.getAttribute('zen-sidebar-id');
|
||||
if (this._currentPanel === panelId) {
|
||||
return;
|
||||
}
|
||||
this._currentPanel = panelId;
|
||||
this._updateWebPanel();
|
||||
}
|
||||
|
||||
_handleDragStart(event) {
|
||||
this.__dragingElement = event.target;
|
||||
this.__dragingIndex = Array.prototype.indexOf.call(event.target.parentNode.children, event.target);
|
||||
event.target.style.opacity = '0.7';
|
||||
|
||||
event.dataTransfer.effectAllowed = 'move';
|
||||
event.dataTransfer.setData('text/html', event.target.innerHTML);
|
||||
event.dataTransfer.setData('text/plain', event.target.id);
|
||||
}
|
||||
|
||||
_handleDragOver(event) {}
|
||||
|
||||
_handleDragEnter(event) {
|
||||
if (typeof this.__dragingElement === 'undefined') {
|
||||
return;
|
||||
}
|
||||
const target = event.target;
|
||||
const elIndex = Array.prototype.indexOf.call(target.parentNode.children, target);
|
||||
if (elIndex < this.__dragingIndex) {
|
||||
target.before(this.__dragingElement);
|
||||
this.__dragingIndex = elIndex - 1;
|
||||
}
|
||||
target.after(this.__dragingElement);
|
||||
this.__dragingIndex = elIndex + 1;
|
||||
}
|
||||
|
||||
_handleDragEnd(event) {
|
||||
event.target.style.opacity = '1';
|
||||
|
||||
let data = this.sidebarData;
|
||||
let newPos = [];
|
||||
for (let element of this.__dragingElement.parentNode.children) {
|
||||
let panelId = element.getAttribute('zen-sidebar-id');
|
||||
newPos.push(panelId);
|
||||
}
|
||||
data.index = newPos;
|
||||
Services.prefs.setStringPref('zen.sidebar.data', JSON.stringify(data));
|
||||
this._currentPanel = this.__dragingElement.getAttribute('zen-sidebar-id');
|
||||
this.open();
|
||||
this.__dragingElement = undefined;
|
||||
}
|
||||
|
||||
_createNewPanel(url) {
|
||||
let data = this.sidebarData;
|
||||
let newName = 'p' + new Date().getTime();
|
||||
data.index.push(newName);
|
||||
data.data[newName] = {
|
||||
url: url,
|
||||
ua: false,
|
||||
};
|
||||
Services.prefs.setStringPref('zen.sidebar.data', JSON.stringify(data));
|
||||
this._currentPanel = newName;
|
||||
this.open();
|
||||
}
|
||||
|
||||
_updateButtons() {
|
||||
for (let button of this.sidebarElement.querySelectorAll('.zen-sidebar-panel-button')) {
|
||||
if (button.getAttribute('zen-sidebar-id') === this._currentPanel) {
|
||||
button.setAttribute('selected', 'true');
|
||||
} else {
|
||||
button.removeAttribute('selected');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_hideAllWebPanels() {
|
||||
let sidebar = document.getElementById('zen-sidebar-web-panel');
|
||||
for (let browser of sidebar.querySelectorAll('browser[zen-sidebar-id]')) {
|
||||
browser.setAttribute('hidden', 'true');
|
||||
browser.docShellIsActive = false;
|
||||
browser.zenModeActive = false;
|
||||
}
|
||||
}
|
||||
|
||||
get introductionPanel() {
|
||||
return document.getElementById('zen-sidebar-introduction-panel');
|
||||
}
|
||||
|
||||
_updateWebPanel() {
|
||||
this._updateButtons();
|
||||
// let sidebar = document.getElementById("zen-sidebar-web-panel");
|
||||
this._hideAllWebPanels();
|
||||
if (!this._currentPanel) {
|
||||
this.introductionPanel.removeAttribute('hidden');
|
||||
this.forwardButton.setAttribute('disabled', true);
|
||||
this.backButton.setAttribute('disabled', true);
|
||||
return;
|
||||
}
|
||||
this.introductionPanel.setAttribute('hidden', 'true');
|
||||
let existantWebview = this._getCurrentBrowser();
|
||||
if (existantWebview) {
|
||||
existantWebview.docShellIsActive = true;
|
||||
existantWebview.zenModeActive = true;
|
||||
existantWebview.removeAttribute('hidden');
|
||||
document.getElementById('zen-sidebar-web-panel-title').textContent = existantWebview.contentTitle;
|
||||
return;
|
||||
}
|
||||
let data = this._getWebPanelData(this._currentPanel);
|
||||
let browser = this._createWebPanelBrowser(data);
|
||||
let browserContainers = document.getElementById('zen-sidebar-web-panel-browser-containers');
|
||||
browserContainers.appendChild(browser);
|
||||
browser.addProgressListener(this.progressListener, Ci.nsIWebProgress.NOTIFY_LOCATION);
|
||||
if (data.ua) {
|
||||
browser.browsingContext.customUserAgent = this.DEFAULT_MOBILE_USER_AGENT;
|
||||
browser.reload();
|
||||
}
|
||||
browser.docShellIsActive = true;
|
||||
browser.zenModeActive = true;
|
||||
}
|
||||
|
||||
_getWebPanelData(id) {
|
||||
let data = this.sidebarData;
|
||||
let panel = data.data[id];
|
||||
if (!panel || !panel.url) {
|
||||
return {};
|
||||
}
|
||||
return {
|
||||
id: id,
|
||||
...panel,
|
||||
};
|
||||
}
|
||||
|
||||
getTabForBrowser(browser) {
|
||||
return this._tabBrowserSet.get(browser);
|
||||
}
|
||||
|
||||
setTabForBrowser(browser, tab) {
|
||||
this._tabBrowserSet.set(browser, tab);
|
||||
}
|
||||
|
||||
removeTabForBrowser(browser) {
|
||||
this._tabBrowserSet.delete(browser);
|
||||
}
|
||||
|
||||
_createWebPanelBrowser(data) {
|
||||
const titleContainer = document.getElementById('zen-sidebar-web-panel-title');
|
||||
titleContainer.textContent = 'Loading...';
|
||||
let browser = gBrowser.createBrowser({
|
||||
userContextId: data.userContextId,
|
||||
});
|
||||
const tab = this.sidebar.querySelector(`[zen-sidebar-id='${data.id}']`);
|
||||
this.setTabForBrowser(browser, tab);
|
||||
tab.linkedBrowser = browser;
|
||||
tab.permanentKey = browser.permanentKey;
|
||||
browser.setAttribute('disablefullscreen', 'true');
|
||||
browser.setAttribute('src', data.url);
|
||||
browser.setAttribute('zen-sidebar-id', data.id);
|
||||
browser.addEventListener(
|
||||
'pagetitlechanged',
|
||||
function (event) {
|
||||
let browser = event.target;
|
||||
let title = browser.contentTitle;
|
||||
if (!title) {
|
||||
return;
|
||||
}
|
||||
let id = browser.getAttribute('zen-sidebar-id');
|
||||
if (id === this._currentPanel) {
|
||||
titleContainer.textContent = title;
|
||||
}
|
||||
}.bind(this)
|
||||
);
|
||||
return browser;
|
||||
}
|
||||
|
||||
_getWebPanelIcon(url, element) {
|
||||
let { preferredURI } = Services.uriFixup.getFixupURIInfo(url);
|
||||
element.setAttribute('image', `page-icon:${preferredURI.spec}`);
|
||||
if (Services.prefs.getBoolPref('zen.sidebar.use-google-favicons')) {
|
||||
fetch(`https://s2.googleusercontent.com/s2/favicons?domain_url=${preferredURI.spec}`).then(async (response) => {
|
||||
if (response.ok) {
|
||||
let blob = await response.blob();
|
||||
let reader = new FileReader();
|
||||
reader.onload = function () {
|
||||
element.setAttribute('image', reader.result);
|
||||
};
|
||||
reader.readAsDataURL(blob);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_getBrowserById(id) {
|
||||
let sidebar = document.getElementById('zen-sidebar-web-panel');
|
||||
return sidebar.querySelector(`browser[zen-sidebar-id="${id}"]`);
|
||||
}
|
||||
|
||||
_getCurrentBrowser() {
|
||||
return this._getBrowserById(this._currentPanel);
|
||||
}
|
||||
|
||||
reload() {
|
||||
let browser = this._getCurrentBrowser();
|
||||
if (browser) {
|
||||
browser.reload();
|
||||
}
|
||||
}
|
||||
|
||||
forward() {
|
||||
let browser = this._getCurrentBrowser();
|
||||
if (browser) {
|
||||
browser.goForward();
|
||||
}
|
||||
}
|
||||
|
||||
back() {
|
||||
let browser = this._getCurrentBrowser();
|
||||
if (browser) {
|
||||
browser.goBack();
|
||||
}
|
||||
}
|
||||
|
||||
home() {
|
||||
let browser = this._getCurrentBrowser();
|
||||
if (browser) {
|
||||
browser.gotoIndex();
|
||||
}
|
||||
}
|
||||
|
||||
close() {
|
||||
this._hideAllWebPanels();
|
||||
this._closeSidebarPanel();
|
||||
this._updateSidebarButton();
|
||||
}
|
||||
|
||||
togglePinned(elem) {
|
||||
if (this.sidebar.hasAttribute('pinned')) {
|
||||
this._removePinnedFromElements();
|
||||
} else {
|
||||
this._setPinnedToElements();
|
||||
}
|
||||
this.update();
|
||||
}
|
||||
|
||||
get sidebarElement() {
|
||||
if (!this._sidebarElement) {
|
||||
this._sidebarElement = document.getElementById('zen-sidebar-panels-sites');
|
||||
}
|
||||
return this._sidebarElement;
|
||||
}
|
||||
|
||||
get splitterElement() {
|
||||
if (!this._splitterElement) {
|
||||
this._splitterElement = document.getElementById('zen-sidebar-web-panel-splitter');
|
||||
}
|
||||
return this._splitterElement;
|
||||
}
|
||||
|
||||
get hSplitterElement() {
|
||||
if (!this._hSplitterElement) {
|
||||
this._hSplitterElement = document.getElementById('zen-sidebar-web-panel-hsplitter');
|
||||
}
|
||||
return this._hSplitterElement;
|
||||
}
|
||||
|
||||
get sidebarHeader() {
|
||||
if (!this._sidebarHeader) {
|
||||
this._sidebarHeader = document.getElementById('zen-sidebar-web-header');
|
||||
}
|
||||
return this._sidebarHeader;
|
||||
}
|
||||
|
||||
get sidebarWrapper() {
|
||||
if (!this._sideBarWrapper) {
|
||||
this._sideBarWrapper = document.getElementById('zen-sidebar-web-panel-wrapper');
|
||||
}
|
||||
return this._sideBarWrapper;
|
||||
}
|
||||
|
||||
get sidebarHeaderButtons() {
|
||||
if (!this._sidebarHeaderButtons) {
|
||||
this._sidebarHeaderButtons = [...this.sidebarHeader.querySelectorAll('.toolbarbutton-1')];
|
||||
}
|
||||
return this._sidebarHeaderButtons;
|
||||
}
|
||||
|
||||
// Context menu
|
||||
|
||||
updateContextMenu(aPopupMenu) {
|
||||
let panel =
|
||||
aPopupMenu.triggerNode && (aPopupMenu.triggerNode || aPopupMenu.triggerNode.closest('toolbarbutton[zen-sidebar-id]'));
|
||||
if (!panel) {
|
||||
return;
|
||||
}
|
||||
let id = panel.getAttribute('zen-sidebar-id');
|
||||
this.contextTab = id;
|
||||
let data = this._getWebPanelData(id);
|
||||
let browser = this._getBrowserById(id);
|
||||
let isMuted = browser && browser.audioMuted;
|
||||
let mutedContextItem = document.getElementById('context_zenToggleMuteWebPanel');
|
||||
document.l10n.setAttributes(
|
||||
mutedContextItem,
|
||||
!isMuted ? 'zen-web-side-panel-context-mute-panel' : 'zen-web-side-panel-context-unmute-panel'
|
||||
);
|
||||
if (!isMuted) {
|
||||
mutedContextItem.setAttribute('muted', 'true');
|
||||
} else {
|
||||
mutedContextItem.removeAttribute('muted');
|
||||
}
|
||||
document.l10n.setAttributes(
|
||||
document.getElementById('context_zenToogleUAWebPanel'),
|
||||
data.ua ? 'zen-web-side-panel-context-disable-ua' : 'zen-web-side-panel-context-enable-ua'
|
||||
);
|
||||
if (!browser) {
|
||||
document.getElementById('context_zenUnloadWebPanel').setAttribute('disabled', 'true');
|
||||
} else {
|
||||
document.getElementById('context_zenUnloadWebPanel').removeAttribute('disabled');
|
||||
}
|
||||
}
|
||||
|
||||
createContainerTabMenu(event) {
|
||||
let window = event.target.ownerGlobal;
|
||||
let data = this.sidebarData;
|
||||
let panelData = data.data[this.contextTab];
|
||||
return window.createUserContextMenu(event, {
|
||||
isContextMenu: true,
|
||||
excludeUserContextId: panelData.userContextId,
|
||||
showDefaultTab: true,
|
||||
});
|
||||
}
|
||||
|
||||
contextChangeContainerTab(event) {
|
||||
let data = this.sidebarData;
|
||||
let userContextId = parseInt(event.target.getAttribute('data-usercontextid'));
|
||||
data.data[this.contextTab].userContextId = userContextId;
|
||||
Services.prefs.setStringPref('zen.sidebar.data', JSON.stringify(data));
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
if (browser) {
|
||||
browser.remove();
|
||||
// We need to re-apply a new browser so it takes the new userContextId
|
||||
this._updateWebPanel();
|
||||
}
|
||||
}
|
||||
|
||||
contextOpenNewTab() {
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
let data = this.sidebarData;
|
||||
let panel = data.data[this.contextTab];
|
||||
let url = browser == null ? panel.url : browser.currentURI.spec;
|
||||
gZenUIManager.openAndChangeToTab(url);
|
||||
this.close();
|
||||
}
|
||||
|
||||
contextToggleMuteAudio() {
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
if (browser.audioMuted) {
|
||||
browser.unmute();
|
||||
} else {
|
||||
browser.mute();
|
||||
}
|
||||
}
|
||||
|
||||
contextToggleUserAgent() {
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
browser.browsingContext.customUserAgent = browser.browsingContext.customUserAgent ? null : this.DEFAULT_MOBILE_USER_AGENT;
|
||||
let data = this.sidebarData;
|
||||
data.data[this.contextTab].ua = !data.data[this.contextTab].ua;
|
||||
Services.prefs.setStringPref('zen.sidebar.data', JSON.stringify(data));
|
||||
browser.reload();
|
||||
}
|
||||
|
||||
contextDelete() {
|
||||
let data = this.sidebarData;
|
||||
delete data.data[this.contextTab];
|
||||
data.index = data.index.filter((id) => id !== this.contextTab);
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
if (browser) {
|
||||
browser.remove();
|
||||
document.getElementById('zen-sidebar-web-panel-title').textContent = '';
|
||||
}
|
||||
this._currentPanel = null;
|
||||
this._lastOpenedPanel = null;
|
||||
this.update();
|
||||
Services.prefs.setStringPref('zen.sidebar.data', JSON.stringify(data));
|
||||
}
|
||||
|
||||
contextUnload() {
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
this.removeTabForBrowser(browser);
|
||||
browser.remove();
|
||||
document.getElementById('zen-sidebar-web-panel-title').textContent = '';
|
||||
this._closeSidebarPanel();
|
||||
this.close();
|
||||
this._lastOpenedPanel = null;
|
||||
}
|
||||
|
||||
insertIntoContextMenu() {
|
||||
const sibling = document.getElementById('context-stripOnShareLink');
|
||||
const menuitem = document.createXULElement('menuitem');
|
||||
menuitem.setAttribute('id', 'context-zenAddToWebPanel');
|
||||
menuitem.setAttribute('hidden', 'true');
|
||||
menuitem.setAttribute('oncommand', 'gZenBrowserManagerSidebar.addPanelFromContextMenu();');
|
||||
menuitem.setAttribute('data-l10n-id', 'zen-web-side-panel-context-add-to-panel');
|
||||
sibling.insertAdjacentElement('afterend', menuitem);
|
||||
}
|
||||
|
||||
addPanelFromContextMenu() {
|
||||
const url = gContextMenu.linkURL || gContextMenu.target.ownerDocument.location.href;
|
||||
this._createNewPanel(url);
|
||||
}
|
||||
}
|
||||
|
||||
window.gZenBrowserManagerSidebar = new ZenBrowserManagerSidebar();
|
@@ -22,8 +22,6 @@
|
||||
'TabAttrModified',
|
||||
'TabPinned',
|
||||
'TabUnpinned',
|
||||
'TabBrowserInserted',
|
||||
'TabBrowserDiscarded',
|
||||
'TabShow',
|
||||
'TabHide',
|
||||
'TabOpen',
|
||||
@@ -65,48 +63,12 @@
|
||||
static INTERVAL = 1000 * 60; // 1 minute
|
||||
|
||||
interval = null;
|
||||
/** @type {ZenTabUnloader} */
|
||||
unloader = null;
|
||||
|
||||
#excludedUrls = [];
|
||||
#compiledExcludedUrls = [];
|
||||
|
||||
constructor(unloader) {
|
||||
this.unloader = unloader;
|
||||
this.interval = setInterval(this.intervalListener.bind(this), ZenTabsIntervalUnloader.INTERVAL);
|
||||
this.#excludedUrls = this.lazyExcludeUrls;
|
||||
}
|
||||
|
||||
get lazyExcludeUrls() {
|
||||
return [
|
||||
...ZEN_TAB_UNLOADER_DEFAULT_EXCLUDED_URLS,
|
||||
...lazy.zenTabUnloaderExcludedUrls.split(',').map((url) => url.trim()),
|
||||
];
|
||||
}
|
||||
|
||||
arraysEqual(a, b) {
|
||||
if (a === b) return true;
|
||||
if (a == null || b == null) return false;
|
||||
if (a.length !== b.length) return false;
|
||||
|
||||
// If you don't care about the order of the elements inside
|
||||
// the array, you should sort both arrays here.
|
||||
// Please note that calling sort on an array will modify that array.
|
||||
// you might want to clone your array first.
|
||||
|
||||
for (var i = 0; i < a.length; ++i) {
|
||||
if (a[i] !== b[i]) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
get excludedUrls() {
|
||||
// Check if excludedrls is the same as the pref value
|
||||
const excludedUrls = this.lazyExcludeUrls;
|
||||
if (!this.arraysEqual(this.#excludedUrls, excludedUrls) || !this.#compiledExcludedUrls.length) {
|
||||
this.#excludedUrls = excludedUrls;
|
||||
this.#compiledExcludedUrls = excludedUrls.map((url) => new RegExp(url));
|
||||
}
|
||||
return this.#compiledExcludedUrls;
|
||||
}
|
||||
|
||||
intervalListener() {
|
||||
@@ -114,11 +76,10 @@
|
||||
return;
|
||||
}
|
||||
const currentTimestamp = Date.now();
|
||||
const excludedUrls = this.excludedUrls;
|
||||
const tabs = gBrowser.tabs;
|
||||
const tabs = ZenWorkspaces.allStoredTabs;
|
||||
for (let i = 0; i < tabs.length; i++) {
|
||||
const tab = tabs[i];
|
||||
if (this.unloader.canUnloadTab(tab, currentTimestamp, excludedUrls)) {
|
||||
if (this.unloader.canUnloadTab(tab, currentTimestamp)) {
|
||||
this.unloader.unload(tab);
|
||||
}
|
||||
}
|
||||
@@ -128,8 +89,14 @@
|
||||
class ZenTabUnloader extends ZenDOMOperatedFeature {
|
||||
static ACTIVITY_MODIFIERS = ['muted', 'soundplaying', 'label', 'attention'];
|
||||
|
||||
#excludedUrls = [];
|
||||
#compiledExcludedUrls = [];
|
||||
#lastCheckedUrlTimestamp = 0;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.#excludedUrls = this.lazyExcludeUrls;
|
||||
if (!lazy.zenTabUnloaderEnabled) {
|
||||
return;
|
||||
}
|
||||
@@ -150,8 +117,6 @@
|
||||
switch (action) {
|
||||
case 'TabPinned':
|
||||
case 'TabUnpinned':
|
||||
case 'TabBrowserInserted':
|
||||
case 'TabBrowserDiscarded':
|
||||
case 'TabShow':
|
||||
case 'TabHide':
|
||||
break;
|
||||
@@ -201,32 +166,67 @@
|
||||
tab.lastActivity = currentTimestamp;
|
||||
}
|
||||
|
||||
get tabs() {
|
||||
return gBrowser.tabs;
|
||||
}
|
||||
|
||||
insertIntoContextMenu() {
|
||||
const element = window.MozXULElement.parseXULToFragment(`
|
||||
<menuseparator/>
|
||||
<menuitem id="context_zenUnloadTab"
|
||||
data-lazy-l10n-id="tab-zen-unload"
|
||||
oncommand="gZenTabUnloader.unloadTab();"/>
|
||||
command="cmd_zenUnloadTab"/>
|
||||
<menu data-lazy-l10n-id="zen-tabs-unloader-tab-actions" id="context_zenTabActions">
|
||||
<menupopup>
|
||||
<menuitem id="context_zenPreventUnloadTab"
|
||||
data-lazy-l10n-id="tab-zen-prevent-unload"
|
||||
oncommand="gZenTabUnloader.preventUnloadTab();"/>
|
||||
command="cmd_zenPreventUnloadTab"/>
|
||||
<menuitem id="context_zenIgnoreUnloadTab"
|
||||
data-lazy-l10n-id="tab-zen-ignore-unload"
|
||||
oncommand="gZenTabUnloader.ignoreUnloadTab();"/>
|
||||
command="cmd_zenIgnoreUnloadTab"/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
`);
|
||||
document.getElementById('context_closeDuplicateTabs').parentNode.appendChild(element);
|
||||
}
|
||||
|
||||
unload(tab) {
|
||||
gBrowser.explicitUnloadTabs([tab]);
|
||||
get lazyExcludeUrls() {
|
||||
return [
|
||||
...ZEN_TAB_UNLOADER_DEFAULT_EXCLUDED_URLS,
|
||||
...lazy.zenTabUnloaderExcludedUrls.split(',').map((url) => url.trim()),
|
||||
];
|
||||
}
|
||||
|
||||
arraysEqual(a, b) {
|
||||
if (a === b) return true;
|
||||
if (a == null || b == null) return false;
|
||||
if (a.length !== b.length) return false;
|
||||
|
||||
const currentTimestamp = Date.now();
|
||||
if (currentTimestamp - this.#lastCheckedUrlTimestamp < 5 * 1000) {
|
||||
return true;
|
||||
}
|
||||
|
||||
this.#lastCheckedUrlTimestamp = currentTimestamp;
|
||||
// If you don't care about the order of the elements inside
|
||||
// the array, you should sort both arrays here.
|
||||
// Please note that calling sort on an array will modify that array.
|
||||
// you might want to clone your array first.
|
||||
|
||||
for (let i = 0; i < a.length; ++i) {
|
||||
if (a[i] !== b[i]) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
get excludedUrls() {
|
||||
// Check if excludedrls is the same as the pref value
|
||||
const excludedUrls = this.lazyExcludeUrls;
|
||||
if (!this.arraysEqual(this.#excludedUrls, excludedUrls) || !this.#compiledExcludedUrls.length) {
|
||||
this.#excludedUrls = excludedUrls;
|
||||
this.#compiledExcludedUrls = excludedUrls.map((url) => new RegExp(url));
|
||||
}
|
||||
return this.#compiledExcludedUrls;
|
||||
}
|
||||
|
||||
unload(tab, skipPermitUnload = false) {
|
||||
gBrowser.explicitUnloadTabs([tab], skipPermitUnload);
|
||||
tab.removeAttribute('linkedpanel');
|
||||
}
|
||||
|
||||
@@ -235,10 +235,10 @@
|
||||
this.explicitUnloadTabs(tabs);
|
||||
}
|
||||
|
||||
explicitUnloadTabs(tabs) {
|
||||
explicitUnloadTabs(tabs, extraArgs = {}) {
|
||||
for (let i = 0; i < tabs.length; i++) {
|
||||
if (this.canUnloadTab(tabs[i], Date.now(), this.intervalUnloader.excludedUrls, true)) {
|
||||
this.unload(tabs[i]);
|
||||
if (this.canUnloadTab(tabs[i], Date.now(), true, extraArgs)) {
|
||||
this.unload(tabs[i], true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -259,28 +259,28 @@
|
||||
}
|
||||
}
|
||||
|
||||
canUnloadTab(tab, currentTimestamp, excludedUrls, ignoreTimestamp = false) {
|
||||
canUnloadTab(tab, currentTimestamp, ignoreTimestamp = false, extraArgs = {}) {
|
||||
if (
|
||||
(tab.pinned && !ignoreTimestamp) ||
|
||||
tab.selected ||
|
||||
(tab.multiselected && !ignoreTimestamp) ||
|
||||
(tab.hasAttribute('busy') && !ignoreTimestamp) ||
|
||||
tab.hasAttribute('pending') ||
|
||||
!tab.linkedPanel ||
|
||||
tab.splitView ||
|
||||
tab.group?.hasAttribute('split-view-group') ||
|
||||
tab.attention ||
|
||||
tab.hasAttribute('glance-id') ||
|
||||
tab.linkedBrowser?.zenModeActive ||
|
||||
(tab.pictureinpicture && !ignoreTimestamp) ||
|
||||
(tab.soundPlaying && !ignoreTimestamp) ||
|
||||
(tab.zenIgnoreUnload && !ignoreTimestamp) ||
|
||||
(excludedUrls.some((url) => url.test(tab.linkedBrowser?.currentURI.spec)) &&
|
||||
(this.excludedUrls.some((url) => url.test(tab.linkedBrowser?.currentURI.spec)) &&
|
||||
tab.linkedBrowser?.currentURI.spec !== 'about:blank')
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
if (ignoreTimestamp) {
|
||||
return true;
|
||||
return this._tabPermitsUnload(tab, extraArgs);
|
||||
}
|
||||
const lastActivity = tab.lastActivity;
|
||||
if (!lastActivity) {
|
||||
@@ -288,7 +288,13 @@
|
||||
}
|
||||
const diff = currentTimestamp - lastActivity;
|
||||
// Check if the tab has been inactive for more than the timeout
|
||||
return diff > lazy.zenTabUnloaderTimeout * 60 * 1000;
|
||||
return diff > lazy.zenTabUnloaderTimeout * 60 * 1000 && this._tabPermitsUnload(tab, extraArgs);
|
||||
}
|
||||
|
||||
_tabPermitsUnload(tab, extraArgs) {
|
||||
return typeof extraArgs.permitUnload === 'undefined'
|
||||
? tab.linkedBrowser?.permitUnload()?.permitUnload
|
||||
: extraArgs.permitUnload;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -61,10 +61,8 @@ class SplitNode extends SplitLeafNode {
|
||||
|
||||
class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
currentView = -1;
|
||||
canChangeTabOnHover = false;
|
||||
_data = [];
|
||||
_tabBrowserPanel = null;
|
||||
__modifierElement = null;
|
||||
__hasSetMenuListener = false;
|
||||
overlay = null;
|
||||
_splitNodeToSplitters = new Map();
|
||||
@@ -78,7 +76,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
MAX_TABS = 4;
|
||||
|
||||
init() {
|
||||
XPCOMUtils.defineLazyPreferenceGetter(this, 'canChangeTabOnHover', 'zen.splitView.change-on-hover', false);
|
||||
this.handleTabEvent = this._handleTabEvent.bind(this);
|
||||
|
||||
XPCOMUtils.defineLazyPreferenceGetter(this, 'minResizeWidth', 'zen.splitView.min-resize-width', 7);
|
||||
XPCOMUtils.defineLazyPreferenceGetter(this, '_edgeHoverSize', 'zen.splitView.rearrange-edge-hover-size', 24);
|
||||
|
||||
@@ -89,7 +88,6 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
window.addEventListener('TabClose', this.handleTabClose.bind(this));
|
||||
window.addEventListener('TabSelect', this.onTabSelect.bind(this));
|
||||
this.initializeContextMenu();
|
||||
this.insertPageActionButton();
|
||||
this.insertIntoContextMenu();
|
||||
|
||||
// Add drag over listener to the browser view
|
||||
@@ -105,7 +103,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
const menuitem = document.createXULElement('menuitem');
|
||||
menuitem.setAttribute('id', 'context-zenSplitLink');
|
||||
menuitem.setAttribute('hidden', 'true');
|
||||
menuitem.setAttribute('oncommand', 'gZenViewSplitter.splitLinkInNewTab();');
|
||||
menuitem.setAttribute('command', 'cmd_zenSplitViewLinkInNewTab');
|
||||
menuitem.setAttribute('data-l10n-id', 'zen-split-link');
|
||||
sibling.insertAdjacentElement('beforebegin', menuitem);
|
||||
}
|
||||
@@ -190,8 +188,9 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this.fakeBrowser ||
|
||||
!this._lastOpenedTab ||
|
||||
(this._lastOpenedTab &&
|
||||
(this._lastOpenedTab.getAttribute('zen-workspace-id') !== draggedTab.getAttribute('zen-workspace-id') ||
|
||||
this._lastOpenedTab.hasAttribute('zen-essential')))
|
||||
this._lastOpenedTab.getAttribute('zen-workspace-id') !== draggedTab.getAttribute('zen-workspace-id') &&
|
||||
!this._lastOpenedTab.hasAttribute('zen-essential')) ||
|
||||
draggedTab === this._lastOpenedTab
|
||||
) {
|
||||
return;
|
||||
}
|
||||
@@ -225,14 +224,26 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this._hasAnimated = true;
|
||||
for (const tab of gBrowser.tabs) {
|
||||
tab.style.removeProperty('transform');
|
||||
if (tab.group) {
|
||||
tab.group.style.removeProperty('transform');
|
||||
}
|
||||
}
|
||||
// Add a min width to all the browser elements to prevent them from resizing
|
||||
const panelsWidth = gBrowser.tabbox.getBoundingClientRect().width;
|
||||
const halfWidth = panelsWidth / 2;
|
||||
const side = event.clientX > halfWidth ? 'right' : 'left';
|
||||
for (const browser of gBrowser.browsers) {
|
||||
const width = browser.getBoundingClientRect().width;
|
||||
// Only apply it to the left side because if we add it to the right side,
|
||||
// we wont be able to move the element to the left.
|
||||
// FIXME: This is a workaround, we should find a better way to do this
|
||||
if (side === 'left') {
|
||||
browser.style.minWidth = `${width}px`;
|
||||
}
|
||||
}
|
||||
this.fakeBrowser = document.createXULElement('vbox');
|
||||
this.fakeBrowser.addEventListener('dragleave', this.onBrowserDragEndToSplit);
|
||||
window.addEventListener('dragend', this.onBrowserDragEndToSplit, { once: true });
|
||||
const padding = Services.prefs.getIntPref('zen.theme.content-element-separation', 0);
|
||||
const padding = ZenThemeModifier.elementSeparation;
|
||||
this.fakeBrowser.setAttribute('flex', '1');
|
||||
this.fakeBrowser.id = 'zen-split-view-fake-browser';
|
||||
if (oldTab.splitView) {
|
||||
@@ -277,6 +288,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
]);
|
||||
if (this._finishAllAnimatingPromise) {
|
||||
this._finishAllAnimatingPromise.then(() => {
|
||||
this.fakeBrowser.addEventListener('dragleave', this.onBrowserDragEndToSplit);
|
||||
this._canDrop = true;
|
||||
draggedTab._visuallySelected = true;
|
||||
});
|
||||
@@ -306,7 +318,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
}
|
||||
const panelsWidth = panelsRect.width;
|
||||
const halfWidth = panelsWidth / 2;
|
||||
const padding = Services.prefs.getIntPref('zen.theme.content-element-separation', 0);
|
||||
const padding = ZenThemeModifier.elementSeparation;
|
||||
if (!this.fakeBrowser) {
|
||||
return;
|
||||
}
|
||||
@@ -613,6 +625,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this.dropZone.setAttribute('enabled', true);
|
||||
}
|
||||
const splitNode = this.getSplitNodeFromTab(tab);
|
||||
if (!splitNode) return;
|
||||
|
||||
const posToRoot = { ...splitNode.positionToRoot };
|
||||
const browserRect = browser.getBoundingClientRect();
|
||||
@@ -769,7 +782,6 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this._removeHeader(container);
|
||||
this.resetContainerStyle(container);
|
||||
container.removeEventListener('mousedown', this.handleTabEvent);
|
||||
container.removeEventListener('mouseover', this.handleTabEvent);
|
||||
if (!forUnsplit) {
|
||||
tab.linkedBrowser.docShellIsActive = false;
|
||||
}
|
||||
@@ -828,23 +840,6 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this.insetUpdateContextMenuItems();
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert Page Action button
|
||||
*/
|
||||
insertPageActionButton() {
|
||||
const element = window.MozXULElement.parseXULToFragment(`
|
||||
<hbox id="zen-split-views-box"
|
||||
hidden="true"
|
||||
role="button"
|
||||
class="urlbar-page-action"
|
||||
onclick="gZenViewSplitter.openSplitViewPanel(event);">
|
||||
<image id="zen-split-views-button"
|
||||
class="urlbar-icon"/>
|
||||
</hbox>
|
||||
`);
|
||||
document.getElementById('star-button-box').after(element);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the tab browser panel.
|
||||
*
|
||||
@@ -893,7 +888,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
return false;
|
||||
}
|
||||
for (const tab of window.gBrowser.selectedTabs) {
|
||||
if (tab.splitView || tab.hasAttribute('zen-empty-tab') || tab.hasAttribute('zen-essential')) {
|
||||
if (tab.splitView || tab.hasAttribute('zen-empty-tab')) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -907,7 +902,14 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
*/
|
||||
async onLocationChange(browser) {
|
||||
this.disableTabRearrangeView();
|
||||
const tab = window.gBrowser.getTabForBrowser(browser);
|
||||
let tab = window.gBrowser.getTabForBrowser(browser);
|
||||
const ignoreSplit = tab.hasAttribute('zen-dont-split-glance');
|
||||
tab.removeAttribute('zen-dont-split-glance');
|
||||
if (tab.hasAttribute('zen-glance-tab') && !ignoreSplit) {
|
||||
// Extract from parent node so we are not selecting the wrong (current) tab
|
||||
tab = tab.parentNode.closest('.tabbrowser-tab');
|
||||
console.assert(tab, 'Tab not found for zen-glance-tab');
|
||||
}
|
||||
this.updateSplitViewButton(!tab?.splitView);
|
||||
if (tab) {
|
||||
this.updateSplitView(tab);
|
||||
@@ -944,14 +946,14 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
*/
|
||||
splitTabs(tabs, gridType, initialIndex = 0) {
|
||||
// TODO: Add support for splitting essential tabs
|
||||
tabs = tabs.filter((t) => !t.hidden && !t.hasAttribute('zen-empty-tab') && !t.hasAttribute('zen-essential'));
|
||||
tabs = tabs.filter((t) => !t.hidden && !t.hasAttribute('zen-empty-tab'));
|
||||
if (tabs.length < 2 || tabs.length > this.MAX_TABS) {
|
||||
return;
|
||||
}
|
||||
this._moveTabsToContainer(tabs, tabs[initialIndex]);
|
||||
|
||||
const existingSplitTab = tabs.find((tab) => tab.splitView);
|
||||
if (existingSplitTab) {
|
||||
this._moveTabsToContainer(tabs, tabs[initialIndex]);
|
||||
const groupIndex = this._data.findIndex((group) => group.tabs.includes(existingSplitTab));
|
||||
const group = this._data[groupIndex];
|
||||
const gridTypeChange = gridType && group.gridType !== gridType;
|
||||
@@ -964,15 +966,36 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
// Add any tabs that are not already in the group
|
||||
for (let i = 0; i < tabs.length; i++) {
|
||||
const tab = tabs[i];
|
||||
if (!group.tabs.includes(tab) && tab.pinned === !!group.pinned) {
|
||||
if (!group.tabs.includes(tab)) {
|
||||
gBrowser.moveTabToGroup(tab, this._getSplitViewGroup(tabs));
|
||||
group.tabs.push(tab);
|
||||
this.addTabToSplit(tab, group.layoutTree);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this._sessionRestoring) {
|
||||
return;
|
||||
}
|
||||
this.activateSplitView(group, true);
|
||||
return;
|
||||
}
|
||||
|
||||
// We are here if none of the tabs have been previously split
|
||||
// If there's ANY pinned tab on the list, we clone the pinned tab
|
||||
// state to all the tabs
|
||||
const allArePinned = tabs.every((tab) => tab.pinned);
|
||||
const thereIsOnePinned = tabs.some((tab) => tab.pinned);
|
||||
const thereIsOneEssential = tabs.some((tab) => tab.hasAttribute('zen-essential'));
|
||||
|
||||
if (thereIsOneEssential || (thereIsOnePinned && !allArePinned)) {
|
||||
for (let i = 0; i < tabs.length; i++) {
|
||||
const tab = tabs[i];
|
||||
if (tab.pinned) {
|
||||
tabs[i] = gBrowser.duplicateTab(tab, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gridType ??= 'grid';
|
||||
|
||||
const splitData = {
|
||||
@@ -981,7 +1004,9 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
layoutTree: this.calculateLayoutTree(tabs, gridType),
|
||||
};
|
||||
this._data.push(splitData);
|
||||
window.gBrowser.selectedTab = tabs[0];
|
||||
if (!this._sessionRestoring) {
|
||||
window.gBrowser.selectedTab = tabs[0];
|
||||
}
|
||||
|
||||
// Add tabs to the split view group
|
||||
let splitGroup = this._getSplitViewGroup(tabs);
|
||||
@@ -992,6 +1017,10 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this._sessionRestoring) {
|
||||
return;
|
||||
}
|
||||
this.activateSplitView(splitData);
|
||||
}
|
||||
|
||||
@@ -1024,13 +1053,13 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
* Deactivates the split view.
|
||||
*/
|
||||
deactivateCurrentSplitView() {
|
||||
this.setTabsDocShellState(this._data[this.currentView].tabs, false);
|
||||
for (const tab of this._data[this.currentView].tabs) {
|
||||
const container = tab.linkedBrowser.closest('.browserSidebarContainer');
|
||||
this.resetContainerStyle(container);
|
||||
}
|
||||
this.removeSplitters();
|
||||
this.tabBrowserPanel.removeAttribute('zen-split-view');
|
||||
this.setTabsDocShellState(this._data[this.currentView].tabs, false);
|
||||
this.updateSplitViewButton(true);
|
||||
this.currentView = -1;
|
||||
this.toggleWrapperDisplay(false);
|
||||
@@ -1055,10 +1084,10 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
|
||||
this.tabBrowserPanel.setAttribute('zen-split-view', 'true');
|
||||
|
||||
this.setTabsDocShellState(splitData.tabs, true);
|
||||
this.updateSplitViewButton(false);
|
||||
this.applyGridToTabs(splitData.tabs);
|
||||
this.applyGridLayout(splitData.layoutTree);
|
||||
this.setTabsDocShellState(splitData.tabs, true);
|
||||
this.toggleWrapperDisplay(true);
|
||||
}
|
||||
|
||||
@@ -1150,7 +1179,9 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
const nodeRootPosition = splitNode.positionToRoot;
|
||||
if (!splitNode.children) {
|
||||
const browserContainer = splitNode.tab.linkedBrowser.closest('.browserSidebarContainer');
|
||||
browserContainer.style.inset = `${nodeRootPosition.top}% ${nodeRootPosition.right}% ${nodeRootPosition.bottom}% ${nodeRootPosition.left}%`;
|
||||
window.requestAnimationFrame(() => {
|
||||
browserContainer.style.inset = `${nodeRootPosition.top}% ${nodeRootPosition.right}% ${nodeRootPosition.bottom}% ${nodeRootPosition.left}%`;
|
||||
});
|
||||
this._tabToSplitNode.set(splitNode.tab, splitNode);
|
||||
return;
|
||||
}
|
||||
@@ -1181,11 +1212,13 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
|
||||
if (i < splittersNeeded) {
|
||||
const splitter = currentSplitters[i];
|
||||
if (splitNode.direction === 'column') {
|
||||
splitter.style.inset = `${100 - childRootPosition.bottom}% ${childRootPosition.right}% 0% ${childRootPosition.left}%`;
|
||||
} else {
|
||||
splitter.style.inset = `${childRootPosition.top}% 0% ${childRootPosition.bottom}% ${100 - childRootPosition.right}%`;
|
||||
}
|
||||
window.requestAnimationFrame(() => {
|
||||
if (splitNode.direction === 'column') {
|
||||
splitter.style.inset = `${100 - childRootPosition.bottom}% ${childRootPosition.right}% 0% ${childRootPosition.left}%`;
|
||||
} else {
|
||||
splitter.style.inset = `${childRootPosition.top}% 0% ${childRootPosition.bottom}% ${100 - childRootPosition.right}%`;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1245,9 +1278,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
* @param {Element} container - The container element.
|
||||
*/
|
||||
styleContainer(container) {
|
||||
container.setAttribute('zen-split-anim', 'true');
|
||||
container.addEventListener('mousedown', this.handleTabEvent);
|
||||
container.addEventListener('mouseover', this.handleTabEvent);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1255,8 +1286,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
*
|
||||
* @param {Event} event - The event.
|
||||
*/
|
||||
handleTabEvent = (event) => {
|
||||
if (this.rearrangeViewEnabled || (event.type === 'mouseover' && !this.canChangeTabOnHover)) {
|
||||
_handleTabEvent = (event) => {
|
||||
if (this.rearrangeViewEnabled) {
|
||||
return;
|
||||
}
|
||||
const container = event.currentTarget.closest('.browserSidebarContainer');
|
||||
@@ -1344,8 +1375,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
browser.addEventListener('dragstart', this.onBrowserDragStart);
|
||||
browser.addEventListener('dragend', this.onBrowserDragEnd);
|
||||
} else {
|
||||
browser.removeAttribute('zen-split');
|
||||
browser.removeAttribute('style');
|
||||
// browser.removeAttribute('zen-split');
|
||||
// browser.removeAttribute('style');
|
||||
|
||||
browser.removeEventListener('dragstart', this.onBrowserDragStart);
|
||||
browser.removeEventListener('dragend', this.onBrowserDragEnd);
|
||||
@@ -1377,42 +1408,6 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the modifier element.
|
||||
*
|
||||
* @returns {Element} The modifier element.
|
||||
*/
|
||||
get modifierElement() {
|
||||
if (!this.__modifierElement) {
|
||||
const wrapper = document.getElementById('template-zen-split-view-modifier');
|
||||
const panel = wrapper.content.firstElementChild;
|
||||
wrapper.replaceWith(wrapper.content);
|
||||
this.__modifierElement = panel;
|
||||
}
|
||||
return this.__modifierElement;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the split view panel.
|
||||
*
|
||||
* @param {Event} event - The event that triggered the panel opening.
|
||||
*/
|
||||
async openSplitViewPanel(event) {
|
||||
const panel = this.modifierElement;
|
||||
const target = event.target.parentNode;
|
||||
this.updatePanelUI(panel);
|
||||
|
||||
if (!this.__hasSetMenuListener) {
|
||||
this.setupPanelListeners(panel);
|
||||
this.__hasSetMenuListener = true;
|
||||
}
|
||||
|
||||
window.PanelMultiView.openPopup(panel, target, {
|
||||
position: 'bottomright topright',
|
||||
triggerEvent: event,
|
||||
}).catch(console.error);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the UI of the panel.
|
||||
*
|
||||
@@ -1428,34 +1423,6 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description sets up the listeners for the panel.
|
||||
* @param {Element} panel - The panel element
|
||||
*/
|
||||
setupPanelListeners(panel) {
|
||||
for (const gridType of ['hsep', 'vsep', 'grid', 'unsplit']) {
|
||||
const selector = panel.querySelector(`.zen-split-view-modifier-preview.${gridType}`);
|
||||
selector.addEventListener('click', () => this.handlePanelSelection(gridType, panel));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description handles the panel selection.
|
||||
* @param {string} gridType - The grid type
|
||||
* @param {Element} panel - The panel element
|
||||
*/
|
||||
handlePanelSelection(gridType, panel) {
|
||||
if (gridType === 'unsplit') {
|
||||
this.unsplitCurrentView();
|
||||
} else {
|
||||
const group = this._data[this.currentView];
|
||||
group.gridType = gridType;
|
||||
group.layoutTree = this.calculateLayoutTree(group.tabs, gridType);
|
||||
this.activateSplitView(group, true);
|
||||
}
|
||||
panel.hidePopup();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description unsplit the current view.]
|
||||
*/
|
||||
@@ -1535,6 +1502,9 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
gBrowser.selectedTab = this._draggingTab;
|
||||
this._draggingTab = null;
|
||||
}
|
||||
for (const browser of gBrowser.browsers) {
|
||||
browser.removeAttribute('style');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1555,7 +1525,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
|
||||
const dropSide = this.fakeBrowser?.getAttribute('side');
|
||||
const containerRect = this.fakeBrowser.getBoundingClientRect();
|
||||
const padding = Services.prefs.getIntPref('zen.theme.content-element-separation', 0);
|
||||
const padding = ZenThemeModifier.elementSeparation;
|
||||
const dropTarget = document.elementFromPoint(
|
||||
dropSide === 'left' ? containerRect.left + containerRect.width + padding + 5 : containerRect.left - padding - 5,
|
||||
event.clientY
|
||||
@@ -1641,28 +1611,32 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
}
|
||||
|
||||
if (browserContainer) {
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
browserContainer,
|
||||
{
|
||||
scale: [0.97, 1],
|
||||
opacity: [0, 1],
|
||||
},
|
||||
{
|
||||
type: 'spring',
|
||||
bounce: 0.4,
|
||||
duration: 0.2,
|
||||
delay: 0.1,
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
this._maybeRemoveFakeBrowser(false);
|
||||
this._finishAllAnimatingPromise = null;
|
||||
});
|
||||
this.animateBrowserDrop(browserContainer, () => {
|
||||
this._maybeRemoveFakeBrowser(false);
|
||||
this._finishAllAnimatingPromise = null;
|
||||
});
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
animateBrowserDrop(browserContainer, callback = () => {}) {
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
browserContainer,
|
||||
{
|
||||
scale: [0.97, 1],
|
||||
opacity: [0, 1],
|
||||
},
|
||||
{
|
||||
type: 'spring',
|
||||
bounce: 0.4,
|
||||
duration: 0.2,
|
||||
delay: 0.1,
|
||||
}
|
||||
)
|
||||
.then(callback);
|
||||
}
|
||||
|
||||
handleTabDrop(event, urls, replace, inBackground) {
|
||||
if (replace || urls.length !== 1) {
|
||||
return false;
|
||||
@@ -1722,6 +1696,43 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
storeDataForSessionStore() {
|
||||
// We cant store any tab or browser elements in the session store
|
||||
// so we need to store the tab indexes and group indexes
|
||||
const data = this._data.map((group) => {
|
||||
return {
|
||||
groupId: group.tabs[0].group?.id,
|
||||
gridType: group.gridType,
|
||||
};
|
||||
});
|
||||
return data;
|
||||
}
|
||||
|
||||
restoreDataFromSessionStore(data) {
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
this._sessionRestoring = true;
|
||||
// We can just get the tab group with document.getElementById(group.groupId)
|
||||
// and add the tabs to it
|
||||
for (const group of data) {
|
||||
const groupElement = document.getElementById(group.groupId);
|
||||
if (groupElement) {
|
||||
const tabs = groupElement.querySelectorAll('tab');
|
||||
this.splitTabs([...tabs], group.gridType);
|
||||
}
|
||||
}
|
||||
delete this._sessionRestoring;
|
||||
}
|
||||
|
||||
onAfterWorkspaceSessionRestore() {
|
||||
if (gBrowser.selectedTab.group?.hasAttribute('split-view-group') && !gBrowser.selectedTab.pinned) {
|
||||
// Activate all browsers in the split view
|
||||
this.currentView = -1;
|
||||
this.onLocationChange(gBrowser.selectedTab.linkedBrowser);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.gZenViewSplitter = new ZenViewSplitter();
|
||||
|
@@ -52,13 +52,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
function openWelcomeTab() {
|
||||
const tab = window.gBrowser.addTrustedTab('https://zen-browser.app/welcome', {
|
||||
inBackground: true,
|
||||
});
|
||||
gBrowser.selectedTab = tab;
|
||||
}
|
||||
|
||||
class ZenWelcomePages {
|
||||
constructor(pages) {
|
||||
this._currentPage = -1;
|
||||
@@ -410,7 +403,6 @@
|
||||
_tabsToPinEssentials.push(createdTab);
|
||||
}
|
||||
openInitialPinTab();
|
||||
openWelcomeTab();
|
||||
},
|
||||
},
|
||||
{
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user