Compare commits
262 Commits
1.0.0-a.24
...
1.0.0-a.35
Author | SHA1 | Date | |
---|---|---|---|
![]() |
37adddc0ed | ||
![]() |
7ef180fe7e | ||
![]() |
80e99b649d | ||
![]() |
762b18ff1e | ||
![]() |
9f3b50d84a | ||
![]() |
a132748dc2 | ||
![]() |
69d2696666 | ||
![]() |
4d6c2c3650 | ||
![]() |
3ce32d6516 | ||
![]() |
1590ea7944 | ||
![]() |
acf057acc5 | ||
![]() |
54395acd2a | ||
![]() |
0fe51f1a73 | ||
![]() |
379e74b8b1 | ||
![]() |
18baa341fc | ||
![]() |
dd86acde88 | ||
![]() |
cda31c11e9 | ||
![]() |
753a34eebf | ||
![]() |
13b78a8fc1 | ||
![]() |
a374ab186a | ||
![]() |
74e3407a42 | ||
![]() |
3e5742be0d | ||
![]() |
881f556534 | ||
![]() |
5ce28c0136 | ||
![]() |
74f304ef18 | ||
![]() |
467b444535 | ||
![]() |
0fc27c755e | ||
![]() |
cf9b266bca | ||
![]() |
ced7d3c4a6 | ||
![]() |
e78fa3f544 | ||
![]() |
dfa316831f | ||
![]() |
668124e1d0 | ||
![]() |
9eb70c3b79 | ||
![]() |
94463e9fa5 | ||
![]() |
1522afd6ca | ||
![]() |
01e8d7f495 | ||
![]() |
d8db68a92d | ||
![]() |
2dc6b1109e | ||
![]() |
200d74d14c | ||
![]() |
fa601a6aaa | ||
![]() |
1cf4458cd9 | ||
![]() |
385a275337 | ||
![]() |
b1be94a29d | ||
![]() |
7ca9ba00b5 | ||
![]() |
8f909cf418 | ||
![]() |
76c84c605d | ||
![]() |
2195a9804e | ||
![]() |
ba289ca71f | ||
![]() |
604ac5dd49 | ||
![]() |
98b2c582f2 | ||
![]() |
2ab5f5f9d9 | ||
![]() |
85b97d790a | ||
![]() |
b07f2ebbd6 | ||
![]() |
2cbf882258 | ||
![]() |
27d0d6805f | ||
![]() |
649bc32b1f | ||
![]() |
504737f4ea | ||
![]() |
10eae96486 | ||
![]() |
dd9124a99a | ||
![]() |
7b836d1232 | ||
![]() |
00e0892c31 | ||
![]() |
c44b844770 | ||
![]() |
2cdb14c184 | ||
![]() |
912aeba7b4 | ||
![]() |
10aad8c6ed | ||
![]() |
296cb9c44f | ||
![]() |
619d54ddc6 | ||
![]() |
c0923fbe0a | ||
![]() |
689789f2e9 | ||
![]() |
2eaf348eda | ||
![]() |
1f25a3c502 | ||
![]() |
4d9d8be4a4 | ||
![]() |
7bf5aa2015 | ||
![]() |
c2762c4eb9 | ||
![]() |
f5f3792165 | ||
![]() |
212e6e4bf8 | ||
![]() |
ca6f7c0b3a | ||
![]() |
70df8829fb | ||
![]() |
b586880d44 | ||
![]() |
758a5cc44a | ||
![]() |
985a3f433c | ||
![]() |
95545dcec9 | ||
![]() |
541d2f7baa | ||
![]() |
b5566038e2 | ||
![]() |
bcf8b190d7 | ||
![]() |
3ad9874ded | ||
![]() |
32ef547349 | ||
![]() |
9ad90e7298 | ||
![]() |
f2a8c3665d | ||
![]() |
98e97585e1 | ||
![]() |
fcb95175de | ||
![]() |
63bf09bc3c | ||
![]() |
b39570d9e5 | ||
![]() |
d83908bcff | ||
![]() |
a7f6a1ef4f | ||
![]() |
f849bc0a1a | ||
![]() |
dd5d8dce77 | ||
![]() |
82f933af93 | ||
![]() |
52485459a9 | ||
![]() |
6a4e81d1a1 | ||
![]() |
9b3afb58cd | ||
![]() |
802a7300e0 | ||
![]() |
87ca7d2d73 | ||
![]() |
1cdb0404fd | ||
![]() |
09b3197aa4 | ||
![]() |
4fe83e8f25 | ||
![]() |
b8361cc8ea | ||
![]() |
ac37939c6e | ||
![]() |
81a2b5b874 | ||
![]() |
094295ba93 | ||
![]() |
7bea297965 | ||
![]() |
378ea1cab1 | ||
![]() |
f22e1f6503 | ||
![]() |
0345322c06 | ||
![]() |
61cf75f84c | ||
![]() |
866b9d74ef | ||
![]() |
d5bbcd0617 | ||
![]() |
78fa236bec | ||
![]() |
35fb5f510e | ||
![]() |
cc340432ba | ||
![]() |
d87315da49 | ||
![]() |
bf4e47f8fb | ||
![]() |
162a98fd1b | ||
![]() |
a6aeafa668 | ||
![]() |
31bd7b14dd | ||
![]() |
ab793ff424 | ||
![]() |
043755c1a0 | ||
![]() |
42a0140d8d | ||
![]() |
ed923b73cc | ||
![]() |
06adcdbcb6 | ||
![]() |
7f4265dfe4 | ||
![]() |
cd3a09d26b | ||
![]() |
09585654ee | ||
![]() |
67bc214cc9 | ||
![]() |
4cef2dd304 | ||
![]() |
c313c95c81 | ||
![]() |
7427fa0017 | ||
![]() |
10c10523f1 | ||
![]() |
21c537f000 | ||
![]() |
4920433736 | ||
![]() |
57e2c4af0a | ||
![]() |
9652725e84 | ||
![]() |
21635d9d63 | ||
![]() |
c7845a8e8f | ||
![]() |
c0aa1664cb | ||
![]() |
f72e38fd54 | ||
![]() |
d39ae862d6 | ||
![]() |
00d0eb8fc8 | ||
![]() |
80866de5fe | ||
![]() |
3dbb8a9bc2 | ||
![]() |
a47edaefaa | ||
![]() |
0c7dbbc2c6 | ||
![]() |
45515149e0 | ||
![]() |
b8da76745d | ||
![]() |
7d55d670ee | ||
![]() |
a74ec9650c | ||
![]() |
fdb5627da6 | ||
![]() |
60687d6b03 | ||
![]() |
dd68add538 | ||
![]() |
ea34bec55a | ||
![]() |
3def55d48b | ||
![]() |
5c4c3e6fb2 | ||
![]() |
c0d101aef0 | ||
![]() |
cc022ddd2f | ||
![]() |
511ca88aec | ||
![]() |
9217e32439 | ||
![]() |
2444bb04fc | ||
![]() |
c502719bd7 | ||
![]() |
d3a9ec4b3c | ||
![]() |
8a646bcc95 | ||
![]() |
92959769df | ||
![]() |
e4d56fd7d9 | ||
![]() |
b77f864668 | ||
![]() |
e02a44b20b | ||
![]() |
eb2d91256f | ||
![]() |
ff9876ebac | ||
![]() |
d6ddb542e9 | ||
![]() |
8ba6ba14e8 | ||
![]() |
6c58c9d61c | ||
![]() |
6f0609dd8c | ||
![]() |
ebba41c735 | ||
![]() |
65e040d987 | ||
![]() |
29a85db998 | ||
![]() |
d50a745e95 | ||
![]() |
a5854174c7 | ||
![]() |
5ef37aa079 | ||
![]() |
4c622d1429 | ||
![]() |
5593e7c437 | ||
![]() |
940bbae367 | ||
![]() |
4d8558929c | ||
![]() |
c05547248f | ||
![]() |
1a5e788476 | ||
![]() |
0af7b8b5b6 | ||
![]() |
95e444c31c | ||
![]() |
b011ad3de9 | ||
![]() |
ff188e0e1c | ||
![]() |
5ef88531d2 | ||
![]() |
410c875151 | ||
![]() |
bbad093d64 | ||
![]() |
e7103f1d87 | ||
![]() |
d9c3973b9d | ||
![]() |
d65681505d | ||
![]() |
739eff84f2 | ||
![]() |
d5e7d0c36f | ||
![]() |
90ca6ea99a | ||
![]() |
fdb4696066 | ||
![]() |
22a5dcddf3 | ||
![]() |
47ba86f211 | ||
![]() |
e2e7756649 | ||
![]() |
85b605db14 | ||
![]() |
cf48a52949 | ||
![]() |
dfde0f4baa | ||
![]() |
31b41329f2 | ||
![]() |
f856d9db6d | ||
![]() |
4187e20fbc | ||
![]() |
54b4f6e932 | ||
![]() |
bcabada80e | ||
![]() |
5c1decc77b | ||
![]() |
04af43909e | ||
![]() |
e808443631 | ||
![]() |
a47023e0f3 | ||
![]() |
ae9c99c7bc | ||
![]() |
187688e6ea | ||
![]() |
7854e26823 | ||
![]() |
d38eb962de | ||
![]() |
b2c2a134b0 | ||
![]() |
4874b4a1cd | ||
![]() |
983e85033f | ||
![]() |
38e6f075f4 | ||
![]() |
4146ad0936 | ||
![]() |
cf2435081a | ||
![]() |
e6f8eede34 | ||
![]() |
72f76608b6 | ||
![]() |
4eb07c762a | ||
![]() |
bbb4b64940 | ||
![]() |
cac80a2985 | ||
![]() |
ca1a63dbf1 | ||
![]() |
31fb9296c7 | ||
![]() |
7dd3e08409 | ||
![]() |
b537e5566a | ||
![]() |
5dd2a90f46 | ||
![]() |
034f351ac6 | ||
![]() |
195b215f5b | ||
![]() |
74d1385566 | ||
![]() |
957fe60a3d | ||
![]() |
5ac6cf4465 | ||
![]() |
29d9c85923 | ||
![]() |
78729d44de | ||
![]() |
483bee452e | ||
![]() |
8a87e3a0af | ||
![]() |
07283e1050 | ||
![]() |
1eaf6e49ef | ||
![]() |
c40d56b3b8 | ||
![]() |
ed7ad501b7 | ||
![]() |
964e0733b1 | ||
![]() |
c319a83d58 | ||
![]() |
4589c543da | ||
![]() |
0c3930425a | ||
![]() |
2f790586b2 | ||
![]() |
7d3b47f4f6 | ||
![]() |
69a1e0f1b9 | ||
![]() |
f78ad97710 |
34
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,10 +1,25 @@
|
|||||||
name: Bug Report Or Feature Request
|
name: Bug Report
|
||||||
description: File a bug report
|
description: File a bug report
|
||||||
|
labels: [Triage]
|
||||||
body:
|
body:
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
Thank you for filing a bug report.
|
Thank you for filing a bug report.
|
||||||
|
|
||||||
|
## Important
|
||||||
|
- 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.
|
||||||
|
- type: checkboxes
|
||||||
|
id: captchas
|
||||||
|
attributes:
|
||||||
|
label: Captchas
|
||||||
|
description: Just making sure you did actually read the instructions.
|
||||||
|
options:
|
||||||
|
- label: I have read the instructions.
|
||||||
|
- label: I have searched existing issues and avoided creating duplicates.
|
||||||
|
- label: I am not filing an enhancement request.
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: what-happened
|
id: what-happened
|
||||||
attributes:
|
attributes:
|
||||||
@@ -19,7 +34,7 @@ body:
|
|||||||
label: Reproducible?
|
label: Reproducible?
|
||||||
description: Is this issue reproducible on Firefox?
|
description: Is this issue reproducible on Firefox?
|
||||||
options:
|
options:
|
||||||
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
||||||
- type: input
|
- type: input
|
||||||
id: version
|
id: version
|
||||||
attributes:
|
attributes:
|
||||||
@@ -28,21 +43,6 @@ body:
|
|||||||
placeholder: 1.0.0
|
placeholder: 1.0.0
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
|
||||||
id: severity
|
|
||||||
attributes:
|
|
||||||
label: Severity impact
|
|
||||||
description: See label descriptions for more information.
|
|
||||||
options:
|
|
||||||
- Low
|
|
||||||
- Medium
|
|
||||||
- High
|
|
||||||
- Critical
|
|
||||||
- Enhancement
|
|
||||||
multiple: true
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: platform
|
id: platform
|
||||||
attributes:
|
attributes:
|
||||||
|
32
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -1,32 +0,0 @@
|
|||||||
name: Feature Request
|
|
||||||
description: File a feature request
|
|
||||||
labels:
|
|
||||||
- "kind: enhancement"
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Thank you for filing a feature request.
|
|
||||||
- type: textarea
|
|
||||||
id: what-happened
|
|
||||||
attributes:
|
|
||||||
label: What feature would you like to see?
|
|
||||||
description: Please describe the feature you would like to see.
|
|
||||||
placeholder: Tell us what you would like to see!
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: dropdown
|
|
||||||
id: platform
|
|
||||||
attributes:
|
|
||||||
label: What platform are you seeing the problem on?
|
|
||||||
options:
|
|
||||||
- Linux
|
|
||||||
- macOS
|
|
||||||
- Windows
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: logs
|
|
||||||
attributes:
|
|
||||||
label: Additional context
|
|
||||||
description: Add any other context about the feature request here.
|
|
18
.github/advanced-issue-labeler.yml
vendored
@@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
# Keep up to date with workflows/issue-create.yml !!!
|
|
||||||
|
|
||||||
policy:
|
|
||||||
- section:
|
|
||||||
- id: [severity]
|
|
||||||
label:
|
|
||||||
- name: 'kind: low severity'
|
|
||||||
keys: ['Low']
|
|
||||||
- name: 'kind: medium severity'
|
|
||||||
keys: ['Medium']
|
|
||||||
- name: 'kind: high severity'
|
|
||||||
keys: ['High']
|
|
||||||
- name: 'kind: critical severity'
|
|
||||||
keys: ['Critical']
|
|
||||||
- name: 'kind: enhancement'
|
|
||||||
keys: ['Enhancement']
|
|
||||||
|
|
148
.github/workflows/alpha.yml
vendored
@@ -186,28 +186,28 @@ jobs:
|
|||||||
name: zen.source.tar.gz
|
name: zen.source.tar.gz
|
||||||
path: ./zen.source.tar.gz
|
path: ./zen.source.tar.gz
|
||||||
|
|
||||||
#windows-step-1:
|
windows-step-1:
|
||||||
# name: Windows build step 1 (PGO build)
|
name: Windows build step 1 (PGO build)
|
||||||
# uses: ./.github/workflows/windows-alpha-build.yml
|
uses: ./.github/workflows/windows-alpha-build.yml
|
||||||
# needs: [build-data]
|
needs: [build-data]
|
||||||
# permissions:
|
permissions:
|
||||||
# contents: write
|
contents: write
|
||||||
# secrets: inherit
|
secrets: inherit
|
||||||
# with:
|
with:
|
||||||
# build-version: ${{ needs.build-data.outputs.version }}
|
build-version: ${{ needs.build-data.outputs.version }}
|
||||||
# generate-gpo: true
|
generate-gpo: true
|
||||||
# profile-data-path-archive: zen-windows-x86_64-profile-data-and-jarlog.zip
|
profile-data-path-archive: zen-windows-x86_64-profile-data-and-jarlog.zip
|
||||||
|
|
||||||
#windows-step-2:
|
windows-step-2:
|
||||||
# name: Windows build step 2 (Generate profile data)
|
name: Windows build step 2 (Generate profile data)
|
||||||
# uses: ./.github/workflows/windows-profile-build.yml
|
uses: ./.github/workflows/windows-profile-build.yml
|
||||||
# permissions:
|
permissions:
|
||||||
# contents: write
|
contents: write
|
||||||
# secrets: inherit
|
secrets: inherit
|
||||||
# needs: [windows-step-1, build-data]
|
needs: [windows-step-1, build-data]
|
||||||
# with:
|
with:
|
||||||
# build-version: ${{ needs.build-data.outputs.version }}
|
build-version: ${{ needs.build-data.outputs.version }}
|
||||||
# profile-data-path-archive: zen.win64-pgo-stage-1.zip
|
profile-data-path-archive: zen.win64-pgo-stage-1.zip
|
||||||
|
|
||||||
windows-step-3:
|
windows-step-3:
|
||||||
name: Windows build step 3 (build with profile data)
|
name: Windows build step 3 (build with profile data)
|
||||||
@@ -215,7 +215,7 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
needs: [build-data]
|
needs: [build-data, windows-step-2]
|
||||||
with:
|
with:
|
||||||
build-version: ${{ needs.build-data.outputs.version }}
|
build-version: ${{ needs.build-data.outputs.version }}
|
||||||
generate-gpo: false
|
generate-gpo: false
|
||||||
@@ -382,11 +382,68 @@ jobs:
|
|||||||
zen.macos-x64.dmg
|
zen.macos-x64.dmg
|
||||||
zen.macos-aarch64.dmg
|
zen.macos-aarch64.dmg
|
||||||
|
|
||||||
|
prepare-flatpak:
|
||||||
|
if: ${{ github.event.inputs.create_release == 'true' }}
|
||||||
|
permissions: write-all
|
||||||
|
name: Prepare Flatpak
|
||||||
|
needs: [release, linux, build-data]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Clone flatpak repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: zen-browser/release-utils
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
npm install
|
||||||
|
|
||||||
|
- name: Generate new flatpak release
|
||||||
|
run: |
|
||||||
|
npm run build-flatpak -- \
|
||||||
|
--version ${{ needs.build-data.outputs.version }}
|
||||||
|
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: 🚀 Update releases for flatpak
|
||||||
|
commit_user_name: Zen Browser Robot
|
||||||
|
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||||
|
|
||||||
|
- name: Clone flatpak repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: zen-browser/flatpak
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
path: flatpak
|
||||||
|
|
||||||
|
- name: Move releases.xml
|
||||||
|
run: |
|
||||||
|
pwd
|
||||||
|
ls .
|
||||||
|
ls ..
|
||||||
|
mv releases.xml ./flatpak/io.github.zen_browser.zen.metainfo.xml
|
||||||
|
# output the version to the file
|
||||||
|
echo -n ${{ needs.build-data.outputs.version }} > ./flatpak/version
|
||||||
|
|
||||||
|
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: '[release]: Update flatpak manifest'
|
||||||
|
commit_user_name: Zen Browser Robot
|
||||||
|
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||||
|
repository: ./flatpak
|
||||||
|
|
||||||
|
- name: Wait 4 minutes for the flatpak repo to update
|
||||||
|
run: sleep 240
|
||||||
|
|
||||||
release-flatpak:
|
release-flatpak:
|
||||||
if: ${{ github.event.inputs.create_release == 'true' }}
|
if: ${{ github.event.inputs.create_release == 'true' }}
|
||||||
permissions: write-all
|
permissions: write-all
|
||||||
name: Release Flatpak
|
name: Release Flatpak
|
||||||
needs: [release, linux, build-data]
|
needs: [prepare-flatpak]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -454,10 +511,53 @@ jobs:
|
|||||||
body: |
|
body: |
|
||||||
This PR updates the Zen Browser Flatpak package to version ${{ needs.build-data.outputs.version }}.
|
This PR updates the Zen Browser Flatpak package to version ${{ needs.build-data.outputs.version }}.
|
||||||
|
|
||||||
@mauro-balades
|
@${{ github.actor }} please review and merge this PR.
|
||||||
branch: update-to-${{ needs.build-data.outputs.version }}
|
branch: update-to-${{ needs.build-data.outputs.version }}
|
||||||
base: master
|
base: master
|
||||||
git-token: ${{ secrets.DEPLOY_KEY }}
|
git-token: ${{ secrets.DEPLOY_KEY }}
|
||||||
delete-branch: true
|
delete-branch: true
|
||||||
|
|
||||||
|
release-homebrew:
|
||||||
|
if: ${{ github.event.inputs.create_release == 'true' }}
|
||||||
|
permissions: write-all
|
||||||
|
name: Homebrew release
|
||||||
|
needs: [release, mac, build-data]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Clone flatpak repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: flathub/io.github.zen_browser.zen
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
|
- name: Setup git
|
||||||
|
run: |
|
||||||
|
git config --global user.name "github-actions[bot]"
|
||||||
|
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
|
||||||
|
- name: Download macOS ARM build
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: zen.macos-aarch64.dmg
|
||||||
|
|
||||||
|
- name: Download macOS x64 build
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: zen.macos-x64.dmg
|
||||||
|
|
||||||
|
- name: Update zen-browser Cask
|
||||||
|
run: sh .github/workflows/src/update-homebrew.sh
|
||||||
|
|
||||||
|
- name: Clean up
|
||||||
|
run: |
|
||||||
|
rm -rf zen.macos-x64.dmg
|
||||||
|
rm -rf zen.macos-aarch64.dmg
|
||||||
|
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
if: ${{ github.event.inputs.update_version == 'true' }}
|
||||||
|
with:
|
||||||
|
commit_message: 🔖 Update version to ${{ steps.data.outputs.version }} for homebrew!
|
||||||
|
commit_user_name: Zen Browser Robot
|
||||||
|
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||||
|
|
||||||
|
35
.github/workflows/issue-create.yml
vendored
@@ -1,35 +0,0 @@
|
|||||||
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@v3
|
|
||||||
|
|
||||||
- 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 severity field
|
|
||||||
uses: redhat-plumbers-in-action/advanced-issue-labeler@v3
|
|
||||||
with:
|
|
||||||
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
section: severity
|
|
3
.github/workflows/linux-alpha-build.yml
vendored
@@ -97,6 +97,9 @@ jobs:
|
|||||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||||
run: pnpm surfer import
|
run: pnpm surfer import
|
||||||
|
|
||||||
|
- name: Build language packs
|
||||||
|
run: sh scripts/download-language-packs.sh
|
||||||
|
|
||||||
- name: Bootstrap
|
- name: Bootstrap
|
||||||
run: |
|
run: |
|
||||||
cd engine
|
cd engine
|
||||||
|
27
.github/workflows/macos-alpha-build.yml
vendored
@@ -103,7 +103,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||||
run: |
|
run: |
|
||||||
pnpm surfer import
|
pnpm surfer import --verbose
|
||||||
|
|
||||||
|
- name: Build language packs
|
||||||
|
run: sh scripts/download-language-packs.sh
|
||||||
|
|
||||||
- name: build Zen
|
- name: build Zen
|
||||||
env:
|
env:
|
||||||
@@ -118,6 +121,24 @@ jobs:
|
|||||||
if: failure()
|
if: failure()
|
||||||
run: sh .github/workflows/src/alpha-build.sh
|
run: sh .github/workflows/src/alpha-build.sh
|
||||||
|
|
||||||
|
- name: import APPLE DEVELOPER ID CERTIFICATE for .app
|
||||||
|
uses: apple-actions/import-codesign-certs@v3
|
||||||
|
with:
|
||||||
|
p12-file-base64: ${{ secrets.macOS_CERTIFICATES_P12_For_App_BASE64 }}
|
||||||
|
p12-password: ${{ secrets.macOS_CERTIFICATES_P12_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Sign to .app 🖋️
|
||||||
|
run: |
|
||||||
|
ls engine
|
||||||
|
ls engine/obj-${{ matrix.arch == 'x64' && 'x86_64' || 'aarch64' }}-apple-darwin
|
||||||
|
ls engine/obj-${{ matrix.arch == 'x64' && 'x86_64' || 'aarch64' }}-apple-darwin/dist
|
||||||
|
chmod +x ./build/codesign/sign.bash
|
||||||
|
./build/codesign/sign.bash \
|
||||||
|
-a "./engine/obj-${{ matrix.arch == 'x64' && 'x86_64' || 'aarch64' }}-apple-darwin/dist/Zen Browser.app" \
|
||||||
|
-i "${{ secrets.macOS_AppleDeveloperId }}" \
|
||||||
|
-b "./build/codesign/browser.developer.entitlements.xml" \
|
||||||
|
-p "./build/codesign/plugin-container.developer.entitlements.xml"
|
||||||
|
|
||||||
- name: Package
|
- name: Package
|
||||||
env:
|
env:
|
||||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||||
@@ -128,6 +149,10 @@ jobs:
|
|||||||
mv ./dist/*.dmg "zen.macos-${{ matrix.arch }}.dmg"
|
mv ./dist/*.dmg "zen.macos-${{ matrix.arch }}.dmg"
|
||||||
mv ./dist/output.mar macos-${{ matrix.arch }}.mar
|
mv ./dist/output.mar macos-${{ matrix.arch }}.mar
|
||||||
|
|
||||||
|
- name: Sign to .dmg
|
||||||
|
run: |
|
||||||
|
codesign -s "${{ secrets.macOS_AppleDeveloperId }}" zen.macos-${{ matrix.arch }}.dmg
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
7
.github/workflows/src/update-homebrew.sh
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
latest_version=$(git describe --tags --abbrev=0)
|
||||||
|
sed -i "s/version(.*)/version('${latest_version}')/" ./Casks/zen-browser.rb
|
||||||
|
|
||||||
|
sha_x64=$(shasum -a 256 zen.macos-x64.dmg)
|
||||||
|
sha_arm=$(shasum -a 256 zen.macos-aarch64.dmg)
|
||||||
|
|
||||||
|
sed -i "s/sha256(.*)/sha256(arm:'${sha_arm}', intel:'${sha_x64}')/" ./Casks/zen-browser.rb
|
29
.github/workflows/windows-alpha-build.yml
vendored
@@ -118,7 +118,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cd engine/
|
cd engine/
|
||||||
# Install a rust version compatible with 17
|
# Install a rust version compatible with 17
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.76
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79
|
||||||
source $HOME/.cargo/env
|
source $HOME/.cargo/env
|
||||||
|
|
||||||
rustup target add x86_64-pc-windows-msvc
|
rustup target add x86_64-pc-windows-msvc
|
||||||
@@ -130,16 +130,30 @@ jobs:
|
|||||||
echo "" >> ../configs/common/mozconfig
|
echo "" >> ../configs/common/mozconfig
|
||||||
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.52.0" >> ../configs/common/mozconfig
|
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.52.0" >> ../configs/common/mozconfig
|
||||||
|
|
||||||
|
- name: Import
|
||||||
|
env:
|
||||||
|
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||||
|
run: pnpm surfer import --verbose
|
||||||
|
|
||||||
|
- name: Build language packs
|
||||||
|
run: sh scripts/download-language-packs.sh
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
name: Download artifact if use profdata
|
name: Download artifact if use profdata
|
||||||
if: ${{ !inputs.generate-gpo }}
|
if: ${{ !inputs.generate-gpo }}
|
||||||
with:
|
with:
|
||||||
path: ~/artifact
|
path: ~/artifact
|
||||||
|
name: windows-profdata-${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||||
|
|
||||||
- name: Import
|
- name: Show artifact info
|
||||||
env:
|
if: ${{ !inputs.generate-gpo }}
|
||||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
run: |
|
||||||
run: pnpm surfer import --verbose
|
ls ~/artifact
|
||||||
|
ls ~/artifact/en-US.log
|
||||||
|
ls ~/artifact/merged.profdata
|
||||||
|
|
||||||
|
chmod +x ~/artifact/en-US.log
|
||||||
|
chmod +x ~/artifact/merged.profdata
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
env:
|
env:
|
||||||
@@ -165,6 +179,11 @@ jobs:
|
|||||||
ls ./dist
|
ls ./dist
|
||||||
ls .
|
ls .
|
||||||
|
|
||||||
|
- name: 🐛 Debug Session
|
||||||
|
if: ${{ failure() }}
|
||||||
|
uses: Warpbuilds/gha-debug@v1.3
|
||||||
|
timeout-minutes: 15
|
||||||
|
|
||||||
- name: Move package for PGO upload
|
- name: Move package for PGO upload
|
||||||
if: ${{ inputs.generate-gpo }}
|
if: ${{ inputs.generate-gpo }}
|
||||||
run: |
|
run: |
|
||||||
|
18
.github/workflows/windows-profile-build.yml
vendored
@@ -72,17 +72,23 @@ jobs:
|
|||||||
echo 'ls /c/Users/runneradmin/.mozbuild/clang/bin' '' >> 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
|
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
|
C:\mozilla-build\start-shell.bat $workspace_dir_current\mozilla-build-run.sh
|
||||||
|
|
||||||
- name: 🐛 Debug Session
|
- name: 🐛 Debug Session
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: Warpbuilds/gha-debug@v1.3
|
uses: Warpbuilds/gha-debug@v1.3
|
||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
|
|
||||||
- name: Publish merged.profdata
|
- name: Move profile data
|
||||||
uses: actions/upload-artifact@v4
|
run: |
|
||||||
with:
|
dir
|
||||||
path: merged-${{ matrix.generic == true && 'generic' || 'specific' }}.profdata
|
dir engine
|
||||||
|
mv engine/merged.profdata merged.profdata
|
||||||
|
mv engine/en-US.log en-US.log
|
||||||
|
|
||||||
- name: Publish en-US.log
|
- name: Publish artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
path: en-US-${{ matrix.generic == true && 'generic' || 'specific' }}.log
|
path: |
|
||||||
|
merged.profdata
|
||||||
|
en-US.log
|
||||||
|
name: windows-profdata-${{ matrix.generic == true && 'generic' || 'specific' }}
|
3
.gitmodules
vendored
@@ -1,3 +1,6 @@
|
|||||||
[submodule "src/browser/base/content/zen-components"]
|
[submodule "src/browser/base/content/zen-components"]
|
||||||
path = src/browser/base/content/zen-components
|
path = src/browser/base/content/zen-components
|
||||||
url = https://github.com/zen-browser/components
|
url = https://github.com/zen-browser/components
|
||||||
|
[submodule "l10n"]
|
||||||
|
path = l10n
|
||||||
|
url = https://github.com/zen-browser/l10n-packs
|
||||||
|
@@ -5,4 +5,4 @@
|
|||||||
"ManualAppUpdateOnly": true,
|
"ManualAppUpdateOnly": true,
|
||||||
"BackgroundAppUpdate": false
|
"BackgroundAppUpdate": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Zen Browser
|
Name=Zen Browser
|
||||||
|
Comment=Experience tranquillity while browsing the web without people tracking you!
|
||||||
Exec=zen %u
|
Exec=zen %u
|
||||||
Icon=zen
|
Icon=zen
|
||||||
Type=Application
|
Type=Application
|
||||||
|
26
Casks/zen-browser.rb
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
cask("zen-browser") do
|
||||||
|
arch(arm: "aarch64", intel: "x64")
|
||||||
|
version("1.0.0-a.34")
|
||||||
|
sha256(arm: "6cc6e72c4a6a11d0139489d438ccf811715e170eebc01da739da32ace2580747", intel: "b9cb48f21a4ee39f3f3ae2361b9b0a55ae7219638cf798e1483c0eb8cf4660a6")
|
||||||
|
|
||||||
|
url("https://github.com/zen-browser/desktop/releases/download/#{version}/zen.macos-#{arch}.dmg")
|
||||||
|
name("Zen Browser")
|
||||||
|
desc("Beautifully designed, privacy-focused browser packed with awesome features")
|
||||||
|
homepage("https://zen-browser.app/")
|
||||||
|
|
||||||
|
livecheck do
|
||||||
|
url(:stable)
|
||||||
|
regex(/[0-9].*-a.[0-9]*/i)
|
||||||
|
end
|
||||||
|
|
||||||
|
zap trash: [
|
||||||
|
"~/Library/Preferences/org.mozilla.com.zen.browser.plist",
|
||||||
|
"~/Library/Saved Application State/org.mozilla.com.zen.browser.savedState"
|
||||||
|
]
|
||||||
|
|
||||||
|
app("Zen Browser.app")
|
||||||
|
|
||||||
|
postflight do
|
||||||
|
system("xattr -c '/Applications/Zen Browser.app/'")
|
||||||
|
end
|
||||||
|
end
|
58
README.md
@@ -1,5 +1,11 @@
|
|||||||
|
<div align="center">
|
||||||
# 🌀 Zen Browser
|
<picture>
|
||||||
|
<img src="./zen-black.svg" width="128px">
|
||||||
|
</picture>
|
||||||
|
</div>
|
||||||
|
<h1 align="center">
|
||||||
|
Zen Browser
|
||||||
|
</h1>
|
||||||
|
|
||||||
Experience tranquillity while browsing the web without people tracking you!
|
Experience tranquillity while browsing the web without people tracking you!
|
||||||
|
|
||||||
@@ -7,29 +13,46 @@ Experience tranquillity while browsing the web without people tracking you!
|
|||||||
* [Download](https://www.zen-browser.app/download)
|
* [Download](https://www.zen-browser.app/download)
|
||||||
* [Release Notes](https://www.zen-browser.app/release-notes/latest)
|
* [Release Notes](https://www.zen-browser.app/release-notes/latest)
|
||||||
|
|
||||||
[](https://ko-fi.com/K3K111FH7H)
|
[](https://crowdin.com/project/zen-browser)
|
||||||
<a href='https://flathub.org/apps/io.github.zen_browser.zen'>
|
|
||||||
<img width='220' alt='Get it on Flathub' src='https://flathub.org/api/badge?locale=en'/>
|
[](https://flathub.org/apps/io.github.zen_browser.zen)
|
||||||
</a>
|
|
||||||
|
[](https://www.patreon.com/zen_browser)
|
||||||
|
|
||||||
|
[](https://ko-fi.com/zen_browser)
|
||||||
|
|
||||||
# Compatibility
|
# Compatibility
|
||||||
|
|
||||||
Zen is currently built using firefox version `129.0.1`!
|
Zen is currently built using firefox version `130.0`!
|
||||||
|
|
||||||
* Checkout the latest [releases notes](https://www.zen-browser.app/release-notes)!
|
* Check out the latest [release notes](https://www.zen-browser.app/release-notes)!
|
||||||
|
|
||||||
# Performance
|
# Performance
|
||||||
|
|
||||||
Zen is built with performance in mind, and we have optimized the browser to be as fast as possible!
|
Zen is built with performance in mind, and we have optimized the browser to be as fast as possible!
|
||||||
|
|
||||||
* Checkout the latest [performance benchmarks](./docs/performance.md)!
|
* Checkout the latest [performance benchmarks](https://docs.zen-browser.app/benchmarks)!
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
## MacOS
|
||||||
|
You can install the Zen Browser using Homebrew:
|
||||||
|
|
||||||
|
```
|
||||||
|
brew tap zen-browser/browser https://github.com/zen-browser/desktop.git
|
||||||
|
brew install zen-browser
|
||||||
|
```
|
||||||
|
|
||||||
|
# Core Components
|
||||||
|
|
||||||
|
Some components used by @zen-browser as an attempt to make firefox forks a better place. You can find them [here](https://github.com/zen-browser/components).
|
||||||
|
|
||||||
## 🚀 Run Locally
|
## 🚀 Run Locally
|
||||||
|
|
||||||
Clone the project
|
Clone the project
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/zen-browser/desktop.git
|
git clone https://github.com/zen-browser/desktop.git --recurse-submodules
|
||||||
cd desktop
|
cd desktop
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -62,14 +85,25 @@ npm start
|
|||||||
- [IAmJafeth](https://github.com/IAmJafeth) (For sponsoring the domain)
|
- [IAmJafeth](https://github.com/IAmJafeth) (For sponsoring the domain)
|
||||||
- [Donno 🐒](https://www.onnno.nl/) (For making the logo)
|
- [Donno 🐒](https://www.onnno.nl/) (For making the logo)
|
||||||
- [ptr1337](https://github.com/ptr1337) (AUR Packages and optimization flags)
|
- [ptr1337](https://github.com/ptr1337) (AUR Packages and optimization flags)
|
||||||
|
- [nitro](https://github.com/n7itro) (For the amazing work on the browser)
|
||||||
|
|
||||||
## Third Party Code
|
## Third Party Code
|
||||||
|
|
||||||
Zen coudn't be in its current state without the help of these amazing projects!
|
Zen couldn't be in its current state without the help of these amazing projects!
|
||||||
|
|
||||||
- Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox)
|
- Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
[MPL LICENSE](/LICENSE)
|
[MPL LICENSE](./LICENSE)
|
||||||
|
|
||||||
|
## Star History
|
||||||
|
|
||||||
|
<a href="https://star-history.com/#zen-browser/desktop&Date">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zen-browser/desktop&type=Date&theme=dark" />
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zen-browser/desktop&type=Date" />
|
||||||
|
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zen-browser/desktop&type=Date" />
|
||||||
|
</picture>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
32
build/codesign/browser.developer.entitlements.xml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<!--
|
||||||
|
Entitlements to apply to the main browser process executable during
|
||||||
|
codesigning of production channel builds.
|
||||||
|
-->
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<!-- Firefox needs to create executable pages (without MAP_JIT) -->
|
||||||
|
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to create executable pages with MAP_JIT on aarch64 -->
|
||||||
|
<key>com.apple.security.cs.allow-jit</key><true/>
|
||||||
|
|
||||||
|
<!-- Allow loading third party libraries. Needed for Flash and CDMs -->
|
||||||
|
<key>com.apple.security.cs.disable-library-validation</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the microphone on sites the user allows -->
|
||||||
|
<key>com.apple.security.device.audio-input</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the camera on sites the user allows -->
|
||||||
|
<key>com.apple.security.device.camera</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the location on sites the user allows -->
|
||||||
|
<key>com.apple.security.personal-information.location</key><true/>
|
||||||
|
|
||||||
|
<!-- Allow Firefox to send Apple events to other applications. Needed
|
||||||
|
for native messaging webextension helper applications launched by
|
||||||
|
Firefox which rely on Apple Events to signal other processes. -->
|
||||||
|
<key>com.apple.security.automation.apple-events</key><true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
32
build/codesign/plugin-container.developer.entitlements.xml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<!--
|
||||||
|
Entitlements to apply to the plugin-container.app bundle during
|
||||||
|
codesigning of production channel builds.
|
||||||
|
-->
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<!-- Firefox needs to create executable pages (without MAP_JIT) -->
|
||||||
|
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to create executable pages with MAP_JIT on aarch64 -->
|
||||||
|
<key>com.apple.security.cs.allow-jit</key><true/>
|
||||||
|
|
||||||
|
<!-- Allow loading third party libraries. Needed for Flash and CDMs -->
|
||||||
|
<key>com.apple.security.cs.disable-library-validation</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the microphone on sites the user allows -->
|
||||||
|
<key>com.apple.security.device.audio-input</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the camera on sites the user allows -->
|
||||||
|
<key>com.apple.security.device.camera</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the location on sites the user allows -->
|
||||||
|
<key>com.apple.security.personal-information.location</key><true/>
|
||||||
|
|
||||||
|
<!-- Allow Firefox to send Apple events to other applications. Needed
|
||||||
|
for native messaging webextension helper applications launched by
|
||||||
|
Firefox which rely on Apple Events to signal other processes. -->
|
||||||
|
<key>com.apple.security.automation.apple-events</key><true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
155
build/codesign/sign.bash
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# 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 https://mozilla.org/MPL/2.0/.
|
||||||
|
#
|
||||||
|
# Runs codesign commands to codesign a Firefox .app bundle and enable macOS
|
||||||
|
# Hardened Runtime. Intended to be manually run by developers working on macOS
|
||||||
|
# 10.14+ who want to enable Hardened Runtime for manual testing. This is
|
||||||
|
# provided as a stop-gap until automated build tooling is available that signs
|
||||||
|
# binaries with a certificate generated during builds (bug 1522409). This
|
||||||
|
# script requires macOS 10.14 because Hardened Runtime is only available for
|
||||||
|
# applications running on 10.14 despite support for the codesign "-o runtime"
|
||||||
|
# option being available in 10.13.6 and newer.
|
||||||
|
#
|
||||||
|
# The script requires an identity string (-i option) from an Apple Developer
|
||||||
|
# ID certificate. This can be found in the macOS KeyChain after configuring an
|
||||||
|
# Apple Developer ID certificate.
|
||||||
|
#
|
||||||
|
# Example usage on macOS 10.14:
|
||||||
|
#
|
||||||
|
# $ ./mach build
|
||||||
|
# $ ./mach build package
|
||||||
|
# $ open </PATH/TO/DMG/FILE.dmg>
|
||||||
|
# <Drag Nightly.app to ~>
|
||||||
|
# $ ./security/mac/hardenedruntime/codesign.bash \
|
||||||
|
# -a ~/Nightly.app \
|
||||||
|
# -i <MY-IDENTITY-STRING> \
|
||||||
|
# -b security/mac/hardenedruntime/browser.developer.entitlements.xml
|
||||||
|
# -p security/mac/hardenedruntime/plugin-container.developer.entitlements.xml
|
||||||
|
# $ open ~/Nightly.app
|
||||||
|
#
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
usage ()
|
||||||
|
{
|
||||||
|
echo "Usage: $0 "
|
||||||
|
echo " -a <PATH-TO-BROWSER.app>"
|
||||||
|
echo " -i <IDENTITY>"
|
||||||
|
echo " -b <ENTITLEMENTS-FILE>"
|
||||||
|
echo " -p <CHILD-ENTITLEMENTS-FILE>"
|
||||||
|
echo " [-o <OUTPUT-DMG-FILE>]"
|
||||||
|
exit -1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make sure we are running on macOS with the sw_vers command available.
|
||||||
|
SWVERS=/usr/bin/sw_vers
|
||||||
|
if [ ! -x ${SWVERS} ]; then
|
||||||
|
echo "ERROR: macOS 10.14 or later is required"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Require macOS 10.14 or newer.
|
||||||
|
OSVERSION=`${SWVERS} -productVersion|sed -En 's/[0-9]+\.([0-9]+)\.[0-9]+/\1/p'`;
|
||||||
|
if [ ${OSVERSION} \< 14 ]; then
|
||||||
|
echo "ERROR: macOS 10.14 or later is required"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
while getopts "a:i:b:o:p:" opt; do
|
||||||
|
case ${opt} in
|
||||||
|
a ) BUNDLE=$OPTARG ;;
|
||||||
|
i ) IDENTITY=$OPTARG ;;
|
||||||
|
b ) BROWSER_ENTITLEMENTS_FILE=$OPTARG ;;
|
||||||
|
p ) PLUGINCONTAINER_ENTITLEMENTS_FILE=$OPTARG ;;
|
||||||
|
o ) OUTPUT_DMG_FILE=$OPTARG ;;
|
||||||
|
\? ) usage; exit -1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${BUNDLE}" ] ||
|
||||||
|
[ -z "${IDENTITY}" ] ||
|
||||||
|
[ -z "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ] ||
|
||||||
|
[ -z "${BROWSER_ENTITLEMENTS_FILE}" ]; then
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "${BUNDLE}" ]; then
|
||||||
|
echo "Invalid bundle. Bundle should be a .app directory"
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ]; then
|
||||||
|
echo "Invalid entitlements file"
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e "${BROWSER_ENTITLEMENTS_FILE}" ]; then
|
||||||
|
echo "Invalid entitlements file"
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DMG file output flag is optional
|
||||||
|
if [ ! -z "${OUTPUT_DMG_FILE}" ] &&
|
||||||
|
[ -e "${OUTPUT_DMG_FILE}" ]; then
|
||||||
|
echo "Output dmg file ${OUTPUT_DMG_FILE} exists. Please delete it first."
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "-------------------------------------------------------------------------"
|
||||||
|
echo "bundle: $BUNDLE"
|
||||||
|
echo "identity: $IDENTITY"
|
||||||
|
echo "browser entitlements file: $BROWSER_ENTITLEMENTS_FILE"
|
||||||
|
echo "plugin-container entitlements file: $PLUGINCONTAINER_ENTITLEMENTS_FILE"
|
||||||
|
echo "output dmg file (optional): $OUTPUT_DMG_FILE"
|
||||||
|
echo "-------------------------------------------------------------------------"
|
||||||
|
|
||||||
|
# Clear extended attributes which cause codesign to fail
|
||||||
|
xattr -cr "${BUNDLE}"
|
||||||
|
|
||||||
|
# Sign these binaries first. Signing of some binaries has an ordering
|
||||||
|
# requirement where other binaries must be signed first.
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" \
|
||||||
|
"${BUNDLE}/Contents/Library/LaunchServices/org.mozilla.updater" \
|
||||||
|
"${BUNDLE}/Contents/MacOS/XUL" \
|
||||||
|
"${BUNDLE}/Contents/MacOS/pingsender" \
|
||||||
|
"${BUNDLE}/Contents/MacOS/minidump-analyzer" \
|
||||||
|
"${BUNDLE}/Contents/MacOS/*.dylib" \
|
||||||
|
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||||
|
"${BUNDLE}"/Contents/MacOS/crashreporter.app
|
||||||
|
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||||
|
"${BUNDLE}"/Contents/MacOS/updater.app
|
||||||
|
|
||||||
|
# Sign zen main executable
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||||
|
--entitlements ${BROWSER_ENTITLEMENTS_FILE} \
|
||||||
|
"${BUNDLE}"/Contents/MacOS/zen
|
||||||
|
|
||||||
|
# Sign Library/LaunchServices
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||||
|
"${BUNDLE}"/Contents/Library/LaunchServices/org.mozilla.updater
|
||||||
|
|
||||||
|
# Sign gmp-clearkey files
|
||||||
|
find "${BUNDLE}"/Contents/Resources/gmp-clearkey -type f -exec \
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" {} \;
|
||||||
|
|
||||||
|
# Sign the main bundle
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" \
|
||||||
|
--entitlements ${BROWSER_ENTITLEMENTS_FILE} "${BUNDLE}"
|
||||||
|
|
||||||
|
# Sign the plugin-container bundle with deep
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||||
|
--entitlements ${PLUGINCONTAINER_ENTITLEMENTS_FILE} \
|
||||||
|
"${BUNDLE}"/Contents/MacOS/plugin-container.app
|
||||||
|
|
||||||
|
# Validate
|
||||||
|
codesign -vvv --verbose=4 --deep "${BUNDLE}"
|
@@ -1,4 +1 @@
|
|||||||
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg">
|
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg"><rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />Sorry, your browser does not support inline SVG.</svg>
|
||||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
|
||||||
Sorry, your browser does not support inline SVG.
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 219 B |
BIN
configs/branding/alpha/PrivateBrowsing_150.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
configs/branding/alpha/PrivateBrowsing_70.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
configs/branding/alpha/VisualElements_150.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
configs/branding/alpha/VisualElements_70.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
configs/branding/alpha/content/about-logo-private.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
1
configs/branding/alpha/content/about-logo-private.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256"><defs><style>.g{fill:#000;}.g,.h,.i{stroke-width:0px;}.h{fill:url(#e);}.i{fill:#fff;}</style><linearGradient id="e" x1="128" y1="256" x2="128" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity=".02"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><g id="c"><rect class="g" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="d"><rect class="h" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="f"><path class="i" d="M165.9156,146.3156c-15.6016,0-28.6656,11.0055-31.8813,25.6562h-12.0687c-3.2156-14.6508-16.2797-25.6562-31.8813-25.6562-18.0063,0-32.6562,14.65-32.6562,32.6562s14.65,32.6562,32.6562,32.6562c15.6016,0,28.6656-11.0055,31.8813-25.6562h12.0687c3.2156,14.6508,16.2797,25.6562,31.8813,25.6562,18.0063,0,32.6562-14.65,32.6562-32.6562s-14.65-32.6562-32.6562-32.6562ZM90.0844,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562ZM165.9156,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562Z"/><path class="i" d="M214.4,115.6812h-21.8391l-9.2422-65.2906c-.3031-2.1406-1.5813-4.0219-3.4594-5.0969-1.8781-1.0719-4.1469-1.2188-6.1469-.3906l-45.7125,18.8906-45.7125-18.8906c-2-.8281-4.2688-.6813-6.1469.3906-1.8781,1.075-3.1562,2.9562-3.4594,5.0969l-9.2422,65.2906h-21.8391c-3.8656,0-7,3.1344-7,7s3.1344,7,7,7h172.8c3.8656,0,7-3.1344,7-7s-3.1344-7-7-7ZM85.2781,61.2875l40.0469,16.55c1.7125.7063,3.6375.7063,5.35,0l40.0469-16.55,7.6984,54.3937h-100.8406l7.6984-54.3937Z"/></g></svg>
|
After Width: | Height: | Size: 1.8 KiB |
BIN
configs/branding/alpha/content/about-logo-private@2x.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
configs/branding/alpha/content/about-logo.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
1
configs/branding/alpha/content/about-logo.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg id="d" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256"><defs><style>.f{fill:#000;}.f,.g,.h{stroke-width:0px;}.g{fill:url(#e);}.h{fill:#fff;}</style><linearGradient id="e" x1="128" y1="256" x2="128" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity=".02"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><rect class="f" width="256" height="256" rx="58.4" ry="58.4"/><rect class="g" width="256" height="256" rx="58.4" ry="58.4"/><path class="h" d="M202.9973,184.5702c-.1715,10.2808-8.7737,18.4298-19.0559,18.4298h-77.2885c-3.0056,0-5.0458-3.0553-3.894-5.8314l.0262-.0632c5.0822-12.2707,13.3289-22.6249,23.8591-30.1785,1.3098-.9395,2.8903-1.4269,4.5023-1.4269h53.1034c10.462,0,18.9225,8.5681,18.7473,19.0702Z"/><path class="h" d="M149.3471,53c3.0056,0,5.0458,3.0553,3.894,5.8314l-.0262.0631c-5.0822,12.2708-13.3289,22.6249-23.8591,30.1785-1.3098.9396-2.8903,1.427-4.5023,1.427h-52.7949c-10.2822,0-18.8844-8.149-19.0559-18.4298-.1752-10.5021,8.2853-19.0702,18.7473-19.0702h77.5971Z"/><path class="h" d="M71.7465,203c-2.3913,0-4.8207-.46-7.1673-1.4319-9.5666-3.9624-14.1096-14.9301-10.1472-24.4964,6.0943-14.7127,14.8294-27.9027,25.9634-39.2034,11.5341-11.7073,25.1364-20.8551,40.4297-27.1898,21.021-8.7076,37.393-25.0792,46.0995-46.0995,3.9624-9.567,14.9305-14.1093,24.4964-10.1472,9.5666,3.9624,14.1096,14.9301,10.1472,24.4964-6.0943,14.7127-14.8294,27.9027-25.9634,39.2034-11.5341,11.7073-25.1364,20.8551-40.4297,27.1898-21.021,8.7076-37.393,25.0792-46.0995,46.0995-2.9905,7.22-9.9725,11.5791-17.329,11.5791Z"/></svg>
|
After Width: | Height: | Size: 1.6 KiB |
BIN
configs/branding/alpha/content/about-logo@2x.png
Normal file
After Width: | Height: | Size: 9.3 KiB |
1
configs/branding/alpha/content/about-wordmark.svg
Normal file
After Width: | Height: | Size: 6.4 KiB |
1
configs/branding/alpha/content/firefox-wordmark.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 56"><defs><style>.b{fill:context-fill #20123a;}</style></defs><path class="b" d="M11.2896,37.6632h15.1928v5.2919H3.2415v-3.8076l15.1487-21.2557H3.2126v-5.2919h23.2393v3.811l-15.1622,21.2523ZM50.8649,26.3765c.5434,1.4469.8151,3.1418.8151,5.0778v1.7322h-15.5019v.017c0,1.1243.2089,2.0991.6301,2.9176.4195.822,1.0139,1.4537,1.7849,1.8987s1.6847.6657,2.7427.6657c.7014,0,1.3433-.0984,1.9258-.2955.5842-.197,1.0818-.4925,1.4979-.8899.4144-.394.7303-.8797.9476-1.4503l5.8404.3838c-.2972,1.4028-.9018,2.6255-1.8154,3.6683-.9137,1.0428-2.0906,1.8511-3.5273,2.4319-1.4385.5774-3.0959.8661-4.9726.8661-2.3419,0-4.3561-.4755-6.0408-1.43-1.6847-.9544-2.9805-2.3063-3.8907-4.0623-.9086-1.7526-1.362-3.8314-1.362-6.2327,0-2.3402.4534-4.3951,1.362-6.1647.9103-1.7696,2.1925-3.1486,3.8466-4.1336,1.6558-.9884,3.5986-1.4843,5.8318-1.4843,1.503,0,2.9024.2411,4.2032.7201,1.2992.4789,2.4354,1.199,3.4084,2.1568.9731.9578,1.7306,2.1602,2.274,3.6072ZM45.7378,29.2737c0-.9069-.1987-1.7119-.5927-2.4149-.3957-.6997-.9409-1.2534-1.6388-1.6508-.6964-.4008-1.503-.6012-2.4235-.6012-.9578,0-1.8053.2208-2.5406.6589-.7371.4382-1.3127,1.0292-1.7271,1.7628-.3818.679-.5853,1.4304-.6228,2.2451h9.5455ZM73.0682,20.9318c-1.1769-.6929-2.5543-1.0394-4.1353-1.0394-1.6898,0-3.1265.3872-4.3137,1.165-1.1854.7744-2.0294,1.824-2.5338,3.1486h-.2667v-4.0181h-6.017v22.7672h6.3125v-13.1617c.0102-.9782.1953-1.8138.557-2.5135.36-.6963.8644-1.2261,1.5115-1.593.647-.3635,1.396-.5469,2.2451-.5469,1.2653,0,2.257.394,2.9788,1.1786.7217.7846,1.0767,1.8749,1.0682,3.2675v13.3689h6.3125v-14.4965c0-1.7662-.326-3.2913-.9782-4.5718-.6521-1.2805-1.5658-2.2655-2.741-2.955Z"/></svg>
|
After Width: | Height: | Size: 1.7 KiB |
BIN
configs/branding/alpha/document.ico
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
configs/branding/alpha/document_pdf.ico
Normal file
After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 31 KiB |
BIN
configs/branding/alpha/pbmode.ico
Normal file
After Width: | Height: | Size: 103 KiB |
@@ -1,4 +0,0 @@
|
|||||||
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
|
||||||
Sorry, your browser does not support inline SVG.
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 226 B |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 624 B |
Before Width: | Height: | Size: 951 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 2.6 KiB |
@@ -3,6 +3,9 @@ ac_add_options --with-app-name=${binName}
|
|||||||
ac_add_options --with-app-basename=Zen
|
ac_add_options --with-app-basename=Zen
|
||||||
ac_add_options --enable-official-branding
|
ac_add_options --enable-official-branding
|
||||||
|
|
||||||
|
# Localization
|
||||||
|
ac_add_options --with-l10n-base="$PWD/browser/locales"
|
||||||
|
|
||||||
export MOZ_USER_DIR="${name}"
|
export MOZ_USER_DIR="${name}"
|
||||||
export MOZ_APP_BASENAME=Zen
|
export MOZ_APP_BASENAME=Zen
|
||||||
export MOZ_APP_PROFILE=${binName}
|
export MOZ_APP_PROFILE=${binName}
|
||||||
@@ -18,7 +21,7 @@ export MOZ_DISTRIBUTION_ID=${appId}
|
|||||||
# Misc
|
# Misc
|
||||||
export MOZ_SOURCE_REPO=https://github.com/zen-browser/desktop
|
export MOZ_SOURCE_REPO=https://github.com/zen-browser/desktop
|
||||||
export MOZ_SOURCE_CHANGESET=${changeset}
|
export MOZ_SOURCE_CHANGESET=${changeset}
|
||||||
#export MOZ_INCLUDE_SOURCE_INFO=1
|
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||||
|
|
||||||
ac_add_options --enable-application=browser
|
ac_add_options --enable-application=browser
|
||||||
|
|
||||||
@@ -30,7 +33,9 @@ if test "$ZEN_RELEASE"; then
|
|||||||
ac_add_options --disable-debug-symbols
|
ac_add_options --disable-debug-symbols
|
||||||
ac_add_options --disable-debug-js-modules
|
ac_add_options --disable-debug-js-modules
|
||||||
ac_add_options --disable-tests
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
ac_add_options --disable-jprof
|
ac_add_options --disable-jprof
|
||||||
|
ac_add_options --disable-vtune
|
||||||
|
|
||||||
ac_add_options --enable-rust-simd
|
ac_add_options --enable-rust-simd
|
||||||
ac_add_options --enable-wasm-simd
|
ac_add_options --enable-wasm-simd
|
||||||
@@ -49,9 +54,8 @@ if test "$ZEN_RELEASE"; then
|
|||||||
ac_add_options --disable-default-browser-agent
|
ac_add_options --disable-default-browser-agent
|
||||||
|
|
||||||
if ! test "$ZEN_DISABLE_LTO"; then
|
if ! test "$ZEN_DISABLE_LTO"; then
|
||||||
export MOZ_LTO=1
|
export MOZ_LTO=cross,thin
|
||||||
ac_add_options MOZ_LTO=1
|
ac_add_options --enable-lto=cross,thin
|
||||||
ac_add_options --enable-lto=full,cross
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ac_add_options --enable-jemalloc
|
ac_add_options --enable-jemalloc
|
||||||
@@ -89,7 +93,6 @@ ac_add_options --enable-eme=widevine
|
|||||||
ac_add_options --allow-addon-sideload
|
ac_add_options --allow-addon-sideload
|
||||||
ac_add_options --with-unsigned-addon-scopes=app,system
|
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||||
|
|
||||||
mk_add_options MOZ_CRASHREPORTER=0
|
|
||||||
mk_add_options MOZ_DATA_REPORTING=0
|
mk_add_options MOZ_DATA_REPORTING=0
|
||||||
mk_add_options MOZ_SERVICES_HEALTHREPORT=0
|
mk_add_options MOZ_SERVICES_HEALTHREPORT=0
|
||||||
mk_add_options MOZ_TELEMETRY_REPORTING=0
|
mk_add_options MOZ_TELEMETRY_REPORTING=0
|
||||||
|
@@ -35,18 +35,18 @@ if test "$ZEN_RELEASE"; then
|
|||||||
|
|
||||||
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
||||||
export CPPFLAGS="$CPPFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
export CPPFLAGS="$CPPFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
||||||
export CXXFLAGS="$CXXFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
export CXXFLAGS="$CXXFLAGS -O3 -flto=thin -ffp-contract=fast -march=x86-64"
|
||||||
export LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64"
|
export LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64"
|
||||||
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64 -C codegen-units=1"
|
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64 -C codegen-units=1 -Clink-args=--icf=safe"
|
||||||
else
|
else
|
||||||
ac_add_options --enable-wasm-avx
|
ac_add_options --enable-wasm-avx
|
||||||
ac_add_options --enable-optimize="-O3 -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
ac_add_options --enable-optimize="-O3 -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||||
|
|
||||||
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||||
export CPPFLAGS="$CPPFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
export CPPFLAGS="$CPPFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||||
export CXXFLAGS="$CXXFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
export CXXFLAGS="$CXXFLAGS -O3 -flto=thin -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||||
export LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64-v3"
|
export LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64-v3"
|
||||||
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64-v3 -C target-feature=+sse4.1 -C target-feature=+avx2 -C codegen-units=1"
|
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64-v3 -C target-feature=+sse4.1 -C target-feature=+avx2 -C codegen-units=1 -Clink-args=--icf=safe"
|
||||||
fi
|
fi
|
||||||
export VERBOSE=1
|
export VERBOSE=1
|
||||||
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
||||||
|
@@ -18,7 +18,6 @@ if test "$ZEN_CROSS_COMPILING"; then
|
|||||||
export WIN32_REDIST_DIR="$(echo ~)/win-cross/vs2022/VC/Redist/MSVC/14.38.33135/x64/Microsoft.VC143.CRT"
|
export WIN32_REDIST_DIR="$(echo ~)/win-cross/vs2022/VC/Redist/MSVC/14.38.33135/x64/Microsoft.VC143.CRT"
|
||||||
|
|
||||||
export MIDL="$TOOLS/wine/bin/widl"
|
export MIDL="$TOOLS/wine/bin/widl"
|
||||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
|
||||||
export MOZ_STUB_INSTALLER=1
|
export MOZ_STUB_INSTALLER=1
|
||||||
export WINEDEBUG=-all
|
export WINEDEBUG=-all
|
||||||
export WINE="$TOOLS/wine/bin/wine64"
|
export WINE="$TOOLS/wine/bin/wine64"
|
||||||
@@ -33,37 +32,35 @@ ac_add_options --disable-maintenance-service
|
|||||||
ac_add_options --disable-bits-download
|
ac_add_options --disable-bits-download
|
||||||
|
|
||||||
if test "$SURFER_COMPAT" = "true"; then
|
if test "$SURFER_COMPAT" = "true"; then
|
||||||
ac_add_options --enable-optimize="-O2 -Qvec -mtune=haswell -march=x86-64 -w"
|
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize"
|
||||||
|
|
||||||
export CFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
export CFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
||||||
export CPPFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
export CPPFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
||||||
export CXXFLAGS="-mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
export CXXFLAGS="-flto=thin -mtune=haswell -march=x86-64 -O2 -Qvec -w"
|
||||||
export LDFLAGS="-Wl,-O2"
|
export LDFLAGS="-Wl,-O2"
|
||||||
export RUSTFLAGS="-C codegen-units=1 -Ctarget-cpu=x86-64"
|
export RUSTFLAGS="-Clink-args=--icf=safe -C codegen-units=1 -Ctarget-cpu=x86-64"
|
||||||
else
|
else
|
||||||
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -Xclang -w"
|
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -ftree-vectorize -Xclang -w"
|
||||||
ac_add_options --enable-wasm-avx
|
ac_add_options --enable-wasm-avx
|
||||||
|
|
||||||
export CFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
export CFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
||||||
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
||||||
export CXXFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
export CXXFLAGS="-O2 -flto=thin -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3"
|
||||||
export LDFLAGS="-Wl,-O3 -march=x86-64-v3"
|
export LDFLAGS="-Wl,-O3 -march=x86-64-v3"
|
||||||
export RUSTFLAGS="-C target-feature=+avx -C codegen-units=1 -Ctarget-cpu=x86-64-v3"
|
export RUSTFLAGS="-Clink-args=--icf=safe -C target-feature=+avx -C codegen-units=1 -Ctarget-cpu=x86-64-v3"
|
||||||
fi
|
fi
|
||||||
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
||||||
export VERBOSE=1
|
export VERBOSE=1
|
||||||
|
|
||||||
#if test "$ZEN_GA_GENERATE_PROFILE"; then
|
if test "$ZEN_CROSS_COMPILING"; then
|
||||||
# mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
|
if test "$ZEN_GA_GENERATE_PROFILE"; then
|
||||||
# ac_add_options --enable-profile-generate=cross
|
export CXXFLAGS="$CXXFLAGS -fprofile-generate -mllvm -enable-name-compression=false -mllvm -pgo-temporal-instrumentation -fprofile-update=atomic"
|
||||||
#else
|
mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
|
||||||
# ac_add_options --enable-profile-use=cross
|
ac_add_options --enable-profile-generate=cross
|
||||||
# if test "$SURFER_COMPAT" = "true"; then
|
else
|
||||||
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged-generic.profdata
|
ac_add_options --enable-profile-use=cross
|
||||||
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US-generic.log
|
ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged.profdata
|
||||||
# else
|
ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US.log
|
||||||
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged-specific.profdata
|
fi
|
||||||
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US-specific.log
|
|
||||||
# fi
|
|
||||||
#fi
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
@@ -11,3 +11,5 @@
|
|||||||
* Overall stability
|
* Overall stability
|
||||||
* Pinning tabs (Grid layout)
|
* Pinning tabs (Grid layout)
|
||||||
* Overall UX
|
* Overall UX
|
||||||
|
* Themes Page
|
||||||
|
* Settings Page
|
||||||
|
@@ -1,60 +0,0 @@
|
|||||||
# 🌀 Zen Browser Performance traker
|
|
||||||
|
|
||||||
## Scores
|
|
||||||
|
|
||||||
## 1
|
|
||||||
- [NOCanoa](https://github.com/NOCanoa)
|
|
||||||
|
|
||||||
OS: win 11; CPU: i5 13600k
|
|
||||||
|
|
||||||
## web.basemark
|
|
||||||
|
|
||||||
https://web.basemark.com/
|
|
||||||
|
|
||||||
| | score: |CSS | HTML5 | Page load and Responsiveness | Resize Cap. |
|
|
||||||
|-----------|-----|-----|-------|------------------------------|-------------|
|
|
||||||
| 1.0.0-a.15-opt | 2141.63 | 59% | 91% | 90% | 76% |
|
|
||||||
| 1.0.0-a.13-opt | 1658.87 | 59% | 91% | 90% | 76% |
|
|
||||||
| 1.0.0-a.12-opt | 1874.49 | 59% | 91% | 91% | 76% |
|
|
||||||
| 1.0.0-a.11-opt | 1678.49 | 59% | 91% | 91% | 76% |
|
|
||||||
| 1.0.0-a.10 | 1660.89 | 59% | 91% | 91% | 76% |
|
|
||||||
| 1.0.0-a.9 | 470 | why | why | why | why |
|
|
||||||
| 1.0.0-a.8 | 446.74 | 59% | 91% | 96% | 76% |
|
|
||||||
| 1.0.0-a.7 | 1964.43 | 59% | 91% | 91% | 76% |
|
|
||||||
| 1.0.0-a.6 | 1747.98 | 59% | 91% | 91% | 76% |
|
|
||||||
| 1.0.0-a.4 | 470.49 | 59% | 91% | 97% | 76% |
|
|
||||||
| 1.0.0-a.3 | 475.52 |59% | 91% | 97% | 76% |
|
|
||||||
| other | last | utpdate | 31/7 | 2024 | - |
|
|
||||||
| Librewolf 128.0-2 | 1953.65 | 59.66% | 89.01% | 91.72% | 76.12% |
|
|
||||||
| FF nightly 130.0a1 | 1912.77 | 59.66% | 90.91% | 91.72% | 76.12% |
|
|
||||||
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
xychart-beta
|
|
||||||
title "Performance over time (Higher is better)"
|
|
||||||
x-axis [.3, .4, .6, .7, .8, .9, .10, .11, .12, .13, .15]
|
|
||||||
y-axis "Benchmark Points"
|
|
||||||
bar [475.52, 470.49, 1747.98, 1964.43, 446.74, 470, 1660.89, 1678.49, 1874.49, 1658.87, 2141.63]
|
|
||||||
line [475.52, 470.49, 1747.98, 1964.43, 446.74, 470, 1660.89, 1678.49, 1874.49, 1658.87, 2141.63]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Speedometer3.0
|
|
||||||
|
|
||||||
https://browserbench.org/Speedometer3.0/
|
|
||||||
|
|
||||||
| | score: |
|
|
||||||
|-----------|-----|
|
|
||||||
| 1.0.0-a.15-opt | TODO |
|
|
||||||
| 1.0.0-a.13-opt | 21.1 |
|
|
||||||
| 1.0.0-a.12-opt | 21.5 |
|
|
||||||
| 1.0.0-a.11-opt | 20.8 |
|
|
||||||
| 1.0.0-a.10 | 21.2 |
|
|
||||||
| others| - |
|
|
||||||
| Vivaldi 6.7.3329.39| 27.8 |
|
|
||||||
| FF nightly 130.0a1 | 27.0 |
|
|
||||||
| Librewolf 128.0-2 | 20.2 |
|
|
||||||
|
|
||||||
## Repository View Counter
|
|
||||||
|
|
||||||
<div align='center'><a href='https://www.websitecounterfree.com'><img src='https://www.websitecounterfree.com/c.php?d=9&id=57772&s=40' border='0' alt='Free Website Counter'></a><br / ><small><a href='https://www.websitecounterfree.com' title="Free Website Counter">Free Website Counter</a></small></div>
|
|
||||||
|
|
@@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
# Warp Build
|
|
||||||
|
|
||||||
For linux, we are using [warpbuild](https://warpbuild.com/) because github workflows can't handle building firefox :(
|
|
||||||
|
|
@@ -17,6 +17,7 @@ finish-args:
|
|||||||
- --filesystem=xdg-download:rw
|
- --filesystem=xdg-download:rw
|
||||||
- --device=all
|
- --device=all
|
||||||
- --talk-name=org.freedesktop.FileManager1
|
- --talk-name=org.freedesktop.FileManager1
|
||||||
|
- --talk-name=org.freedesktop.ScreenSaver
|
||||||
- --own-name=org.mozilla.zen.*
|
- --own-name=org.mozilla.zen.*
|
||||||
- --own-name=org.mpris.MediaPlayer2.firefox.*
|
- --own-name=org.mpris.MediaPlayer2.firefox.*
|
||||||
- --system-talk-name=org.freedesktop.NetworkManager
|
- --system-talk-name=org.freedesktop.NetworkManager
|
||||||
@@ -29,7 +30,7 @@ modules:
|
|||||||
|
|
||||||
- install -Dm0755 metadata/launch-script.sh ${{FLATPAK_DEST}}/bin/launch-script.sh
|
- install -Dm0755 metadata/launch-script.sh ${{FLATPAK_DEST}}/bin/launch-script.sh
|
||||||
- install -Dm0644 metadata/policies.json ${{FLATPAK_DEST}}/bin/distribution/policies.json
|
- install -Dm0644 metadata/policies.json ${{FLATPAK_DEST}}/bin/distribution/policies.json
|
||||||
- install -Dm0644 metadata/icons/io.github.zen_browser.zen.svg ${{FLATPAK_DEST}}/share/icons/hicolor/scalable/apps/${{FLATPAK_ID}}.png
|
- install -Dm0644 metadata/icons/io.github.zen_browser.zen.svg ${{FLATPAK_DEST}}/share/icons/hicolor/scalable/apps/${{FLATPAK_ID}}.svg
|
||||||
- install -Dm0644 metadata/io.github.zen_browser.zen.metainfo.xml ${{FLATPAK_DEST}}/share/metainfo/${{FLATPAK_ID}}.metainfo.xml
|
- install -Dm0644 metadata/io.github.zen_browser.zen.metainfo.xml ${{FLATPAK_DEST}}/share/metainfo/${{FLATPAK_ID}}.metainfo.xml
|
||||||
- install -Dm0644 metadata/io.github.zen_browser.zen.desktop ${{FLATPAK_DEST}}/share/applications/${{FLATPAK_ID}}.desktop
|
- install -Dm0644 metadata/io.github.zen_browser.zen.desktop ${{FLATPAK_DEST}}/share/applications/${{FLATPAK_ID}}.desktop
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ modules:
|
|||||||
strip-components: 0
|
strip-components: 0
|
||||||
|
|
||||||
- type: archive
|
- type: archive
|
||||||
url: https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar
|
url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar
|
||||||
sha256: {flatpak_sha256}
|
sha256: {flatpak_sha256}
|
||||||
strip-components: 0
|
strip-components: 0
|
||||||
dest: metadata
|
dest: metadata
|
1
l10n
Submodule
3402
package-lock.json
generated
@@ -27,6 +27,6 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/zen-browser/core#readme",
|
"homepage": "https://github.com/zen-browser/core#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@zen-browser/surfer": "^1.2.12"
|
"@zen-browser/surfer": "^1.3.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
10
pnpm-lock.yaml
generated
@@ -9,8 +9,8 @@ importers:
|
|||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@zen-browser/surfer':
|
'@zen-browser/surfer':
|
||||||
specifier: ^1.2.12
|
specifier: ^1.3.6
|
||||||
version: 1.2.12
|
version: 1.3.6
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@@ -109,8 +109,8 @@ packages:
|
|||||||
'@types/node@17.0.45':
|
'@types/node@17.0.45':
|
||||||
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
|
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
|
||||||
|
|
||||||
'@zen-browser/surfer@1.2.12':
|
'@zen-browser/surfer@1.3.6':
|
||||||
resolution: {integrity: sha512-TfJrUc7P3pu0pf79UF3kL5fSjB5lVl5mqNnV+aOJWRsotvujlfX2tIVuIKTtCJvDeoZwvoAwlpogMZh3V5dcmQ==}
|
resolution: {integrity: sha512-b+5GS9qMGoMB8lRaFYRA9C3EqntVf35sBx5dq7X3IuqlB9GmarYoS5E26EvXbmPJcfYkJG7ar05nHkkZyOrGuw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
ansi-regex@5.0.1:
|
ansi-regex@5.0.1:
|
||||||
@@ -786,7 +786,7 @@ snapshots:
|
|||||||
|
|
||||||
'@types/node@17.0.45': {}
|
'@types/node@17.0.45': {}
|
||||||
|
|
||||||
'@zen-browser/surfer@1.2.12':
|
'@zen-browser/surfer@1.3.6':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@resvg/resvg-js': 1.4.0
|
'@resvg/resvg-js': 1.4.0
|
||||||
async-icns: 1.0.2
|
async-icns: 1.0.2
|
||||||
|
17
scripts/copy-language-pack.sh
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
browser_locales=engine/browser/locales
|
||||||
|
|
||||||
|
copy_browser_locales() {
|
||||||
|
langId=$1
|
||||||
|
mkdir -p $browser_locales/$langId
|
||||||
|
if [ "$langId" = "en-US" ]; then
|
||||||
|
find $browser_locales/$langId -type f -name "zen*" -delete
|
||||||
|
rsync -av --exclude=.git ./l10n/en-US/browser/ $browser_locales/$langId/
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
rm -rf $browser_locales/$langId/
|
||||||
|
rsync -av --exclude=.git ./l10n/$langId/ $browser_locales/$langId/
|
||||||
|
}
|
||||||
|
|
||||||
|
LANG=$1
|
||||||
|
echo "Copying language pack for $LANG"
|
||||||
|
copy_browser_locales $LANG
|
57
scripts/download-language-packs.sh
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
CURRENT_DIR=$(pwd)
|
||||||
|
|
||||||
|
git config --global init.defaultBranch main
|
||||||
|
git config --global fetch.prune true
|
||||||
|
|
||||||
|
mkdir ~/tools
|
||||||
|
cd ~/tools
|
||||||
|
git clone https://github.com/glandium/git-cinnabar.git
|
||||||
|
cd git-cinnabar
|
||||||
|
git checkout 0.5.11
|
||||||
|
export PATH=~/tools/git-cinnabar:$PATH
|
||||||
|
cd ~
|
||||||
|
git cinnabar download
|
||||||
|
cd $CURRENT_DIR
|
||||||
|
|
||||||
|
update_language() {
|
||||||
|
langId=$1
|
||||||
|
cd ./l10n
|
||||||
|
cd $langId
|
||||||
|
|
||||||
|
echo "Updating $langId"
|
||||||
|
rm -rf .git
|
||||||
|
|
||||||
|
git init
|
||||||
|
git remote add upstream hg://hg.mozilla.org/l10n-central/$langId
|
||||||
|
git remote set-url upstream hg://hg.mozilla.org/l10n-central/$langId
|
||||||
|
git pull upstream branches/default/tip
|
||||||
|
|
||||||
|
cd $CURRENT_DIR
|
||||||
|
}
|
||||||
|
|
||||||
|
export PATH=~/tools/git-cinnabar:$PATH
|
||||||
|
for lang in $(cat ./l10n/supported-languages); do
|
||||||
|
update_language $lang
|
||||||
|
done
|
||||||
|
cd $CURRENT_DIR
|
||||||
|
|
||||||
|
# Move all the files to the correct location
|
||||||
|
|
||||||
|
sh scripts/copy-language-pack.sh en-US
|
||||||
|
for lang in $(cat ./l10n/supported-languages); do
|
||||||
|
sh scripts/copy-language-pack.sh $lang
|
||||||
|
done
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
|
echo "Cleaning up"
|
||||||
|
rm -rf ~/tools
|
||||||
|
rm -rf ~/.git-cinnabar
|
||||||
|
|
||||||
|
for lang in $(cat ./l10n/supported-languages); do
|
||||||
|
# remove every file except if it starts with "zen"
|
||||||
|
find ./l10n/$lang -type f -not -name "zen*" -delete
|
||||||
|
done
|
2
scripts/update-en-US-packs.sh
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
sh ./scripts/copy-language-pack.sh en-US
|
@@ -32,9 +32,9 @@ pref("gfx.content.skia-font-cache-size", 20);
|
|||||||
pref("browser.cache.jsbc_compression_level", 3);
|
pref("browser.cache.jsbc_compression_level", 3);
|
||||||
|
|
||||||
/** MEDIA CACHE ***/
|
/** MEDIA CACHE ***/
|
||||||
pref("media.memory_cache_max_size", 512000); // alt=512000; also in Securefox (inactive there)
|
pref("media.memory_cache_max_size", 65536);
|
||||||
pref("media.cache_readahead_limit", 9000); // default=60; stop reading ahead when our buffered data is this many seconds ahead of the current playback
|
pref("media.cache_readahead_limit", 7200);
|
||||||
pref("media.cache_resume_threshold", 6000); // default=30; when a network connection is suspended, don't resume it until the amount of buffered data falls below this threshold (in seconds)
|
pref("media.cache_resume_threshold", 3600);
|
||||||
|
|
||||||
/** IMAGE CACHE ***/
|
/** IMAGE CACHE ***/
|
||||||
pref("image.mem.decode_bytes_at_a_time", 32768);
|
pref("image.mem.decode_bytes_at_a_time", 32768);
|
||||||
@@ -47,7 +47,7 @@ pref("network.http.pacing.requests.enabled", false);
|
|||||||
pref("network.dnsCacheExpiration", 3600);
|
pref("network.dnsCacheExpiration", 3600);
|
||||||
pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
|
pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
|
||||||
pref("network.websocket.max-connections", 400); // default=200
|
pref("network.websocket.max-connections", 400); // default=200
|
||||||
pref("network.ssl_tokens_cache_capacity", 32768);
|
pref("network.ssl_tokens_cache_capacity", 10240);
|
||||||
|
|
||||||
/** MIXED CONTENT + CROSS-SITE ***/
|
/** MIXED CONTENT + CROSS-SITE ***/
|
||||||
pref("pdfjs.enableScripting", false);
|
pref("pdfjs.enableScripting", false);
|
||||||
@@ -62,6 +62,7 @@ pref("dom.security.sanitizer.enabled", true);
|
|||||||
* SECTION: SECUREFOX *
|
* SECTION: SECUREFOX *
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
/** TRACKING PROTECTION ***/
|
/** TRACKING PROTECTION ***/
|
||||||
|
pref("browser.contentblocking.category", "strict");
|
||||||
pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com");
|
pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com");
|
||||||
pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com");
|
pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com");
|
||||||
pref("network.cookie.sameSite.noneRequiresSecure", true);
|
pref("network.cookie.sameSite.noneRequiresSecure", true);
|
||||||
|
@@ -13,9 +13,12 @@ pref("browser.tabs.hoverPreview.enabled", true);
|
|||||||
pref("browser.tabs.cardPreview.delayMs", 100);
|
pref("browser.tabs.cardPreview.delayMs", 100);
|
||||||
|
|
||||||
#ifdef MOZ_UPDATE_CHANNEL
|
#ifdef MOZ_UPDATE_CHANNEL
|
||||||
pref("devtools.debugger.prompt-connection", false);
|
pref("devtools.debugger.prompt-connection", true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Dont download the multilingual dictionary
|
||||||
|
pref("intl.multilingual.downloadEnabled", false);
|
||||||
|
|
||||||
// Theme
|
// Theme
|
||||||
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
|
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
|
||||||
pref('browser.compactmode.show', true);
|
pref('browser.compactmode.show', true);
|
||||||
@@ -56,6 +59,8 @@ pref("browser.ping-centre.telemetry", false);
|
|||||||
pref("browser.attribution.enabled", false);
|
pref("browser.attribution.enabled", false);
|
||||||
pref("toolkit.telemetry.pioneer-new-studies-available", false);
|
pref("toolkit.telemetry.pioneer-new-studies-available", false);
|
||||||
|
|
||||||
|
pref("app.update.checkInstallTime.days", 2);
|
||||||
|
|
||||||
// CUSTOM ZEN PREFS
|
// CUSTOM ZEN PREFS
|
||||||
|
|
||||||
pref('zen.welcomeScreen.enabled', true);
|
pref('zen.welcomeScreen.enabled', true);
|
||||||
@@ -81,6 +86,7 @@ pref('zen.keyboard.shortcuts', ""); // Empty string means default shortcuts
|
|||||||
pref('zen.keyboard.shortcuts.disable-firefox', false);
|
pref('zen.keyboard.shortcuts.disable-firefox', false);
|
||||||
pref('zen.tabs.dim-pending', true);
|
pref('zen.tabs.dim-pending', true);
|
||||||
pref('zen.themes.updated-value-observer', false);
|
pref('zen.themes.updated-value-observer', false);
|
||||||
|
pref('zen.themes.tabs.legacy-location', false);
|
||||||
|
|
||||||
// Pref to enable the new profiles (TODO: Check this out!)
|
// Pref to enable the new profiles (TODO: Check this out!)
|
||||||
//pref("browser.profiles.enabled", true);
|
//pref("browser.profiles.enabled", true);
|
||||||
@@ -105,12 +111,12 @@ pref('general.smoothScroll', true); // DEFAULT
|
|||||||
|
|
||||||
// Privacy
|
// Privacy
|
||||||
pref('dom.private-attribution.submission.enabled', false);
|
pref('dom.private-attribution.submission.enabled', false);
|
||||||
|
pref('dom.security.https_only_mode', true);
|
||||||
|
|
||||||
pref('media.eme.enabled', true);
|
pref('media.eme.enabled', true);
|
||||||
pref('webgl.disabled', false);
|
|
||||||
|
|
||||||
pref("app.update.url.manual", "https://www.zen-browser.app/download");
|
pref("app.update.url.manual", "https://www.zen-browser.app/download");
|
||||||
pref("app.update.url.details", "hhttps://www.zen-browser.app/download");
|
pref("app.update.url.details", "https://www.zen-browser.app/download");
|
||||||
pref("app.releaseNotesURL", "https://www.zen-browser.app/release-notes");
|
pref("app.releaseNotesURL", "https://www.zen-browser.app/release-notes");
|
||||||
pref("app.releaseNotesURL.aboutDialog", "https://www.zen-browser.app/release-notes");
|
pref("app.releaseNotesURL.aboutDialog", "https://www.zen-browser.app/release-notes");
|
||||||
|
|
||||||
@@ -129,12 +135,26 @@ pref('xpinstall.signatures.required', false);
|
|||||||
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
|
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
|
||||||
pref('dom.script_loader.bytecode_cache.strategy', 2);
|
pref('dom.script_loader.bytecode_cache.strategy', 2);
|
||||||
|
|
||||||
// Extremly experimental features
|
// Font rendering, not for MacOSX and Linux
|
||||||
pref("dom.webgpu.enabled", true);
|
#ifndef XP_UNIX
|
||||||
|
#ifndef XP_MACOSX
|
||||||
|
pref("gfx.font_rendering.directwrite.bold_simulation", 2);
|
||||||
|
pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 25);
|
||||||
|
pref("gfx.font_rendering.cleartype_params.force_gdi_classic_for_families", "");
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// Font rendering
|
// Enable GPU by default
|
||||||
pref('gfx.font_rendering.cleartype_params.rendering_mode', 5);
|
pref('gfx.webrender.all', true);
|
||||||
pref('gfx.font_rendering.cleartype_params.gamma', 1750);
|
pref('layers.acceleration.force-enabled', true);
|
||||||
|
pref('media.ffmpeg.vaapi.enabled', true);
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", false);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Enable experimental settings page (Usef for Zen Labs)
|
||||||
|
pref('browser.preferences.experimental', true);
|
||||||
|
|
||||||
#include better-fox.js
|
#include better-fox.js
|
||||||
|
|
||||||
@@ -152,7 +172,7 @@ pref("network.http.speculative-parallel-limit", 10);
|
|||||||
pref("network.http.rcwn.enabled", false);
|
pref("network.http.rcwn.enabled", false);
|
||||||
|
|
||||||
// Enable Browser Toolbox, Ctrl+Shift+Alt+I for debugging and modifying UI
|
// Enable Browser Toolbox, Ctrl+Shift+Alt+I for debugging and modifying UI
|
||||||
pref("devtools.debugger.remote-enabled", true);
|
pref("devtools.debugger.remote-enabled", false);
|
||||||
pref("devtools.chrome.enabled", true);
|
pref("devtools.chrome.enabled", true);
|
||||||
|
|
||||||
// Disable firefox's revamp
|
// Disable firefox's revamp
|
||||||
@@ -162,3 +182,7 @@ pref("sidebar.verticalTabs", false, locked);
|
|||||||
// Better Windows theming
|
// Better Windows theming
|
||||||
pref("widget.non-native-theme.scrollbar.style", 2);
|
pref("widget.non-native-theme.scrollbar.style", 2);
|
||||||
pref("widget.non-native-theme.use-theme-accent", true);
|
pref("widget.non-native-theme.use-theme-accent", true);
|
||||||
|
|
||||||
|
// Expose Letterboxing https://github.com/zen-browser/desktop/issues/475
|
||||||
|
pref("privacy.resistFingerprinting.letterboxing", false);
|
||||||
|
pref("privacy.resistFingerprinting.letterboxing.dimensions", "");
|
||||||
|
@@ -3,6 +3,9 @@ var ZenStartup = {
|
|||||||
init() {
|
init() {
|
||||||
this._changeSidebarLocation();
|
this._changeSidebarLocation();
|
||||||
this._zenInitBrowserLayout();
|
this._zenInitBrowserLayout();
|
||||||
|
window.SessionStore.promiseInitialized.then(async () => {
|
||||||
|
this._focusSearchBar();
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_zenInitBrowserLayout() {
|
_zenInitBrowserLayout() {
|
||||||
@@ -77,11 +80,15 @@ var ZenStartup = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_changeSidebarLocation() {
|
_changeSidebarLocation() {
|
||||||
|
const legacyLocation = Services.prefs.getBoolPref("zen.themes.tabs.legacy-location", false);
|
||||||
const kElementsToAppend = [
|
const kElementsToAppend = [
|
||||||
"sidebar-splitter",
|
"sidebar-splitter",
|
||||||
"sidebar-box",
|
"sidebar-box",
|
||||||
"navigator-toolbox",
|
|
||||||
];
|
];
|
||||||
|
if (legacyLocation) {
|
||||||
|
kElementsToAppend.push("navigator-toolbox");
|
||||||
|
window.document.documentElement.setAttribute("zen-sidebar-legacy", "true");
|
||||||
|
}
|
||||||
const wrapper = document.getElementById("zen-tabbox-wrapper");
|
const wrapper = document.getElementById("zen-tabbox-wrapper");
|
||||||
const appWrapepr = document.getElementById("zen-sidebar-box-container");
|
const appWrapepr = document.getElementById("zen-sidebar-box-container");
|
||||||
for (let id of kElementsToAppend) {
|
for (let id of kElementsToAppend) {
|
||||||
@@ -92,14 +99,28 @@ var ZenStartup = {
|
|||||||
}
|
}
|
||||||
appWrapepr.setAttribute("hidden", "true");
|
appWrapepr.setAttribute("hidden", "true");
|
||||||
|
|
||||||
|
const browser = document.getElementById("browser")
|
||||||
|
const toolbox = document.getElementById("navigator-toolbox");
|
||||||
|
if (!legacyLocation) {
|
||||||
|
browser.prepend(toolbox);
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove all styles except for the width, since we are xulstoring the complet style list
|
||||||
|
const width = toolbox.style.width;
|
||||||
|
toolbox.removeAttribute("style");
|
||||||
|
toolbox.style.width = width;
|
||||||
|
|
||||||
// Set a splitter to navigator-toolbox
|
// Set a splitter to navigator-toolbox
|
||||||
const splitter = document.createXULElement("splitter");
|
const splitter = document.createXULElement("splitter");
|
||||||
splitter.setAttribute("id", "zen-sidebar-splitter");
|
splitter.setAttribute("id", "zen-sidebar-splitter");
|
||||||
splitter.setAttribute("orient", "horizontal");
|
splitter.setAttribute("orient", "horizontal");
|
||||||
splitter.setAttribute("resizebefore", "sibling");
|
splitter.setAttribute("resizebefore", "sibling");
|
||||||
splitter.setAttribute("resizeafter", "none");
|
splitter.setAttribute("resizeafter", "none");
|
||||||
const titlebar = document.getElementById("navigator-toolbox");
|
toolbox.insertAdjacentElement("afterend", splitter);
|
||||||
titlebar.insertAdjacentElement("afterend", splitter);
|
},
|
||||||
|
|
||||||
|
_focusSearchBar() {
|
||||||
|
gURLBar.focus();
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -21,6 +21,10 @@ var gZenUIManager = {
|
|||||||
const button = document.getElementById('zen-bookmark-button');
|
const button = document.getElementById('zen-bookmark-button');
|
||||||
SidebarController.toggle('viewBookmarksSidebar', button);
|
SidebarController.toggle('viewBookmarksSidebar', button);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
createValidXULText(text) {
|
||||||
|
return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var gZenVerticalTabsManager = {
|
var gZenVerticalTabsManager = {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56edbd7405c 100644
|
index 18b91c95b88d11ddb257de03f12bc3e4cc75a96a..f117cfa7c9d1f9eb537cebbef42a9d2d945d53ac 100644
|
||||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
@@ -2,7 +2,7 @@
|
@@ -2,7 +2,7 @@
|
||||||
@@ -20,27 +20,29 @@ index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56e
|
|||||||
<toolbartabstop/>
|
<toolbartabstop/>
|
||||||
<hbox id="TabsToolbar-customization-target" flex="1">
|
<hbox id="TabsToolbar-customization-target" flex="1">
|
||||||
<toolbarbutton id="firefox-view-button"
|
<toolbarbutton id="firefox-view-button"
|
||||||
+ hidden="true"
|
+ hidden="true"
|
||||||
class="toolbarbutton-1 chromeclass-toolbar-additional"
|
class="toolbarbutton-1 chromeclass-toolbar-additional"
|
||||||
data-l10n-id="toolbar-button-firefox-view-2"
|
data-l10n-id="toolbar-button-firefox-view-2"
|
||||||
role="button"
|
role="button"
|
||||||
@@ -50,13 +51,14 @@
|
@@ -50,7 +51,7 @@
|
||||||
aria-multiselectable="true"
|
aria-multiselectable="true"
|
||||||
setfocus="false"
|
setfocus="false"
|
||||||
tooltip="tabbrowser-tab-tooltip"
|
tooltip="tabbrowser-tab-tooltip"
|
||||||
|
- orient="horizontal"
|
||||||
+ orient="vertical"
|
+ orient="vertical"
|
||||||
stopwatchid="FX_TAB_CLICK_MS">
|
stopwatchid="FX_TAB_CLICK_MS">
|
||||||
<hbox class="tab-drop-indicator" hidden="true"/>
|
<hbox class="tab-drop-indicator" hidden="true"/>
|
||||||
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
|
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
|
||||||
# significantly, there is an optimization in
|
@@ -66,7 +67,7 @@
|
||||||
# DisplayPortUtils::MaybeCreateDisplayPortInFirstScrollFrameEncountered based
|
tooltip="dynamic-shortcut-tooltip"
|
||||||
# the current structure that we may want to revisit.
|
data-l10n-id="tabs-toolbar-new-tab"/>
|
||||||
|
</html:div>
|
||||||
- <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" style="min-width: 1px;" clicktoscroll="true" scrolledtostart="true" scrolledtoend="true">
|
- <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" style="min-width: 1px;" clicktoscroll="true" scrolledtostart="true" scrolledtoend="true">
|
||||||
+ <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="vertical" style="min-width: 1px;" clicktoscroll="true" scrolledtostart="true" scrolledtoend="true">
|
+ <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="vertical" style="min-width: 1px;" clicktoscroll="true" scrolledtostart="true" scrolledtoend="true">
|
||||||
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
|
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
|
||||||
<hbox id="tabbrowser-arrowscrollbox-periphery">
|
<hbox id="tabbrowser-arrowscrollbox-periphery">
|
||||||
<toolbartabstop/>
|
<toolbartabstop/>
|
||||||
@@ -103,9 +105,10 @@
|
@@ -113,9 +114,10 @@
|
||||||
<toolbarbutton id="content-analysis-indicator"
|
<toolbarbutton id="content-analysis-indicator"
|
||||||
oncommand="ContentAnalysis.showPanel(this, PanelUI);"
|
oncommand="ContentAnalysis.showPanel(this, PanelUI);"
|
||||||
class="toolbarbutton-1 content-analysis-indicator-icon"/>
|
class="toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||||
@@ -53,7 +55,7 @@ index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56e
|
|||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
||||||
</vbox>
|
</vbox>
|
||||||
@@ -450,6 +453,7 @@
|
@@ -471,6 +473,7 @@
|
||||||
|
|
||||||
<toolbarbutton id="fxa-toolbar-menu-button" class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
|
<toolbarbutton id="fxa-toolbar-menu-button" class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
|
||||||
badged="true"
|
badged="true"
|
||||||
@@ -61,12 +63,11 @@ index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56e
|
|||||||
delegatesanchor="true"
|
delegatesanchor="true"
|
||||||
onmousedown="gSync.toggleAccountPanel(this, event)"
|
onmousedown="gSync.toggleAccountPanel(this, event)"
|
||||||
onkeypress="gSync.toggleAccountPanel(this, event)"
|
onkeypress="gSync.toggleAccountPanel(this, event)"
|
||||||
@@ -501,6 +505,8 @@
|
@@ -522,6 +525,7 @@
|
||||||
consumeanchor="PanelUI-button"
|
consumeanchor="PanelUI-button"
|
||||||
data-l10n-id="appmenu-menu-button-closed2"/>
|
data-l10n-id="appmenu-menu-button-closed2"/>
|
||||||
</toolbaritem>
|
</toolbaritem>
|
||||||
+
|
+#include titlebar-items.inc.xhtml
|
||||||
+ #include titlebar-items.inc.xhtml
|
|
||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
||||||
<toolbar id="PersonalToolbar"
|
<toolbar id="PersonalToolbar"
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
content/browser/zen-styles/zen-buttons.css (content/zen-styles/zen-buttons.css)
|
content/browser/zen-styles/zen-buttons.css (content/zen-styles/zen-buttons.css)
|
||||||
content/browser/zen-styles/zen-tabs.css (content/zen-styles/zen-tabs.css)
|
content/browser/zen-styles/zen-tabs.css (content/zen-styles/zen-tabs.css)
|
||||||
content/browser/zen-styles/zen-tabs/vertical-tabs.css (content/zen-styles/zen-tabs/vertical-tabs.css)
|
content/browser/zen-styles/zen-tabs/vertical-tabs.css (content/zen-styles/zen-tabs/vertical-tabs.css)
|
||||||
|
content/browser/zen-styles/zen-tabs/horizontal-tabs.css (content/zen-styles/zen-tabs/horizontal-tabs.css)
|
||||||
content/browser/zen-styles/zen-browser-ui.css (content/zen-styles/zen-browser-ui.css)
|
content/browser/zen-styles/zen-browser-ui.css (content/zen-styles/zen-browser-ui.css)
|
||||||
content/browser/zen-styles/zen-animations.css (content/zen-styles/zen-animations.css)
|
content/browser/zen-styles/zen-animations.css (content/zen-styles/zen-animations.css)
|
||||||
content/browser/zen-styles/zen-panel-ui.css (content/zen-styles/zen-panel-ui.css)
|
content/browser/zen-styles/zen-panel-ui.css (content/zen-styles/zen-panel-ui.css)
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
<link rel="localization" href="browser/zen-web-side-panels.ftl"/>
|
<link rel="localization" href="browser/zen-web-side-panels.ftl"/>
|
||||||
<link rel="localization" href="browser/zen-workspaces.ftl"/>
|
<link rel="localization" href="browser/zen-workspaces.ftl"/>
|
||||||
<link rel="localization" href="browser/zen-split-view.ftl"/>
|
<link rel="localization" href="browser/zen-split-view.ftl"/>
|
||||||
|
<link rel="localization" href="browser/zen-general.ftl"/>
|
||||||
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
|
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
|
||||||
|
@@ -78,7 +78,7 @@
|
|||||||
|
|
||||||
<panel flip="slide" type="arrow" orient="vertical" id="PanelUI-zen-workspaces" position="bottomright topright" mainview="true" side="left">
|
<panel flip="slide" type="arrow" orient="vertical" id="PanelUI-zen-workspaces" position="bottomright topright" mainview="true" side="left">
|
||||||
<panelmultiview id="PanelUI-zen-workspaces-multiview" mainViewId="PanelUI-zen-workspaces-view">
|
<panelmultiview id="PanelUI-zen-workspaces-multiview" mainViewId="PanelUI-zen-workspaces-view">
|
||||||
<panelview lockpanelvertical="true" id="PanelUI-zen-workspaces-view" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
<panelview id="PanelUI-zen-workspaces-view" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||||
<vbox>
|
<vbox>
|
||||||
<hbox>
|
<hbox>
|
||||||
<h3 data-l10n-id="zen-panel-ui-current-window-text"></h3>
|
<h3 data-l10n-id="zen-panel-ui-current-window-text"></h3>
|
||||||
@@ -98,28 +98,31 @@
|
|||||||
</html:div>
|
</html:div>
|
||||||
</vbox>
|
</vbox>
|
||||||
</panelview>
|
</panelview>
|
||||||
<panelview lockpanelvertical="true" id="PanelUI-zen-workspaces-create" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
<panelview id="PanelUI-zen-workspaces-create" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||||
<vbox>
|
|
||||||
<h1 data-l10n-id="zen-panel-ui-workspaces-create-text"></h1>
|
|
||||||
<html:input autofocus="true" id="PanelUI-zen-workspaces-create-input" type="text" placeholder="Enter workspace name" oninput="ZenWorkspaces.onWorkspaceNameChange(this);" />
|
|
||||||
</vbox>
|
|
||||||
<html:moz-button-group class="panel-footer" id="PanelUI-zen-workspaces-create-footer">
|
|
||||||
<button disabled="true" default="true" slot="primary" id="PanelUI-zen-workspaces-create-save" oncommand="ZenWorkspaces.saveWorkspaceFromInput();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-save">
|
|
||||||
</button>
|
|
||||||
<button id="PanelUI-zen-workspaces-create-cancel" oncommand="ZenWorkspaces.cancelWorkspaceCreation();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-cancel">
|
|
||||||
</button>
|
|
||||||
</html:moz-button-group>
|
|
||||||
</panelview>
|
|
||||||
<panelview lockpanelvertical="true" id="PanelUI-zen-workspaces-create-icons" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
|
||||||
<vbox>
|
<vbox>
|
||||||
<h1 data-l10n-id="zen-panel-ui-workspaces-create-text"></h1>
|
<h1 data-l10n-id="zen-panel-ui-workspaces-create-text"></h1>
|
||||||
|
<html:input autofocus="true" id="PanelUI-zen-workspaces-create-input" type="text" placeholder="Enter workspace name" oninput="ZenWorkspaces.onWorkspaceCreationNameChange(this);" />
|
||||||
<hbox id="PanelUI-zen-workspaces-create-icons-container">
|
<hbox id="PanelUI-zen-workspaces-create-icons-container">
|
||||||
</hbox>
|
</hbox>
|
||||||
</vbox>
|
</vbox>
|
||||||
<html:moz-button-group class="panel-footer" id="PanelUI-zen-workspaces-create-footer">
|
<html:moz-button-group class="panel-footer" id="PanelUI-zen-workspaces-create-footer">
|
||||||
<button default="true" slot="primary" id="PanelUI-zen-workspaces-create-save-icons" oncommand="ZenWorkspaces.saveWorkspaceFromIcon();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-save">
|
<button disabled="true" default="true" slot="primary" id="PanelUI-zen-workspaces-create-save" oncommand="ZenWorkspaces.saveWorkspaceFromCreate();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-save">
|
||||||
</button>
|
</button>
|
||||||
<button id="PanelUI-zen-workspaces-create-cancel-icons" oncommand="ZenWorkspaces.cancelWorkspaceCreation();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-cancel">
|
<button id="PanelUI-zen-workspaces-create-cancel" oncommand="ZenWorkspaces.closeWorkspacesSubView();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-create-cancel">
|
||||||
|
</button>
|
||||||
|
</html:moz-button-group>
|
||||||
|
</panelview>
|
||||||
|
<panelview id="PanelUI-zen-workspaces-edit" class="PanelUI-subView" role="document" mainview-with-header="true" has-custom-header="true">
|
||||||
|
<vbox>
|
||||||
|
<h1 data-l10n-id="zen-panel-ui-workspaces-edit-text"></h1>
|
||||||
|
<html:input autofocus="true" id="PanelUI-zen-workspaces-edit-input" type="text" placeholder="Enter workspace name" oninput="ZenWorkspaces.onWorkspaceEditChange();" />
|
||||||
|
<hbox id="PanelUI-zen-workspaces-edit-icons-container">
|
||||||
|
</hbox>
|
||||||
|
</vbox>
|
||||||
|
<html:moz-button-group class="panel-footer" id="PanelUI-zen-workspaces-edit-footer">
|
||||||
|
<button disabled="true" default="true" slot="primary" id="PanelUI-zen-workspaces-edit-save" oncommand="ZenWorkspaces.saveWorkspaceFromEdit();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-edit-save">
|
||||||
|
</button>
|
||||||
|
<button id="PanelUI-zen-workspaces-edit-cancel" oncommand="ZenWorkspaces.closeWorkspacesSubView();" class="footer-button" data-l10n-id="zen-panel-ui-workspaces-edit-cancel">
|
||||||
</button>
|
</button>
|
||||||
</html:moz-button-group>
|
</html:moz-button-group>
|
||||||
</panelview>
|
</panelview>
|
||||||
@@ -129,5 +132,9 @@
|
|||||||
<menupopup id="zenWorkspaceActionsMenu"
|
<menupopup id="zenWorkspaceActionsMenu"
|
||||||
onpopupshowing="ZenWorkspaces.updateContextMenu(this);"
|
onpopupshowing="ZenWorkspaces.updateContextMenu(this);"
|
||||||
onpopuphidden="ZenWorkspaces.onContextMenuClose();">
|
onpopuphidden="ZenWorkspaces.onContextMenuClose();">
|
||||||
<menuitem id="context_zenDeleteWorkspace" oncommand="ZenWorkspaces.contextDelete();" data-l10n-id="zen-workspaces-panel-context-delete"/>
|
<menuitem id="context_zenOpenWorkspace" oncommand="ZenWorkspaces.openWorkspace();" data-l10n-id="zen-workspaces-panel-context-open"/>
|
||||||
|
<menuseparator/>
|
||||||
|
<menuitem id="context_zenSetAsDefaultWorkspace" oncommand="ZenWorkspaces.setDefaultWorkspace();" data-l10n-id="zen-workspaces-panel-context-set-default"/>
|
||||||
|
<menuitem id="context_zenEditWorkspace" oncommand="ZenWorkspaces.contextEdit(event);" data-l10n-id="zen-workspaces-panel-context-edit"/>
|
||||||
|
<menuitem id="context_zenDeleteWorkspace" oncommand="ZenWorkspaces.contextDelete(event);" data-l10n-id="zen-workspaces-panel-context-delete"/>
|
||||||
</menupopup>
|
</menupopup>
|
@@ -1,7 +1,5 @@
|
|||||||
<toolbar id="zen-sidebar-icons-wrapper">
|
<toolbar brighttext="true" id="zen-sidebar-icons-wrapper" class="zen-dont-hide-on-fullscreen">
|
||||||
<toolbarbutton class="toolbarbutton-1 zen-sidebar-action-button chromeclass-toolbar-additional subviewbutton-nav" badge="true" closemenu="none" removable="true" delegatesanchor="true" cui-areatype="toolbar" id="zen-profile-button" data-l10n-id="toolbar-button-account" onclick="ZenProfileDialogUI.showSubView(this, event)">
|
<toolbarbutton class="toolbarbutton-1 zen-sidebar-action-button chromeclass-toolbar-additional subviewbutton-nav" badge="true" closemenu="none" removable="true" delegatesanchor="true" cui-areatype="toolbar" id="zen-profile-button" data-l10n-id="toolbar-button-account" onclick="ZenProfileDialogUI.showSubView(this, event)">
|
||||||
<html:div class="zen-side-bar-profiles-button-panel-correction"></html:div>
|
|
||||||
<html:div></html:div>
|
|
||||||
</toolbarbutton>
|
</toolbarbutton>
|
||||||
<toolbarbutton class="toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" data-l10n-id="sidebar-zen-expand" oncommand="gZenVerticalTabsManager.toggleExpand();"></toolbarbutton>
|
<toolbarbutton class="toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" data-l10n-id="sidebar-zen-expand" oncommand="gZenVerticalTabsManager.toggleExpand();"></toolbarbutton>
|
||||||
<toolbarbutton class="toolbarbutton-1 zen-sidebar-action-button" id="zen-sidepanel-button" data-l10n-id="sidebar-zen-sidepanel" onclick="gZenBrowserManagerSidebar.toggle();"></toolbarbutton>
|
<toolbarbutton class="toolbarbutton-1 zen-sidebar-action-button" id="zen-sidepanel-button" data-l10n-id="sidebar-zen-sidepanel" onclick="gZenBrowserManagerSidebar.toggle();"></toolbarbutton>
|
||||||
|
@@ -20,8 +20,8 @@
|
|||||||
<html:p data-l10n-id="zen-sidebar-introduction-description"/>
|
<html:p data-l10n-id="zen-sidebar-introduction-description"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
</vbox>
|
</vbox>
|
||||||
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-wrapper">
|
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-wrapper" class="zen-dont-hide-on-fullscreen">
|
||||||
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-sites">
|
<toolbar mode="icons" flex="1" id="zen-sidebar-panels-sites" class="zen-dont-hide-on-fullscreen">
|
||||||
|
|
||||||
</toolbar>
|
</toolbar>
|
||||||
<toolbarbutton id="zen-sidebar-add-panel-button" class="zen-sidebar-panel-button toolbarbutton-1 chromeclass-toolbar-additional" onclick="gZenBrowserManagerSidebar._openAddPanelDialog();"/>
|
<toolbarbutton id="zen-sidebar-add-panel-button" class="zen-sidebar-panel-button toolbarbutton-1 chromeclass-toolbar-additional" onclick="gZenBrowserManagerSidebar._openAddPanelDialog();"/>
|
||||||
|
@@ -83,7 +83,19 @@
|
|||||||
@keyframes zen-sidebar-panel-animation-2 {
|
@keyframes zen-sidebar-panel-animation-2 {
|
||||||
0% {
|
0% {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateX(-50px);
|
transform: translateX(-5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes zen-sidebar-panel-animation-right {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(5px);
|
||||||
}
|
}
|
||||||
|
|
||||||
100% {
|
100% {
|
||||||
|
@@ -4,9 +4,12 @@
|
|||||||
width: -moz-available;
|
width: -moz-available;
|
||||||
margin: 0 var(--zen-element-separation) var(--zen-element-separation) 0;
|
margin: 0 var(--zen-element-separation) var(--zen-element-separation) 0;
|
||||||
box-shadow: 0 0 0 1px var(--zen-colors-border);
|
box-shadow: 0 0 0 1px var(--zen-colors-border);
|
||||||
clip-path: inset(-5px -5px -5px round var(--zen-border-radius));
|
clip-path: inset(-5px -5px -5px round var(--zen-webview-border-radius, var(--zen-border-radius)));
|
||||||
border-radius: var(--zen-border-radius);
|
border-radius: var(--zen-webview-border-radius, var(--zen-border-radius));
|
||||||
transform: translate3d(0, 0, 0);
|
transform: translate3d(0, 0, 0);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
|
/* This fixes an issue with the left border */
|
||||||
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,15 @@
|
|||||||
|
|
||||||
#navigator-toolbox,
|
|
||||||
#browser,
|
#browser,
|
||||||
#appcontent,
|
#appcontent,
|
||||||
#tabbrowser-tabpanels {
|
#tabbrowser-tabpanels {
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#navigator-toolbox {
|
||||||
|
/* see issue #426 */
|
||||||
|
background: var(--zen-navigator-toolbox-background, transparent) !important;
|
||||||
|
}
|
||||||
|
|
||||||
#browser {
|
#browser {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
@@ -21,12 +25,14 @@ html#main-window > body {
|
|||||||
:not([inDOMFullscreen="true"]) #appcontent,
|
:not([inDOMFullscreen="true"]) #appcontent,
|
||||||
#sidebar-box {
|
#sidebar-box {
|
||||||
/** Sidebar is already hidden in full screen mode */
|
/** Sidebar is already hidden in full screen mode */
|
||||||
box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;
|
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#zen-main-app-wrapper {
|
#zen-main-app-wrapper {
|
||||||
background: var(--zen-main-browser-background);
|
background: var(--zen-main-browser-background);
|
||||||
|
|
||||||
|
border-top-left-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||||
|
border-top-right-radius: env(-moz-gtk-csd-titlebar-radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
#tabbrowser-tabbox {
|
#tabbrowser-tabbox {
|
||||||
|
@@ -12,27 +12,34 @@
|
|||||||
#navigator-toolbox[inFullscreen]{ margin-top: 0 !important; }
|
#navigator-toolbox[inFullscreen]{ margin-top: 0 !important; }
|
||||||
|
|
||||||
#navigator-toolbox {
|
#navigator-toolbox {
|
||||||
--zen-compact-toolbox-margin-single: 15px;
|
--zen-compact-toolbox-margin-single: calc(var(--zen-element-separation) * 2);
|
||||||
--zen-compact-toolbox-margin: var(--zen-compact-toolbox-margin-single);
|
--zen-compact-toolbox-margin: var(--zen-compact-toolbox-margin-single);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: block;
|
display: block;
|
||||||
transition: 200ms ease-in-out !important;
|
transition: 200ms ease-in-out !important;
|
||||||
transform: translateX(calc(-100% + var(--zen-compact-toolbox-margin-single) + 2px));
|
transform: translateX(calc(-100% + (var(--zen-compact-toolbox-margin-single) / 2)));
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: var(--zen-compact-toolbox-margin) !important;
|
padding: var(--zen-compact-toolbox-margin) !important;
|
||||||
padding-top: calc(var(--zen-compact-toolbox-margin-single) - var(--zen-element-separation));
|
|
||||||
|
|
||||||
& #titlebar {
|
& #titlebar {
|
||||||
border: 1px solid var(--zen-colors-border);
|
border: 1px solid var(--zen-colors-border);
|
||||||
min-width: calc(var(--zen-navigation-toolbar-min-width) + var(--zen-compact-toolbox-margin-single) * 4) !important;
|
transition-delay: 200ms;
|
||||||
background: var(--zen-colors-tertiary) !important;
|
background: var(--zen-colors-tertiary) !important;
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
border-radius: var(--zen-panel-radius);
|
border-radius: var(--zen-panel-radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&, & #titlebar {
|
||||||
|
min-width: calc(var(--zen-navigation-toolbar-min-width) + var(--zen-compact-toolbox-margin-single) * 4) !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media not (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
@media not (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||||
@@ -65,7 +72,18 @@
|
|||||||
@media not (-moz-bool-pref: "zen.view.compact.hide-toolbar") {
|
@media not (-moz-bool-pref: "zen.view.compact.hide-toolbar") {
|
||||||
#navigator-toolbox {
|
#navigator-toolbox {
|
||||||
/* Remove the top margin */
|
/* Remove the top margin */
|
||||||
--zen-compact-toolbox-margin: calc(var(--zen-compact-toolbox-margin-single) / 3) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single);
|
/* The toolbox isn't relative to the webview anymore, meaning we can't just add a static value and call it a day...
|
||||||
|
* The top margin is calculated by taking the following factors into account:
|
||||||
|
* 1. Element separation
|
||||||
|
* 2. Extra margin to separate from the webview
|
||||||
|
* 3. Add element separation variable, to avoid overlaping with the toolbar
|
||||||
|
* 4. Calculate toolbar height, taken from zen-urlbar.css
|
||||||
|
*/
|
||||||
|
--zen-compact-toolbox-margin: calc(var(--zen-compact-toolbox-margin-single) + .15rem + var(--zen-element-separation) + (18px + (var(--toolbarbutton-inner-padding) * 2))) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single);
|
||||||
|
|
||||||
|
:root[zen-sidebar-legacy="true"] & {
|
||||||
|
--zen-compact-toolbox-margin: calc(var(--zen-compact-toolbox-margin-single) / 2) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single) var(--zen-compact-toolbox-margin-single);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#zen-sidebar-web-panel-wrapper,
|
#zen-sidebar-web-panel-wrapper,
|
||||||
@@ -77,14 +95,19 @@
|
|||||||
#navigator-toolbox:hover,
|
#navigator-toolbox:hover,
|
||||||
#navigator-toolbox:focus-within,
|
#navigator-toolbox:focus-within,
|
||||||
#navigator-toolbox[zen-user-show],
|
#navigator-toolbox[zen-user-show],
|
||||||
|
#navigator-toolbox[movingtab],
|
||||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||||
|
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||||
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
|
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
|
||||||
transition-delay: 33ms !important;
|
|
||||||
transform: none !important;
|
transform: none !important;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#navigator-toolbox > *{ line-height: normal; pointer-events: auto }
|
#navigator-toolbox > *{ line-height: normal; }
|
||||||
|
|
||||||
#navigator-toolbox,
|
#navigator-toolbox,
|
||||||
#navigator-toolbox > *{
|
#navigator-toolbox > *{
|
||||||
@@ -112,14 +135,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (-moz-bool-pref: "zen.view.compact.hide-toolbar") {
|
@media (-moz-bool-pref: "zen.view.compact.hide-toolbar") {
|
||||||
#navigator-toolbox {
|
|
||||||
padding-top: var(--zen-compact-toolbox-margin);
|
|
||||||
}
|
|
||||||
|
|
||||||
#zen-appcontent-navbar-container {
|
#zen-appcontent-navbar-container {
|
||||||
--urlbar-height: unset;
|
--urlbar-height: unset;
|
||||||
transition: .2s ease-in-out;
|
transition: .2s ease-in-out;
|
||||||
transform: translateY(calc(-100% + 5px));
|
transform: translateY(calc(-100% + var(--zen-element-separation)));
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -153,4 +172,26 @@
|
|||||||
margin-top: 10px !important;
|
margin-top: 10px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (-moz-bool-pref: "zen.tabs.vertical.right-side") {
|
||||||
|
#navigator-toolbox {
|
||||||
|
right: 0 !important;
|
||||||
|
transform: translateX(calc(100% - (var(--zen-compact-toolbox-margin-single) / 2))) !important;;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigator-toolbox:hover,
|
||||||
|
#navigator-toolbox:focus-within,
|
||||||
|
#navigator-toolbox[zen-user-show],
|
||||||
|
#navigator-toolbox[movingtab],
|
||||||
|
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||||
|
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||||
|
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
|
||||||
|
transform: none !important;
|
||||||
|
opacity: 1;
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -283,4 +283,3 @@ menu, menuitem {
|
|||||||
color: var(--button-hover-color);
|
color: var(--button-hover-color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
border-color: transparent !important;
|
border-color: transparent !important;
|
||||||
width: 1px !important;
|
width: 1px !important;
|
||||||
margin-right: 5px !important;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar-box[positionend] {
|
#sidebar-box[positionend] {
|
||||||
@@ -48,6 +48,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.zen-sidebar-action-button {
|
.zen-sidebar-action-button {
|
||||||
|
--toolbarbutton-active-background: var(--zen-colors-secondary);
|
||||||
width: var(--zen-sidebar-action-button-width);
|
width: var(--zen-sidebar-action-button-width);
|
||||||
height: var(--zen-sidebar-action-button-width);
|
height: var(--zen-sidebar-action-button-width);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -81,10 +82,6 @@
|
|||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.zen-sidebar-action-button label {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sidebar-box[hidden="true"] .zen-sidebar-action-button,
|
#sidebar-box[hidden="true"] .zen-sidebar-action-button,
|
||||||
.zen-sidebar-panel-button[animate] {
|
.zen-sidebar-panel-button[animate] {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
@@ -120,10 +117,11 @@
|
|||||||
#zen-profile-button {
|
#zen-profile-button {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
position: relative;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#zen-profile-button > div:last-child {
|
#zen-profile-button::before {
|
||||||
background-image: var(--avatar-image-url);
|
background-image: var(--avatar-image-url);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
@@ -131,6 +129,11 @@
|
|||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
border: 2px solid var(--zen-colors-border);
|
border: 2px solid var(--zen-colors-border);
|
||||||
|
content: '';
|
||||||
|
top: 50%;
|
||||||
|
left: var(--toolbar-start-end-padding);
|
||||||
|
transform: translateY(-50%);
|
||||||
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ugly code */
|
/* Ugly code */
|
||||||
@@ -146,12 +149,6 @@
|
|||||||
#TabsToolbar .zen-sidebar-action-button:nth-child(9), .zen-sidebar-panel-button:nth-child(9) { animation-delay: 0.9s; }
|
#TabsToolbar .zen-sidebar-action-button:nth-child(9), .zen-sidebar-panel-button:nth-child(9) { animation-delay: 0.9s; }
|
||||||
#TabsToolbar .zen-sidebar-action-button:nth-child(10), .zen-sidebar-panel-button:nth-child(10) { animation-delay: 1s; }
|
#TabsToolbar .zen-sidebar-action-button:nth-child(10), .zen-sidebar-panel-button:nth-child(10) { animation-delay: 1s; }
|
||||||
|
|
||||||
#TabsToolbar .zen-side-bar-profiles-button-panel-correction {
|
|
||||||
position: absolute;
|
|
||||||
bottom: -2px;
|
|
||||||
right: -2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#zen-sidebar-icons-wrapper toolbarbutton {
|
#zen-sidebar-icons-wrapper toolbarbutton {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@@ -168,6 +165,7 @@
|
|||||||
--zen-sidebar-action-content-separator: calc(10px + var(--zen-tabbrowser-padding));
|
--zen-sidebar-action-content-separator: calc(10px + var(--zen-tabbrowser-padding));
|
||||||
padding-top: var(--zen-sidebar-action-content-separator);
|
padding-top: var(--zen-sidebar-action-content-separator);
|
||||||
margin-top: var(--zen-sidebar-action-content-separator);
|
margin-top: var(--zen-sidebar-action-content-separator);
|
||||||
|
color-scheme: inherit !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#zen-sidebar-icons-wrapper::before {
|
#zen-sidebar-icons-wrapper::before {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
/* Styles for both vertical and horizontal tabs */
|
/* Styles for both vertical and horizontal tabs */
|
||||||
/*@import url("chrome://browser/content/zen-styles/zen-tabs/horizontal-tabs.css");*/
|
@import url("chrome://browser/content/zen-styles/zen-tabs/horizontal-tabs.css");
|
||||||
@import url("chrome://browser/content/zen-styles/zen-tabs/vertical-tabs.css");
|
@import url("chrome://browser/content/zen-styles/zen-tabs/vertical-tabs.css");
|
||||||
|
|
||||||
#zen-tabbox-wrapper {
|
#zen-tabbox-wrapper {
|
||||||
|
@@ -0,0 +1,3 @@
|
|||||||
|
@media not (-moz-bool-pref: "zen.tabs.vertical") {
|
||||||
|
|
||||||
|
}
|
@@ -3,13 +3,57 @@
|
|||||||
#titlebar {
|
#titlebar {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#vertical-pinned-tabs-container {
|
||||||
|
padding-inline-end: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tabs-newtab-button {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#newtab-button-container {
|
||||||
|
margin-inline-end: 0 !important;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: calc(var(--space-small) / 2);
|
||||||
|
position: relative;
|
||||||
|
padding-top: 0 !important;
|
||||||
|
|
||||||
|
--zen-sidebar-action-button-width: 35px;
|
||||||
|
|
||||||
|
& #vertical-tabs-newtab-button {
|
||||||
|
background: var(--button-hover-bgcolor);
|
||||||
|
}
|
||||||
|
|
||||||
|
&[showborder] {
|
||||||
|
margin-top: var(--space-small);
|
||||||
|
border-top: 0px solid transparent !important;
|
||||||
|
padding-top: var(--space-small) !important;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
width: 70%;
|
||||||
|
height: 1.2px;
|
||||||
|
background: var(--zen-colors-border);
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: -3px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#navigator-toolbox {
|
#navigator-toolbox {
|
||||||
--zen-tabbrowser-padding: 5px;
|
--zen-tabbrowser-padding: 5px;
|
||||||
margin-top: 0; /* Issue #156 */
|
margin-top: 0; /* Issue #156 */
|
||||||
|
order: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#zen-sidebar-splitter {
|
||||||
|
order: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
:root[inFullscreen="true"] #navigator-toolbox {
|
#navigator-toolbox {
|
||||||
margin-top: 0 !important;
|
margin-top: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,23 +203,6 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tabbrowser-tabs:has(.tabbrowser-tab[pinned]) .tabbrowser-tab:nth-child(1 of [fadein]:not([pinned]):not([hidden])) {
|
|
||||||
margin-top: 15px;
|
|
||||||
position: relative;
|
|
||||||
overflow: visible;
|
|
||||||
|
|
||||||
& .tab-stack::before {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: -11px;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 1.5px;
|
|
||||||
border-radius: 1px;
|
|
||||||
background: var(--zen-colors-border);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-close-button {
|
.tab-close-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: none;
|
display: none;
|
||||||
@@ -221,10 +248,12 @@
|
|||||||
|
|
||||||
padding-inline-start: 0 !important;
|
padding-inline-start: 0 !important;
|
||||||
margin-inline-start: 0 !important;
|
margin-inline-start: 0 !important;
|
||||||
|
|
||||||
|
grid-gap: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tabbrowser-arrowscrollbox {
|
#tabbrowser-arrowscrollbox {
|
||||||
margin: 3px 0;
|
margin-bottom: 3px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#alltabs-button stack {
|
#alltabs-button stack {
|
||||||
@@ -232,7 +261,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tab-icon-overlay {
|
.tab-icon-overlay {
|
||||||
margin-inline-end: 0;
|
margin-inline-end: 0 !important;
|
||||||
display: none; /* TODO: fix this */
|
display: none; /* TODO: fix this */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,9 +270,21 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (-moz-bool-pref: "zen.view.sidebar-expanded.on-hover") {
|
||||||
|
:root:not([zen-sidebar-legacy="true"]) #navigator-toolbox:is([zen-user-hover="true"]:hover, :not([zen-user-hover="true"])) {
|
||||||
|
padding-right: 47px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||||
#navigator-toolbox:is([zen-user-hover="true"]:hover, :not([zen-user-hover="true"])) {
|
#navigator-toolbox:is(
|
||||||
|
#navigator-toolbox[zen-user-hover="true"]:hover,
|
||||||
|
#navigator-toolbox[zen-user-hover="true"]:focus-within,
|
||||||
|
#mainPopupSet[zen-user-hover="true"]:has(> #appMenu-popup:hover) ~ toolbox,
|
||||||
|
#navigator-toolbox[zen-user-hover="true"]:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)),
|
||||||
|
:not([zen-user-hover="true"])) {
|
||||||
|
--zen-hover-animation: zen-sidebar-panel-animation-2;
|
||||||
--zen-navigation-toolbar-min-width: 155px;
|
--zen-navigation-toolbar-min-width: 155px;
|
||||||
min-width: var(--zen-navigation-toolbar-min-width) !important;
|
min-width: var(--zen-navigation-toolbar-min-width) !important;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
@@ -251,6 +292,25 @@
|
|||||||
width: 170px;
|
width: 170px;
|
||||||
border: none;
|
border: none;
|
||||||
padding-left: 2px;
|
padding-left: 2px;
|
||||||
|
animation: var(--zen-hover-animation) 0.3s backwards;
|
||||||
|
|
||||||
|
#vertical-pinned-tabs-container {
|
||||||
|
margin-left: var(--zen-tabbrowser-padding);
|
||||||
|
}
|
||||||
|
|
||||||
|
#newtab-button-container {
|
||||||
|
margin: var(--zen-tabbrowser-padding);
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
|
||||||
|
&[showborder] {
|
||||||
|
margin-top: var(--zen-tabbrowser-padding);
|
||||||
|
&::before {
|
||||||
|
width: 95%;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
& .tab-label-container {
|
& .tab-label-container {
|
||||||
display: block;
|
display: block;
|
||||||
@@ -331,6 +391,7 @@
|
|||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(var(--tab-min-height), 1fr));
|
grid-template-columns: repeat(auto-fill, minmax(var(--tab-min-height), 1fr));
|
||||||
padding: calc(var(--zen-tabbrowser-padding) / 2);
|
padding: calc(var(--zen-tabbrowser-padding) / 2);
|
||||||
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
& .tabbrowser-tab:not([pinned]),
|
& .tabbrowser-tab:not([pinned]),
|
||||||
@@ -369,19 +430,21 @@
|
|||||||
/* Display the vertical tabs on the right side */
|
/* Display the vertical tabs on the right side */
|
||||||
@media (-moz-bool-pref: "zen.tabs.vertical.right-side") and (not (-moz-bool-pref: "zen.view.compact")) {
|
@media (-moz-bool-pref: "zen.tabs.vertical.right-side") and (not (-moz-bool-pref: "zen.view.compact")) {
|
||||||
#navigator-toolbox {
|
#navigator-toolbox {
|
||||||
order: 4;
|
order: 8 !important;
|
||||||
padding-left: 0;
|
padding-left: 0 !important;
|
||||||
|
--zen-hover-animation: zen-sidebar-panel-animation-right !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root:not([zen-sidebar-legacy="true"]) {
|
||||||
|
padding: calc(var(--zen-tabbrowser-padding) * 1.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
#zen-sidebar-splitter {
|
#zen-sidebar-splitter {
|
||||||
order: 3;
|
order: 7 !important;
|
||||||
}
|
|
||||||
|
|
||||||
#tabbrowser-tabbox {
|
|
||||||
padding-left: var(--zen-element-separation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#tabbrowser-tabpanels .browserSidebarContainer {
|
#tabbrowser-tabpanels .browserSidebarContainer {
|
||||||
|
margin-left: var(--zen-element-separation) !important;
|
||||||
margin-right: 0 !important;
|
margin-right: 0 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -395,10 +458,13 @@
|
|||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#navigator-toolbox, #titlebar, #TabsToolbar {
|
||||||
|
transition: 0s !important;
|
||||||
|
}
|
||||||
|
|
||||||
#TabsToolbar {
|
#TabsToolbar {
|
||||||
--hovered-verticaltab-width: 20em;
|
--hovered-verticaltab-width: 20em;
|
||||||
|
|
||||||
transition: 200ms, margin 200ms, border-color 0 ease-in-out !important;
|
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
background-repeat: no-repeat !important;
|
background-repeat: no-repeat !important;
|
||||||
background-position: center center !important;
|
background-position: center center !important;
|
||||||
@@ -412,59 +478,83 @@
|
|||||||
border-top-right-radius: var(--zen-border-radius);
|
border-top-right-radius: var(--zen-border-radius);
|
||||||
transform: translateY(-1px);
|
transform: translateY(-1px);
|
||||||
}
|
}
|
||||||
|
|
||||||
#TabsToolbar:not(:hover) #tabbrowser-tabs[closebuttons="activetab"] .tabbrowser-tab .tab-content[class] > .tab-close-button[class] {
|
#navigator-toolbox:hover,
|
||||||
display: none !important;
|
#navigator-toolbox:focus-within,
|
||||||
visibility: hidden !important;
|
#navigator-toolbox[movingtab],
|
||||||
|
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||||
|
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||||
|
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
|
||||||
|
--zen-navigation-toolbar-min-width: 3.3rem !important;
|
||||||
|
|
||||||
|
& #TabsToolbar {
|
||||||
|
z-index: 100 !important;
|
||||||
|
width: 250px !important;
|
||||||
|
background-color: var(--zen-dialog-background);
|
||||||
|
border-top-color: var(--zen-colors-border);
|
||||||
|
border-right-color: var(--zen-colors-border);
|
||||||
|
padding-right: .1rem !important;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigator-toolbox:not(&) #TabsToolbar #tabbrowser-tabs[closebuttons="activetab"] .tabbrowser-tab .tab-content[class] > .tab-close-button[class] {
|
||||||
|
display: none !important;
|
||||||
|
visibility: hidden !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
& #tabbrowser-tabs {
|
||||||
|
--zen-tabbrowser-tabs-on-hover-padding: var(--zen-tabbrowser-padding);
|
||||||
|
padding: var(--zen-tabbrowser-tabs-on-hover-padding) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
& #zen-sidebar-icons-wrapper {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
& .zen-sidebar-action-button {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
--toolbarbutton-active-background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
& label {
|
||||||
|
--toolbarbutton-hover-background: transparent;
|
||||||
|
display: block !important;
|
||||||
|
text-align: start;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#TabsToolbar-customization-target:hover > .toolbarbutton-1 > .toolbarbutton-text {
|
@media (-moz-bool-pref: "zen.tabs.vertical.right-side") {
|
||||||
transition-delay: 0.2s !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#TabsToolbar-customization-target:not(:hover) > #tabbrowser-tabs > #tabbrowser-arrowscrollbox > .tabbrowser-tab > .tab-stack > .tab-content > .tab-label-container {
|
|
||||||
opacity: 0;
|
|
||||||
visibility: collapse;
|
|
||||||
transition: opacity 370ms,
|
|
||||||
visibility 370ms,
|
|
||||||
width 370ms ease-in-out !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#TabsToolbar-customization-target:not(:hover) > .toolbarbutton-1 > .toolbarbutton-text {
|
|
||||||
opacity: 0;
|
|
||||||
visibility: collapse;
|
|
||||||
transition: all 370ms !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#TabsToolbar-customization-target:hover > .toolbarbutton-1 > .toolbarbutton-text {
|
|
||||||
transition-delay: 0.2s !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#TabsToolbar:hover {
|
|
||||||
padding-right: .1rem !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#TabsToolbar:hover {
|
|
||||||
z-index: 100 !important;
|
|
||||||
width: 250px !important;
|
|
||||||
background-color: var(--zen-dialog-background);
|
|
||||||
border-top-color: var(--zen-colors-border);
|
|
||||||
border-right-color: var(--zen-colors-border);
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (-moz-bool-pref: "zen.tabs.vertical.right-side") {
|
|
||||||
#TabsToolbar {
|
#TabsToolbar {
|
||||||
border-right: 0;
|
border-right: 0 !important;
|
||||||
border-left: 1px solid transparent;
|
border-left: 1px solid transparent;
|
||||||
border-top-right-radius: 0;
|
border-top-right-radius: 0;
|
||||||
border-top-left-radius: var(--zen-border-radius);
|
border-top-left-radius: var(--zen-border-radius);
|
||||||
|
|
||||||
right: 100%;
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#TabsToolbar:hover {
|
#navigator-toolbox:hover,
|
||||||
border-left: 1px solid var(--zen-colors-border);
|
#navigator-toolbox:focus-within,
|
||||||
|
#navigator-toolbox[movingtab],
|
||||||
|
#mainPopupSet:has(> #appMenu-popup:hover) ~ toolbox,
|
||||||
|
#navigator-toolbox:has(.tabbrowser-tab:active),
|
||||||
|
#navigator-toolbox:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)) {
|
||||||
|
--zen-navigation-toolbar-min-width: 0 !important;
|
||||||
|
position: relative;
|
||||||
|
padding: 0 !important;
|
||||||
|
|
||||||
|
& #TabsToolbar {
|
||||||
|
border-left: 1px solid var(--zen-colors-border);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media not (-moz-bool-pref: "zen.tabs.vertical.right-side") {
|
||||||
|
#tabbrowser-tabs {
|
||||||
|
--zen-tabbrowser-tabs-on-hover-padding: 0 var(--zen-tabbrowser-padding) 0 0 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -81,7 +81,7 @@
|
|||||||
--zen-input-border-color: light-dark(rgb(204, 204, 204), rgb(66, 65, 77));
|
--zen-input-border-color: light-dark(rgb(204, 204, 204), rgb(66, 65, 77));
|
||||||
|
|
||||||
/* Constants */
|
/* Constants */
|
||||||
--zen-element-separation: .5rem;
|
--zen-element-separation: .6rem;
|
||||||
|
|
||||||
/* XUL */
|
/* XUL */
|
||||||
--zen-main-browser-background: light-dark(rgb(235, 235, 235), #1b1b1b);
|
--zen-main-browser-background: light-dark(rgb(235, 235, 235), #1b1b1b);
|
||||||
@@ -118,22 +118,22 @@
|
|||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
:host(:is(.anonymous-content-host, notification-message)),
|
:host(:is(.anonymous-content-host, notification-message)),
|
||||||
:root {
|
:root {
|
||||||
--zen-in-content-dialog-background: rgb(28, 28, 32);
|
--zen-in-content-dialog-background: rgb(23, 23, 23);
|
||||||
|
--zen-dark-color-mix-base: #171717;
|
||||||
--zen-colors-primary: color-mix(in srgb, var(--zen-primary-color) 50%, black 50%);
|
--zen-colors-primary: color-mix(in srgb, var(--zen-primary-color) 20%, var(--zen-dark-color-mix-base) 80%);
|
||||||
--zen-colors-secondary: color-mix(in srgb, var(--zen-primary-color) 40%, black 60%);
|
--zen-colors-secondary: color-mix(in srgb, var(--zen-primary-color) 30%, var(--zen-dark-color-mix-base) 70%);
|
||||||
--zen-colors-tertiary: color-mix(in srgb, var(--zen-primary-color) 15%, black 85%);
|
--zen-colors-tertiary: color-mix(in srgb, var(--zen-primary-color) 1%, var(--zen-dark-color-mix-base) 99%);
|
||||||
|
|
||||||
--zen-colors-hover-bg: color-mix(in srgb, var(--zen-primary-color) 90%, black 10%);
|
--zen-colors-hover-bg: color-mix(in srgb, var(--zen-primary-color) 90%, var(--zen-dark-color-mix-base) 10%);
|
||||||
--zen-colors-primary-foreground: color-mix(in srgb, var(--zen-primary-color) 80%, white 20%);
|
--zen-colors-primary-foreground: color-mix(in srgb, var(--zen-primary-color) 80%, white 20%);
|
||||||
|
|
||||||
--zen-colors-input-bg: color-mix(in srgb, var(--zen-primary-color) 10%, black 80%);
|
--zen-colors-input-bg: color-mix(in srgb, var(--zen-primary-color) 1%, var(--zen-dark-color-mix-base) 99%);
|
||||||
--zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 80%, black 20%);
|
--zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 20%, rgb(43, 43, 43) 80%);
|
||||||
|
|
||||||
--zen-dialog-background: color-mix(in srgb, var(--zen-primary-color) 10%, black 90%);
|
--zen-dialog-background: var(--zen-dark-color-mix-base);
|
||||||
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 8%, rgb(15, 15, 15) 92%);
|
--zen-urlbar-background: color-mix(in srgb, var(--zen-primary-color) 4%, rgb(24, 24, 24) 96%);
|
||||||
|
|
||||||
--zen-browser-gradient-base: color-mix(in srgb, var(--zen-primary-color) 30%, black 70%);
|
--zen-browser-gradient-base: color-mix(in srgb, var(--zen-primary-color) 30%, var(--zen-dark-color-mix-base) 70%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,21 +1,20 @@
|
|||||||
/* URL and tool bars */
|
/* URL and tool bars */
|
||||||
|
|
||||||
#urlbar {
|
#urlbar {
|
||||||
--toolbarbutton-border-radius: 999px;
|
--toolbarbutton-border-radius: 6px;
|
||||||
border: transparent;
|
--urlbarView-separator-color: var(--zen-colors-border);
|
||||||
|
--urlbarView-hover-background: var(--toolbarbutton-hover-background);
|
||||||
|
--urlbarView-highlight-background: var(--toolbarbutton-hover-background);
|
||||||
|
border: 1px solid var(--zen-colors-border);
|
||||||
|
border-radius: 999px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
border-radius: var(--toolbarbutton-border-radius);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar[focused="true"][breakout-extend="true"] {
|
#urlbar[focused="true"][breakout-extend="true"] {
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar {
|
|
||||||
border: 1px solid light-dark(rgba(0,0,0,.2), rgba(255,255,255,.2))
|
|
||||||
}
|
|
||||||
|
|
||||||
#searchbar:focus-within {
|
#searchbar:focus-within {
|
||||||
border-color: transparent !important;
|
border-color: transparent !important;
|
||||||
}
|
}
|
||||||
@@ -28,6 +27,8 @@
|
|||||||
background: var(--zen-dialog-background) !important;
|
background: var(--zen-dialog-background) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#urlbar-background { border: transparent !important; }
|
||||||
|
|
||||||
#urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background,
|
#urlbar[focused="true"]:not([suppress-focus-border]) > #urlbar-background,
|
||||||
#searchbar:focus-within {
|
#searchbar:focus-within {
|
||||||
outline: none !important;
|
outline: none !important;
|
||||||
@@ -37,16 +38,29 @@
|
|||||||
|
|
||||||
#urlbar .urlbar-page-action,
|
#urlbar .urlbar-page-action,
|
||||||
#urlbar #tracking-protection-icon-container,
|
#urlbar #tracking-protection-icon-container,
|
||||||
#urlbar:not([extend="true"]) #identity-box:not(.chromeUI) #identity-icon-box {
|
#urlbar:not([breakout-extend="true"]) #identity-box:is(:not(.chromeUI), [pageproxystate="invalid"]) #identity-icon-box {
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar[breakout-extend="true"] {
|
#urlbar[breakout-extend="true"] .urlbar-page-action,
|
||||||
--toolbarbutton-border-radius: 6px;
|
#urlbar[breakout-extend="true"] #tracking-protection-icon-container,
|
||||||
|
#urlbar[breakout-extend="true"] #identity-box #identity-icon-box,
|
||||||
|
.searchbar-engine-one-off-item {
|
||||||
|
border-radius: var(--toolbarbutton-border-radius) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#identity-icon-box {
|
#urlbar[breakout-extend="true"] {
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#identity-icon-box,
|
||||||
|
#identity-permission-box {
|
||||||
background: var(--zen-colors-secondary) !important;
|
background: var(--zen-colors-secondary) !important;
|
||||||
|
margin: 0 8px 0 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#identity-permission-box {
|
||||||
|
background: var(--zen-colors-border) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar:is([focused], [open]) > #urlbar-background, #searchbar:focus-within {
|
#urlbar:is([focused], [open]) > #urlbar-background, #searchbar:focus-within {
|
||||||
@@ -54,64 +68,54 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#identity-icon-label {
|
#identity-icon-label {
|
||||||
padding-inline-start: 8px !important;
|
padding-inline-start: 8px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar #identity-box.chromeUI #identity-icon-box {
|
#identity-box.chromeUI:not([pageproxystate="invalid"]) #identity-icon-box {
|
||||||
border-radius: 5px !important;
|
margin-right: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar:not([breakout-extend="true"]) #identity-box.chromeUI #identity-icon-box {
|
#urlbar:not([breakout-extend="true"]) #identity-box.chromeUI:not([pageproxystate="invalid"]) #identity-icon-box {
|
||||||
border-radius: 20px 10px 10px 20px !important;
|
border-radius: 20px 10px 10px 20px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar .urlbar-page-action,
|
#urlbar:not([extend="true"]) #identity-box #identity-icon-box { position: relative; }
|
||||||
#urlbar #identity-box #identity-icon-box,
|
|
||||||
#urlbar #tracking-protection-icon-container {
|
|
||||||
margin: 0 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#urlbar:not([extend="true"]) #identity-box #identity-icon-box { position: relative;}
|
#urlbar:not([extend="true"]) #identity-box:is(:not(.chromeUI), [pageproxystate="invalid"]) #identity-icon-box {
|
||||||
|
|
||||||
#urlbar:not([extend="true"]) #identity-box:not(.chromeUI):not(.localResource) #identity-icon-box {
|
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar:not([extend="true"]) #identity-box:not(.chromeUI):not(.localResource) {
|
#urlbar:not([extend="true"]) #identity-box:is(:not(.chromeUI), [pageproxystate="invalid"]) {
|
||||||
margin-inline-end: 0 !important;
|
margin-inline-end: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.urlbar-page-action {
|
.urlbar-page-action,
|
||||||
width: calc(var(--urlbar-min-height) - 5px - 2 * var(--urlbar-container-padding)) !important;
|
#tracking-protection-icon-container {
|
||||||
height: calc(var(--urlbar-min-height) - 5px - 2 * var(--urlbar-container-padding)) !important;
|
width: calc(var(--urlbar-min-height) - 4px - 4 * var(--urlbar-container-padding)) !important;
|
||||||
|
height: calc(var(--urlbar-min-height) - 4px - 4 * var(--urlbar-container-padding)) !important;
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
justify-content: center !important;
|
justify-content: center !important;
|
||||||
align-items: center !important;
|
align-items: center !important;
|
||||||
|
margin: 0 0 0 2px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
toolbar .toolbarbutton-1:not(.unified-extensions-item-action-button) {
|
#urlbar[breakout-extend="true"] .urlbar-page-action,
|
||||||
& > .toolbarbutton-icon,
|
#urlbar[breakout-extend="true"] #tracking-protection-icon-container {
|
||||||
& > .toolbarbutton-badge-stack {
|
width: calc(var(--urlbar-min-height) - 4 * var(--urlbar-container-padding)) !important;
|
||||||
width: calc(2 * var(--toolbarbutton-inner-padding) + 18px) !important;
|
height: calc(var(--urlbar-min-height) - 4 * var(--urlbar-container-padding)) !important;
|
||||||
height: calc(2 * var(--toolbarbutton-inner-padding) + 18px) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
toolbar .zen-sidebar-panel-button {
|
|
||||||
& > .toolbarbutton-icon,
|
|
||||||
& > .toolbarbutton-badge-stack {
|
|
||||||
width: calc(2 * var(--toolbarbutton-inner-padding) + 20px) !important;
|
|
||||||
height: calc(2 * var(--toolbarbutton-inner-padding) + 20px) !important;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#identity-permission-box {
|
#identity-permission-box {
|
||||||
margin: 0 5px 0 0 !important;
|
|
||||||
border-top-left-radius: 0 !important;
|
border-top-left-radius: 0 !important;
|
||||||
border-bottom-left-radius: 0 !important;
|
border-bottom-left-radius: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#identity-box:has(#identity-permission-box:is([hasPermissions], [hasSharingIcon])) #identity-icon-box {
|
#identity-box:has(#notification-popup-box:not([hidden="true"])) #identity-icon-box,
|
||||||
|
#identity-box:has(#notification-popup-box:not([hidden="true"])) #identity-permission-box {
|
||||||
|
margin-right: 4px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#identity-box:has(#identity-permission-box:is([hasPermissions], [hasSharingIcon])):not([pageproxystate="invalid"]) #identity-icon-box {
|
||||||
border-top-right-radius: 0 !important;
|
border-top-right-radius: 0 !important;
|
||||||
border-bottom-right-radius: 0 !important;
|
border-bottom-right-radius: 0 !important;
|
||||||
margin-right: 0 !important;
|
margin-right: 0 !important;
|
||||||
@@ -124,10 +128,22 @@ toolbar .zen-sidebar-panel-button {
|
|||||||
|
|
||||||
#notification-popup-box {
|
#notification-popup-box {
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
margin-right: 5px;
|
margin: 0 4px 0 0 !important;
|
||||||
transition: .2s;
|
padding: 0 4px;
|
||||||
height: 100%;
|
min-width: calc(var(--urlbar-min-height) - 4px - 4 * var(--urlbar-container-padding)) !important;
|
||||||
padding: 7px;
|
height: calc(var(--urlbar-min-height) - 4px - 4 * var(--urlbar-container-padding)) !important;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#urlbar[breakout-extend="true"] #notification-popup-box {
|
||||||
|
min-width: calc(var(--urlbar-min-height) - 4 * var(--urlbar-container-padding)) !important;
|
||||||
|
height: calc(var(--urlbar-min-height) - 4 * var(--urlbar-container-padding)) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#notification-popup-box > image {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
button.popup-notification-dropmarker {
|
button.popup-notification-dropmarker {
|
||||||
@@ -141,11 +157,12 @@ button.popup-notification-dropmarker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.searchbar-engine-one-off-item {
|
.searchbar-engine-one-off-item {
|
||||||
max-width: 20px;
|
max-width: 28px;
|
||||||
min-width: 20px !important;
|
min-width: 28px !important;
|
||||||
|
transition: background 0s;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#downloadsHistory {
|
#downloadsHistory {
|
||||||
margin-top: 5px
|
margin-top: 5px
|
||||||
}
|
}
|
||||||
|
@@ -1,24 +1,34 @@
|
|||||||
|
|
||||||
#zen-workspaces-button {
|
#zen-workspaces-button {
|
||||||
|
--zen-workspaces-button-vmargin: 0.35rem;
|
||||||
border: 1px solid var(--zen-colors-border);
|
border: 1px solid var(--zen-colors-border);
|
||||||
border-radius: 50px;
|
border-radius: 50px;
|
||||||
|
width: calc(var(--zen-sidebar-action-button-width) - 5px) !important;
|
||||||
height: calc(var(--zen-sidebar-action-button-width) - 10px) !important;
|
height: calc(var(--zen-sidebar-action-button-width) - 10px) !important;
|
||||||
margin-bottom: .1rem !important;
|
margin-top: var(--zen-workspaces-button-vmargin) !important;
|
||||||
|
margin-bottom: var(--zen-workspaces-button-vmargin) !important;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
#zen-workspaces-button .zen-workspace-sidebar-name {
|
#zen-workspaces-button .zen-workspace-sidebar-name {
|
||||||
margin-left: .1rem;
|
margin-left: .2rem;
|
||||||
display: none;
|
display: none;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
@media (-moz-bool-pref: "zen.view.sidebar-expanded") {
|
||||||
#navigator-toolbox:is([zen-user-hover="true"]:hover, :not([zen-user-hover="true"])) {
|
/** Keep these selectors in sync with the ones in vertical-tabs.css */
|
||||||
|
#navigator-toolbox:is(
|
||||||
|
#navigator-toolbox[zen-user-hover="true"]:hover,
|
||||||
|
#navigator-toolbox[zen-user-hover="true"]:focus-within,
|
||||||
|
#mainPopupSet[zen-user-hover="true"]:has(> #appMenu-popup:hover) ~ toolbox,
|
||||||
|
#navigator-toolbox[zen-user-hover="true"]:has(*[open="true"]:not(tab):not(#zen-sidepanel-button)),
|
||||||
|
:not([zen-user-hover="true"])) {
|
||||||
& #zen-workspaces-button .zen-workspace-sidebar-name {
|
& #zen-workspaces-button .zen-workspace-sidebar-name {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
@@ -37,7 +47,8 @@
|
|||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 2px 10px;
|
padding: 2px 10px;
|
||||||
width: calc(100% - var(--zen-tabbrowser-padding) * 8) !important;
|
width: calc(100% - var(--zen-tabbrowser-padding) * 6) !important;
|
||||||
|
gap: 0.5ch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -51,6 +62,8 @@
|
|||||||
|
|
||||||
#PanelUI-zen-workspaces > panelmultiview {
|
#PanelUI-zen-workspaces > panelmultiview {
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces panelmultiview panelview {
|
#PanelUI-zen-workspaces panelmultiview panelview {
|
||||||
@@ -60,11 +73,13 @@
|
|||||||
min-height: 150px;
|
min-height: 150px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-create-input {
|
#PanelUI-zen-workspaces-create-input,
|
||||||
|
#PanelUI-zen-workspaces-edit-input {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton {
|
#PanelUI-zen-workspaces-create-icons-container toolbarbutton,
|
||||||
|
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton {
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -74,27 +89,37 @@
|
|||||||
border-radius: 7px;
|
border-radius: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton[selected="true"] {
|
#PanelUI-zen-workspaces-create-icons-container toolbarbutton[selected="true"],
|
||||||
|
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton[selected="true"] {
|
||||||
border-color: var(--zen-colors-secondary);
|
border-color: var(--zen-colors-secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-icon {
|
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-icon,
|
||||||
|
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton .toolbarbutton-icon {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-text {
|
#PanelUI-zen-workspaces-create-icons-container toolbarbutton .toolbarbutton-text,
|
||||||
|
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton .toolbarbutton-text {
|
||||||
min-width: unset;
|
min-width: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-create-icons-container {
|
#PanelUI-zen-workspaces-create-icons-container,
|
||||||
|
#PanelUI-zen-workspaces-edit-icons-container {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(30px, 1fr));
|
grid-template-columns: repeat(auto-fill, minmax(30px, 1fr));
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#PanelUI-zen-workspaces-create-icons-container toolbarbutton.toolbarbutton-1,
|
||||||
|
#PanelUI-zen-workspaces-edit-icons-container toolbarbutton.toolbarbutton-1 {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-list {
|
#PanelUI-zen-workspaces-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-list[empty="true"] {
|
#PanelUI-zen-workspaces-list[empty="true"] {
|
||||||
@@ -134,6 +159,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
& .zen-workspace-name {
|
& .zen-workspace-name {
|
||||||
@@ -173,14 +199,16 @@
|
|||||||
height: 20px;
|
height: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-create-footer {
|
#PanelUI-zen-workspaces-create-footer,
|
||||||
|
#PanelUI-zen-workspaces-edit-footer {
|
||||||
padding-bottom: 0 !important;
|
padding-bottom: 0 !important;
|
||||||
margin-top: 20px;
|
margin-top: 10px;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
margin-bottom: 0 !important;
|
margin-bottom: 0 !important;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#PanelUI-zen-workspaces-create-footer button[default="true"] {
|
#PanelUI-zen-workspaces-create-footer button[default="true"],
|
||||||
|
#PanelUI-zen-workspaces-edit-footer button[default="true"] {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
@@ -1,13 +0,0 @@
|
|||||||
diff --git a/browser/components/customizableui/content/customizeMode.inc.xhtml b/browser/components/customizableui/content/customizeMode.inc.xhtml
|
|
||||||
index 2788cc6a8fb42b7b968eb45aafc02f8d6fcf771d..5142e65576aebaac0e31677b707a5e05f88dae76 100644
|
|
||||||
--- a/browser/components/customizableui/content/customizeMode.inc.xhtml
|
|
||||||
+++ b/browser/components/customizableui/content/customizeMode.inc.xhtml
|
|
||||||
@@ -94,7 +94,7 @@
|
|
||||||
class="footer-button"
|
|
||||||
oncommand="gCustomizeMode.togglePong(this.checked);"
|
|
||||||
hidden="true"/>
|
|
||||||
-
|
|
||||||
+#include zenCustomizationMode.inc.xhtml
|
|
||||||
<spacer id="customization-footer-spacer"/>
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
<button id="customization-touchbar-button"
|
|
@@ -16,6 +16,21 @@ var gZenNewWebPanel = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
addHttpIfMissing(url) {
|
||||||
|
// List of schemes to avoid
|
||||||
|
const avoidSchemes = ['about:', 'chrome:', 'moz-extension:', 'view-source:'];
|
||||||
|
// Check if the URL starts with any of the avoid schemes
|
||||||
|
for (let scheme of avoidSchemes) {
|
||||||
|
if (url.startsWith(scheme)) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
||||||
|
return 'https://' + url;
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
},
|
||||||
|
|
||||||
handleDialogAccept: async function(aEvent) {
|
handleDialogAccept: async function(aEvent) {
|
||||||
document.commandDispatcher.focusedElement?.blur();
|
document.commandDispatcher.focusedElement?.blur();
|
||||||
let url = document.getElementById("zenNWP_url");
|
let url = document.getElementById("zenNWP_url");
|
||||||
@@ -23,16 +38,17 @@ var gZenNewWebPanel = {
|
|||||||
if (!url || !ua) {
|
if (!url || !ua) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let urlValue = url.value;
|
||||||
try {
|
try {
|
||||||
new URL(url.value);
|
new URL(urlValue);
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
return;
|
urlValue = this.addHttpIfMissing(url.value);
|
||||||
}
|
}
|
||||||
if (!url.value || !ua.value) {
|
if (!url.value || !ua.value) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let newSite = {
|
let newSite = {
|
||||||
url: url.value,
|
url: urlValue,
|
||||||
ua: ua.value,
|
ua: ua.value,
|
||||||
};
|
};
|
||||||
let currentData = JSON.parse(Services.prefs.getStringPref("zen.sidebar.data"));
|
let currentData = JSON.parse(Services.prefs.getStringPref("zen.sidebar.data"));
|
||||||
|
@@ -1,14 +1,15 @@
|
|||||||
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
|
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
|
||||||
index 7e21bab426b6eb52fe84876d817fddbdb1a35ffc..fb7c6f419c02701aecd148ef2fe271ed6f1a73c1 100644
|
index 7e21bab426b6eb52fe84876d817fddbdb1a35ffc..56b42e2d025e4a47ea0983cf33ae69ffafa0d576 100644
|
||||||
--- a/browser/components/preferences/preferences.js
|
--- a/browser/components/preferences/preferences.js
|
||||||
+++ b/browser/components/preferences/preferences.js
|
+++ b/browser/components/preferences/preferences.js
|
||||||
@@ -196,6 +196,9 @@ function init_all() {
|
@@ -196,6 +196,10 @@ function init_all() {
|
||||||
// the entire document.
|
// the entire document.
|
||||||
Preferences.queueUpdateOfAllElements();
|
Preferences.queueUpdateOfAllElements();
|
||||||
Services.telemetry.setEventRecordingEnabled("aboutpreferences", true);
|
Services.telemetry.setEventRecordingEnabled("aboutpreferences", true);
|
||||||
+ register_module("paneZenLooks", gZenLooksAndFeel);
|
+ register_module("paneZenLooks", gZenLooksAndFeel);
|
||||||
+ register_module("paneZenWorkspaces", gZenWorkspacesSettings);
|
+ register_module("paneZenWorkspaces", gZenWorkspacesSettings);
|
||||||
+ register_module("paneZenCKS", gZenCKSSettings);
|
+ register_module("paneZenCKS", gZenCKSSettings);
|
||||||
|
+ register_module("paneZenMarketplace", gZenMarketplaceManager);
|
||||||
|
|
||||||
register_module("paneGeneral", gMainPane);
|
register_module("paneGeneral", gMainPane);
|
||||||
register_module("paneHome", gHomePane);
|
register_module("paneHome", gHomePane);
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
|
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
|
||||||
index 3affb19d1a243da4a5782c9a4a5588d165b4119f..6fdc0c4447d2d43ee5f4563c725b6eca1cf7acc5 100644
|
index 3affb19d1a243da4a5782c9a4a5588d165b4119f..837f078ff1f3a65a40877c1380c6d050a8415bab 100644
|
||||||
--- a/browser/components/preferences/preferences.xhtml
|
--- a/browser/components/preferences/preferences.xhtml
|
||||||
+++ b/browser/components/preferences/preferences.xhtml
|
+++ b/browser/components/preferences/preferences.xhtml
|
||||||
@@ -43,6 +43,8 @@
|
@@ -43,6 +43,8 @@
|
||||||
@@ -24,7 +24,7 @@ index 3affb19d1a243da4a5782c9a4a5588d165b4119f..6fdc0c4447d2d43ee5f4563c725b6eca
|
|||||||
<!-- category list -->
|
<!-- category list -->
|
||||||
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
||||||
<richlistitem id="category-general"
|
<richlistitem id="category-general"
|
||||||
@@ -110,6 +118,39 @@
|
@@ -110,6 +118,50 @@
|
||||||
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
||||||
</richlistitem>
|
</richlistitem>
|
||||||
|
|
||||||
@@ -60,11 +60,22 @@ index 3affb19d1a243da4a5782c9a4a5588d165b4119f..6fdc0c4447d2d43ee5f4563c725b6eca
|
|||||||
+ <image class="category-icon"/>
|
+ <image class="category-icon"/>
|
||||||
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-CKS-title"></label>
|
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-CKS-title"></label>
|
||||||
+ </richlistitem>
|
+ </richlistitem>
|
||||||
|
+
|
||||||
|
+ <richlistitem id="category-zen-marketplace"
|
||||||
|
+ class="category"
|
||||||
|
+ value="paneZenMarketplace"
|
||||||
|
+ helpTopic="prefs-main"
|
||||||
|
+ data-l10n-id="category-zen-marketplace"
|
||||||
|
+ data-l10n-attrs="tooltiptext"
|
||||||
|
+ align="center">
|
||||||
|
+ <image class="category-icon"/>
|
||||||
|
+ <label class="category-name" flex="1" data-l10n-id="pane-zen-marketplace-title"></label>
|
||||||
|
+ </richlistitem>
|
||||||
+
|
+
|
||||||
<richlistitem id="category-home"
|
<richlistitem id="category-home"
|
||||||
class="category"
|
class="category"
|
||||||
value="paneHome"
|
value="paneHome"
|
||||||
@@ -228,11 +269,13 @@
|
@@ -228,11 +280,13 @@
|
||||||
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
</hbox>
|
</hbox>
|
||||||
@@ -73,18 +84,19 @@ index 3affb19d1a243da4a5782c9a4a5588d165b4119f..6fdc0c4447d2d43ee5f4563c725b6eca
|
|||||||
id="searchInput"
|
id="searchInput"
|
||||||
data-l10n-id="search-input-box2"
|
data-l10n-id="search-input-box2"
|
||||||
data-l10n-attrs="placeholder, style"
|
data-l10n-attrs="placeholder, style"
|
||||||
hidden="true"/>
|
/>
|
||||||
+#endif
|
+#endif
|
||||||
</hbox>
|
</hbox>
|
||||||
</hbox>
|
</hbox>
|
||||||
<vbox id="mainPrefPane">
|
<vbox id="mainPrefPane">
|
||||||
@@ -246,6 +289,9 @@
|
@@ -246,6 +300,10 @@
|
||||||
#include sync.inc.xhtml
|
#include sync.inc.xhtml
|
||||||
#include experimental.inc.xhtml
|
#include experimental.inc.xhtml
|
||||||
#include moreFromMozilla.inc.xhtml
|
#include moreFromMozilla.inc.xhtml
|
||||||
+#include zenLooksAndFeel.inc.xhtml
|
+#include zenLooksAndFeel.inc.xhtml
|
||||||
+#include zenKeyboardShortcuts.inc.xhtml
|
+#include zenKeyboardShortcuts.inc.xhtml
|
||||||
+#include zenWorkspaces.inc.xhtml
|
+#include zenWorkspaces.inc.xhtml
|
||||||
|
+#include zenMarketplace.inc.xhtml
|
||||||
</vbox>
|
</vbox>
|
||||||
</vbox>
|
</vbox>
|
||||||
</vbox>
|
</vbox>
|
||||||
|
@@ -23,8 +23,48 @@ const kZenOSToSmallName = {
|
|||||||
|
|
||||||
var gZenMarketplaceManager = {
|
var gZenMarketplaceManager = {
|
||||||
init() {
|
init() {
|
||||||
|
const checkForUpdates = document.getElementById("zenThemeMarketplaceCheckForUpdates");
|
||||||
|
if (!checkForUpdates) return; // We havent entered the settings page yet.
|
||||||
|
if (this.__hasInitializedEvents) return;
|
||||||
this._buildThemesList();
|
this._buildThemesList();
|
||||||
Services.prefs.addObserver(this.updatePref, this._buildThemesList.bind(this));
|
this.__hasInitializedEvents = true;
|
||||||
|
Services.prefs.addObserver(this.updatePref, this);
|
||||||
|
checkForUpdates.addEventListener("click", (event) => {
|
||||||
|
if (event.target === checkForUpdates) {
|
||||||
|
event.preventDefault();
|
||||||
|
this._checkForThemeUpdates(event);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
document.addEventListener("ZenThemeMarketplace:CheckForUpdatesFinished", (event) => {
|
||||||
|
checkForUpdates.disabled = false;
|
||||||
|
const updates = event.detail.updates;
|
||||||
|
const success = document.getElementById("zenThemeMarketplaceUpdatesSuccess");
|
||||||
|
const error = document.getElementById("zenThemeMarketplaceUpdatesFailure");
|
||||||
|
if (updates) {
|
||||||
|
success.hidden = false;
|
||||||
|
error.hidden = true;
|
||||||
|
} else {
|
||||||
|
success.hidden = true;
|
||||||
|
error.hidden = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
window.addEventListener("unload", this.uninit.bind(this));
|
||||||
|
},
|
||||||
|
|
||||||
|
uninit() {
|
||||||
|
Services.prefs.removeObserver(this.updatePref, this);
|
||||||
|
},
|
||||||
|
|
||||||
|
async observe() {
|
||||||
|
this._themes = null;
|
||||||
|
await this._buildThemesList();
|
||||||
|
},
|
||||||
|
|
||||||
|
_checkForThemeUpdates(event) {
|
||||||
|
// Send a message to the child to check for theme updates.
|
||||||
|
event.target.disabled = true;
|
||||||
|
// send an event that will be listened by the child process.
|
||||||
|
document.dispatchEvent(new CustomEvent("ZenCheckForThemeUpdates"));
|
||||||
},
|
},
|
||||||
|
|
||||||
get updatePref() {
|
get updatePref() {
|
||||||
@@ -96,7 +136,7 @@ var gZenMarketplaceManager = {
|
|||||||
}
|
}
|
||||||
if (isNegation && os === this.currentOperatingSystem) {
|
if (isNegation && os === this.currentOperatingSystem) {
|
||||||
delete preferences[key];
|
delete preferences[key];
|
||||||
} else if (os && os !== this.currentOperatingSystem) {
|
} else if (os && os !== this.currentOperatingSystem && !isNegation) {
|
||||||
delete preferences[key];
|
delete preferences[key];
|
||||||
} else {
|
} else {
|
||||||
// Change the key to contain only the rest of the preferences.
|
// Change the key to contain only the rest of the preferences.
|
||||||
@@ -118,19 +158,21 @@ var gZenMarketplaceManager = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
async _buildThemesList() {
|
async _buildThemesList() {
|
||||||
|
if (!this.themesList) return;
|
||||||
|
console.log("ZenThemeMarketplaceParent(settings): Building themes list");
|
||||||
let themes = await this._getThemes();
|
let themes = await this._getThemes();
|
||||||
this.themesList.innerHTML = "";
|
this.themesList.innerHTML = "";
|
||||||
for (let theme of Object.values(themes)) {
|
for (let theme of Object.values(themes)) {
|
||||||
const fragment = window.MozXULElement.parseXULToFragment(`
|
const fragment = window.MozXULElement.parseXULToFragment(`
|
||||||
<hbox class="zenThemeMarketplaceItem">
|
<hbox class="zenThemeMarketplaceItem" align="center">
|
||||||
<vbox class="zenThemeMarketplaceItemContent">
|
<vbox class="zenThemeMarketplaceItemContent" flex="1">
|
||||||
<label><h3 class="zenThemeMarketplaceItemTitle"></h3></label>
|
<label><h3 class="zenThemeMarketplaceItemTitle"></h3></label>
|
||||||
<description class="description-deemphasized zenThemeMarketplaceItemDescription"></description>
|
<description class="description-deemphasized zenThemeMarketplaceItemDescription"></description>
|
||||||
</vbox>
|
</vbox>
|
||||||
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-theme-id="${theme.id}"></button>
|
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-theme-id="${theme.id}"></button>
|
||||||
</hbox>
|
</hbox>
|
||||||
`);
|
`);
|
||||||
fragment.querySelector(".zenThemeMarketplaceItemTitle").textContent = theme.name;
|
fragment.querySelector(".zenThemeMarketplaceItemTitle").textContent = `${theme.name} (v${theme.version || "1.0.0"})`;
|
||||||
fragment.querySelector(".zenThemeMarketplaceItemDescription").textContent = theme.description;
|
fragment.querySelector(".zenThemeMarketplaceItemDescription").textContent = theme.description;
|
||||||
fragment.querySelector(".zenThemeMarketplaceItemUninstallButton").addEventListener("click", async (event) => {
|
fragment.querySelector(".zenThemeMarketplaceItemUninstallButton").addEventListener("click", async (event) => {
|
||||||
if (!confirm("Are you sure you want to remove this theme?")) {
|
if (!confirm("Are you sure you want to remove this theme?")) {
|
||||||
@@ -261,10 +303,17 @@ var gZenCKSSettings = {
|
|||||||
this._initializeEvents();
|
this._initializeEvents();
|
||||||
this._initializeCKS();
|
this._initializeCKS();
|
||||||
this._addPrefObservers();
|
this._addPrefObservers();
|
||||||
|
window.addEventListener("unload", () => {
|
||||||
|
Services.prefs.removeObserver("zen.keyboard.shortcuts.disable-firefox", this);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_addPrefObservers() {
|
_addPrefObservers() {
|
||||||
Services.prefs.addObserver("zen.keyboard.shortcuts.disable-firefox", this.onDisableFirefoxShortcutsChange.bind(this));
|
Services.prefs.addObserver("zen.keyboard.shortcuts.disable-firefox", this);
|
||||||
|
},
|
||||||
|
|
||||||
|
observe(subject, topic, data) {
|
||||||
|
this.onDisableFirefoxShortcutsChange();
|
||||||
},
|
},
|
||||||
|
|
||||||
async onDisableFirefoxShortcutsChange(event) {
|
async onDisableFirefoxShortcutsChange(event) {
|
||||||
@@ -452,5 +501,10 @@ Preferences.addAll([
|
|||||||
id: "zen.keyboard.shortcuts.disable-firefox",
|
id: "zen.keyboard.shortcuts.disable-firefox",
|
||||||
type: "bool",
|
type: "bool",
|
||||||
default: false,
|
default: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "zen.themes.tabs.legacy-location",
|
||||||
|
type: "bool",
|
||||||
|
default: false,
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
@@ -32,6 +32,9 @@
|
|||||||
data-l10n-id="zen-look-and-feel-compact-view-top-toolbar"
|
data-l10n-id="zen-look-and-feel-compact-view-top-toolbar"
|
||||||
preference="zen.view.compact.hide-toolbar"/>
|
preference="zen.view.compact.hide-toolbar"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
|
<checkbox id="zenLooksAndFeelShowLegacyToolbar"
|
||||||
|
data-l10n-id="zen-look-and-feel-legacy-toolbar"
|
||||||
|
preference="zen.themes.tabs.legacy-location"/>
|
||||||
</groupbox>
|
</groupbox>
|
||||||
|
|
||||||
<hbox id="zenThemeCategory"
|
<hbox id="zenThemeCategory"
|
||||||
@@ -42,14 +45,6 @@
|
|||||||
</hbox>
|
</hbox>
|
||||||
|
|
||||||
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
|
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
|
||||||
<label><html:h2 data-l10n-id="zen-theme-marketplace-header"/></label>
|
|
||||||
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-description" />
|
|
||||||
<hbox class="indent">
|
|
||||||
<html:a id="zenThemeMarketplaceLink" href="https://zen-browser.app/themes" target="_blank" data-l10n-id="zen-theme-marketplace-link" />
|
|
||||||
</hbox>
|
|
||||||
|
|
||||||
<vbox id="zenThemeMarketplaceList"></vbox>
|
|
||||||
|
|
||||||
<label><html:h2 data-l10n-id="zen-look-and-feel-buttons-header"/></label>
|
<label><html:h2 data-l10n-id="zen-look-and-feel-buttons-header"/></label>
|
||||||
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-buttons-description" />
|
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-buttons-description" />
|
||||||
|
|
||||||
|
23
src/browser/components/preferences/zenMarketplace.inc.xhtml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<html:template id="template-paneZenMarketplace">
|
||||||
|
<hbox id="ZenMarketplaceCategory"
|
||||||
|
class="subcategory"
|
||||||
|
hidden="true"
|
||||||
|
data-category="paneZenMarketplace">
|
||||||
|
<html:h1 data-l10n-id="pane-zen-marketplace-title"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<groupbox id="zenMarketplaceGroup" data-category="paneZenMarketplace" hidden="true" class="highlighting-group">
|
||||||
|
<label><html:h2 data-l10n-id="zen-theme-marketplace-header"/></label>
|
||||||
|
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-description" />
|
||||||
|
<hbox class="indent">
|
||||||
|
<html:a id="zenThemeMarketplaceLink" href="https://zen-browser.app/themes" target="_blank" data-l10n-id="zen-theme-marketplace-link" />
|
||||||
|
<button id="zenThemeMarketplaceCheckForUpdates" data-l10n-id="zen-theme-marketplace-check-for-updates-button" />
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-success" hidden="true" id="zenThemeMarketplaceUpdatesSuccess" />
|
||||||
|
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-failure" hidden="true" id="zenThemeMarketplaceUpdatesFailure" />
|
||||||
|
|
||||||
|
<vbox id="zenThemeMarketplaceList"></vbox>
|
||||||
|
</groupbox>
|
||||||
|
|
||||||
|
</html:template>
|
@@ -1,12 +1,36 @@
|
|||||||
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
|
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
|
||||||
index d05d561b6d01b11a36c762fc39dc13e14181bce7..cbb85d7019a68f283e38c45172eda605c7b90144 100644
|
index d05d561b6d01b11a36c762fc39dc13e14181bce7..b3aaf776c1fdeb1c02f88f2e8d5f424215b2cc26 100644
|
||||||
--- a/browser/components/sidebar/browser-sidebar.js
|
--- a/browser/components/sidebar/browser-sidebar.js
|
||||||
+++ b/browser/components/sidebar/browser-sidebar.js
|
+++ b/browser/components/sidebar/browser-sidebar.js
|
||||||
@@ -471,6 +471,7 @@ var SidebarController = {
|
@@ -446,7 +446,7 @@ var SidebarController = {
|
||||||
|
*/
|
||||||
|
setPosition() {
|
||||||
|
// First reset all ordinals to match DOM ordering.
|
||||||
|
- let browser = document.getElementById("browser");
|
||||||
|
+ let browser = document.getElementById("zen-tabbox-wrapper");
|
||||||
|
[...browser.children].forEach((node, i) => {
|
||||||
|
node.style.order = i + 1;
|
||||||
|
});
|
||||||
|
@@ -460,9 +460,11 @@ var SidebarController = {
|
||||||
|
let boxOrdinal = this._box.style.order;
|
||||||
|
this._box.style.order = appcontent.style.order;
|
||||||
|
|
||||||
|
- appcontent.style.order = boxOrdinal;
|
||||||
|
+ // appcontent.style.order = boxOrdinal;
|
||||||
|
// the launcher should be on the right of the sidebar-box
|
||||||
|
- sidebarContainer.style.order = parseInt(this._box.style.order) + 1;
|
||||||
|
+ this._box.style.order = browser.children.length + 2;
|
||||||
|
+ this._splitter.style.order = browser.children.length + 1;
|
||||||
|
+ this._splitter.style.marginRight = 0;
|
||||||
|
// Indicate we've switched ordering to the box
|
||||||
|
this._box.setAttribute("positionend", true);
|
||||||
|
sidebarMain.setAttribute("positionend", true);
|
||||||
|
@@ -471,6 +473,8 @@ var SidebarController = {
|
||||||
this._box.removeAttribute("positionend");
|
this._box.removeAttribute("positionend");
|
||||||
sidebarMain.removeAttribute("positionend");
|
sidebarMain.removeAttribute("positionend");
|
||||||
sidebarContainer.removeAttribute("positionend");
|
sidebarContainer.removeAttribute("positionend");
|
||||||
+ this._box.style.order = 0;
|
+ this._box.style.order = 0;
|
||||||
|
+ this._splitter.style.removeProperty("margin-right");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.hideSwitcherPanel();
|
this.hideSwitcherPanel();
|
||||||
|
@@ -1,312 +0,0 @@
|
|||||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
|
||||||
index e9aa0f03c26dc26e1a2e56d28fadb70e60c8e8ca..f66f9c168ab560e41ea9d03c2d0727e4a5c15132 100644
|
|
||||||
--- a/browser/components/tabbrowser/content/tabs.js
|
|
||||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
|
||||||
@@ -552,19 +552,36 @@
|
|
||||||
}
|
|
||||||
dt.setDragImage(toDrag, dragImageOffset, dragImageOffset);
|
|
||||||
|
|
||||||
+ const zenVerticalTabs = Services.prefs.getBoolPref(
|
|
||||||
+ "zen.tabs.vertical",
|
|
||||||
+ false
|
|
||||||
+ );
|
|
||||||
+
|
|
||||||
// _dragData.offsetX/Y give the coordinates that the mouse should be
|
|
||||||
// positioned relative to the corner of the new window created upon
|
|
||||||
// dragend such that the mouse appears to have the same position
|
|
||||||
// relative to the corner of the dragged tab.
|
|
||||||
function clientX(ele) {
|
|
||||||
+ if (zenVerticalTabs) {
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
return ele.getBoundingClientRect().left;
|
|
||||||
}
|
|
||||||
+ function clientY(ele) {
|
|
||||||
+ if (!zenVerticalTabs) {
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+ return ele.getBoundingClientRect().top;
|
|
||||||
+ }
|
|
||||||
let tabOffsetX = clientX(tab) - clientX(this);
|
|
||||||
+ let tabOffsetY = clientY(tab) - clientY(this);
|
|
||||||
tab._dragData = {
|
|
||||||
offsetX: event.screenX - window.screenX - tabOffsetX,
|
|
||||||
- offsetY: event.screenY - window.screenY,
|
|
||||||
+ offsetY: event.screenY - window.screenY - tabOffsetY,
|
|
||||||
scrollX: this.arrowScrollbox.scrollbox.scrollLeft,
|
|
||||||
+ scrollY: this.arrowScrollbox.scrollbox.scrollTop,
|
|
||||||
screenX: event.screenX,
|
|
||||||
+ screenY: event.screenY,
|
|
||||||
movingTabs: (tab.multiselected ? gBrowser.selectedTabs : [tab]).filter(
|
|
||||||
t => t.pinned == tab.pinned
|
|
||||||
),
|
|
||||||
@@ -651,21 +668,30 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ const verticalTabs = Services.prefs.getBoolPref(
|
|
||||||
+ "zen.tabs.vertical",
|
|
||||||
+ false
|
|
||||||
+ );
|
|
||||||
+ const left = verticalTabs ? "top" : "left";
|
|
||||||
+ const right = verticalTabs ? "bottom" : "right";
|
|
||||||
+ const width = verticalTabs ? "height" : "width";
|
|
||||||
+ const clientWidth = verticalTabs ? "clientHeight" : "clientWidth";
|
|
||||||
+
|
|
||||||
var rect = arrowScrollbox.getBoundingClientRect();
|
|
||||||
var newMargin;
|
|
||||||
if (pixelsToScroll) {
|
|
||||||
// if we are scrolling, put the drop indicator at the edge
|
|
||||||
// so that it doesn't jump while scrolling
|
|
||||||
let scrollRect = arrowScrollbox.scrollClientRect;
|
|
||||||
- let minMargin = scrollRect.left - rect.left;
|
|
||||||
+ let minMargin = scrollRect[left] - rect[left];
|
|
||||||
let maxMargin = Math.min(
|
|
||||||
- minMargin + scrollRect.width,
|
|
||||||
- scrollRect.right
|
|
||||||
+ minMargin + scrollRect[width],
|
|
||||||
+ scrollRect[right]
|
|
||||||
);
|
|
||||||
if (RTL_UI) {
|
|
||||||
[minMargin, maxMargin] = [
|
|
||||||
- this.clientWidth - maxMargin,
|
|
||||||
- this.clientWidth - minMargin,
|
|
||||||
+ this[clientWidth] - maxMargin,,
|
|
||||||
+ this[clientWidth] - minMargin,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
newMargin = pixelsToScroll > 0 ? maxMargin : minMargin;
|
|
||||||
@@ -675,29 +701,38 @@
|
|
||||||
if (newIndex == children.length) {
|
|
||||||
let tabRect = this._getVisibleTabs().at(-1).getBoundingClientRect();
|
|
||||||
if (RTL_UI) {
|
|
||||||
- newMargin = rect.right - tabRect.left;
|
|
||||||
+ newMargin = rect[right] - tabRect[left];
|
|
||||||
} else {
|
|
||||||
- newMargin = tabRect.right - rect.left;
|
|
||||||
+ newMargin = tabRect[right] - rect[left];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let tabRect = children[newIndex].getBoundingClientRect();
|
|
||||||
if (RTL_UI) {
|
|
||||||
- newMargin = rect.right - tabRect.right;
|
|
||||||
+ newMargin = rect[right] - tabRect[right];
|
|
||||||
} else {
|
|
||||||
- newMargin = tabRect.left - rect.left;
|
|
||||||
+ newMargin = tabRect[left] - rect[left];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ind.hidden = false;
|
|
||||||
- newMargin += ind.clientWidth / 2;
|
|
||||||
- if (RTL_UI) {
|
|
||||||
+ newMargin += ind[clientWidth] / 2;
|
|
||||||
+ if (RTL_UI && !verticalTabs) {
|
|
||||||
newMargin *= -1;
|
|
||||||
}
|
|
||||||
ind.style.transform = "translate(" + Math.round(newMargin) + "px)";
|
|
||||||
+
|
|
||||||
+ ind.style.transform =
|
|
||||||
+ "translate(" + verticalTabs
|
|
||||||
+ ? "0, "
|
|
||||||
+ : "" + Math.round(newMargin) + "px)";
|
|
||||||
}
|
|
||||||
|
|
||||||
on_drop(event) {
|
|
||||||
+ const verticalTabs = Services.prefs.getBoolPref(
|
|
||||||
+ "zen.tabs.vertical",
|
|
||||||
+ false
|
|
||||||
+ );
|
|
||||||
var dt = event.dataTransfer;
|
|
||||||
var dropEffect = dt.dropEffect;
|
|
||||||
var draggedTab;
|
|
||||||
@@ -754,7 +789,7 @@
|
|
||||||
incrementDropIndex = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (oldTranslateX && oldTranslateX != newTranslateX && !gReduceMotion) {
|
|
||||||
+ if (oldTranslateX && oldTranslateX != newTranslateX && !(gReduceMotion || verticalTabs)) {
|
|
||||||
for (let tab of movingTabs) {
|
|
||||||
tab.toggleAttribute("tabdrop-samewindow", true);
|
|
||||||
tab.style.transform = "translateX(" + newTranslateX + "px)";
|
|
||||||
@@ -1081,6 +1116,15 @@
|
|
||||||
return this._allTabs;
|
|
||||||
}
|
|
||||||
let children = Array.from(this.arrowScrollbox.children);
|
|
||||||
+ // Zen: We also need to exclude subgroups
|
|
||||||
+ // Zen: For example: tab-group(tab1, tab2), tab3, tab-group(tab4)
|
|
||||||
+ // Zen: In this case, we need to get [tab1, tab2, tab3, tab4]
|
|
||||||
+ // Zen: NOTE: There should be no tab-group inside of a tab-group
|
|
||||||
+ for (let i = 0; i < children.length; i++) {
|
|
||||||
+ if (children[i].classList.contains("zen-tab-group")) {
|
|
||||||
+ children.splice(i, 1, ...children[i].children);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
children.pop();
|
|
||||||
this._allTabs = children;
|
|
||||||
return children;
|
|
||||||
@@ -1386,7 +1430,7 @@
|
|
||||||
let tabsToReset = [];
|
|
||||||
for (let i = numPinned; i < tabs.length; i++) {
|
|
||||||
let tab = tabs[i];
|
|
||||||
- tab.style.setProperty("max-width", aTabWidth, "important");
|
|
||||||
+ //tab.style.setProperty("max-width", aTabWidth, "important");
|
|
||||||
if (!isEndTab) {
|
|
||||||
// keep tabs the same width
|
|
||||||
tab.style.transition = "none";
|
|
||||||
@@ -1476,11 +1520,11 @@
|
|
||||||
for (let i = numPinned - 1; i >= 0; i--) {
|
|
||||||
let tab = tabs[i];
|
|
||||||
width += layoutData.pinnedTabWidth;
|
|
||||||
- tab.style.setProperty(
|
|
||||||
- "margin-inline-start",
|
|
||||||
- -(width + layoutData.scrollStartOffset) + "px",
|
|
||||||
- "important"
|
|
||||||
- );
|
|
||||||
+ //tab.style.setProperty(
|
|
||||||
+ // "margin-inline-start",
|
|
||||||
+ // -(width + layoutData.scrollStartOffset) + "px",
|
|
||||||
+ // "important"
|
|
||||||
+ //);
|
|
||||||
tab._pinnedUnscrollable = true;
|
|
||||||
}
|
|
||||||
this.style.setProperty(
|
|
||||||
@@ -1515,19 +1559,30 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (!("animLastScreenX" in draggedTab._dragData)) {
|
|
||||||
- draggedTab._dragData.animLastScreenX = draggedTab._dragData.screenX;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- let screenX = event.screenX;
|
|
||||||
- if (screenX == draggedTab._dragData.animLastScreenX) {
|
|
||||||
- return;
|
|
||||||
+ const verticalTabs = Services.prefs.getBoolPref(
|
|
||||||
+ "zen.tabs.vertical",
|
|
||||||
+ false
|
|
||||||
+ );
|
|
||||||
+ const animLastScreen = verticalTabs
|
|
||||||
+ ? "animLastScreenY"
|
|
||||||
+ : "animLastScreenX";
|
|
||||||
+ const screen = verticalTabs ? "screenY" : "screenX";
|
|
||||||
+ const dimensions = verticalTabs ? "height" : "width";
|
|
||||||
+ const scrollEdge = verticalTabs ? "scrollTop" : "scrollLeft";
|
|
||||||
+ const scrollDimension = verticalTabs ? "scrollY" : "scrollX";
|
|
||||||
+ const translate = verticalTabs ? "translateY" : "translateX";
|
|
||||||
+ if (!(animLastScreen in draggedTab._dragData)) {
|
|
||||||
+ draggedTab._dragData[animLastScreen] = draggedTab._dragData[screen];
|
|
||||||
+ }
|
|
||||||
+ let screenX = event[screen];
|
|
||||||
+ if (screenX == draggedTab._dragData[animLastScreen]) {
|
|
||||||
+ return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Direction of the mouse movement.
|
|
||||||
- let ltrMove = screenX > draggedTab._dragData.animLastScreenX;
|
|
||||||
+ let ltrMove = screenX > draggedTab._dragData[animLastScreen];
|
|
||||||
|
|
||||||
- draggedTab._dragData.animLastScreenX = screenX;
|
|
||||||
+ draggedTab._dragData[animLastScreen] = screenX;
|
|
||||||
|
|
||||||
let pinned = draggedTab.pinned;
|
|
||||||
let numPinned = gBrowser._numPinnedTabs;
|
|
||||||
@@ -1536,36 +1591,39 @@
|
|
||||||
pinned ? numPinned : undefined
|
|
||||||
);
|
|
||||||
|
|
||||||
- if (RTL_UI) {
|
|
||||||
+ if (RTL_UI && !verticalTabs) {
|
|
||||||
tabs.reverse();
|
|
||||||
// Copy moving tabs array to avoid infinite reversing.
|
|
||||||
movingTabs = [...movingTabs].reverse();
|
|
||||||
}
|
|
||||||
- let tabWidth = draggedTab.getBoundingClientRect().width;
|
|
||||||
+ let tabWidth = draggedTab.getBoundingClientRect()[dimensions];
|
|
||||||
let shiftWidth = tabWidth * movingTabs.length;
|
|
||||||
+ // We want to store the output value as the width and the height to force
|
|
||||||
+ // compatibility with code elsewhere
|
|
||||||
draggedTab._dragData.tabWidth = tabWidth;
|
|
||||||
+ draggedTab._dragData.tabHeight = tabWidth;
|
|
||||||
|
|
||||||
// Move the dragged tab based on the mouse position.
|
|
||||||
|
|
||||||
let leftTab = tabs[0];
|
|
||||||
let rightTab = tabs[tabs.length - 1];
|
|
||||||
- let rightMovingTabScreenX = movingTabs[movingTabs.length - 1].screenX;
|
|
||||||
- let leftMovingTabScreenX = movingTabs[0].screenX;
|
|
||||||
- let translateX = screenX - draggedTab._dragData.screenX;
|
|
||||||
+ let rightMovingTabScreenX = movingTabs[movingTabs.length - 1][screen];
|
|
||||||
+ let leftMovingTabScreenX = movingTabs[0][screen];
|
|
||||||
+ let translateX = screenX - draggedTab._dragData[screen];
|
|
||||||
if (!pinned) {
|
|
||||||
translateX +=
|
|
||||||
- this.arrowScrollbox.scrollbox.scrollLeft -
|
|
||||||
- draggedTab._dragData.scrollX;
|
|
||||||
+ this.arrowScrollbox.scrollbox[scrollEdge] -
|
|
||||||
+ draggedTab._dragData[scrollDimension];
|
|
||||||
}
|
|
||||||
- let leftBound = leftTab.screenX - leftMovingTabScreenX;
|
|
||||||
+ let leftBound = leftTab[screen] - leftMovingTabScreenX;
|
|
||||||
let rightBound =
|
|
||||||
- rightTab.screenX +
|
|
||||||
- rightTab.getBoundingClientRect().width -
|
|
||||||
+ rightTab[screen] +
|
|
||||||
+ rightTab.getBoundingClientRect()[dimensions] -
|
|
||||||
(rightMovingTabScreenX + tabWidth);
|
|
||||||
translateX = Math.min(Math.max(translateX, leftBound), rightBound);
|
|
||||||
|
|
||||||
for (let tab of movingTabs) {
|
|
||||||
- tab.style.transform = "translateX(" + translateX + "px)";
|
|
||||||
+ tab.style.transform = translate + "(" + translateX + "px)";
|
|
||||||
}
|
|
||||||
|
|
||||||
draggedTab._dragData.translateX = translateX;
|
|
||||||
@@ -1598,11 +1656,11 @@
|
|
||||||
if (tabs[mid] == draggedTab && ++mid > high) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
- screenX = tabs[mid].screenX + getTabShift(tabs[mid], oldIndex);
|
|
||||||
+ screenX = tabs[mid][screen] + getTabShift(tabs[mid], oldIndex);
|
|
||||||
if (screenX > tabCenter) {
|
|
||||||
high = mid - 1;
|
|
||||||
} else if (
|
|
||||||
- screenX + tabs[mid].getBoundingClientRect().width <
|
|
||||||
+ screenX + tabs[mid].getBoundingClientRect()[dimensions] <
|
|
||||||
tabCenter
|
|
||||||
) {
|
|
||||||
low = mid + 1;
|
|
||||||
@@ -1625,16 +1683,16 @@
|
|
||||||
for (let tab of tabs) {
|
|
||||||
if (tab != draggedTab) {
|
|
||||||
let shift = getTabShift(tab, newIndex);
|
|
||||||
- tab.style.transform = shift ? "translateX(" + shift + "px)" : "";
|
|
||||||
+ tab.style.transform = shift ? translate + "(" + shift + "px)" : "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTabShift(tab, dropIndex) {
|
|
||||||
if (tab._tPos < draggedTab._tPos && tab._tPos >= dropIndex) {
|
|
||||||
- return RTL_UI ? -shiftWidth : shiftWidth;
|
|
||||||
+ return RTL_UI && !verticalTabs ? -shiftWidth : shiftWidth;
|
|
||||||
}
|
|
||||||
if (tab._tPos > draggedTab._tPos && tab._tPos < dropIndex) {
|
|
||||||
- return RTL_UI ? shiftWidth : -shiftWidth;
|
|
||||||
+ return RTL_UI && !verticalTabs ? shiftWidth : -shiftWidth;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -1706,9 +1764,9 @@
|
|
||||||
|
|
||||||
// Slide the relevant tabs to their new position.
|
|
||||||
for (let t of this._getVisibleTabs()) {
|
|
||||||
- if (t.groupingTabsData && t.groupingTabsData.translateX) {
|
|
||||||
- let translateX = (RTL_UI ? -1 : 1) * t.groupingTabsData.translateX;
|
|
||||||
- t.style.transform = "translateX(" + translateX + "px)";
|
|
||||||
+ if (t.groupingTabsData && t.groupingTabsData.translateY) {
|
|
||||||
+ let translateX = (RTL_UI ? -1 : 1) * t.groupingTabsData.translateY;
|
|
||||||
+ t.style.transform = "translateY(" + translateX + "px)";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
|
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
|
||||||
index 1b87a9ab4aec939acac1da54a2b6670cc581fe86..603de2aa8d07adce7eb1002313f6403e1d90c5ea 100644
|
index da760e143740a166df14d055cf3ec7b095b93d10..093dacee4356d4084432d53639873e3da006dd94 100644
|
||||||
--- a/browser/installer/package-manifest.in
|
--- a/browser/installer/package-manifest.in
|
||||||
+++ b/browser/installer/package-manifest.in
|
+++ b/browser/installer/package-manifest.in
|
||||||
@@ -370,8 +370,8 @@ bin/libfreebl_64int_3.so
|
@@ -377,17 +377,17 @@ bin/libfreebl_64int_3.so
|
||||||
; [MaintenanceService]
|
; [MaintenanceService]
|
||||||
;
|
;
|
||||||
#ifdef MOZ_MAINTENANCE_SERVICE
|
#ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
@@ -13,3 +13,23 @@ index 1b87a9ab4aec939acac1da54a2b6670cc581fe86..603de2aa8d07adce7eb1002313f6403e
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
; [Crash Reporter]
|
; [Crash Reporter]
|
||||||
|
;
|
||||||
|
#ifdef MOZ_CRASHREPORTER
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
-@BINPATH@/crashreporter.app/
|
||||||
|
+;@BINPATH@/crashreporter.app/
|
||||||
|
#else
|
||||||
|
-@BINPATH@/crashreporter@BIN_SUFFIX@
|
||||||
|
+;@BINPATH@/crashreporter@BIN_SUFFIX@
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
@BINPATH@/@DLL_PREFIX@mozwer@DLL_SUFFIX@
|
||||||
|
#endif
|
||||||
|
@@ -397,7 +397,7 @@ bin/libfreebl_64int_3.so
|
||||||
|
; [ minidump-analyzer ]
|
||||||
|
;
|
||||||
|
#ifdef MOZ_CRASHREPORTER
|
||||||
|
-@BINPATH@/minidump-analyzer@BIN_SUFFIX@
|
||||||
|
+;@BINPATH@/minidump-analyzer@BIN_SUFFIX@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
; [ Ping Sender ]
|
||||||
|
@@ -1,32 +0,0 @@
|
|||||||
diff --git a/browser/locales/en-US/browser/appExtensionFields.ftl b/browser/locales/en-US/browser/appExtensionFields.ftl
|
|
||||||
index 09d7a076eccd4235fac66156770d8b9ae01a7d16..f32affde0d6f77dadd421ff68bf2050bda9f0cd0 100644
|
|
||||||
--- a/browser/locales/en-US/browser/appExtensionFields.ftl
|
|
||||||
+++ b/browser/locales/en-US/browser/appExtensionFields.ftl
|
|
||||||
@@ -8,13 +8,13 @@
|
|
||||||
extension-default-theme-name-auto=System theme — auto
|
|
||||||
extension-default-theme-description=Follow the operating system setting for buttons, menus, and windows.
|
|
||||||
|
|
||||||
-extension-firefox-compact-light-name=Light
|
|
||||||
+extension-firefox-compact-light-name=Zen Light
|
|
||||||
extension-firefox-compact-light-description=A theme with a light color scheme.
|
|
||||||
|
|
||||||
-extension-firefox-compact-dark-name=Dark
|
|
||||||
+extension-firefox-compact-dark-name=Zen Dark
|
|
||||||
extension-firefox-compact-dark-description=A theme with a dark color scheme.
|
|
||||||
|
|
||||||
-extension-firefox-alpenglow-name=Firefox Alpenglow
|
|
||||||
+extension-firefox-alpenglow-name=Zen Universe
|
|
||||||
extension-firefox-alpenglow-description=Use a colorful appearance for buttons, menus, and windows.
|
|
||||||
|
|
||||||
## Colorway Themes
|
|
||||||
@@ -28,3 +28,9 @@ extension-colorways-balanced-name={ $colorway-name } — Balanced
|
|
||||||
# "Bold" is used in the sense of bravery or courage, not in the sense of
|
|
||||||
# emphasized text.
|
|
||||||
extension-colorways-bold-name={ $colorway-name } — Bold
|
|
||||||
+
|
|
||||||
+extension-firefox-compact-galaxy-name=Zen Galaxy
|
|
||||||
+extension-firefox-compact-galaxy-description=A theme with a dark color scheme and a nice galaxy touch!
|
|
||||||
+
|
|
||||||
+extension-firefox-compact-dream-name=Zen Dream
|
|
||||||
+extension-firefox-compact-dream-description=A theme with a light color scheme and a nice dream-y touch!
|
|
||||||
\ No newline at end of file
|
|
@@ -1,10 +0,0 @@
|
|||||||
diff --git a/browser/locales/en-US/browser/appmenu.ftl b/browser/locales/en-US/browser/appmenu.ftl
|
|
||||||
index 5ad2d75f6215f7da44948cda5ad938db8fd97e8d..da4442ebcd594b602b9e991c9591071dddcaa5f6 100644
|
|
||||||
--- a/browser/locales/en-US/browser/appmenu.ftl
|
|
||||||
+++ b/browser/locales/en-US/browser/appmenu.ftl
|
|
||||||
@@ -314,3 +314,5 @@ appmenuitem-relay-title = { -relay-brand-short-name }
|
|
||||||
appmenuitem-relay-description = Mask your real email and phone
|
|
||||||
appmenuitem-vpn-title = { -mozilla-vpn-brand-name }
|
|
||||||
appmenuitem-vpn-description = Protect your online activity
|
|
||||||
+
|
|
||||||
+zen-panel-ui-current-profile-text = current profile
|
|
@@ -1,11 +0,0 @@
|
|||||||
diff --git a/browser/locales/en-US/browser/customizeMode.ftl b/browser/locales/en-US/browser/customizeMode.ftl
|
|
||||||
index e5f54b231738fc8fee505c8c8dcccde820995cfc..ec81ef8e451faa25878830b7d4796708e15fe395 100644
|
|
||||||
--- a/browser/locales/en-US/browser/customizeMode.ftl
|
|
||||||
+++ b/browser/locales/en-US/browser/customizeMode.ftl
|
|
||||||
@@ -36,3 +36,5 @@ customize-mode-touchbar-cmd =
|
|
||||||
.label = Customize Touch Bar…
|
|
||||||
customize-mode-downloads-button-autohide =
|
|
||||||
.label = Hide button when empty
|
|
||||||
+
|
|
||||||
+customization-zen-browser-space = Content Space
|
|
||||||
\ No newline at end of file
|
|