Compare commits

...

575 Commits

Author SHA1 Message Date
mauro-balades
7b836d1232 chore: Update right-side compact mode CSS for vertical tabs 2024-08-31 00:50:21 +02:00
mauro 🤙
00e0892c31 Merge pull request #1113 from damianfijorek/bugfix/1073
Fix vertical tabs on the right overflow.
2024-08-31 00:49:06 +02:00
mauro 🤙
c44b844770 Merge branch 'main' into bugfix/1073 2024-08-31 00:48:53 +02:00
mauro-balades
2cdb14c184 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-31 00:45:21 +02:00
mauro-balades
912aeba7b4 Enable hardware acceleration and web rendering for improved performance and rendering quality. 2024-08-31 00:45:15 +02:00
Damian Fijorek
10aad8c6ed Fix vertical tabs on the right overflow. 2024-08-30 22:00:40 +00:00
mauro 🤙
296cb9c44f Merge pull request #1111 from NOCanoa/main
Added logo to repo fix loading issue
2024-08-30 23:26:21 +02:00
mauro-balades
619d54ddc6 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-30 23:10:08 +02:00
mauro-balades
c0923fbe0a chore: Remove unnecessary styles from ZenStartup.mjs 2024-08-30 23:10:02 +02:00
NOCanoa
689789f2e9 Update README.md 2024-08-30 22:07:18 +01:00
NOCanoa
2eaf348eda Add files via upload 2024-08-30 22:06:50 +01:00
mauro 🤙
1f25a3c502 Merge pull request #1103 from NOCanoa/main
readme update merge pls
2024-08-30 21:55:30 +02:00
mauro 🤙
4d9d8be4a4 Merge pull request #1104 from Aiz0/main
docs(readme): correct spelling of couldn't
2024-08-30 21:37:03 +02:00
Aiz
7bf5aa2015 docs(readme): correct spelling of couldn't 2024-08-30 21:29:31 +02:00
NOCanoa
c2762c4eb9 Delete performance.md 2024-08-30 20:12:25 +01:00
NOCanoa
f5f3792165 readme update merge now 2024-08-30 20:07:57 +01:00
mauro-balades
212e6e4bf8 Fix https://github.com/zen-browser/desktop/issues/1081 2024-08-30 13:53:45 +02:00
mauro-balades
ca6f7c0b3a Remove unused SVG files 2024-08-30 13:17:46 +02:00
mauro-balades
70df8829fb Let's see if this makes it faster 2024-08-30 12:11:03 +02:00
mauro-balades
b586880d44 fix building themes on preferences 2024-08-30 11:47:13 +02:00
mauro-balades
758a5cc44a Updated surfer 2024-08-30 10:52:11 +02:00
mauro-balades
985a3f433c Allowed moving around web panel pages 2024-08-30 10:07:31 +02:00
mauro-balades
95545dcec9 test macos 2024-08-30 09:30:46 +02:00
mauro-balades
541d2f7baa test macos builds 2024-08-30 09:10:26 +02:00
mauro-balades
b5566038e2 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-30 02:14:15 +02:00
mauro-balades
bcf8b190d7 Fixed svg 2024-08-30 02:14:02 +02:00
mauro-balades
3ad9874ded 🔖 Update version to 1.0.0-a.33 2024-08-29 22:41:47 +00:00
mauro-balades
32ef547349 Added label pansion for "expand on hover" prefs 2024-08-30 00:37:29 +02:00
mauro-balades
9ad90e7298 Compact mode now takes element separation into account 2024-08-29 22:26:01 +02:00
mauro-balades
f2a8c3665d Merge branch 'main' of https://github.com/zen-browser/core 2024-08-29 21:52:40 +02:00
mauro-balades
98e97585e1 Update submodules 2024-08-29 21:52:33 +02:00
mauro-balades
fcb95175de Fix opening links from external apps 2024-08-29 21:51:47 +02:00
mauro 🤙
63bf09bc3c Merge pull request #1011 from bw8686/patch-4
Enable https only by default.
2024-08-29 21:19:32 +02:00
mauro-balades
b39570d9e5 Fix opening links from external apps 2024-08-29 21:09:09 +02:00
mauro 🤙
d83908bcff Merge pull request #1031 from notsatvrn/main
URL bar improvements
2024-08-29 20:35:44 +02:00
satvrn
a7f6a1ef4f use a better bg color for selected result 2024-08-28 22:20:52 -07:00
satvrn
f849bc0a1a move a line 2024-08-28 22:14:31 -07:00
satvrn
dd5d8dce77 URL bar improvements 2024-08-28 22:00:52 -07:00
bw8686
82f933af93 okfinishlol 2024-08-28 20:09:57 +01:00
bw8686
52485459a9 common-sense.exe is not responding... 2024-08-28 19:56:47 +01:00
bw8686
6a4e81d1a1 quickie 2024-08-28 19:55:51 +01:00
bw8686
9b3afb58cd revert 2024-08-28 19:54:41 +01:00
bw8686
802a7300e0 certified idiot 2024-08-28 17:49:21 +01:00
bw8686
87ca7d2d73 Enable https by default. 2024-08-28 17:46:10 +01:00
bw8686
1cdb0404fd Fix policies for updates. 2024-08-28 17:34:29 +01:00
mauro-balades
09b3197aa4 🔖 Update version to 1.0.0-a.32 2024-08-28 09:14:01 +00:00
mauro-balades
4fe83e8f25 Add https:// scheme if URL doesn't contain one 2024-08-28 11:07:28 +02:00
mauro-balades
b8361cc8ea Fix opening URLs in windows 2024-08-28 10:46:11 +02:00
mauro-balades
ac37939c6e Fix theme store API 2024-08-28 10:05:50 +02:00
mauro-balades
81a2b5b874 Fixed split view shortcuts 2024-08-27 20:58:06 +02:00
mauro-balades
094295ba93 chore: Update margin for #tabbrowser-arrowscrollbox in vertical-tabs.css 2024-08-27 20:51:41 +02:00
mauro 🤙
7bea297965 Merge pull request #968 from elianiva/fix/right-side-compact-tab
fix: right-side tabs was incorrectly positioned on compact mode
2024-08-27 20:29:20 +02:00
elianiva
378ea1cab1 fix: right-side tabs was incorrectly positioned on compact mode 2024-08-27 23:37:45 +07:00
mauro-balades
f22e1f6503 Update subproject commit reference 2024-08-27 18:06:13 +02:00
mauro-balades
0345322c06 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-27 18:04:53 +02:00
mauro-balades
61cf75f84c chore: Update tabbrowser/tabs.css to fix positioning issue 2024-08-27 18:04:34 +02:00
mauro-balades
866b9d74ef 🔖 Update version to 1.0.0-a.31 2024-08-27 15:17:22 +00:00
mauro-balades
d5bbcd0617 chore: Update @zen-browser/surfer dependency to version 1.3.5 2024-08-27 17:14:35 +02:00
mauro 🤙
78fa236bec Merge pull request #928 from Donnnno/beta
fix for beta wordmark
2024-08-26 21:39:19 +02:00
Donno
35fb5f510e fix for beta wordmark 2024-08-26 21:26:08 +02:00
mauro 🤙
cc340432ba Merge pull request #927 from Retold3202/patch-1
Fix Backdoor
2024-08-26 21:22:26 +02:00
Retold3202
d87315da49 Fix Backdoor
For some reason, Zen is currently not only exposing Remote Debugging... but also disabling prompting for it?

This is very concerning from a security perspective and quite literally acts as a backdoor - You can see here: https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/16222 & here: https://firefox-source-docs.mozilla.org/devtools/backend/protocol.html for some details

Not even Firefox Developer Edition enables these prefs by default. Respectfully, I have no idea what your team was thinking flipping them, and I seriously have to question the motives here. I hope that this was simply incompetence & not malicious, but it is concerning regardless. The browser is one of the, if not the most security critical component in our lives. Treating it as a hobbyist project like this is unacceptable. Please do better in the future.

There's various other prefs I think are highly questionable that I'll leave feedback for separately - But this was the most severe & needed to be taken care of ASAP.
2024-08-26 19:21:05 +00:00
mauro 🤙
bf4e47f8fb Merge pull request #903 from Donnnno/new-assets-2
new private browser indicator icons, and wordmark fixes
2024-08-26 15:01:08 +02:00
Donno
162a98fd1b new private browser indicator icons, and wordmark fixes 2024-08-26 14:57:57 +02:00
Mauro Balades
a6aeafa668 chore: Update subproject commit reference 2024-08-26 14:16:20 +02:00
mauro 🤙
31bd7b14dd Merge pull request #900 from bw8686/patch-2
Fix on hover causing the page to shift ever so slightly
2024-08-26 14:11:54 +02:00
Mauro Balades
ab793ff424 chore: Update @zen-browser/surfer dependency to version 1.3.5 2024-08-26 13:56:21 +02:00
bw8686
043755c1a0 fix it lol 2024-08-26 12:47:59 +01:00
mauro-balades
42a0140d8d 🔖 Update version to 1.0.0-a.30 2024-08-26 11:29:57 +00:00
mauro 🤙
ed923b73cc Merge pull request #719 from bw8686/patch-1
Add animation to on hover open.
2024-08-26 12:26:19 +02:00
mauro 🤙
06adcdbcb6 Merge pull request #739 from n7itro/main
fix collapsed tab shifting when audio playing
2024-08-26 11:37:45 +02:00
nitro
7f4265dfe4 fix collapsed tab shifting when audio playing
Fixes #608 as tested in browser toolbox
2024-08-26 11:36:00 +02:00
Mauro Balades
cd3a09d26b no more enhancements 2024-08-26 10:00:50 +02:00
Mauro Balades
09585654ee chore: Update updateHostname in mozconfig and surfer.json 2024-08-26 09:47:35 +02:00
bw8686
67bc214cc9 Add animation to on hover open. 2024-08-26 03:26:11 +01:00
Mauro Balades
4cef2dd304 chore: Comment out MOZ_PACKAGE_JSSHELL in mozconfig 2024-08-26 00:19:38 +02:00
Mauro Balades
c313c95c81 remove test 2024-08-25 23:18:45 +02:00
Mauro Balades
7427fa0017 TEST 2024-08-25 23:18:25 +02:00
Mauro Balades
10c10523f1 chore: Comment out MOZ_PACKAGE_JSSHELL in mozconfig 2024-08-25 23:18:04 +02:00
Mauro Balades
21c537f000 refactor: Fix opening dialogs when tabs are expanded on hover (#652) 2024-08-25 23:08:43 +02:00
Mauro Balades
4920433736 refactor: Update ZenKeyboardShortcuts to use 'vsep' instead of 'vsplit' for vertical split view action 2024-08-25 22:34:40 +02:00
Mauro Balades
57e2c4af0a Merge branch 'main' of https://github.com/zen-browser/core 2024-08-25 22:27:13 +02:00
Mauro Balades
9652725e84 chore: Comment out MOZ_PACKAGE_JSSHELL in mozconfig 2024-08-25 22:27:07 +02:00
mauro 🤙
21635d9d63 Merge pull request #694 from upsidedownsweetfood/desktop-desc
chore: Adding description to .desktop file
2024-08-25 22:24:54 +02:00
Mauro Balades
c7845a8e8f remove test 2024-08-25 21:59:56 +02:00
Mauro Balades
c0aa1664cb test 2024-08-25 21:59:35 +02:00
Mauro Balades
f72e38fd54 test 2024-08-25 21:59:17 +02:00
GlaDOS
d39ae862d6 chore: Adding description to .desktop file 2024-08-25 21:46:22 +02:00
Mauro Balades
00d0eb8fc8 chore: Add "zen-dont-hide-on-fullscreen" class to toolbar elements in sidebar 2024-08-25 21:30:41 +02:00
mauro 🤙
80866de5fe Merge pull request #628 from gunir/patch-7
Exposes Letterboxing https://github.com/zen-browser/desktop/issues/475
2024-08-25 21:21:32 +02:00
Mauro Balades
3dbb8a9bc2 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-25 21:08:45 +02:00
Mauro Balades
a47edaefaa Merge branch 'katedickey-main' 2024-08-25 21:08:31 +02:00
Mauro Balades
0c7dbbc2c6 Merge branch 'main' of https://github.com/katedickey/zen-browser-desktop into katedickey-main 2024-08-25 21:08:24 +02:00
Katelyn Dickey
45515149e0 feat(workspaces): make workspaces creation flow a single step 2024-08-25 12:53:39 -04:00
Katelyn Dickey
b8da76745d fix(workspaces): add a lil gap between icon and name in the workspaces button 2024-08-25 12:50:42 -04:00
Katelyn Dickey
7d55d670ee feat(workspaces): allow users to edit existing workspaces 2024-08-25 12:25:36 -04:00
mauro 🤙
a74ec9650c Merge pull request #669 from Swissbite/#619-ScreenSaver-Bus-communication
Fix #619 - Add flatpak session bus comminucation to org.freedesktop.ScreenSaver
2024-08-25 15:56:00 +02:00
David Daester
fdb5627da6 Fix Flatpak - Screensaver starts while a video is running in full screen mode #619 2024-08-25 13:45:58 +00:00
mauro 🤙
60687d6b03 Merge pull request #658 from qtchaos/fix(pref-typo)
fix: remove a typo in the update details url
2024-08-25 13:48:20 +02:00
Mauro Balades
dd68add538 chore: Update l10n submodule commit 2024-08-25 13:03:10 +02:00
chaos
ea34bec55a fix: remove a typo in the update details url 2024-08-25 13:18:15 +03:00
Mauro Balades
3def55d48b Started checking for themes updates 2024-08-25 11:27:27 +02:00
Mauro Balades
5c4c3e6fb2 chore: Update l10n submodule commit 2024-08-25 01:59:51 +02:00
Gunir
c0d101aef0 Exposes Letterboxing https://github.com/zen-browser/desktop/issues/475
Exposes Letterboxing https://github.com/zen-browser/desktop/issues/475
2024-08-25 06:32:59 +07:00
Mauro Balades
cc022ddd2f chore: Update l10n submodule commit 2024-08-25 00:18:54 +02:00
Mauro Balades
511ca88aec chore: Update l10n submodule commit 2024-08-24 23:36:29 +02:00
Mauro Balades
9217e32439 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-24 23:34:31 +02:00
Mauro Balades
2444bb04fc chore: Update l10n submodule commit 2024-08-24 23:34:21 +02:00
mauro 🤙
c502719bd7 Merge pull request #618 from katedickey/main
Enable workspace scrolling
2024-08-24 22:30:46 +02:00
Katelyn Dickey
d3a9ec4b3c fix: enable scrolling on workspaces list 2024-08-24 16:14:28 -04:00
Katelyn Dickey
8a646bcc95 fix: stop workspace icons from shrinking 2024-08-24 16:12:50 -04:00
Mauro Balades
92959769df Merge branch 'main' of https://github.com/zen-browser/core 2024-08-24 17:52:51 +02:00
Mauro Balades
e4d56fd7d9 chore: Disable multilingual dictionary download 2024-08-24 17:52:46 +02:00
mauro-balades
b77f864668 🔖 Update version to 1.0.0-a.29 2024-08-24 14:52:37 +00:00
mauro 🤙
e02a44b20b Merge pull request #545 from Moshyfawn/main
Align Theme Store layout
2024-08-24 16:51:53 +02:00
Mauro Balades
eb2d91256f Update l10n submodule commit 2024-08-24 16:50:56 +02:00
Mauro Balades
ff9876ebac Update l10n submodule commit 2024-08-24 16:50:28 +02:00
moshyfawn
d6ddb542e9 Merge branch 'main' into main 2024-08-24 10:12:19 -04:00
Mauro Balades
8ba6ba14e8 refactor: Update ZenKeyboardShortcuts to use gZenUIManager.createValidXULText for key attribute 2024-08-24 15:17:11 +02:00
Mauro Balades
6c58c9d61c remove test 2024-08-24 14:40:02 +02:00
Mauro Balades
6f0609dd8c test 2024-08-24 14:39:35 +02:00
Mauro Balades
ebba41c735 chore: Remove MOZ_CRASHREPORTER option from mozconfig 2024-08-24 14:39:19 +02:00
Mauro Balades
65e040d987 Update l10n submodule commit 2024-08-24 14:31:39 +02:00
Mauro Balades
29a85db998 Update l10n submodule commit 2024-08-24 14:14:05 +02:00
Mauro Balades
d50a745e95 Update l10n submodule commit 2024-08-24 13:59:17 +02:00
mauro 🤙
a5854174c7 Merge pull request #570 from n7itro/patch-1
fix 2 obsolete/broken links
2024-08-24 13:46:21 +02:00
nitro
5ef37aa079 fix 2 obsolete/broken links
Thanks for adding me btw!
2024-08-24 13:45:24 +02:00
mauro 🤙
4c622d1429 Merge pull request #567 from lamteteeow/patch-1
Fix performance.md typo
2024-08-24 13:04:38 +02:00
Mauro Balades
5593e7c437 Fixed hovering tabs, changing the viewport width 2024-08-24 13:04:03 +02:00
Lam Tran
940bbae367 Update performance.md
just typo
2024-08-24 12:52:31 +02:00
Mauro Balades
4d8558929c chore: Update zen-compact-mode.css for improved navigation toolbar styling 2024-08-24 12:33:18 +02:00
Mauro Balades
c05547248f chore: Update l10n submodule commit 2024-08-24 12:18:20 +02:00
Mauro Balades
1a5e788476 chore: Update @zen-browser/surfer dependency to version 1.3.4 2024-08-24 12:01:59 +02:00
mauro 🤙
0af7b8b5b6 Merge pull request #557 from dewantawsif/chore/feature-request-template-improvement
Improve the feature request issue template
2024-08-24 11:45:20 +02:00
Mauro Balades
95e444c31c chore: Update @zen-browser/surfer dependency to version 1.3.3 2024-08-24 10:49:36 +02:00
Dewan Tawsif
b011ad3de9 Improve the feature request issue template 2024-08-24 14:15:15 +06:00
Mauro Balades
ff188e0e1c chore: Update zen-compact-mode.css for improved navigation toolbar styling 2024-08-24 10:08:37 +02:00
moshyfawn
5ef88531d2 fix(Settings, Look and Feel): theme store box alignment
Closes #544
2024-08-24 00:02:31 -04:00
Mauro Balades
410c875151 remove test 2024-08-24 02:31:06 +02:00
Mauro Balades
bbad093d64 test 2024-08-24 02:30:48 +02:00
Mauro Balades
e7103f1d87 chore: Update l10n submodule commit 2024-08-24 02:28:42 +02:00
mauro 🤙
d9c3973b9d Merge pull request #535 from Lenni-builder/patch-1
Fix typo/error in README
2024-08-24 01:13:40 +02:00
Mauro Balades
d65681505d chore: Update l10n submodule commit 2024-08-24 00:14:20 +02:00
Lenni
739eff84f2 Fix typo/error in README 2024-08-24 00:04:49 +02:00
Mauro Balades
d5e7d0c36f chore: Update @zen-browser/surfer dependency to version 1.3.1 2024-08-23 22:49:51 +02:00
Mauro Balades
90ca6ea99a chore: Update l10n submodule commit 2024-08-23 22:40:46 +02:00
Mauro Balades
fdb4696066 chore: Update zen-components submodule commit 2024-08-23 22:28:39 +02:00
Mauro Balades
22a5dcddf3 chore: Update zen-components submodule commit 2024-08-23 19:57:18 +02:00
Mauro Balades
47ba86f211 Fixed workspaces (closes #439) 2024-08-23 19:53:35 +02:00
Mauro Balades
e2e7756649 chore: Update l10n submodule path in mozconfig and package.json 2024-08-23 16:56:16 +02:00
Mauro Balades
85b605db14 chore: Add submodule for l10n packs 2024-08-23 15:20:08 +02:00
Mauro Balades
cf48a52949 chore: Add multi-locale support to mozconfig 2024-08-23 14:32:24 +02:00
Mauro Balades
dfde0f4baa feat: Add horizontal tabs style for Zen browser 2024-08-23 13:30:50 +02:00
Mauro Balades
31b41329f2 Added support for multitab splitting with the shortcuts 2024-08-23 12:55:16 +02:00
Mauro Balades
f856d9db6d Merge branch 'main' of https://github.com/zen-browser/core 2024-08-23 12:27:47 +02:00
Mauro Balades
4187e20fbc Split views now add missing tabs to the group 2024-08-23 12:27:08 +02:00
mauro 🤙
54b4f6e932 Merge pull request #464 from gunir/patch-6
Disable Edge font style for Mac and Linux
2024-08-23 09:03:50 +02:00
Gunir
bcabada80e Update zen-browser.js 2024-08-23 11:16:13 +07:00
Gunir
5c1decc77b Disable Edge font style for Mac
Disable Edge font style for Mac
2024-08-23 08:27:02 +07:00
mauro 🤙
04af43909e Update README.md 2024-08-23 01:32:38 +02:00
mauro 🤙
e808443631 Update vertical-tabs.css 2024-08-22 23:14:57 +02:00
Mauro Balades
a47023e0f3 Reverted back version 2024-08-22 20:36:56 +02:00
Mauro Balades
ae9c99c7bc Fixed changing workspaces again 2024-08-22 20:34:42 +02:00
Mauro Balades
187688e6ea Fixed closing workspaces 2024-08-22 20:23:49 +02:00
mauro-balades
7854e26823 🔖 Update version to 1.0.0-a.29 2024-08-22 14:32:49 +00:00
Mauro Balades
d38eb962de Added support for mode branding icons! 2024-08-22 16:24:36 +02:00
mauro 🤙
b2c2a134b0 Merge pull request #400 from Donnnno/assets
new assets
2024-08-22 16:12:39 +02:00
Mauro Balades
4874b4a1cd Merge branch 'main' of https://github.com/zen-browser/core 2024-08-22 16:11:36 +02:00
Mauro Balades
983e85033f Added "open split view in new tab" context menu button 2024-08-22 16:11:31 +02:00
mauro-balades
38e6f075f4 🔖 Update version to 1.0.0-a.28 2024-08-22 12:05:32 +00:00
Mauro Balades
4146ad0936 Focus URL bar on startup 2024-08-22 14:04:21 +02:00
Mauro Balades
cf2435081a chore: Update browser preferences for content blocking and update check time 2024-08-22 13:28:23 +02:00
Mauro Balades
e6f8eede34 -Started working on translations 2024-08-22 12:41:55 +02:00
Mauro Balades
72f76608b6 Fixed #426 2024-08-22 12:09:03 +02:00
Mauro Balades
4eb07c762a Fixed license link 2024-08-22 11:04:34 +02:00
Mauro Balades
bbb4b64940 chore: Update subproject commit reference in zen-components 2024-08-22 10:49:59 +02:00
Mauro Balades
cac80a2985 Fixed top padding for compact sidebar 2024-08-22 10:21:41 +02:00
Mauro Balades
ca1a63dbf1 Fixed sidebar shortcuts 2024-08-22 10:15:24 +02:00
Mauro Balades
31fb9296c7 chore: Update zen-browser-container.css for webview border radius 2024-08-22 09:50:44 +02:00
mauro 🤙
7dd3e08409 Merge pull request #402 from dewantawsif/fix/bug-report-template-name
[skip ci] Fix "Bug Report" issue template name
2024-08-21 23:19:34 +02:00
Dewan Tawsif
b537e5566a [skip ci] Fix "Bug Report" issue template name 2024-08-22 03:13:28 +06:00
Mauro Balades
5dd2a90f46 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-21 23:11:00 +02:00
Mauro Balades
034f351ac6 Update subproject commit reference in zen-components 2024-08-21 23:10:54 +02:00
Donno
195b215f5b oops 2024-08-21 22:48:31 +02:00
Donno
74d1385566 new assets 2024-08-21 22:40:28 +02:00
mauro-balades
957fe60a3d 🔖 Update version to 1.0.0-a.27 2024-08-21 20:07:59 +00:00
Mauro Balades
5ac6cf4465 chore: Update vertical tabs order in zen-tabs CSS 2024-08-21 20:55:58 +02:00
Mauro Balades
29d9c85923 chore: Update subproject commit reference in zen-components 2024-08-21 20:48:15 +02:00
Mauro Balades
78729d44de chore: Disable mozilla's settings in zen-preferences.css 2024-08-21 20:32:44 +02:00
Mauro Balades
483bee452e chore: Update subproject commit reference in zen-components 2024-08-21 20:23:43 +02:00
Mauro Balades
8a87e3a0af Enabled JPEG XL 2024-08-21 09:44:21 +02:00
Mauro Balades
07283e1050 chore: Improve compact mode and vertical tabs styling 2024-08-21 09:40:27 +02:00
mauro-balades
1eaf6e49ef 🔖 Update version to 1.0.0-a.26 2024-08-20 20:22:04 +00:00
Mauro Balades
c40d56b3b8 chore: Update @zen-browser/surfer dependency to version 1.2.14 2024-08-20 22:20:36 +02:00
mauro 🤙
ed7ad501b7 Merge pull request #357 from Donnnno/the-icon-fixening
windows icons fix
2024-08-20 22:17:12 +02:00
Donno
964e0733b1 ff64 2024-08-20 22:06:30 +02:00
Mauro Balades
c319a83d58 refactor: Update ZenWorkspaces to enable setting default workspace and opening workspaces 2024-08-20 22:00:49 +02:00
Mauro Balades
4589c543da chore: Update CSS to improve compact mode and vertical tabs styling 2024-08-20 21:36:56 +02:00
Donno
0c3930425a windows icons fix 2024-08-20 20:56:14 +02:00
mauro-balades
2f790586b2 🔖 Update version to 1.0.0-a.25 2024-08-20 16:10:22 +00:00
Mauro Balades
7d3b47f4f6 chore: Update vertical-tabs.css to set max-width to 100% 2024-08-20 18:09:14 +02:00
Mauro Balades
69a1e0f1b9 chore: Refactor zen-settings.js to improve preference handling 2024-08-20 18:00:23 +02:00
Mauro Balades
f78ad97710 Update Firefox version to 129.0.2 2024-08-20 17:44:43 +02:00
Mauro Balades
984e29f4cd chore: Remove unnecessary Python 3.12 commands and files from macOS alpha build workflow 2024-08-20 14:00:23 +02:00
Mauro Balades
72c535b039 chore: Update macOS alpha build workflow to remove unnecessary Python 3.12 commands and files 2024-08-20 13:59:23 +02:00
Mauro Balades
000c41038d chore: Update macOS alpha build workflow to install Python 3.11 and add watchman 2024-08-20 13:17:21 +02:00
Mauro Balades
776c9f69d5 chore: Update macOS alpha build workflow to bootstrap the engine with --no-system-changes flag 2024-08-20 12:31:01 +02:00
Mauro Balades
b38acdd8be chore: Update vertical-tabs.css to set max-width to 100% 2024-08-20 12:23:47 +02:00
Mauro Balades
c8ad6cb70e chore: Update macOS alpha build workflow to remove unnecessary Python 3.12 commands and files 2024-08-20 12:04:21 +02:00
Mauro Balades
bb6113f221 chore: Update macOS alpha build workflow to completely uninstall python3 and python3.12 with --ignore-dependencies flag 2024-08-20 11:33:43 +02:00
Mauro Balades
83d91ea38c chore: Update zen-compact-mode.css to fix padding and titlebar width 2024-08-20 11:30:51 +02:00
Mauro Balades
481687bdab chore: Update macOS alpha build workflow to install Python 3.11 instead of Python 3.12 2024-08-20 11:14:02 +02:00
Mauro Balades
47f91322f6 chore: Update macOS alpha build workflow to remove unnecessary Python 3.12 commands and files 2024-08-20 10:22:34 +02:00
Mauro Balades
4549ac3671 chore: Update padding-left in vertical-tabs.css to use variable 2024-08-20 10:16:20 +02:00
Mauro Balades
7ec8523c95 chore: Update macOS alpha build workflow to remove unnecessary Python 3.12 commands and files 2024-08-20 10:02:59 +02:00
Mauro Balades
1bd8f37381 chore: Update zen-components submodule to commit f5d5bc9 2024-08-20 09:31:07 +02:00
Mauro Balades
fa7a0ac661 chore: Update macOS alpha build workflow to remove unnecessary commands and install Python 3.12 and bootstrap the engine 2024-08-20 09:24:00 +02:00
Mauro Balades
8f800f5134 chore: Update macOS alpha build workflow to install Python 3.12 and bootstrap the engine 2024-08-20 01:46:32 +02:00
Mauro Balades
9cdfc864b3 chore: Update zen-components submodule to commit 8926b7c 2024-08-20 01:30:22 +02:00
Mauro Balades
b2b3fb0b07 chore: Update macOS alpha build workflow to uninstall python3 and python3.12 with --ignore-dependencies flag 2024-08-20 01:26:59 +02:00
Mauro Balades
c92931e005 chore: Update padding-left in vertical-tabs.css to use variable 2024-08-20 01:24:46 +02:00
Mauro Balades
7c82ce5c23 chore: Update submodules to latest versions 2024-08-20 01:24:04 +02:00
Mauro Balades
f36613e7e8 chore: Uninstall python3 and python3.12 in macOS alpha build workflow 2024-08-20 01:11:11 +02:00
Mauro Balades
71c131032b update submodules 2024-08-20 01:05:09 +02:00
Mauro Balades
81a8715b7b chore: Update zen-theme.css for improved URL bar background color 2024-08-20 00:53:47 +02:00
Mauro Balades
5599000d33 chore: Remove idle3.12 from macOS alpha build workflow 2024-08-20 00:42:57 +02:00
Mauro Balades
8cdf09daa0 chore: Remove idle3 from macOS alpha build workflow 2024-08-20 00:17:33 +02:00
Mauro Balades
fc6a70162b chore: Update Windows theming for better scrollbar appearance 2024-08-20 00:13:51 +02:00
Mauro Balades
bc109d33c8 chore: Remove unnecessary Python version and 2to3-3.12 file in macOS alpha build workflow 2024-08-19 23:58:35 +02:00
Mauro Balades
9f10b74af5 chore: Update macOS alpha build workflow and Python version to 3.11 2024-08-19 23:39:59 +02:00
Mauro Balades
a65753d9a0 chore: Update macOS alpha build workflow 2024-08-19 23:12:58 +02:00
Mauro Balades
234f116964 Fix indentation issue in MacOSInstaller.svg 2024-08-19 22:26:11 +02:00
mauro-balades
6b34aa9d3d 🔖 Update version to 1.0.0-a.24 2024-08-19 18:32:52 +00:00
Mauro Balades
3939aa8809 chore: Update @zen-browser/surfer dependency to version 1.2.12 2024-08-19 20:30:01 +02:00
Mauro Balades
de5f73a9e6 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-19 19:43:38 +02:00
Mauro Balades
26a9e255c1 Added paltform specific preferences for themes 2024-08-19 19:43:33 +02:00
mauro 🤙
b50ed3a2d5 Merge pull request #331 from Donnnno/about-icon
Update firefox.svg
2024-08-19 19:40:22 +02:00
Donno
0900c27d2b Update firefox.svg 2024-08-19 19:38:54 +02:00
Mauro Balades
ae723290d7 chore: Update ZenUIManager to set sidebar-expanded.on-hover to false when compact mode is enabled 2024-08-19 19:17:43 +02:00
mauro 🤙
1834fe2177 Merge pull request #329 from n7itro/zen-hide-mute-button
chore: hide mute button on collapsed inactive tabs
2024-08-19 19:13:01 +02:00
mauro 🤙
3d6707fe21 Merge branch 'main' into zen-hide-mute-button 2024-08-19 19:12:53 +02:00
mauro 🤙
7e3eba280b Merge pull request #326 from n7itro/main
Centered expand tab sidebar button
2024-08-19 19:11:42 +02:00
Mauro Balades
cba262e090 feat: Add expand on hover functionality for tabs 2024-08-19 19:10:44 +02:00
nitro
b187c9383b removed effect shadow on button press 2024-08-19 17:48:14 +02:00
nitro
e7013c4db4 hide mute button on collapsed inactive tabs
Closes #322
2024-08-19 17:31:24 +02:00
Mauro Balades
1b5881c0fb Added expand on hover for tabs! 2024-08-19 17:25:00 +02:00
mauro 🤙
66d8d4bd71 Merge pull request #327 from Donnnno/icon
Update io.github.zen_browser.zen.yml.template
2024-08-19 14:52:57 +02:00
Donno
552a3c3cac Update io.github.zen_browser.zen.yml.template 2024-08-19 14:52:06 +02:00
nitro
fb58c42938 chore: remove unintended button shadow
Tested with Browser Toolbox
2024-08-19 14:46:52 +02:00
nitro
7a4a7681b9 centered expand tab sidebar button 2024-08-19 14:36:15 +02:00
mauro 🤙
5a3a383cde Tried to improve performance 2024-08-19 09:14:36 +00:00
mauro 🤙
5943be1b39 Merge pull request #316 from n7itro/main
Removed unused "awesome bar"
2024-08-18 18:55:49 +02:00
nitro
136993f203 Removed unused "awesome bar"
The "Awesome Bar Settings" in Look and Feel don't appear to do anything, so can they be removed?
2024-08-18 18:53:13 +02:00
mauro 🤙
afc3eb7ee6 updated surfer 2024-08-18 15:41:19 +00:00
mauro-balades
c073febc29 🔖 Update version to 1.0.0-a.23 2024-08-18 15:26:45 +00:00
mauro 🤙
85842227aa added kofi funding 2024-08-18 15:13:21 +00:00
mauro 🤙
66ac0b9812 Merge branch 'main' of https://github.com/zen-browser/desktop 2024-08-18 15:11:13 +00:00
mauro 🤙
3c2d617771 added cofi button 2024-08-18 15:11:00 +00:00
mauro 🤙
03c0e70173 Merge pull request #311 from n7itro/main
Changed marketplace to store
2024-08-18 16:14:23 +02:00
nitro
f65888f5f4 Changed marketplace to store
More consistent naming as mentioned in visual issue 9 in issue 304
2024-08-18 16:12:07 +02:00
mauro 🤙
0f0cc0e03a Merge pull request #308 from n7itro/main
Fixed tab background overlapping
2024-08-18 15:38:02 +02:00
nitro
d7fe28886c Removed !important 2024-08-18 15:37:45 +02:00
nitro
1d017d1dea Fixed tab background overlapping
Added bottom margin to tabs so tab backgrounds don't overlap with each other. Closes #303
2024-08-18 15:31:36 +02:00
Mauro Balades
1479679cb6 chore: Update network preferences and buffers 2024-08-18 12:09:30 +02:00
Mauro Balades
8c6b26b6f9 chore: Update network preferences and buffers 2024-08-18 11:56:34 +02:00
Mauro Balades
3783625818 chore: Update optimize options in mozconfig for Windows 2024-08-18 11:55:41 +02:00
Mauro Balades
0a5e803550 Update zen-components subproject commit 2024-08-18 00:51:40 +02:00
Mauro Balades
a8980ae3ef fix: Fix checkbox behavior in zen-settings.js and update styles in zen-preferences.css 2024-08-17 19:41:18 +02:00
Mauro Balades
02fe8a0d0b chore: Update optimize options in mozconfig for Windows 2024-08-17 19:11:21 +02:00
Mauro Balades
5700c61b17 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-17 18:56:52 +02:00
Mauro Balades
21930a9bf9 chore: Update optimize options in mozconfig for Windows 2024-08-17 18:56:46 +02:00
mauro-balades
e044f7d547 🔖 Update version to 1.0.0-a.22 2024-08-17 16:42:41 +00:00
Mauro Balades
1e4dea86bb chore: Update dependencies and configurations 2024-08-17 18:41:50 +02:00
Mauro Balades
e737c55c74 chore: Confirm theme removal before uninstalling
```
2024-08-17 17:26:06 +02:00
Mauro Balades
2c4cb2edd5 Fixed icons 2024-08-17 17:20:57 +02:00
Mauro Balades
ca6f3d882c Update zen-components subproject commit 2024-08-17 17:07:06 +02:00
Mauro Balades
eea7e43ff8 chore: Update sandbox configuration and padding in vertical-tabs.css 2024-08-17 15:28:10 +02:00
Mauro Balades
dec1fdd369 chore: Update zen-browser.js and related files 2024-08-17 13:13:39 +02:00
Mauro Balades
01ec0092a2 chore: Comment out the POLLY environment variable in mozconfig 2024-08-17 11:03:52 +02:00
Mauro Balades
8af7418f3f chore: Update media memory cache max size to 512000 2024-08-17 11:02:31 +02:00
Mauro Balades
4589a22790 chore: Remove unnecessary margin-top in vertical-tabs.css 2024-08-17 10:34:35 +02:00
Mauro Balades
15ecc5b8d4 chore: Update vertical-tabs.css to fix padding issue 2024-08-17 10:31:25 +02:00
mauro 🤙
6c25279107 Merge pull request #291 from gunir/patch-4
Better scrollbar for Windows
2024-08-17 10:24:24 +02:00
Gunir
979760a841 Update zen-browser.js 2024-08-17 08:34:51 +07:00
Mauro Balades
c52853251d chore: Update zen-components subproject commit 2024-08-17 02:17:25 +02:00
Mauro Balades
7b23af1d76 chore: Update zen-components subproject commit 2024-08-17 02:15:15 +02:00
Mauro Balades
ec9804314d chore: Update zen-components subproject commit 2024-08-17 01:32:50 +02:00
Mauro Balades
b1d13f947d chore: Update zen-components subproject commit 2024-08-17 01:31:37 +02:00
Mauro Balades
f558aee231 chore: Update zen-components subproject commit 2024-08-16 23:23:04 +02:00
mauro-balades
9d8c91809e 🔖 Update version to 1.0.0-a.21 2024-08-16 21:21:19 +00:00
Mauro Balades
24400237a0 chore: Update zen-components subproject commit 2024-08-16 23:20:11 +02:00
Mauro Balades
6b766db159 chore: Update zen-components subproject commit 2024-08-16 22:44:31 +02:00
Mauro Balades
37297d9c9f chore: Update zen-components subproject commit 2024-08-16 22:43:47 +02:00
Mauro Balades
6c90e9726f chore: Update zen-sidebar.css to hide the navigator toolbox when location and toolbar are hidden 2024-08-16 22:35:45 +02:00
Mauro Balades
fe54849453 chore: Update alpha.yml workflow to include windows-step-2 dependency 2024-08-16 22:26:59 +02:00
Mauro Balades
df693676b7 chore: Update zen-assets.jar.inc.mn and zen-components subproject commit 2024-08-16 22:12:00 +02:00
Mauro Balades
77a539243d Updated logos 2024-08-16 20:37:36 +02:00
Mauro Balades
075ae9a459 chore: Update Firefox version to 129.0.1 in README.md and surfer.json 2024-08-16 20:31:36 +02:00
Mauro Balades
8f8bc5a9be Update Windows profile build workflow to use Expand-Archive cmdlet for extracting profile data 2024-08-16 20:23:17 +02:00
Mauro Balades
81225c05ee chore: Update Windows profile build workflow to use Expand-Archive cmdlet for extracting profile data 2024-08-16 20:17:26 +02:00
Mauro Balades
3d6fc9ea7a chore: Update padding in vertical-tabs.css for better alignment 2024-08-16 17:30:15 +02:00
Mauro Balades
2d6660aa4d chore: Update alpha.yml workflow to include windows-step-2 dependency 2024-08-16 17:02:24 +02:00
Mauro Balades
739d1b1f59 chore: Update Windows profile build workflow 2024-08-16 17:00:19 +02:00
Mauro Balades
8cd17adbf5 chore: Update gitattributes to include *.patch files for C++ language 2024-08-16 16:49:19 +02:00
Mauro Balades
60984fefb9 chore: Update logo attribution in README.md 2024-08-16 13:40:51 +02:00
Mauro Balades
99b9448f2c chore: Update subproject commit in zen-components 2024-08-16 13:38:32 +02:00
Mauro Balades
abf7ec6c1d chore: Update margin-top in zen-compact-mode.css and vertical-tabs.css for consistent spacing and better alignment 2024-08-16 12:26:12 +02:00
Mauro Balades
13515a5458 chore: Enable EME widevine support and update theme data 2024-08-16 11:54:05 +02:00
Mauro Balades
3b9a96e330 Update media cache preferences in better-fox.js 2024-08-16 10:06:20 +02:00
Mauro Balades
c4db4b2bd9 chore: Update margin-top in zen-compact-mode.css for consistent spacing 2024-08-16 09:37:47 +02:00
Mauro Balades
f5b42396b0 chore: Update padding in vertical-tabs.css for better alignment 2024-08-16 09:36:35 +02:00
Mauro Balades
fd627a25d5 chore: Update better-fox.js preferences for HTTPS-first policy, password handling, and mixed content settings 2024-08-16 09:29:36 +02:00
mauro 🤙
31c0cf5074 Update zen-browser.js 2024-08-15 22:45:41 +02:00
Mauro Balades
d8d8ffa438 chore: Update DNS thread count in better-fox.js 2024-08-15 22:17:59 +02:00
Mauro Balades
45d43c0666 chore: Update macOS mozconfig to optimize for Nehalem architecture 2024-08-15 20:22:16 +02:00
Mauro Balades
cd62640086 chore: Enable ALSA and PulseAudio support in Linux mozconfig 2024-08-15 19:35:43 +02:00
Mauro Balades
6cf7fe90b8 chore: Remove floating URL bar feature 2024-08-15 19:17:21 +02:00
Mauro Balades
edca28339b chore: Update mozconfig files to enable ALSA support in common mozconfig and Linux mozconfig 2024-08-15 19:07:49 +02:00
Mauro Balades
bd28d7439e chore: Enable WebAssembly SIMD support in common mozconfig and disable unnecessary features in Linux mozconfig 2024-08-15 18:54:09 +02:00
Mauro Balades
f6e486ba17 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-15 18:06:12 +02:00
Mauro Balades
48e0dbe68a Update Zen theme CSS to use CSS variables for element separation 2024-08-15 18:06:05 +02:00
mauro-balades
ae67b53276 🔖 Update version to 1.0.0-a.20 2024-08-15 14:57:19 +00:00
Mauro Balades
48ee6519a5 Update Zen theme CSS to use CSS variables for element separation 2024-08-15 16:52:11 +02:00
Mauro Balades
b607473973 Update Windows mozconfig and vertical-tabs.css 2024-08-15 16:45:32 +02:00
Mauro Balades
c46aa247c7 Update Zen theme CSS to use CSS variables for element separation 2024-08-15 16:26:25 +02:00
Mauro Balades
5a72ca7703 chore: Fixed compact mode 2024-08-15 15:52:46 +02:00
Mauro Balades
7e00a28ba9 chore: Update Zen theme CSS to use CSS variables for element separation 2024-08-15 15:35:53 +02:00
mauro 🤙
b590535343 Merge pull request #272 from gunir/patch-2
Disable Reader Mode's parse on load
2024-08-15 15:34:22 +02:00
Gunir
6309853dd6 Disable Reader Mode's parse on load (costs extra CPU after page load, Reader Mode works fine just lazier)
Disable Reader Mode's parse on load (costs extra CPU after page load, Reader Mode works fine just lazier)
2024-08-15 20:31:16 +07:00
Mauro Balades
b584bb2d4e chore: Update Zen theme CSS to use CSS variables for element separation 2024-08-15 14:26:05 +02:00
Mauro Balades
e0712d80a4 chore: Update Zen theme CSS to use CSS variables for element separation 2024-08-14 23:26:13 +02:00
Mauro Balades
bc291c99c3 chore: Update Zen theme CSS to use CSS variables for element separation 2024-08-14 22:27:52 +02:00
Mauro Balades
6c802b75fa chore: Update Zen theme CSS to use CSS variables for element separation 2024-08-14 21:01:56 +02:00
Mauro Balades
797d3c1766 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-14 20:14:49 +02:00
Mauro Balades
844a329be5 chore: Update macOS mozconfig and Zen theme CSS 2024-08-14 20:14:41 +02:00
mauro-balades
fb6cbc0e23 🔖 Update version to 1.0.0-a.19 2024-08-14 14:24:39 +00:00
Mauro Balades
e64d8a4fd2 chore: Update Zen theme CSS to add context menu option for changing tab(s) to workspace 2024-08-14 15:56:18 +02:00
Mauro Balades
8c90f378d7 chore: Add welcome.css to Zen theme styles 2024-08-14 14:32:05 +02:00
mauro 🤙
7a0d962e62 Merge pull request #255 from zen-browser/styles-rewrite
chore: Update Zen theme CSS to improve dialog dimensions and browser …
2024-08-14 14:07:35 +02:00
Mauro Balades
92f3db6633 chore: Update Zen theme CSS to improve dialog dimensions and browser gradient 2024-08-14 14:06:53 +02:00
mauro 🤙
d5abc0dd48 Merge pull request #254 from zen-browser/styles-rewrite
Styles rewrite
2024-08-14 13:38:34 +02:00
Mauro Balades
36e7fdad8b Remove unused CSS files related to Zen theme 2024-08-14 13:37:40 +02:00
Mauro Balades
194056007a Fixed pinned tabs 2024-08-14 13:14:37 +02:00
Mauro Balades
3bfbcf64e3 chore: Update CSS display properties for Zen styles 2024-08-14 13:06:43 +02:00
Mauro Balades
5f9f555083 chore: Added third party code 2024-08-14 10:42:04 +02:00
Mauro Balades
5cd5db6b3e Added !important to in-content colors 2024-08-14 10:37:33 +02:00
Mauro Balades
b596d7b466 Remove unused CSS files related to Zen theme 2024-08-14 10:08:41 +02:00
Mauro Balades
d2d3d39464 Remove unused CSS files related to Zen theme 2024-08-13 21:58:52 +02:00
Mauro Balades
4087d82922 Remove unused CSS files related to Zen theme 2024-08-13 21:57:35 +02:00
Mauro Balades
5a9c4a6666 Remove unused CSS files related to Zen theme 2024-08-13 21:03:35 +02:00
Mauro Balades
33ef14c3d8 Remove unused CSS files related to Zen theme 2024-08-13 19:17:29 +02:00
Mauro Balades
ad9c9c6141 Remove unused CSS files related to Zen theme 2024-08-13 18:23:28 +02:00
Mauro Balades
19ccd0760a Remove unused CSS files related to Zen theme 2024-08-13 18:19:30 +02:00
Mauro Balades
e474815d7e Remove unused CSS files related to Zen theme 2024-08-13 16:43:15 +02:00
Mauro Balades
8cdc29f1e8 Remove unused CSS files related to Zen theme 2024-08-13 16:39:46 +02:00
Mauro Balades
a08c1567eb chore: Lock telemetry and experiment preferences 2024-08-13 16:35:19 +02:00
mauro 🤙
bc7df76629 Merge pull request #239 from Pdzly/main
feat: Add warning for changing the languages requested
2024-08-13 15:02:47 +02:00
rooki
c049059911 chore: reverted the formatting 2024-08-13 09:58:01 +02:00
rooki
8c0082bcf0 chore: Moved warning directly into html 2024-08-13 09:11:14 +02:00
rooki
db4a9b41cc feat: Add warning for changing the languages requested 2024-08-13 08:46:53 +02:00
mauro-balades
f85794b47d 🔖 Update version to 1.0.0-a.18 2024-08-12 08:22:57 +00:00
Mauro Balades
83dcaa3e54 feat: Add preference for dimming pending tabs in Zen browser theme 2024-08-12 10:22:10 +02:00
Mauro Balades
af75d67b30 chore: Refactor Zen theme modifier, fix notification deck placement, and update tab styling 2024-08-12 10:18:00 +02:00
Mauro Balades
cedd505a09 chore: Refactor Zen theme modifier and fix notification deck placement 2024-08-12 09:41:22 +02:00
Mauro Balades
1a450ebc72 chore: Update flatpak configuration and install scripts 2024-08-11 20:09:08 +02:00
mauro-balades
a395fe34d0 🔖 Update version to 1.0.0-a.17 2024-08-11 15:09:41 +00:00
Mauro Balades
e604372a9f chore: Remove unnecessary device flag in flatpak configuration 2024-08-11 17:08:49 +02:00
Mauro Balades
d5e8babaf2 chore: Update pane title for Looks And Feel in Zen preferences 2024-08-11 17:05:43 +02:00
Mauro Balades
650337f9b5 chore: Update tab styling in Zen browser theme 2024-08-11 17:01:31 +02:00
Mauro Balades
aa4d950be1 Update bytecode cache strategy for experimental Zen features 2024-08-11 16:55:47 +02:00
Mauro Balades
c2dd526195 chore: Remove annoying top border in Windows browser theme 2024-08-11 16:17:43 +02:00
mauro 🤙
5df2cce01c Merge pull request #220 from GunGunGun/patch-1
Update zen-browser.js to enable Browser Toolbox by default
2024-08-11 16:16:02 +02:00
Mauro Balades
aba58af1da Fix default user agent and min width for compact mode 2024-08-11 16:12:59 +02:00
Gun
c6455e86ef Update zen-browser.js to enable Browser Toolbox by default
Update zen-browser.js to enable Browser Toolbox by default
2024-08-11 21:02:58 +07:00
Mauro Balades
c57db962f8 chore: Update Zen browser components submodule commit reference and improve flatpak configuration and fixed tabs not fully closing 2024-08-11 13:37:46 +02:00
mauro 🤙
bd449faf05 Merge pull request #213 from Samueru-sama/main
`alpha.yml` include zsync file in release
2024-08-11 11:15:29 +02:00
mauro 🤙
cf3f673c35 Update alpha.yml 2024-08-11 09:24:43 +02:00
Samuel
27386c608e alpha.yml Use full path for zsync file 2024-08-10 22:00:51 -04:00
Samuel
14b7d97579 alpha.yml Add zsync files to uploads 2024-08-10 19:58:09 -04:00
Samuel
16b5521087 alpha.yml include zsync file in release 2024-08-10 19:34:29 -04:00
mauro 🤙
903f73f7d5 Fixed flatpak file 2024-08-10 18:35:43 +00:00
mauro 🤙
f4e3bfdb9e Delete io.github.zen_browser.zen.yml 2024-08-10 20:30:03 +02:00
Mauro Balades
7276f8a885 chore: Update Zen browser components submodule commit reference and improve flatpak configuration 2024-08-10 18:19:00 +02:00
Mauro Balades
f96981e84b chore: Remove wasm sandboxed libraries option from mozconfig 2024-08-10 14:15:20 +02:00
Mauro Balades
5cb8d5356a chore: Update optimization flags in mozconfig for Linux and Windows 2024-08-10 14:05:21 +02:00
Mauro Balades
241614f9e8 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-10 13:08:35 +02:00
Mauro Balades
6b0e5f6b30 chore: Update Windows mozconfig for better optimization and compatibility 2024-08-10 13:08:28 +02:00
mauro-balades
ea6512aee3 🔖 Update version to 1.0.0-a.16 2024-08-10 11:05:41 +00:00
Mauro Balades
7205aaa360 chore: Update Windows mozconfig for better optimization and compatibility 2024-08-10 13:05:05 +02:00
Mauro Balades
ee5b193785 chore: Update Zen browser components submodule commit reference 2024-08-10 13:01:49 +02:00
Mauro Balades
d54b59554c chore: Update network preferences for better performance 2024-08-10 12:25:06 +02:00
Mauro Balades
8d33db3c15 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-10 10:53:11 +02:00
Mauro Balades
c77110efec chore: Update Zen browser components submodule commit reference and improve compact mode 2024-08-10 10:52:57 +02:00
mauro 🤙
0dac0afc9d Merge pull request #208 from Samueru-sama/main
`alpha.yml` add zsync update to appimage
2024-08-10 09:53:31 +02:00
Samuel
f515fd9566 alpha.yml add zsync update to appimage 2024-08-10 00:18:30 -04:00
Mauro Balades
c67554a5e5 chore: Update Zen browser components submodule commit reference and add toggle web panels feature 2024-08-09 23:25:13 +02:00
Mauro Balades
fb7b6f05f2 chore: Update min-width of navigator-toolbox in Zen browser theme 2024-08-09 23:10:35 +02:00
Mauro Balades
1553348812 chore: Update tabbrowser-tabs grid-template-columns to use var(--tab-min-height) 2024-08-09 22:47:24 +02:00
Mauro Balades
2035706c2a chore: Update Zen browser components submodule commit reference and fixed compact mode 2024-08-09 22:38:37 +02:00
Mauro Balades
be8a7ef6a4 chore: Enable keyboard shortcuts in Zen browser settings 2024-08-09 16:28:06 +02:00
Mauro Balades
ab0e82790b Merge branch 'main' of https://github.com/zen-browser/core 2024-08-09 14:24:25 +02:00
Mauro Balades
0527f8b788 chore: Worked on keyboard shortcuts 2024-08-09 14:24:20 +02:00
mauro 🤙
b07759dab6 Merge pull request #192 from Samueru-sama/patch-1
`alpha.yml` use zstd compression for appimage, drop libfuse2 dependency.
2024-08-09 08:27:47 +02:00
Samuel
e552564ba0 alpha.yml use zstd compression for appimage.
This change also gets rid of the `libfuse2` dependency.
2024-08-09 00:11:55 -04:00
Mauro Balades
2264c5f67d chore: Add ZenThemeBuilder component for customizing browser theme 2024-08-09 00:00:27 +02:00
Mauro Balades
cc024a4528 Started working on keyboard shortcuts 2024-08-08 17:44:45 +02:00
Mauro Balades
4402ed8fc1 chore: Remove max-width from navigator-toolbox in Zen browser theme 2024-08-08 14:22:09 +02:00
Mauro Balades
0c07a44dc6 chore: Update Zen browser components submodule commit reference 2024-08-08 14:14:44 +02:00
Mauro Balades
1e368f6f0f Fixed hidden tabs still showing 2024-08-08 13:35:11 +02:00
Mauro Balades
5b50649739 chore: Update Zen browser components submodule commit reference 2024-08-08 11:23:50 +02:00
Mauro Balades
5718798e81 chore: Update Zen browser components submodule commit reference 2024-08-08 11:22:44 +02:00
Mauro Balades
fd0fbc7fb6 chore: Update Zen browser components submodule commit reference 2024-08-08 11:20:09 +02:00
Mauro Balades
87801ca3be Update Zen browser components submodule commit reference 2024-08-08 11:15:38 +02:00
Mauro Balades
80d0bbcdff chore: Update Zen browser components submodule commit reference 2024-08-08 11:14:49 +02:00
Mauro Balades
84a1ea31e5 test 2 2024-08-08 10:34:49 +02:00
Mauro Balades
7758bdabce test 2024-08-08 10:33:22 +02:00
Mauro Balades
0de414158b chore: Update Zen browser components submodule commit reference 2024-08-07 23:23:39 +02:00
mauro-balades
03b3436025 🔖 Update version to 1.0.0-a.15 2024-08-07 20:30:28 +00:00
Mauro Balades
d250c34d41 chore: Update Zen browser components submodule commit reference 2024-08-07 22:29:24 +02:00
Mauro Balades
ec2466ca02 chore: Update Zen browser components submodule commit reference 2024-08-07 22:28:49 +02:00
Mauro Balades
fc5bd615f4 Allow sidebar to be aligned to the right 2024-08-07 21:04:36 +02:00
Mauro Balades
1e1d78a874 chore: Update zen-sidebar-panels.css to include 100% height for web panels 2024-08-07 20:05:52 +02:00
Mauro Balades
d3287ce216 chore: Update tab button styling to hide tabs without fading effect 2024-08-07 19:55:40 +02:00
Mauro Balades
fb6845f651 chore: Update Zen browser components submodule commit reference 2024-08-07 19:44:19 +02:00
Mauro Balades
e50d16b0cf chore: Update tab button styling with min-width property 2024-08-07 19:36:33 +02:00
Mauro Balades
246a6d60da chore: Update tab button styling with min-width property 2024-08-07 19:33:21 +02:00
mauro 🤙
6f7a6faf90 Fix 2024-08-07 11:26:04 +00:00
mauro 🤙
3f1bdfe50d Fix runners 2024-08-07 09:49:24 +00:00
Mauro Balades
537b20d2dc chore: Update Zen browser components submodule commit reference 2024-08-07 11:15:14 +02:00
Mauro Balades
d810608a8c chore: Remove unused set-global-vars.sh script and update MOZ_APP_UA_NAME in moz-build.patch 2024-08-07 10:02:12 +02:00
mauro 🤙
20b6203851 Merge pull request #175 from NOCanoa/main
domain update
2024-08-07 08:38:29 +02:00
NOCanoa
9474fa3f3c domain update
update all the get-zen.versel.app to www.zen-browser.app
btw, you need to update the link on repo
2024-08-07 01:03:24 +01:00
Mauro Balades
5dfaef2594 chore: Enable persisting credentials in GitHub workflows for Linux, macOS, and Windows builds 2024-08-07 00:28:13 +02:00
Mauro Balades
8005aa1f43 chore: Enable persisting credentials in GitHub workflows 2024-08-07 00:26:41 +02:00
Mauro Balades
cd234259f7 chore: Enable persisting credentials in GitHub workflows
The `persist-credentials` option has been added to the GitHub workflows for Linux, macOS, and Windows builds. This ensures that the credentials used for deployment are persisted across workflow runs, improving the setup process for new users and ensuring that all necessary dependencies are included.
2024-08-07 00:23:55 +02:00
mauro-balades
df26d06d12 🔖 Update version to 1.0.0-a.14 2024-08-06 22:13:35 +00:00
Mauro Balades
1265cd623e chore: Update Zen browser components submodule commit reference 2024-08-07 00:12:59 +02:00
Mauro Balades
de19bdf2b4 Update Zen browser components submodule commit reference 2024-08-07 00:06:45 +02:00
Mauro Balades
056f70a6fa chore: Update ZenProfileDialogUI file extension to .mjs 2024-08-06 20:23:36 +02:00
Mauro Balades
08e7a92223 chore: Update Zen browser components submodule commit reference 2024-08-06 20:18:48 +02:00
Mauro Balades
5316ff8e47 chore: Update Zen browser components submodule commit reference 2024-08-06 20:14:03 +02:00
Mauro Balades
214e290af3 chore: Update Zen browser components submodule commit reference 2024-08-06 12:35:21 +02:00
Mauro Balades
0499ba0004 chore: Refactor ZenViewSplitter to use async/await for openSplitViewPanel 2024-08-06 12:11:06 +02:00
Mauro Balades
a513d95aad chore: Add lazy loading for UI elements in split view 2024-08-06 12:04:59 +02:00
Mauro Balades
fd556f8186 chore: Update Zen browser components submodule commit reference
The commit reference for the Zen browser components submodule has been updated to 856de195c8433a63199a4bc067e9b7dcc485feff. This ensures that the latest version of the submodule is included when cloning the main repository. The change improves the setup process for new users and ensures that all necessary dependencies are included.
2024-08-06 11:46:35 +02:00
Mauro Balades
c61eb6d28a chore: Update git clone command to include recursive flag
The git clone command in the README.md file has been updated to include the `--recursive` flag. This flag ensures that the Zen browser components submodule is cloned along with the main repository. This change improves the setup process for new users and ensures that all necessary dependencies are included.
2024-08-06 11:30:44 +02:00
Mauro Balades
3c04945df6 chore: Add Zen browser components submodule
Add a new submodule for Zen browser components in the src/browser/base/content directory. The submodule is sourced from the Zen Browser Components repository on GitHub.
2024-08-06 11:30:35 +02:00
mauro 🤙
c27168953a Merge pull request #171 from NOCanoa/main
Update performance
2024-08-06 01:49:58 +02:00
NOCanoa
33e731dfe5 . 2024-08-06 00:46:30 +01:00
NOCanoa
fdd05926ab Update performance.md 2024-08-06 00:43:51 +01:00
NOCanoa
ccd40b544a Update README.md 2024-08-05 16:32:12 +01:00
Mauro Balades
0aa9d8c6ed Added links to the readme :P 2024-08-05 14:53:29 +02:00
Mauro Balades
eef45c8007 Pathetic. 2024-08-05 14:11:56 +02:00
Mauro Balades
9ce7c60d4a Added license checks 2024-08-05 13:31:49 +02:00
Mauro Balades
79701ed6dc chore: Update sidebar margin in Zen browser theme 2024-08-05 12:25:39 +02:00
Mauro Balades
a90e5f3456 chore: Update Windows mozconfig with AVX flag
Update the Windows mozconfig file to include the AVX flag for optimization. This will improve performance on machines that support AVX instructions. The previous version of the file had a typo in the AVX flag, which has been corrected in this commit.
2024-08-05 11:54:04 +02:00
Mauro Balades
a933c5b9bd Fixed text for closing tabs (closes #83) 2024-08-05 11:48:26 +02:00
Mauro Balades
9968d550ae chore: Update ZenUIManager and Zen browser theme 2024-08-05 11:37:37 +02:00
mauro-balades
3e17c3c1e2 🔖 Update version to 1.0.0-a.13 2024-08-04 23:07:42 +00:00
Mauro Balades
2d72365dbd chore: Update ZenUIManager and Zen browser theme 2024-08-05 01:06:01 +02:00
Mauro Balades
d61186a042 chore: Update StartupWMClass to zen-alpha in zen.desktop 2024-08-05 00:45:23 +02:00
Mauro Balades
33ba2f25cd chore: Update flatpak release process 2024-08-05 00:15:59 +02:00
Mauro Balades
3e4d69a012 chore: Update flatpak release process 2024-08-05 00:10:53 +02:00
Mauro Balades
c27f4767db chore: Update Python version to 3.x 2024-08-04 23:39:18 +02:00
Mauro Balades
6740a7a610 chore: Update flatpak release process 2024-08-04 23:10:24 +02:00
Mauro Balades
c00eb07484 test 2024-08-04 23:03:59 +02:00
Mauro Balades
1b72b68a47 test 2024-08-04 22:46:40 +02:00
Mauro Balades
0ac10f2c03 chore: Update flatpak release process 2024-08-04 22:45:05 +02:00
Mauro Balades
0b824acd20 test 2024-08-04 22:31:11 +02:00
Mauro Balades
b37b2e656a Fixed flatpak 2024-08-04 22:30:16 +02:00
Mauro Balades
36d6abda0d chore: Update flatpak release process 2024-08-04 21:50:36 +02:00
Mauro Balades
07893e79fe test 2024-08-04 21:47:50 +02:00
Mauro Balades
d8a9cabb2b chore: Update flatpak release process 2024-08-04 21:46:52 +02:00
Mauro Balades
9729f8d84e test 2024-08-04 21:37:04 +02:00
Mauro Balades
641c709f5d test 4 2024-08-04 21:34:09 +02:00
Mauro Balades
be45bdb83f test 3 2024-08-04 21:14:09 +02:00
Mauro Balades
2773bd4850 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-04 21:12:03 +02:00
Mauro Balades
a0e95e7748 chore: Update flatpak release process
```
2024-08-04 21:11:58 +02:00
mauro 🤙
b90e50ed87 Merge pull request #159 from Veriiix/patch-2
Update performance.md
2024-08-04 21:00:23 +02:00
Jannik
9c8b0081c0 Update performance.md 2024-08-04 20:59:22 +02:00
Mauro Balades
bb1cd6097b test 3 2024-08-04 20:49:30 +02:00
Mauro Balades
1496f3addc test 2 2024-08-04 20:46:37 +02:00
Mauro Balades
a2bd16a210 test build 2024-08-04 20:42:53 +02:00
Mauro Balades
26e158072e chore: Created automatic flatpak releases 2024-08-04 20:40:28 +02:00
Mauro Balades
84a5f05eb6 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-04 20:10:02 +02:00
Mauro Balades
79967edb22 Fixed customize mode 2024-08-04 20:09:57 +02:00
mauro 🤙
53644a4ba0 Merge pull request #153 from NOCanoa/main
👀 v2 xD
2024-08-04 18:34:25 +02:00
NOCanoa
01df43fdc5 Update performance.md 2024-08-04 17:08:14 +01:00
NOCanoa
b524ec7569 Update performance.md 2024-08-04 17:05:53 +01:00
NOCanoa
eea0a8aee7 Merge branch 'main' of https://github.com/NOCanoa/desktop-zen 2024-08-04 16:52:14 +01:00
Mauro Balades
498c909756 Improved performance 2024-08-04 14:09:36 +02:00
Mauro Balades
661dcbb9f9 Update welcome dialog thanks message 2024-08-04 13:34:57 +02:00
mauro-balades
c2e8b2790c 🔖 Update version to 1.0.0-a.12 2024-08-04 11:03:20 +00:00
Mauro Balades
14da8cd9e7 chore: Update sidebar close-on-blur preference handling 2024-08-04 13:02:25 +02:00
Mauro Balades
741cfd7af4 chore: Update mozconfig to allow loading unsigned extensions 2024-08-04 12:46:52 +02:00
Mauro Balades
fa6911df5e chore: Update backdrop-filter blur value in zen-browser-shared.css 2024-08-04 12:41:23 +02:00
Mauro Balades
4e61ab5e98 chore: Update ZenSidebarManager to fix panel handling and data persistence 2024-08-04 12:27:44 +02:00
Mauro Balades
3900908ed7 Fixed pinned tabs 2024-08-04 12:01:13 +02:00
Mauro Balades
3cd21f5516 Reworked on compact mode 2024-08-04 11:53:47 +02:00
Mauro Balades
29411d02d5 chore: Update padding for searchList cards in welcome.css 2024-08-04 11:21:37 +02:00
Mauro Balades
ab5cf96bf1 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-04 11:04:41 +02:00
Mauro Balades
d60d4e888a chore: Update Windows build configuration with WebAssembly optimizations, also added persistent storage for sidebar 2024-08-04 11:04:34 +02:00
mauro 🤙
9998f93942 Update zenThemeModifier.js 2024-08-04 00:34:27 +02:00
Mauro Balades
76b2b55eda chore: Update padding for searchList cards in welcome.css 2024-08-03 22:48:14 +02:00
Mauro Balades
b224616b43 chore: Update macOS build configuration with optimized flags 2024-08-03 22:02:20 +02:00
Mauro Balades
236c4160fc chore: Update performance test results with latest version 2024-08-03 21:40:15 +02:00
Mauro Balades
7e3c44846d chore: Update performance test results with latest version 2024-08-03 20:33:50 +02:00
Mauro Balades
b1709c757a chore: Update arrow panel menu item margin in panelUI-shared.css 2024-08-03 19:57:54 +02:00
Mauro Balades
65841d2085 chore: Update artifact names and paths in build workflows 2024-08-03 19:46:08 +02:00
NOCanoa
58f18098f7 Update Performance.md 2024-08-03 18:41:48 +01:00
NOCanoa
e31d49ec36 Update Performance.md 2024-08-03 18:39:43 +01:00
Mauro Balades
3454ca6336 chore: Update artifact names and paths in build workflows 2024-08-03 15:29:52 +02:00
Mauro Balades
bd5c242c8c chore: Update welcome page with gradient background and noise effect 2024-08-03 14:00:55 +02:00
Mauro Balades
86f8b91fdb chore: Update macOS options in bug report template 2024-08-03 12:05:58 +02:00
Mauro Balades
3d57cff39b chore: Update landing page with Flathub badge 2024-08-03 10:34:38 +02:00
Mauro Balades
7b40eba9b7 chore: Remove swap space configuration from macOS alpha build workflow 2024-08-03 10:25:52 +02:00
Mauro Balades
57ac6c1b37 chore: Set swap space for macOS alpha build workflow 2024-08-03 10:17:05 +02:00
Mauro Balades
d7630b258a Refactor build workflows to improve artifact naming and paths 2024-08-03 10:15:57 +02:00
Mauro Balades
0883536f75 feat: Add overflow hidden and transition to navbar container 2024-08-03 07:46:26 +02:00
Mauro Balades
6e2b4b17e6 chore: Update artifact names and paths in build workflows 2024-08-03 07:40:32 +02:00
Mauro Balades
38e4a7150c chore: Update mozconfig to disable profile generation and use cross profile for Windows builds 2024-08-03 00:40:45 +02:00
mauro 🤙
052774c5c3 Merge pull request #137 from NOCanoa/main
emty line removed
2024-08-02 20:46:20 +02:00
NOCanoa
18055e09d9 emty line removed 2024-08-02 19:44:55 +01:00
mauro-balades
e24dcdb6ac 🔖 Update version to 1.0.0-a.11 2024-08-02 15:16:29 +00:00
Mauro Balades
e3774d666f chore: Update mozconfig to disable profile generation and use cross profile for Windows builds 2024-08-02 17:14:11 +02:00
Mauro Balades
ec1eef6159 chore: Disable deleteMenuItem for default workspaces in ZenWorkspaces.mjs 2024-08-02 17:07:52 +02:00
Mauro Balades
6862e6cbc6 chore: Update sidebar-expanded max-width preference and UI styling 2024-08-02 17:05:43 +02:00
Mauro Balades
639806e13f chore: Update workflows to include check-release job in alpha.yml 2024-08-02 16:36:18 +02:00
Mauro Balades
ef01c86d7c chore: Update CSS class name for titlebar button container 2024-08-02 15:10:18 +02:00
Mauro Balades
e32d9cad92 chore: Update workflows to include check-release job in alpha.yml 2024-08-02 15:07:14 +02:00
mauro 🤙
3b5e401899 Merge pull request #133 from bdbch/bdbch/fix-issue-template
Remove broken labels key in bug_report issue template
2024-08-02 14:25:40 +02:00
bdbch
3bfdb7e3db Remove broken labels key in bug_report issue template 2024-08-02 14:18:54 +02:00
Mauro Balades
e567dee12f Fixed windows alpha workflow 2024-08-02 13:28:29 +02:00
Mauro Balades
c55fadc889 chore: Update build configurations to enable AVX optimization for different architectures 2024-08-02 13:27:02 +02:00
Mauro Balades
33d2954e93 chore: Remove multiple option from platform label in feature request template 2024-08-02 11:28:58 +02:00
Mauro Balades
9304b51391 chore: Update feature request template 2024-08-02 11:23:49 +02:00
Mauro Balades
0347ead8a1 chore: Remove unused focus ring preferences in zen-browser.js 2024-08-02 11:13:28 +02:00
Mauro Balades
9fd9883c8f chore: Update .github/ISSUE_TEMPLATE/bug_report.yml to remove labels 2024-08-02 11:12:22 +02:00
Mauro Balades
01e99f6f3d chore: Update .github/ISSUE_TEMPLATE/config.yml to disable blank issues 2024-08-02 11:11:43 +02:00
Mauro Balades
259072a5e5 chore: Add workflow to clear cache 2024-08-02 10:58:35 +02:00
Mauro Balades
5079bb6364 chore: Remove unused include statement in zen-browser.js 2024-08-02 10:55:17 +02:00
Mauro Balades
37bc8f5f65 chore: Update macOS build configuration to enable install strip and strip debug symbols 2024-08-02 10:47:01 +02:00
Mauro Balades
4f97d66443 chore: Update welcome page CSS and build configurations 2024-08-02 09:19:32 +02:00
Mauro Balades
8e19e74894 chore: Update build configurations to enable AVX optimization for different architectures 2024-08-02 09:11:57 +02:00
Mauro Balades
babc34cc90 chore: Remove .DirIcon file from AppDir in alpha.yml workflow 2024-08-02 08:38:27 +02:00
Mauro Balades
c2f97454ac chore: Update macOS build configuration to enable install strip and strip debug symbols 2024-08-02 08:36:48 +02:00
Mauro Balades
7de872b4dd chore: Disable LTO in macOS build configuration 2024-08-02 00:51:59 +02:00
Mauro Balades
dc5992bdc7 chore: Update Linux build artifact name to include generic or specific based on matrix value 2024-08-02 00:28:12 +02:00
Mauro Balades
453c9fef53 chore: Update CSS and build configurations for welcome page 2024-08-02 00:23:13 +02:00
Mauro Balades
5d946db186 chore: Update welcome page CSS and build configurations 2024-08-01 22:10:58 +02:00
Mauro Balades
406f11dd9a chore: Update dependencies and build configurations for compatibility with x32 architecture 2024-08-01 22:04:34 +02:00
Mauro Balades
be1efb2ac5 chore: Separated mac icons to windows/linux 2024-08-01 20:32:03 +02:00
Mauro Balades
6c4b3aa6f9 chore: Update build configurations to enable install strip and strip debug symbols 2024-08-01 19:51:37 +02:00
Mauro Balades
2975d5c645 chore: Update Windows build configuration to support x32 architecture 2024-08-01 18:48:16 +02:00
Mauro Balades
97ce6bae00 chore: Update Windows build configuration to install dos2unix 2024-08-01 18:29:10 +02:00
Mauro Balades
b659bfd5e6 chore: Update Windows build configuration to fix dos2unix issue 2024-08-01 18:12:02 +02:00
Mauro Balades
81f88c2c21 chore: Update Windows build configuration for compatibility with x32 architecture 2024-08-01 18:10:47 +02:00
Mauro Balades
5bbbefb2a7 chore: Update Windows build configuration for compatibility with x32 architecture 2024-08-01 17:08:46 +02:00
Mauro Balades
ea5c42674e chore: Update bug report and feature request templates 2024-08-01 16:25:44 +02:00
Mauro Balades
ad2e2f6b24 chore: Add compatibility install step for x32 architecture 2024-08-01 16:10:53 +02:00
Mauro Balades
3333fe22d2 chore: Update build configurations for Linux, macOS, and Windows 2024-08-01 15:44:41 +02:00
Mauro Balades
349b33c115 chore: Update build configurations for Linux, macOS, and Windows 2024-08-01 15:08:54 +02:00
Mauro Balades
2c0b34e666 chore: Update macOS build matrix to include different architectures and OS versions 2024-08-01 14:17:25 +02:00
Mauro Balades
84bc2c3c89 Merge branch 'main' of https://github.com/zen-browser/core 2024-08-01 14:15:48 +02:00
Mauro Balades
2927b58924 Here we go! 2024-08-01 14:15:43 +02:00
mauro 🤙
a6aa7e3eae Merge pull request #118 from NOCanoa/main
Another update xD
2024-07-31 23:04:50 +02:00
mauro 🤙
d67e1e5b3e Merge pull request #119 from Veriiix/patch-1
Added Speedometer3.0 scores
2024-07-31 23:04:25 +02:00
Jannik
09b808b18a Added Speedometer3.0 scores 2024-07-31 21:04:18 +02:00
NOCanoa
deaa0e2781 Merge branch 'zen-browser:main' into main 2024-07-31 19:57:40 +01:00
NOCanoa
3140931cdb Update Performance.md 2024-07-31 19:56:37 +01:00
mauro 🤙
084d70e68d Merge pull request #117 from NOCanoa/main
Aded the performance.md
2024-07-31 20:11:49 +02:00
NOCanoa
ac3df15a57 Merge branch 'zen-browser:main' into main 2024-07-31 19:08:52 +01:00
NOCanoa
6688fff000 Create Performance.md 2024-07-31 19:08:27 +01:00
mauro 🤙
33ff028509 Merge pull request #116 from Samueru-sama/patch-1
`alpha.yml` fix missing .DirIcon in AppImage
2024-07-31 20:03:23 +02:00
Samuel
e2ca345dea alpha.yml fix missing .DirIcon in AppImage 2024-07-31 13:27:15 -04:00
530 changed files with 6470 additions and 5583 deletions

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
*.patch linguist-language=C++

1
.github/FUNDING.yml vendored
View File

@@ -1,2 +1,3 @@
patreon: zen_browser
ko_fi: zen_browser

View File

@@ -1,6 +1,5 @@
name: Bug Report
description: File a bug report
labels: [bug]
body:
- type: markdown
attributes:
@@ -39,8 +38,6 @@ body:
- Medium
- High
- Critical
- Enhancement
multiple: true
validations:
required: true
@@ -51,7 +48,8 @@ body:
multiple: true
options:
- Linux
- macOS
- macOS - aarch64
- macOS - Intel
- Windows
validations:
required: true
@@ -60,4 +58,4 @@ body:
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
render: shell

View File

@@ -1 +1 @@
blank_issues_enabled: true
blank_issues_enabled: false

View File

@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: feature_request
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -13,6 +13,4 @@ policy:
keys: ['High']
- name: 'kind: critical severity'
keys: ['Critical']
- name: 'kind: enhancement'
keys: ['Enhancement']

View File

@@ -30,8 +30,11 @@ jobs:
with:
node-version: 20
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.DEPLOY_KEY }}
- name: Install pnpm
run: npm install -g pnpm
@@ -87,8 +90,10 @@ jobs:
with:
node-version: 20
- name: Checkout
uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.DEPLOY_KEY }}
- name: Install pnpm
run: npm install -g pnpm
@@ -125,20 +130,22 @@ jobs:
source:
if: false
permissions:
contents: write
runs-on: ubuntu-latest
needs: [build-data]
needs: [build-data, check-release]
environment: production
steps:
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 20
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.DEPLOY_KEY }}
- name: Setup git
run: |
@@ -185,6 +192,7 @@ jobs:
# needs: [build-data]
# permissions:
# contents: write
# secrets: inherit
# with:
# build-version: ${{ needs.build-data.outputs.version }}
# generate-gpo: true
@@ -195,6 +203,7 @@ jobs:
# uses: ./.github/workflows/windows-profile-build.yml
# permissions:
# contents: write
# secrets: inherit
# needs: [windows-step-1, build-data]
# with:
# build-version: ${{ needs.build-data.outputs.version }}
@@ -205,6 +214,7 @@ jobs:
uses: ./.github/workflows/windows-alpha-build.yml
permissions:
contents: write
secrets: inherit
needs: [build-data]
with:
build-version: ${{ needs.build-data.outputs.version }}
@@ -215,6 +225,7 @@ jobs:
uses: ./.github/workflows/linux-alpha-build.yml
permissions:
contents: write
secrets: inherit
needs: [build-data]
with:
build-version: ${{ needs.build-data.outputs.version }}
@@ -224,15 +235,19 @@ jobs:
uses: ./.github/workflows/macos-alpha-build.yml
permissions:
contents: write
secrets: inherit
needs: [build-data]
with:
build-version: ${{ needs.build-data.outputs.version }}
appimage:
name: AppImage build
name: AppImage build - Linux ${{ matrix.generic == true && 'generic' || 'specific' }}
permissions:
contents: write
runs-on: ubuntu-latest
strategy:
matrix:
generic: [true, false]
needs: [linux]
steps:
- name: Install Node.js
@@ -241,54 +256,68 @@ jobs:
node-version: 20
- uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.DEPLOY_KEY }}
- name: Install dependencies
run: |
npm install -g pnpm
sudo apt-get update
sudo apt-get -y install libfuse2
sudo apt-get -y install libfuse2 desktop-file-utils
- name: Download linux build
uses: actions/download-artifact@v4
with:
name: zen.linux.tar.bz2
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
- name: Execute AppImage build
run: |
set -eux
rm AppDir/.DirIcon || true
cp configs/branding/alpha/logo128.png AppDir/usr/share/icons/hicolor/128x128/apps/zen.png
cp configs/branding/alpha/logo128.png AppDir/zen.png
cp configs/branding/alpha/logo128.png AppDir/zen.png && ln -s zen.png AppDir/.DirIcon
APPDIR=AppDir
tar -xvf *.tar.* && rm -rf *.tar.*
mv zen/* $APPDIR/
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x *.AppImage
chmod +x ./AppDir/AppRun
echo "AppDir: $APPDIR"
ls -al
find .
ls -al "$APPDIR"
ARCH=x86_64 ./appimagetool-x86_64.AppImage --comp gzip "$APPDIR" zen.AppImage
ARCH=x86_64 ./appimagetool-x86_64.AppImage --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 10 \
-u "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|desktop|latest|zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync" \
"$APPDIR" zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
mkdir dist
mv zen.AppImage* dist/.
mv zen*AppImage* dist/.
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: zen.AppImage
path: ./dist/zen.AppImage
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
- name: Upload artifact (ZSync)
uses: actions/upload-artifact@v4
with:
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
release:
if: ${{ github.event.inputs.create_release == 'true' }}
permissions: write-all
name: Release
needs: [build-data, linux, source, windows-step-3, check-release, mac, appimage]
needs: [build-data, linux, windows-step-3, check-release, mac, appimage]
runs-on: ubuntu-latest
steps:
- name: Update repo
uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.DEPLOY_KEY }}
- name: Git Pull
run: git pull
@@ -309,9 +338,14 @@ jobs:
run: |
cd updates-server
mkdir -p updates
cp -a ../linux_update_manifest/. updates/
cp -a ../windows_update_manifest/. updates/
cp -a ../macos_update_manifest/. updates/
cp -a ../linux_update_manifest_generic/. updates/
cp -a ../linux_update_manifest_specific/. updates/
cp -a ../windows_update_manifest_generic/. updates/
cp -a ../windows_update_manifest_specific/. updates/
cp -a ../macos_update_manifest_aarch64/. updates/
cp -a ../macos_update_manifest_x64/. updates/
- uses: stefanzweifel/git-auto-commit-action@v4
with:
@@ -328,13 +362,102 @@ jobs:
prerelease: false
title: 'Alpha build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})'
files: |
zen.linux.tar.bz2
zen.win64.zip
zen.source.tar.gz
zen.linux-generic.tar.bz2
zen.linux-specific.tar.bz2
zen-generic.AppImage
zen-generic.AppImage.zsync
zen-specific.AppImage
zen-specific.AppImage.zsync
zen.win-generic.zip
zen.win-specific.zip
linux.mar
linux-generic.mar
windows.mar
macos.mar
windows-generic.mar
macos-x64.mar
macos-aarch64.mar
zen.installer.exe
zen.installer.pretty.exe
zen.macos.dmg
zen.AppImage
zen.installer-generic.exe
zen.macos-x64.dmg
zen.macos-aarch64.dmg
release-flatpak:
if: ${{ github.event.inputs.create_release == 'true' }}
permissions: write-all
name: Release Flatpak
needs: [release, linux, 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: Download linux generic build
uses: actions/download-artifact@v4
with:
name: zen.linux-generic.tar.bz2
- name: Update repo
uses: actions/checkout@v4
with:
path: zen-browser
token: ${{ secrets.DEPLOY_KEY }}
- name: Download flatpak archive
run: |
wget https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar -O archive.tar
- 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: Prepare flatpak manifest
run: |
python3 ./zen-browser/scripts/prepare-flatpak-release.py \
--flatpak-archive archive.tar \
--version ${{ needs.build-data.outputs.version }} \
--linux-archive zen.linux-generic.tar.bz2 \
--output io.github.zen_browser.zen.yml \
--template-root ./zen-browser/flatpak
- name: Commit changes
run: |
git add io.github.zen_browser.zen.yml
git commit -m "Update to version ${{ needs.build-data.outputs.version }}"
- name: Clean up
run: |
rm -rf zen-browser
rm -rf archive.tar
rm -rf zen.linux-generic.tar.bz2
- name: Upload flatpak manifest
uses: actions/upload-artifact@v4
with:
name: io.github.zen_browser.zen.yml
path: ./io.github.zen_browser.zen.yml
- name: Create pull request
uses: peter-evans/create-pull-request@v6
env:
GIT_TRACE: 1
GIT_CURL_VERBOSE: 1
with:
token: ${{ secrets.DEPLOY_KEY }}
commit-message: 🚀 Update to version ${{ needs.build-data.outputs.version }}
title: 🚀 Update to version ${{ needs.build-data.outputs.version }}
body: |
This PR updates the Zen Browser Flatpak package to version ${{ needs.build-data.outputs.version }}.
@mauro-balades
branch: update-to-${{ needs.build-data.outputs.version }}
base: master
git-token: ${{ secrets.DEPLOY_KEY }}
delete-branch: true

30
.github/workflows/clear-cache.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: Clear cache
on:
workflow_dispatch:
permissions:
actions: write
jobs:
clear-cache:
runs-on: ubuntu-latest
steps:
- name: Clear cache
uses: actions/github-script@v6
with:
script: |
console.log("About to clear")
const caches = await github.rest.actions.getActionsCacheList({
owner: context.repo.owner,
repo: context.repo.repo,
})
for (const cache of caches.data.actions_caches) {
console.log(cache)
github.rest.actions.deleteActionsCacheById({
owner: context.repo.owner,
repo: context.repo.repo,
cache_id: cache.id,
})
}
console.log("Clear completed")

View File

@@ -9,23 +9,33 @@ on:
jobs:
build-linux:
environment: production
permissions:
contents: write
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
generic: [true, false]
name: Build Linux - ${{ matrix.generic == true && 'Generic' || 'Specific' }}
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 20
- uses: actions/checkout@v3
# Give the runner some swap space in an attempt to stop gkrust from crashing the build
- name: Set Swap Space
uses: pierotofy/set-swap-space@v1.0
- uses: actions/checkout@v4
with:
swap-size-gb: 6
submodules: recursive
token: ${{ secrets.DEPLOY_KEY }}
- name: Setup git
run: |
@@ -38,10 +48,7 @@ jobs:
sudo apt-get update
sudo apt-get install dos2unix yasm nasm build-essential libgtk2.0-dev libpython3-dev m4 uuid libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdrm-dev libdbus-glib-1-dev libdbus-glib-1-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb lld llvm
pip install pycairo testresources
- name: Free up space
run: sh .github/workflows/src/disk-setup-and-swap.sh
- name: Configure sccache
uses: actions/github-script@v7
with:
@@ -86,8 +93,13 @@ jobs:
run: pnpm surfer download
- name: Import
env:
SURFER_COMPAT: ${{ matrix.generic == true }}
run: pnpm surfer import
- name: Build language packs
run: sh scripts/download-language-packs.sh
- name: Bootstrap
run: |
cd engine
@@ -95,35 +107,42 @@ jobs:
cd ..
- name: Build
env:
SURFER_COMPAT: ${{ matrix.generic == true }}
continue-on-error: true
run: sh .github/workflows/src/alpha-build.sh
- name: Build again if it failed
if: failure()
env:
SURFER_COMPAT: ${{ matrix.generic == true }}
run: sh .github/workflows/src/alpha-build.sh
- name: Package
env:
SURFER_COMPAT: ${{ matrix.generic == true }}
run: pnpm package
- name: Rename artifacts
run: |
mv dist/zen-*.tar.bz2 "zen.linux.tar.bz2"
mv dist/output.mar linux.mar
mv dist/zen-*.tar.bz2 "zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2"
mv dist/output.mar linux${{ matrix.generic == true && '-generic' || '' }}.mar
- name: Upload binary
uses: actions/upload-artifact@v4
with:
name: zen.linux.tar.bz2
path: ./zen.linux.tar.bz2
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
path: ./zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
- name: Upload mar
uses: actions/upload-artifact@v4
with:
name: linux.mar
path: ./linux.mar
name: linux${{ matrix.generic == true && '-generic' || '' }}.mar
path: ./linux${{ matrix.generic == true && '-generic' || '' }}.mar
- name: Upload update manifests
uses: actions/upload-artifact@v4
with:
name: linux_update_manifest
name: linux_update_manifest_${{ matrix.generic == true && 'generic' || 'specific' }}
path: ./dist/update

View File

@@ -6,10 +6,19 @@ on:
description: 'The version to build'
required: true
type: string
jobs:
mac-build:
runs-on: macos-14
name: Build macOS - ${{ matrix.arch }}
environment: production
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- arch: aarch64
os: macos-14
- arch: x64
os: macos-13
steps:
- name: Install Node.js
@@ -22,6 +31,9 @@ jobs:
python-version: '3.11'
- uses: actions/checkout@v4
with:
submodules: recursive
token: ${{ secrets.DEPLOY_KEY }}
- name: Setup git
run: |
@@ -33,8 +45,29 @@ jobs:
brew install cairo sccache gnu-tar mercurial
sudo pip install setuptools
- name: Free up space
run: sh .github/workflows/src/disk-setup-and-swap.sh
# completly uninstall python3 and python3.12
brew uninstall --ignore-dependencies python3.12 -f
export PATH="$(python3 -m site --user-base)/bin":$PATH
python3 -m pip install --user mercurial
rm '/usr/local/bin/2to3-3.11' # fix Could not symlink bin/2to3-3.11
rm '/usr/local/bin/2to3-3.12' # fix Could not symlink bin/2to3-3.12
rm /usr/local/bin/2to3 # fix Could not symlink bin/2to3
rm '/usr/local/bin/idle3.11' #fix Could not symlink bin/idle3.11
rm '/usr/local/bin/idle3.12' # fix Could not symlink bin/idle3.12
rm '/usr/local/bin/idle3' # fix Could not symlink bin/idle3
rm '/usr/local/bin/pydoc3.11' # fix Could not symlink bin/pydoc3.11
rm '/usr/local/bin/pydoc3.12' # fix Could not symlink bin/pydoc3.12
rm '/usr/local/bin/pydoc3' # fix Could not symlink bin/pydoc3
rm '/usr/local/bin/python3.11' # fix Could not symlink bin/python3.11
rm '/usr/local/bin/python3.12' # fix Could not symlink bin/python3.12
rm '/usr/local/bin/python3' # fix Could not symlink bin/python3
rm '/usr/local/bin/python3.11-config' # fix Could not symlink bin/python3.11-config
rm '/usr/local/bin/python3.12-config' # fix Could not symlink bin/python3.12-config
rm '/usr/local/bin/python3-config' # fix Could not symlink bin/python3-config
brew install watchman
- name: Force usage fo gnu-tar
run: |
@@ -59,44 +92,59 @@ jobs:
- name: Download firefox source and dependancies
run: pnpm surfer download
- name: Import
run: pnpm surfer import
- name: Bootstrap
run: |
cd engine
./mach --no-interactive bootstrap --application-choice browser
export PATH="$(python3 -m site --user-base)/bin":$PATH
./mach --no-interactive bootstrap --application-choice browser --no-system-changes
cd ..
- name: Import
env:
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
run: |
pnpm surfer import --verbose
- name: Build language packs
run: sh scripts/download-language-packs.sh
- name: build Zen
run: sh .github/workflows/src/alpha-build.sh
env:
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
run: |
if test "${{ matrix.arch }}" = "x64"; then
export ZEN_DISABLE_LTO=1
fi
sh .github/workflows/src/alpha-build.sh
- name: Rebuild Zen if failed
if: failure()
run: sh .github/workflows/src/alpha-build.sh
- name: Package
env:
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
run: pnpm package
- name: Rename artifacts
run: |
mv ./dist/*.dmg "zen.macos.dmg"
mv ./dist/output.mar macos.mar
mv ./dist/*.dmg "zen.macos-${{ matrix.arch }}.dmg"
mv ./dist/output.mar macos-${{ matrix.arch }}.mar
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: zen.macos.dmg
path: ./zen.macos.dmg
name: zen.macos-${{ matrix.arch }}.dmg
path: ./zen.macos-${{ matrix.arch }}.dmg
- name: Upload mar
uses: actions/upload-artifact@v4
with:
name: macos.mar
path: ./macos.mar
name: macos-${{ matrix.arch }}.mar
path: ./macos-${{ matrix.arch }}.mar
- name: Upload update manifests
uses: actions/upload-artifact@v4
with:
name: macos_update_manifest
name: macos_update_manifest_${{ matrix.arch }}
path: ./dist/update

View File

@@ -1,50 +0,0 @@
echo Before:
if [ command -v free ]; then
free -h
fi
if [ command -v df ]; then
df -h
fi
echo
echo
sudo swapoff /mnt/swapfile
sudo rm /mnt/swapfile
sudo fallocate -l 10G /mnt/swapfile
sudo chmod 600 /mnt/swapfile
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
sudo apt remove -y '^dotnet-.*' '^llvm-.*' '^php.*' '^mongodb-.*' '^mysql-.*' clang azure-cli google-cloud-sdk google-chrome-stable microsoft-edge firefox powershell mono-devel libgl1-mesa-dri acl aria2 autoconf automake binutils bison brotli bzip2 coreutils
sudo apt autoremove -y
sudo apt clean
sudo rm -rf ./git
sudo rm -rf /home/linuxbrew
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /usr/local/graalvm
sudo rm -rf /usr/local/share/powershell
sudo rm -rf /usr/local/share/chromium
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
sudo rm -rf /etc/apache2
sudo rm -rf /etc/nginx
sudo rm -rf /usr/local/share/chrome_driver
sudo rm -rf /usr/local/share/edge_driver
sudo rm -rf /usr/local/share/gecko_driver
sudo rm -rf /usr/share/java
sudo rm -rf /usr/share/miniconda
sudo rm -rf /usr/local/share/vcpkg
echo
echo
echo After:
if [ command -v free ]; then
free -h
fi
if [ command -v df ]; then
df -h
fi

View File

@@ -1,40 +0,0 @@
export WINSYSROOT="$(echo ~)/win-cross/vs2022"
export MIDL="$(echo ~)/win-cross/wine/bin/widl"
export WINE="$(echo ~)/win-cross/wine/bin/wine64"
export WINEDEBUG=-all
#? https://bugzilla.mozilla.org/show_bug.cgi?id=1617793
#? https://phabricator.services.mozilla.com/D170170
ac_add_options --target=x86_64-pc-windows-msvc
export MOZ_STUB_INSTALLER=1
export MOZ_PKG_FORMAT=TAR
export CROSS_BUILD=1
CROSS_COMPILE=1
TOOLS=$(echo ~)/win-cross
export MIDL="$TOOLS/wine/bin/widl"
export MOZ_INCLUDE_SOURCE_INFO=1
export MOZ_STUB_INSTALLER=1
export WINEDEBUG=-all
export WINE="$TOOLS/wine/bin/wine64"
#export WIN32_REDIST_DIR="$TOOLS"/vs2022/VC/Redist/MSVC/14.34.31931/x64/Microsoft.VC143.CRT
#export WIN_UCRT_REDIST_DIR="$TOOLS/vs2022/Windows Kits/10/Redist/10.0.22621.0/ucrt/DLLs/x64"
ac_add_options --disable-maintenance-service
ac_add_options --disable-bits-download
#if test "$ZEN_GA_GENERATE_PROFILE"; then
# mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
# ac_add_options --enable-profile-generate=cross
#else
# ac_add_options --disable-profiling
# ac_add_options --enable-profile-use=cross
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged.profdata
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US.log
#fi
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE

View File

@@ -16,21 +16,30 @@ on:
jobs:
windows-build:
name: Build Windows - ${{ matrix.generic == true && 'Generic' || 'Specific' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
generic: [true, false]
environment: production
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
- name: Install Node.js and pnpm
uses: actions/setup-node@v3
with:
node-version: 20
- uses: actions/checkout@v4
# Give the runner some swap space in an attempt to stop gkrust from crashing the build
- name: Set Swap Space
uses: pierotofy/set-swap-space@v1.0
with:
swap-size-gb: 6
submodules: recursive
token: ${{ secrets.DEPLOY_KEY }}
- name: Install pnpm
run: npm install -g pnpm
@@ -50,9 +59,6 @@ jobs:
- name: Download
run: pnpm surfer download
- name: Free up space
run: sh .github/workflows/src/disk-setup-and-swap.sh
- name: "win-cross Cache"
env:
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5
@@ -92,8 +98,6 @@ jobs:
chmod -R +x "$(echo ~)/win-cross/vs2022" || true
cat ../.github/workflows/src/windows_mozconfig >> ../configs/common/mozconfig
cd ..
npm install -g pnpm
export SURFER_PLATFORM="win32"
@@ -104,6 +108,9 @@ jobs:
echo "export LIB=\"$(cd ~/.mozbuild/clang/lib/clang/* && cd lib/windows && pwd)\"" >> ../configs/common/mozconfig
cat ../configs/common/mozconfig
sudo apt-get update
sudo apt-get install dos2unix
ls ~/win-cross/wine || true
ls ~/win-cross/vs2022 || true
@@ -119,6 +126,8 @@ jobs:
cargo download -x windows=0.52.0
#? https://github.com/mozilla/sccache#known-caveats
export CARGO_INCREMENTAL=0
echo "" >> ../configs/common/mozconfig
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.52.0" >> ../configs/common/mozconfig
- uses: actions/download-artifact@v4
@@ -128,24 +137,33 @@ jobs:
path: ~/artifact
- name: Import
run: pnpm surfer import --verbose
env:
SURFER_COMPAT: ${{ matrix.generic == true }}
run: pnpm surfer import --verbose
- name: Build language packs
run: sh scripts/download-language-packs.sh
- name: Build
env:
SURFER_COMPAT: ${{ matrix.generic == true }}
run: |
set -x
dos2unix configs/windows/mozconfig
export SURFER_PLATFORM="win32"
export ZEN_CROSS_COMPILING=1
# if test ${{ inputs.generate-gpo }}; then
# export ZEN_GA_GENERATE_PROFILE=1
# fi
if test ${{ inputs.generate-gpo }} = true; then
export ZEN_GA_GENERATE_PROFILE=1
fi
sh .github/workflows/src/alpha-build.sh
- name: Package
env:
SURFER_COMPAT: ${{ matrix.generic == true }}
run: |
set -x
export SURFER_PLATFORM="win32"
pnpm package
mv ./dist/output.mar windows.mar
mv ./dist/zen-$(pnpm surfer get version | xargs).en-US.win64.zip zen.win64.zip
ls ./dist
ls .
@@ -156,37 +174,44 @@ jobs:
set -x
mv ./zen.win64.zip ./zen.win64-pgo-stage-1.zip
- name: Rename artifacts
if: ${{ !inputs.generate-gpo }}
run: |
mv ./zen.win64.zip zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
mv ./dist/output.mar windows${{ matrix.generic == true && '-generic' || '' }}.mar
mv ./dist/zen.installer.exe ./zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
- name: Upload artifact
uses: actions/upload-artifact@v4
if: ${{ !inputs.generate-gpo }}
with:
name: zen.win64.zip
path: ./zen.win64.zip
name: zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
path: ./zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
- name: Upload PGO build
uses: actions/upload-artifact@v4
if: ${{ inputs.generate-gpo }}
with:
name: ${{ inputs.profile-data-path-archive }}
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-${{ inputs.profile-data-path-archive }}
path: ./zen.win64-pgo-stage-1.zip
- name: Upload mar
uses: actions/upload-artifact@v4
if: ${{ !inputs.generate-gpo }}
with:
name: windows.mar
path: ./windows.mar
name: windows${{ matrix.generic == true && '-generic' || '' }}.mar
path: ./windows${{ matrix.generic == true && '-generic' || '' }}.mar
- name: Upload installer
uses: actions/upload-artifact@v4
if: ${{ !inputs.generate-gpo }}
with:
name: zen.installer.exe
path: ./dist/zen.installer.exe
name: zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
path: ./zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
- name: Upload installer stub
uses: actions/upload-artifact@v4
if: ${{ !inputs.generate-gpo }}
if: ${{ !inputs.generate-gpo && false }}
with:
name: zen.installer.pretty.exe
path: ./dist/zen.installer.pretty.exe
@@ -195,5 +220,5 @@ jobs:
uses: actions/upload-artifact@v4
if: ${{ !inputs.generate-gpo }}
with:
name: windows_update_manifest
name: windows_update_manifest_${{ matrix.generic == true && 'generic' || 'specific' }}
path: ./dist/update

View File

@@ -13,6 +13,11 @@ on:
jobs:
windows-profile-build:
name: Windows Profile Build - ${{ matrix.generic == true && 'generic' || 'specific' }}
strategy:
fail-fast: false
matrix:
generic: [true, false]
runs-on: windows-latest
# Script edited from https://github.com/Floorp-Projects/Floorp/blob/ESR115/.github/workflows/window-generate-profile-data-and-jarlog.yml
steps:
@@ -28,52 +33,45 @@ jobs:
run: |
git config --global user.email "mauro-balades@users.noreply.github.com"
git config --global user.name "mauro-balades"
- name: Install pnpm
run: npm install -g pnpm
- name: Install Surfer
run: |
npm i -g @zen-browser/surfer
- uses: actions/download-artifact@v4
name: Download artifact
with:
path: C:\artifact
name: zen-windows-x86_64-profile-data-and-jarlog.zip
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-zen-windows-x86_64-profile-data-and-jarlog.zip
- name: Unpack artifact
run: |
cd C:\artifact
ls
7z x ${{ inputs.profile-data-path-archive }}
Expand-Archive -Path .\${{ inputs.profile-data-path-archive }} -DestinationPath C:\artifact
ls
- name: Setup
run: |
(New-Object System.Net.WebClient).DownloadFile("https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe","C:\MozillaBuildSetup-Latest.exe")
C:\MozillaBuildSetup-Latest.exe /S | out-null
- name: Download firefox
run: |
git config --global core.safecrlf false
pnpm surfer download
- name: Generate
run: |
ls
$Env:USE_MINTTY = "0"
$workspace_dir_current = [regex]::replace($env:GITHUB_WORKSPACE, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\","/"
$workspace_dir = $workspace_dir_current + "/engine"
echo $workspace_dir
echo "cd $workspace_dir" '' >> mozilla-build-run.sh
echo 'export PATH=/c/mozilla-build/msys2/usr/bin:$PATH' '' >> mozilla-build-run.sh
echo './mach --no-interactive bootstrap --application-choice browser' '' >> mozilla-build-run.sh
echo 'ls /c/Users/runneradmin/.mozbuild/clang/bin' '' >> mozilla-build-run.sh
echo 'LLVM_PROFDATA=/c/Users/runneradmin/.mozbuild/clang/bin/llvm-profdata.exe JARLOG_FILE=en-US.log ./mach python build/pgo/profileserver.py --binary /c/artifact/zen/zen.exe' '' >> mozilla-build-run.sh
C:\mozilla-build\start-shell.bat $workspace_dir_current\mozilla-build-run.sh
- name: 🐛 Debug Session
if: ${{ failure() }}
uses: Warpbuilds/gha-debug@v1.3
@@ -82,10 +80,9 @@ jobs:
- name: Publish merged.profdata
uses: actions/upload-artifact@v4
with:
path: merged.profdata
path: merged-${{ matrix.generic == true && 'generic' || 'specific' }}.profdata
- name: Publish en-US.log
uses: actions/upload-artifact@v4
with:
path: en-US.log
path: en-US-${{ matrix.generic == true && 'generic' || 'specific' }}.log

6
.gitmodules vendored Normal file
View File

@@ -0,0 +1,6 @@
[submodule "src/browser/base/content/zen-components"]
path = src/browser/base/content/zen-components
url = https://github.com/zen-browser/components
[submodule "l10n"]
path = l10n
url = https://github.com/zen-browser/l10n-packs

View File

@@ -13,6 +13,10 @@
"utility": "cpp",
"variant": "cpp",
"compare": "cpp",
"thread": "cpp"
"thread": "cpp",
"string": "cpp",
"string_view": "cpp",
"span": "cpp",
"vector": "cpp"
}
}

View File

View File

@@ -5,4 +5,4 @@
"ManualAppUpdateOnly": true,
"BackgroundAppUpdate": false
}
}
}

View File

@@ -1,10 +1,11 @@
[Desktop Entry]
Name=Zen Browser
Comment=Experience tranquillity while browsing the web without people tracking you!
Exec=zen %u
Icon=zen
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json;
StartupWMClass=LibreWolf
StartupWMClass=zen-alpha
Categories=Network;WebBrowser;
StartupNotify=true
Terminal=false
@@ -22,4 +23,4 @@ Exec=zen --private-window %u
[Desktop Action profilemanager]
Name=Open the Profile Manager
Exec=zen --ProfileManager %u
Exec=zen --ProfileManager %u

View File

@@ -1,20 +1,48 @@
# 🌀 Zen Browser
<div align="center">
<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!
* [Website](https://www.zen-browser.app)
* [Download](https://www.zen-browser.app/download)
* [Release Notes](https://www.zen-browser.app/release-notes/latest)
[![Crowdin](https://badges.crowdin.net/zen-browser/localized.svg)](https://crowdin.com/project/zen-browser)
[![Flathub](https://flathub.org/api/badge?locale=en)](https://flathub.org/apps/io.github.zen_browser.zen')
[![Patreon](https://c5.patreon.com/external/logo/become_a_patron_button.png)](https://www.patreon.com/z3nth10n)
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/K3K111FH7H)
# Compatibility
Zen is currently built using firefox version `128.0.3`!
Zen is currently built using firefox version `129.0.2`!
* Checkout the latest [releases notes](https://get-zen.vercel.app/release-notes)!
* Check out the latest [release notes](https://www.zen-browser.app/release-notes)!
# Performance
Zen is built with performance in mind, and we have optimized the browser to be as fast as possible!
* Checkout the latest [performance benchmarks](https://docs.zen-browser.app/benchmarks)!
# 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
Clone the project
```bash
git clone https://github.com/zen-browser/desktop.git
git clone https://github.com/zen-browser/desktop.git --recurse-submodules
cd desktop
```
@@ -42,20 +70,30 @@ Finally, run the browser!
npm start
```
## Contributing
Contributions are always welcome!
See `contributing.md` for ways to get started.
Please adhere to this project's `code of conduct`.
## Special Thanks
- [Erlend](https://havn.blog) (For making the logo)
- [IAmJafeth](https://github.com/IAmJafeth) (For sponsoring the domain)
- [Donno 🐒](https://www.onnno.nl/) (For making the logo)
- [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
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)
## 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>

View File

@@ -1,4 +1 @@
<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>
<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

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.4 KiB

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 483 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 872 B

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 951 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@@ -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: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 483 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -1,12 +1,12 @@
# Browser branding
ac_add_options --enable-update-channel=release
ac_add_options --with-app-name=${binName}
ac_add_options --with-app-basename=Zen
ac_add_options --enable-official-branding
# Localization
ac_add_options --with-l10n-base="$PWD/browser/locales"
export MOZ_USER_DIR="${name}"
export MOZ_APP_VENDOR="${vendor}"
export MOZ_APP_BASENAME=Zen
export MOZ_APP_PROFILE=${binName}
export MOZ_APP_DISPLAYNAME="${name}"
@@ -19,32 +19,29 @@ export MOZ_DISTRIBUTION_ID=${appId}
# ac_add_options --enable-linker=gold
# Misc
export MOZ_STUB_INSTALLER=1
export MOZ_SOURCE_REPO=https://github.com/zen-browser/desktop
export MOZ_SOURCE_CHANGESET=${changeset}
export MOZ_INCLUDE_SOURCE_INFO=1
ac_add_options --enable-bootstrap
ac_add_options --enable-application=browser
if test "$ZEN_RELEASE"; then
ac_add_options --enable-bootstrap
ac_add_options --enable-release
ac_add_options --disable-debug
ac_add_options --disable-debug-symbols
ac_add_options --disable-debug-js-modules
ac_add_options --disable-tests
ac_add_options --enable-strip
ac_add_options --enable-install-strip
ac_add_options --disable-jprof
ac_add_options --disable-vtune
ac_add_options --enable-rust-simd
mk_add_options MOZ_PARALLEL_COMPILE=1
mk_add_options MOZ_CRASHREPORTER=0
mk_add_options MOZ_DATA_REPORTING=0
mk_add_options MOZ_SERVICES_HEALTHREPORT=0
mk_add_options MOZ_TELEMETRY_REPORTING=0
ac_add_options --enable-wasm-simd
mk_add_options MOZ_PARALLEL_COMPILE=1
ac_add_options --enable-proxy-bypass-protection
ac_add_options --enable-hardening
ac_add_options --disable-profiling
@@ -52,11 +49,15 @@ if test "$ZEN_RELEASE"; then
ac_add_options --disable-crashreporter
ac_add_options --disable-geckodriver
ac_add_options --disable-rust-tests
# Done by vlad, if something fails, it's his fault
ac_add_options --disable-default-browser-agent
export MOZ_LTO=1
ac_add_options MOZ_LTO=1
ac_add_options --enable-lto=full,cross
if ! test "$ZEN_DISABLE_LTO"; then
export MOZ_LTO=1
ac_add_options MOZ_LTO=1
ac_add_options --enable-lto=full,cross
fi
ac_add_options --enable-jemalloc
@@ -64,25 +65,22 @@ if test "$ZEN_RELEASE"; then
MOZILLA_OFFICIAL=1
export MOZILLA_OFFICIAL=1
mk_add_options MOZ_OPTIMIZE=1
MOZ_OPTIMIZE=1
export MOZ_OPTIMIZE=1
mk_add_options MOZ_OPTIMIZE=2
MOZ_OPTIMIZE=2
export MOZ_OPTIMIZE=2
export OPT_LEVEL="3"
ac_add_options OPT_LEVEL="3"
export RUSTC_OPT_LEVEL="3"
ac_add_options RUSTC_OPT_LEVEL="3"
mk_add_options AUTOCLOBBER=1
export AUTOCLOBBER=1
if ! test "$ZEN_CROSS_COMPILING"; then
# It causes link errors on windows
ac_add_options --disable-dmd
fi
ac_add_options --enable-updater
export MOZ_PACKAGE_JSSHELL=1
fi
ac_add_options --enable-unverified-updates
@@ -96,18 +94,14 @@ ac_add_options --enable-eme=widevine
ac_add_options --allow-addon-sideload
ac_add_options --with-unsigned-addon-scopes=app,system
export MOZ_REQUIRE_SIGNING=
export MOZ_TELEMETRY_REPORTING=
mk_add_options MOZ_CRASHREPORTER=0
mk_add_options MOZ_DATA_REPORTING=0
mk_add_options MOZ_SERVICES_HEALTHREPORT=0
mk_add_options MOZ_TELEMETRY_REPORTING=0
if test "$ZEN_CROSS_COMPILING"; then
ac_add_options --target=x86_64-pc-linux-gnu
fi
# Allow loading unsigned extensions
export MOZ_REQUIRE_SIGNING=
mk_add_options MOZ_REQUIRE_SIGNING=
export MOZ_APP_UA_NAME="Firefox"
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE
# Sorry ptr, I didnt mean to!
# Edit: ok, ill remove it, goodbye top #1 on fastest browsers benchmark :[
# ac_add_options --without-wasm-sandboxed-libraries

View File

@@ -1,21 +1,22 @@
ac_add_options --enable-wasm-avx
# not when cross compiling
if ! test "$ZEN_CROSS_COMPILING"; then
if test -d "$HOME/.mozbuild/clang/bin"; then
export CC="$HOME"/.mozbuild/clang/bin/clang
export CXX="$HOME"/.mozbuild/clang/bin/clang++
else
export CC=clang
export CXX=clang++
fi
ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack
if test -d "$HOME/.mozbuild/clang/bin"; then
export CC="$HOME"/.mozbuild/clang/bin/clang
export CXX="$HOME"/.mozbuild/clang/bin/clang++
else
export CC=clang
export CXX=clang++
fi
if test "$ZEN_RELEASE"; then
ac_add_options --disable-dmd
ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack
ac_add_options --disable-gpsd
ac_add_options --disable-necko-wifi
ac_add_options --enable-install-strip
ac_add_options --enable-strip
export STRIP_FLAGS="--strip-debug --strip-unneeded"
@@ -25,21 +26,33 @@ if test "$ZEN_RELEASE"; then
ac_add_options --with-ccache=/home/runner/.mozbuild/sccache/sccache
mk_add_options 'export SCCACHE_GHA_ENABLED=on'
fi
if ! test "$ZEN_CROSS_COMPILING"; then
# WE ARE JUST SUPPORTING PGO FOR LINUX!
export MOZ_PGO=1
ac_add_options MOZ_PGO=1
fi
export CFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes"
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes"
export CXXFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes"
export LDFLAGS="-Wl,-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes"
export MOZ_PGO=1
ac_add_options MOZ_PGO=1
if test "$SURFER_COMPAT" = "true"; then
ac_add_options --enable-optimize="-O3 -march=x86-64"
export CFLAGS="$CFLAGS -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 LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64"
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64 -C codegen-units=1"
else
ac_add_options --enable-wasm-avx
ac_add_options --enable-optimize="-O3 -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -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 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"
fi
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 RUSTFLAGS="$RUSTFLAGS -C target-feature=+avx -C codegen-units=1 -Ctarget-cpu=x86-64-v3"
fi
# Disable telemetry and tracking
mk_add_options MOZ_TELEMETRY_REPORTING=
mk_add_options MOZ_DATA_REPORTING=
ac_add_options --target=x86_64-pc-linux
ac_add_options --enable-alsa
ac_add_options --enable-pulseaudio

View File

@@ -1,12 +1,36 @@
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"
# SURFER_COMPAT has a different meaning here, in macOS it means that the build is for
# x86_64, not ARM64.
unset MOZ_STDCXX_COMPAT
if test "$ZEN_RELEASE"; then
export RUSTFLAGS="$RUSTFLAGS -Ctarget-cpu=apple-m1"
fi
ac_add_options --enable-install-strip
ac_add_options --target=aarch64-apple-darwin
ac_add_options --disable-dmd
export MOZ_MACBUNDLE_ID=${appId}
export MOZ_MACBUNDLE_NAME="Zen Browser.app"
if test "$SURFER_COMPAT" = "true"; then
export MOZ_PGO=1
ac_add_options MOZ_PGO=1
ac_add_options --target=x86_64-apple-darwin
ac_add_options --enable-wasm-avx
ac_add_options --enable-optimize="-march=nehalem -mtune=haswell -O3 -w"
export CFLAGS="-O3 -march=nehalem"
export CPPFLAGS="-O3 -march=nehalem"
export CXXFLAGS="-O3 -march=nehalem"
export LDFLAGS="-Wl,-O3 -march=nehalem"
export RUSTFLAGS="-Ctarget-cpu=nehalem -C codegen-units=1"
else
ac_add_options --target=aarch64-apple-darwin
ac_add_options --enable-optimize="-O3 -mcpu=apple-m1 -march=armv8.3-a+simd"
export CFLAGS="-O3 -march=armv8.3-a+simd -mcpu=apple-m1"
export CPPFLAGS="-O3 -march=armv8.3-a+simd -mcpu=apple-m1"
export CXXFLAGS="-O3 -march=armv8.3-a+simd -mcpu=apple-m1"
export LDFLAGS="-Wl,-O3 -march=armv8.3-a+simd -mcpu=apple-m1"
export RUSTFLAGS="-C target-feature=+v8.3a -C codegen-units=1 -Ctarget-cpu=apple-m1"
fi
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"

View File

@@ -1,5 +1,68 @@
# Disable telemetry and tracking
mk_add_options MOZ_TELEMETRY_REPORTING=
mk_add_options MOZ_DATA_REPORTING=
if test "$ZEN_CROSS_COMPILING"; then
export WINSYSROOT="$(echo ~)/win-cross/vs2022"
export MIDL="$(echo ~)/win-cross/wine/bin/widl"
export WINE="$(echo ~)/win-cross/wine/bin/wine64"
export WINEDEBUG=-all
export MOZ_STUB_INSTALLER=1
export MOZ_PKG_FORMAT=TAR
export CROSS_BUILD=1
CROSS_COMPILE=1
TOOLS=$(echo ~)/win-cross
export WIN_UCRT_REDIST_DIR="$(echo ~)/win-cross/vs2022/Windows Kits/10/Redist/10.0.22621.0/ucrt/DLLs/x64"
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 MOZ_STUB_INSTALLER=1
export WINEDEBUG=-all
export WINE="$TOOLS/wine/bin/wine64"
fi
#? https://bugzilla.mozilla.org/show_bug.cgi?id=1617793
#? https://phabricator.services.mozilla.com/D170170
ac_add_options --target=x86_64-pc-windows-msvc
ac_add_options --disable-maintenance-service
ac_add_options --disable-bits-download
if test "$SURFER_COMPAT" = "true"; then
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize"
export CFLAGS="-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 LDFLAGS="-Wl,-O2"
export RUSTFLAGS="-C codegen-units=1 -Ctarget-cpu=x86-64"
else
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -ftree-vectorize -Xclang -w"
ac_add_options --enable-wasm-avx
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 CXXFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -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"
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 VERBOSE=1
#if test "$ZEN_GA_GENERATE_PROFILE"; then
# mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
# ac_add_options --enable-profile-generate=cross
#else
# ac_add_options --enable-profile-use=cross
# if test "$SURFER_COMPAT" = "true"; then
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged-generic.profdata
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US-generic.log
# else
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged-specific.profdata
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US-specific.log
# fi
#fi

19
docs/key-shortcuts.md Normal file
View File

@@ -0,0 +1,19 @@
# Custom Keyboard Shortcuts
```json
{
"<shortcut-id>": {
"key": "<key>",
"alt": false,
"shift": false,
"ctrl": false,
"meta": false,
"keycode": 0
}
}
```
The `key` field is the key that will trigger the shortcut. The `alt`, `shift`, `ctrl`, and `meta` fields are booleans that indicate if the respective modifier key should be pressed when the shortcut is triggered.
The `keycode` field is the keycode of the key that will trigger the shortcut. This field is optional and can be used to specify the keycode of the key that will trigger the shortcut. If the `keycode` field is specified, the `key` field will be ignored.

31
docs/requirements.md Normal file
View File

@@ -0,0 +1,31 @@
# Supported CPUs for optimized builds (Windows and Linux)
> If you CPU is not listed, you should use the "Generic" build.
* AMD Family 15h (Excavator)
* AMD Family 17h (Zen)
* AMD Family 17h (Zen+)
* AMD Family 17h (Zen 2)
* AMD Family 19h (Zen 3)
* Intel 4th Gen Core (Haswell)
* Intel 5th Gen Core (Broadwell)
* Intel 6th Gen Core (Skylake)
* Intel 7th Gen Core (Kaby Lake)
* Intel 8/9th Gen Core (Coffee Lake)
* Intel 10th Gen Core (Comet Lake)
* Intel 12th Gen (Alder Lake)
* Intel 13th Gen (Raptor Lake)
* Intel 14th Gen (Raptor Lake Refresh)
* Intel 15th Gen (Lunar / Arrow Lake)
* AMD Family 19h (Zen 4 / Zen 4c)
* AMD Family 1Ah (Zen 5 / Zen 5c)
* Intel 6th Gen Core (Skylake X)
* Intel 8th Gen Core i3 (Cannon Lake)
* Intel Xeon / 10th Gen Core (Ice Lake)
* Intel Xeon (Cascade Lake)
* Intel Xeon (Cooper Lake)
* Intel 3rd Gen 10nm++ (Tiger Lake)
* Intel 4th Gen 10nm++ (Sapphire Rapids)
* Intel 5th Gen 10nm++ (Emerald Rapids)
* Intel 11th Gen (Rocket Lake)

View File

@@ -1,7 +1,7 @@
# Workspaces Layout
```
```json
{
"workspaces": [
{

View File

@@ -0,0 +1,47 @@
app-id: io.github.zen_browser.zen
runtime: org.freedesktop.Platform
runtime-version: '23.08'
sdk: org.freedesktop.Sdk
base: org.mozilla.firefox.BaseApp
base-version: '23.08'
command: launch-script.sh
finish-args:
- --share=ipc
- --share=network
- --socket=pulseaudio
- --socket=wayland
- --socket=fallback-x11
- --socket=pcsc
- --socket=cups
- --persist=.zen
- --filesystem=xdg-download:rw
- --device=all
- --talk-name=org.freedesktop.FileManager1
- --talk-name=org.freedesktop.ScreenSaver
- --own-name=org.mozilla.zen.*
- --own-name=org.mpris.MediaPlayer2.firefox.*
- --system-talk-name=org.freedesktop.NetworkManager
- --talk-name=org.a11y.Bus
modules:
- name: zen_browser
buildsystem: simple
build-commands:
- mv zen /app/
- 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/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.desktop ${{FLATPAK_DEST}}/share/applications/${{FLATPAK_ID}}.desktop
sources:
- type: archive
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-generic.tar.bz2
sha256: {linux_sha256}
strip-components: 0
- type: archive
url: https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar
sha256: {flatpak_sha256}
strip-components: 0
dest: metadata

1
l10n Submodule

Submodule l10n added at 85c5639835

View File

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

10
pnpm-lock.yaml generated
View File

@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@zen-browser/surfer':
specifier: ^1.1.17
version: 1.1.17
specifier: ^1.3.6
version: 1.3.6
packages:
@@ -109,8 +109,8 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
'@zen-browser/surfer@1.1.17':
resolution: {integrity: sha512-619ur59XBh7GLLtAeOipJNiUOJL/lNGRXznf40e6fPimCsSobrL7HIxh5F1JXpRvKpUHVOQK5R1EDbcH+rTttg==}
'@zen-browser/surfer@1.3.6':
resolution: {integrity: sha512-b+5GS9qMGoMB8lRaFYRA9C3EqntVf35sBx5dq7X3IuqlB9GmarYoS5E26EvXbmPJcfYkJG7ar05nHkkZyOrGuw==}
hasBin: true
ansi-regex@5.0.1:
@@ -786,7 +786,7 @@ snapshots:
'@types/node@17.0.45': {}
'@zen-browser/surfer@1.1.17':
'@zen-browser/surfer@1.3.6':
dependencies:
'@resvg/resvg-js': 1.4.0
async-icns: 1.0.2

View 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

View 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

View File

@@ -0,0 +1,58 @@
import os
import sys
import hashlib
import argparse
FLATID = "io.github.zen_browser.zen"
def get_sha256sum(filename):
sha256 = hashlib.sha256()
with open(filename, "rb") as f:
for byte_block in iter(lambda: f.read(4096), b""):
sha256.update(byte_block)
return sha256.hexdigest()
def build_template(template, linux_sha256, flatpak_sha256, version):
print(f"Building template with version {version}")
print(f"\tLinux archive sha256: {linux_sha256}")
print(f"\tFlatpak archive sha256: {flatpak_sha256}")
return template.format(linux_sha256=linux_sha256,
flatpak_sha256=flatpak_sha256,
version=version)
def get_template(template_root):
file = f"{template_root}/{FLATID}.yml.template"
print(f"Reading template {file}")
with open(file, "r") as f:
return f.read()
print(f"Template {template_root}/flatpak.yml not found")
sys.exit(1)
def main():
parser = argparse.ArgumentParser(description='Prepare flatpak release')
parser.add_argument('--version', help='Version of the release', required=True)
parser.add_argument('--linux-archive', help='Linux archive', required=True)
parser.add_argument('--flatpak-archive', help='Flatpak archive', required=True)
parser.add_argument('--output', help='Output file', default=f"{FLATID}.yml")
parser.add_argument('--template-root', help='Template root', default="flatpak")
args = parser.parse_args()
version = args.version
linux_archive = args.linux_archive
flatpak_archive = args.flatpak_archive
output = args.output
template_root = args.template_root
linux_sha256 = get_sha256sum(linux_archive)
flatpak_sha256 = get_sha256sum(flatpak_archive)
template = build_template(get_template(template_root), linux_sha256, flatpak_sha256, version)
print(f"Writing output to {output}")
with open(output, "w") as f:
f.write(template)
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,2 @@
sh ./scripts/copy-language-pack.sh en-US

View File

@@ -1,29 +1,7 @@
// Ignore license in this file
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//
// The code in this file was created by @yokoffing and is licensed under the
// MIT license:
// MIT License
//
// Copyright (c) 2020 yokoffing
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
/* You may copy+paste this file and use it as it is.
*
* If you make changes to your about:config while the program is running, the
@@ -35,241 +13,213 @@
/****************************************************************************
* Betterfox *
* "Ad meliora" *
* version: 121 *
* version: 128 *
* url: https://github.com/yokoffing/Betterfox *
****************************************************************************/
****************************************************************************/
/****************************************************************************
* SECTION: FASTFOX *
****************************************************************************/
****************************************************************************/
/** GENERAL ***/
pref('content.notify.interval', 100000);
pref("content.notify.interval", 100000); // (.10s); alt=500000 (.50s)
/** GFX ***/
pref('gfx.canvas.accelerated.cache-items', 4096);
pref('gfx.canvas.accelerated.cache-size', 512);
pref('gfx.content.skia-font-cache-size', 20);
pref("gfx.canvas.accelerated.cache-items", 4096);
pref("gfx.canvas.accelerated.cache-size", 512);
pref("gfx.content.skia-font-cache-size", 20);
/** DISK CACHE ***/
pref('browser.cache.jsbc_compression_level', 3);
pref("browser.cache.jsbc_compression_level", 3);
/** MEDIA CACHE ***/
pref('media.memory_cache_max_size', 65536);
pref('media.cache_readahead_limit', 7200);
pref('media.cache_resume_threshold', 3600);
pref("media.memory_cache_max_size", 65536);
pref("media.cache_readahead_limit", 7200);
pref("media.cache_resume_threshold", 3600);
/** IMAGE CACHE ***/
pref('image.mem.decode_bytes_at_a_time', 32768);
pref("image.mem.decode_bytes_at_a_time", 32768);
/** NETWORK ***/
pref('network.buffer.cache.size', 262144);
pref('network.buffer.cache.count', 128);
pref('network.http.max-connections', 1800);
pref('network.http.max-persistent-connections-per-server', 10);
pref('network.http.max-urgent-start-excessive-connections-per-host', 5);
pref('network.http.pacing.requests.enabled', false);
pref('network.dnsCacheExpiration', 3600);
pref('network.dns.max_high_priority_threads', 8);
pref('network.ssl_tokens_cache_capacity', 10240);
pref("network.http.max-connections", 1800);
pref("network.http.max-persistent-connections-per-server", 10);
pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
pref("network.http.pacing.requests.enabled", false);
pref("network.dnsCacheExpiration", 3600);
pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
pref("network.websocket.max-connections", 400); // default=200
pref("network.ssl_tokens_cache_capacity", 10240);
/** SPECULATIVE LOADING ***/
pref('network.dns.disablePrefetch', true);
pref('network.prefetch-next', false);
pref('network.predictor.enabled', false);
/** MIXED CONTENT + CROSS-SITE ***/
pref("pdfjs.enableScripting", false);
pref("extensions.postDownloadThirdPartyPrompt", false);
/** EXPERIMENTAL ***/
pref('layout.css.grid-template-masonry-value.enabled', true);
pref('dom.enable_web_task_scheduling', true);
pref('layout.css.has-selector.enabled', true);
pref('dom.security.sanitizer.enabled', true);
pref("layout.css.grid-template-masonry-value.enabled", true);
pref("dom.enable_web_task_scheduling", true);
pref("dom.security.sanitizer.enabled", true);
/****************************************************************************
* SECTION: SECUREFOX *
****************************************************************************/
****************************************************************************/
/** TRACKING PROTECTION ***/
pref('browser.contentblocking.category', 'strict');
pref(
'urlclassifier.trackingSkipURLs',
'*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com'
);
pref(
'urlclassifier.features.socialtracking.skipURLs',
'*.instagram.com, *.twitter.com, *.twimg.com'
);
pref('network.cookie.sameSite.noneRequiresSecure', true);
pref('browser.download.start_downloads_in_tmp_dir', true);
pref('browser.helperApps.deleteTempFileOnExit', true);
pref('browser.uitour.enabled', false);
pref('privacy.globalprivacycontrol.enabled', true);
pref("browser.contentblocking.category", "strict");
pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com");
pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com");
pref("network.cookie.sameSite.noneRequiresSecure", true);
pref("browser.download.start_downloads_in_tmp_dir", true);
pref("browser.helperApps.deleteTempFileOnExit", true);
pref("browser.uitour.enabled", false);
/** OCSP & CERTS / HPKP ***/
pref('security.OCSP.enabled', 0);
pref('security.remote_settings.crlite_filters.enabled', true);
pref('security.pki.crlite_mode', 2);
pref("security.OCSP.enabled", 0);
pref("security.remote_settings.crlite_filters.enabled", true);
pref("security.pki.crlite_mode", 2);
/** SSL / TLS ***/
pref('security.ssl.treat_unsafe_negotiation_as_broken', true);
pref('browser.xul.error_pages.expert_bad_cert', true);
pref('security.tls.enable_0rtt_data', false);
pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
pref("browser.xul.error_pages.expert_bad_cert", true);
pref("security.tls.enable_0rtt_data", false);
/** DISK AVOIDANCE ***/
pref('browser.privatebrowsing.forceMediaMemoryCache', true);
pref('browser.sessionstore.interval', 60000);
pref("browser.privatebrowsing.forceMediaMemoryCache", true);
pref("browser.sessionstore.interval", 60000);
/** SHUTDOWN & SANITIZING ***/
pref('privacy.history.custom', true);
pref("privacy.history.custom", true);
/** SEARCH / URL BAR ***/
pref('browser.search.separatePrivateDefault.ui.enabled', true);
pref('browser.urlbar.update2.engineAliasRefresh', true);
pref('browser.search.suggest.enabled', false);
pref('browser.urlbar.suggest.quicksuggest.sponsored', false);
pref('browser.urlbar.suggest.quicksuggest.nonsponsored', false);
pref('security.insecure_connection_text.enabled', true);
pref('security.insecure_connection_text.pbmode.enabled', true);
pref('network.IDN_show_punycode', true);
/** HTTPS-FIRST POLICY ***/
pref('dom.security.https_first', true);
pref('dom.security.https_first_schemeless', true);
/** PASSWORDS ***/
pref('signon.formlessCapture.enabled', false);
pref('signon.privateBrowsingCapture.enabled', false);
pref('network.auth.subresource-http-auth-allow', 1);
pref('editor.truncate_user_pastes', false);
/** ADDRESS + CREDIT CARD MANAGER ***/
pref('extensions.formautofill.creditCards.enabled', false);
/** MIXED CONTENT + CROSS-SITE ***/
pref('security.mixed_content.block_display_content', true);
pref('security.mixed_content.upgrade_display_content', true);
pref('security.mixed_content.upgrade_display_content.image', true);
pref('pdfjs.enableScripting', false);
pref('extensions.postDownloadThirdPartyPrompt', false);
/** HEADERS / REFERERS ***/
pref('network.http.referer.XOriginTrimmingPolicy', 2);
pref("browser.urlbar.trimHttps", true);
pref("browser.search.separatePrivateDefault.ui.enabled", true);
pref("browser.urlbar.update2.engineAliasRefresh", true);
pref("browser.search.suggest.enabled", false);
pref("browser.urlbar.quicksuggest.enabled", false);
pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
pref("browser.urlbar.groupLabels.enabled", false);
pref("browser.formfill.enable", false);
pref("security.insecure_connection_text.enabled", true);
pref("security.insecure_connection_text.pbmode.enabled", true);
pref("network.IDN_show_punycode", true);
/** CONTAINERS ***/
pref('privacy.userContext.ui.enabled', true);
pref("privacy.userContext.ui.enabled", true);
/** WEBRTC ***/
pref('media.peerconnection.ice.proxy_only_if_behind_proxy', true);
pref('media.peerconnection.ice.default_address_only', true);
pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
pref("media.peerconnection.ice.default_address_only", true);
/** SAFE BROWSING ***/
pref('browser.safebrowsing.downloads.remote.enabled', false);
pref("browser.safebrowsing.downloads.remote.enabled", false);
/** MOZILLA ***/
pref('permissions.default.desktop-notification', 2);
pref('permissions.default.geo', 2);
pref(
'geo.provider.network.url',
'https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%'
);
pref('permissions.manager.defaultsUrl', '');
pref('webchannel.allowObject.urlWhitelist', '');
pref("permissions.default.desktop-notification", 2);
pref("permissions.default.geo", 2);
pref("permissions.manager.defaultsUrl", "");
pref("webchannel.allowObject.urlWhitelist", "");
/** TELEMETRY ***/
pref('datareporting.policy.dataSubmissionEnabled', false);
pref('datareporting.healthreport.uploadEnabled', false);
pref('toolkit.telemetry.unified', false);
pref('toolkit.telemetry.enabled', false);
pref('toolkit.telemetry.server', 'data:,');
pref('toolkit.telemetry.archive.enabled', false);
pref('toolkit.telemetry.newProfilePing.enabled', false);
pref('toolkit.telemetry.shutdownPingSender.enabled', false);
pref('toolkit.telemetry.updatePing.enabled', false);
pref('toolkit.telemetry.bhrPing.enabled', false);
pref('toolkit.telemetry.firstShutdownPing.enabled', false);
pref('toolkit.telemetry.coverage.opt-out', true);
pref('toolkit.coverage.opt-out', true);
pref('toolkit.coverage.endpoint.base', '');
pref('browser.ping-centre.telemetry', false);
pref('browser.newtabpage.activity-stream.feeds.telemetry', false);
pref('browser.newtabpage.activity-stream.telemetry', false);
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
pref("datareporting.healthreport.uploadEnabled", false, locked);
pref("toolkit.telemetry.unified", false, locked);
pref("toolkit.telemetry.enabled", false, locked);
pref("toolkit.telemetry.server", "data:,", locked);
pref("toolkit.telemetry.archive.enabled", false, locked);
pref("toolkit.telemetry.newProfilePing.enabled", false, locked);
pref("toolkit.telemetry.shutdownPingSender.enabled", false, locked);
pref("toolkit.telemetry.updatePing.enabled", false, locked);
pref("toolkit.telemetry.bhrPing.enabled", false, locked);
pref("toolkit.telemetry.firstShutdownPing.enabled", false, locked);
pref("toolkit.telemetry.coverage.opt-out", true, locked);
pref("toolkit.coverage.opt-out", true, locked);
pref("toolkit.coverage.endpoint.base", "", locked);
pref("browser.newtabpage.activity-stream.feeds.telemetry", false, locked);
pref("browser.newtabpage.activity-stream.telemetry", false, locked);
/** EXPERIMENTS ***/
pref('app.shield.optoutstudies.enabled', false);
pref('app.normandy.enabled', false);
pref('app.normandy.api_url', '');
pref("app.shield.optoutstudies.enabled", false, locked);
pref("app.normandy.enabled", false, locked);
pref("app.normandy.api_url", "", locked);
/** CRASH REPORTS ***/
pref('breakpad.reportURL', '');
pref('browser.tabs.crashReporting.sendReport', false);
pref('browser.crashReports.unsubmittedCheck.autoSubmit2', false);
pref("breakpad.reportURL", "");
pref("browser.tabs.crashReporting.sendReport", false);
pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
/** DETECTION ***/
pref('captivedetect.canonicalURL', '');
pref('network.captive-portal-service.enabled', false);
pref('network.connectivity-service.enabled', false);
pref("captivedetect.canonicalURL", "");
pref("network.captive-portal-service.enabled", false);
pref("network.connectivity-service.enabled", false);
pref("dom.private-attribution.submission.enabled", false);
/****************************************************************************
* SECTION: PESKYFOX *
****************************************************************************/
****************************************************************************/
/** MOZILLA UI ***/
pref('browser.privatebrowsing.vpnpromourl', '');
pref('extensions.getAddons.showPane', false);
pref('extensions.htmlaboutaddons.recommendations.enabled', false);
pref('browser.discovery.enabled', false);
pref('browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons', false);
pref(
'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features',
false
);
pref('browser.preferences.moreFromMozilla', false);
pref('browser.aboutwelcome.enabled', false);
pref("browser.privatebrowsing.vpnpromourl", "", locked);
pref("extensions.getAddons.showPane", false);
pref("extensions.htmlaboutaddons.recommendations.enabled", false);
pref("browser.discovery.enabled", false);
pref("browser.shell.checkDefaultBrowser", false);
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
pref("browser.preferences.moreFromMozilla", false);
pref("browser.tabs.tabmanager.enabled", false);
pref("browser.aboutConfig.showWarning", false);
pref("browser.aboutwelcome.enabled", false);
/** THEME ADJUSTMENTS ***/
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
pref('browser.compactmode.show', true);
pref('layout.css.prefers-color-scheme.content-override', 2);
pref('browser.privateWindowSeparation.enabled', false); // WINDOWS
pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
pref("browser.compactmode.show", true);
pref("browser.display.focus_ring_on_anything", true);
pref("browser.display.focus_ring_style", 0);
pref("browser.display.focus_ring_width", 0);
pref("layout.css.prefers-color-scheme.content-override", 2);
pref("browser.privateWindowSeparation.enabled", false); // WINDOWS
/** COOKIE BANNER HANDLING ***/
pref('cookiebanners.service.mode', 1);
pref('cookiebanners.service.mode.privateBrowsing', 1);
/** FULLSCREEN NOTICE ***/
pref("full-screen-api.transition-duration.enter", "0 0");
pref("full-screen-api.transition-duration.leave", "0 0");
pref("full-screen-api.warning.delay", -1);
pref("full-screen-api.warning.timeout", 0);
/** URL BAR ***/
pref('browser.urlbar.suggest.calculator', true);
pref('browser.urlbar.unitConversion.enabled', true);
pref('browser.urlbar.trending.featureGate', false);
pref("browser.urlbar.suggest.calculator", true);
pref("browser.urlbar.unitConversion.enabled", true);
pref("browser.urlbar.trending.featureGate", false);
/** NEW TAB PAGE ***/
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
pref("browser.newtabpage.activity-stream.feeds.topsites", false);
pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
/*** POCKET ***/
pref('extensions.pocket.enabled', false);
/** POCKET ***/
pref("extensions.pocket.enabled", false);
/** DOWNLOADS ***/
pref('browser.download.always_ask_before_handling_new_types', true);
pref('browser.download.manager.addToRecentDocs', false);
pref("browser.download.always_ask_before_handling_new_types", true);
pref("browser.download.manager.addToRecentDocs", false);
/** PDF ***/
pref('browser.download.open_pdf_attachments_inline', true);
pref("browser.download.open_pdf_attachments_inline", true);
/** TAB BEHAVIOR ***/
pref('browser.bookmarks.openInTabClosesMenu', false);
pref('browser.menu.showViewImageInfo', true);
pref('findbar.highlightAll', true);
pref('layout.word_select.eat_space_to_next_word', false);
pref("browser.bookmarks.openInTabClosesMenu", false);
pref("browser.menu.showViewImageInfo", true);
pref("findbar.highlightAll", true);
pref("layout.word_select.eat_space_to_next_word", false);
/****************************************************************************
* START: MY OVERRIDES *
****************************************************************************/
****************************************************************************/
// visit https://github.com/yokoffing/Betterfox/wiki/Common-Overrides
// visit https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening
// Enter your personal overrides below this line:
/****************************************************************************
* SECTION: SMOOTHFOX *
****************************************************************************/
****************************************************************************/
// visit https://github.com/yokoffing/Betterfox/blob/main/Smoothfox.js
// Enter your scrolling overrides below this line:
/****************************************************************************
* END: BETTERFOX *
****************************************************************************/
****************************************************************************/

View File

@@ -1,632 +0,0 @@
/****************************************************************************
* SECTION: GENERAL *
****************************************************************************/
// PREF: initial paint delay
// How long FF will wait before rendering the page (in ms)
// [NOTE] You may prefer using 250.
// [NOTE] Dark Reader users may want to use 1000 [3].
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1283302
// [2] https://docs.google.com/document/d/1BvCoZzk2_rNZx3u9ESPoFjSADRI0zIPeJRXFLwWXx_4/edit#heading=h.28ki6m8dg30z
// [3] https://old.reddit.com/r/firefox/comments/o0xl1q/reducing_cpu_usage_of_dark_reader_extension/
// [4] https://reddit.com/r/browsers/s/wvNB7UVCpx
//pref("nglayout.initialpaint.delay", 5); // DEFAULT; formerly 250
//pref("nglayout.initialpaint.delay_in_oopif", 5); // DEFAULT
// PREF: page reflow timer
// Rather than wait until a page has completely downloaded to display it to the user,
// web browsers will periodically render what has been received to that point.
// Because reflowing the page every time additional data is received slows down
// total page load time, a timer was added so that the page would not reflow too often.
// This preference specfies whether that timer is active.
// [1] https://kb.mozillazine.org/Content.notify.ontimer
// true = do not reflow pages at an interval any higher than that specified by content.notify.interval (default)
// false = reflow pages whenever new data is received
//pref("content.notify.ontimer", true); // DEFAULT
// PREF: notification interval (in microseconds) to avoid layout thrashing
// When Firefox is loading a page, it periodically reformats
// or "reflows" the page as it loads. The page displays new elements
// every 0.12 seconds by default. These redraws increase the total page load time.
// The default value provides good incremental display of content
// without causing an increase in page load time.
// [NOTE] Lowering the interval will increase responsiveness
// but also increase the total load time.
// [WARNING] If this value is set below 1/10 of a second, it starts
// to impact page load performance.
// [EXAMPLE] 100000 = .10s = 100 reflows/second
// [1] https://searchfox.org/mozilla-central/rev/c1180ea13e73eb985a49b15c0d90e977a1aa919c/modules/libpref/init/StaticPrefList.yaml#1824-1834
// [2] https://dev.opera.com/articles/efficient-javascript/?page=3#reflow
// [3] https://dev.opera.com/articles/efficient-javascript/?page=3#smoothspeed
pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s)
// PREF: new tab preload
// [WARNING] Disabling this may cause a delay when opening a new tab in Firefox.
// [1] https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping
// [2] https://github.com/arkenfox/user.js/issues/1556
//pref("browser.newtab.preload", true); // DEFAULT
// PREF: disable EcoQoS [WINDOWS]
// Background tab processes use efficiency mode on Windows 11 to limit resource use.
// [WARNING] Leave this alone, unless you're on Desktop and you rely on
// background tabs to have maximum performance.
// [1] https://devblogs.microsoft.com/performance-diagnostics/introducing-ecoqos/
// [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1796525
// [3] https://bugzilla.mozilla.org/show_bug.cgi?id=1800412
// [4] https://reddit.com/r/firefox/comments/107fj69/how_can_i_disable_the_efficiency_mode_on_firefox/
pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", false);
// PREF: control how tabs are loaded when a session is restored
// true=Tabs are not loaded until they are selected (default)
// false=Tabs begin to load immediately.
//pref("browser.sessionstore.restore_on_demand", true); // DEFAULT
//pref("browser.sessionstore.restore_pinned_tabs_on_demand", true);
//pref("browser.sessionstore.restore_tabs_lazily", true); // DEFAULT
// PREF: disable preSkeletonUI on startup [WINDOWS]
pref("browser.startup.preXulSkeletonUI", false);
// PREF: lazy load iframes
//pref("dom.iframe_lazy_loading.enabled", true); // DEFAULT [FF121+]
/****************************************************************************
* SECTION: GFX RENDERING TWEAKS *
****************************************************************************/
// PREF: Webrender tweaks
// [1] https://searchfox.org/mozilla-central/rev/6e6332bbd3dd6926acce3ce6d32664eab4f837e5/modules/libpref/init/StaticPrefList.yaml#6202-6219
// [2] https://hacks.mozilla.org/2017/10/the-whole-web-at-maximum-fps-how-webrender-gets-rid-of-jank/
// [3] https://www.reddit.com/r/firefox/comments/tbphok/is_setting_gfxwebrenderprecacheshaders_to_true/i0bxs2r/
// [4] https://www.reddit.com/r/firefox/comments/z5auzi/comment/ixw65gb?context=3
// [5] https://gist.github.com/RubenKelevra/fd66c2f856d703260ecdf0379c4f59db?permalink_comment_id=4532937#gistcomment-4532937
//pref("gfx.webrender.all", true); // enables WR + additional features
//pref("gfx.webrender.precache-shaders", true); // longer initial startup time
//pref("gfx.webrender.compositor", true); // DEFAULT WINDOWS macOS
//pref("gfx.webrender.compositor.force-enabled", true); // enforce
// PREF: if your hardware doesn't support Webrender, you can fallback to Webrender's software renderer
// [1] https://www.ghacks.net/2020/12/14/how-to-find-out-if-webrender-is-enabled-in-firefox-and-how-to-enable-it-if-it-is-not/
//pref("gfx.webrender.software", true); // Software Webrender uses CPU instead of GPU
//pref("gfx.webrender.software.opengl", true); // LINUX
// PREF: GPU-accelerated Canvas2D
// Use gpu-canvas instead of to skia-canvas.
// [WARNING] May cause issues on some Windows machines using integrated GPUs [2] [3]
// Add to your overrides if you have a dedicated GPU.
// [NOTE] Higher values will use more memory.
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1741501
// [2] https://github.com/yokoffing/Betterfox/issues/153
// [3] https://github.com/yokoffing/Betterfox/issues/198
//pref("gfx.canvas.accelerated", true); // DEFAULT macOS LINUX [FF110]; not compatible with WINDOWS integrated GPUs
pref("gfx.canvas.accelerated.cache-items", 4096); // default=2048; alt=8192
pref("gfx.canvas.accelerated.cache-size", 512); // default=256; alt=1024
pref("gfx.content.skia-font-cache-size", 20); // default=5; Chrome=20
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1239151#c2
// PREF: prefer GPU over CPU
// At best, the prefs do nothing on Linux/macOS.
// At worst, it'll result in crashes if the sandboxing is a WIP.
// [1] https://firefox-source-docs.mozilla.org/dom/ipc/process_model.html#gpu-process
//pref("layers.gpu-process.enabled", true); // DEFAULT WINDOWS
//pref("layers.gpu-process.force-enabled", true); // enforce
//pref("layers.mlgpu.enabled", true); // LINUX
//pref("media.hardware-video-decoding.enabled", true); // DEFAULT WINDOWS macOS
//pref("media.hardware-video-decoding.force-enabled", true); // enforce
//pref("media.gpu-process-decoder", true); // DEFAULT WINDOWS
//pref("media.ffmpeg.vaapi.enabled", true); // LINUX
// PREF: disable AV1 for hardware decodeable videos
// Firefox sometimes uses AV1 video decoding even to GPUs which do not support it.
// [1] https://www.reddit.com/r/AV1/comments/s5xyph/youtube_av1_codec_have_worse_quality_than_old_vp9
//pref("media.av1.enabled", false);
// PREF: hardware and software decoded video overlay [FF116+]
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1829063
// [2] https://phabricator.services.mozilla.com/D175993
//pref("gfx.webrender.dcomp-video-hw-overlay-win", true); // DEFAULT
//pref("gfx.webrender.dcomp-video-hw-overlay-win-force-enabled", true); // enforce
//pref("gfx.webrender.dcomp-video-sw-overlay-win", true); // DEFAULT
//pref("gfx.webrender.dcomp-video-sw-overlay-win-force-enabled", true); // enforce
/****************************************************************************
* SECTION: DISK CACHE *
****************************************************************************/
// PREF: disk cache
// [NOTE] If you think it helps performance, then feel free to override this.
// [SETTINGS] See about:cache
// More efficient to keep the browser cache instead of having to
// re-download objects for the websites you visit frequently.
// [1] https://www.janbambas.cz/new-firefox-http-cache-enabled/
//pref("browser.cache.disk.enable", true); // DEFAULT
// PREF: disk cache size
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=913808,968106,968101
// [2] https://rockridge.hatenablog.com/entry/2014/09/15/165501
// [3] https://www.reddit.com/r/firefox/comments/17oqhw3/firefox_and_ssd_disk_consumption/
//pref("browser.cache.disk.smart_size.enabled", false); // force a fixed max cache size on disk
//pref("browser.cache.disk.capacity", 512000); // default=256000; size of disk cache; 1024000=1GB, 2048000=2GB
//pref("browser.cache.disk.max_entry_size", 51200); // DEFAULT (50 MB); maximum size of an object in disk cache
// PREF: Race Cache With Network (RCWN) [FF59+]
// [ABOUT] about:networking#rcwn
// Firefox concurrently sends requests for cached resources to both the
// local disk cache and the network server. The browser uses whichever
// result arrives first and cancels the other request. This approach sometimes
// loads pages faster because the network can be quicker than accessing the cache
// on a hard drive. When RCWN is enabled, the request might be served from
// the server even if you have valid entry in the cache. Set to false if your
// intention is to increase cache usage and reduce network usage.
// [1] https://slides.com/valentingosu/race-cache-with-network-2017
// [2] https://simonhearne.com/2020/network-faster-than-cache/
// [3] https://support.mozilla.org/en-US/questions/1267945
// [4] https://askubuntu.com/questions/1214862/36-syns-in-a-row-how-to-limit-firefox-connections-to-one-website
// [5] https://bugzilla.mozilla.org/show_bug.cgi?id=1622859
//pref("network.http.rcwn.enabled", true); // DEFAULT
// PREF: attempt to RCWN only if a resource is smaller than this size
//pref("network.http.rcwn.small_resource_size_kb", 256); // DEFAULT
// PREF: cache memory pool
// Cache v2 provides a memory pool that stores metadata (such as response headers)
// for recently read cache entries [1]. It is managed by a cache thread, and caches with
// metadata in the pool appear to be reused immediately.
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=986179
//pref("browser.cache.disk.metadata_memory_limit", 500); // default=250 (0.25 MB); limit of recent metadata we keep in memory for faster access
// PREF: number of chunks we preload ahead of read
// Large content such as images will load faster.
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=913819,988318
// [2] http://www.janbambas.cz/new-firefox-http-cache-enabled/
//pref("browser.cache.disk.preload_chunk_count", 4); // DEFAULT
// PREF: the time period used to re-compute the frecency value of cache entries
// The frequency algorithm is used to select entries, and entries that are recently
// saved or frequently reused are retained. The frecency value determines how
// frequently a page has been accessed and is used by Firefox's cache algorithm.
// The frequency algorithm is used to select entries, and entries that are recently
// saved or frequently reused are retained. The frecency value determines how
// often a page has been accessed and is used by Firefox's cache algorithm.
// When the memory pool becomes full, the oldest data is purged. By default,
// data older than 6 hours is treated as old.
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=942835,1012327
// [2] https://bugzilla.mozilla.org/buglist.cgi?bug_id=913808,968101
//pref("browser.cache.frecency_half_life_hours", 6); // DEFAULT
// PREF: memory limit (in kB) for new cache data not yet written to disk
// Writes to the cache are buffered and written to disk on background with low priority.
// With a slow persistent storage, these buffers may grow when data is coming
// fast from the network. When the amount of unwritten data is exceeded, new
// writes will simply fail. We have two buckets, one for important data
// (priority) like html, css, fonts and js, and one for other data like images, video, etc.
//pref("browser.cache.disk.max_chunks_memory_usage", 40960); // DEFAULT (40 MB)
//pref("browser.cache.disk.max_priority_chunks_memory_usage", 40960); // DEFAULT (40 MB)
// PREF: how often to validate document in cache
// [1] https://searchfox.org/mozilla-release/source/modules/libpref/init/StaticPrefList.yaml#1092-1096
// 0 = once-per-session
// 3 = when-appropriate/automatically (default)
//pref("browser.cache.check_doc_frequency", 3); // DEFAULT
// PREF: enforce free space checks
// When smartsizing is disabled, we could potentially fill all disk space by
// cache data when the disk capacity is not set correctly. To avoid that, we
// check the free space every time we write some data to the cache. The free
// space is checked against two limits. Once the soft limit is reached we start
// evicting the least useful entries, when we reach the hard limit writing to
// the entry fails.
//pref("browser.cache.disk.free_space_soft_limit", 10240); // default=5120 (5 MB)
//pref("browser.cache.disk.free_space_hard_limit", 2048); // default=1024 (1 MB)
// PREF: compression level for cached JavaScript bytecode [FF102+]
// [1] https://github.com/yokoffing/Betterfox/issues/247
// 0 = do not compress (default)
// 1 = minimal compression
// 9 = maximal compression
pref("browser.cache.jsbc_compression_level", 3);
// PREF: strategy to use for when the bytecode should be encoded and saved [TESTING ONLY]
// -1 makes page load times marginally longer when a page is being loaded for the first time.
// Subsequent reload of websites will be much much faster.
// [1] https://searchfox.org/mozilla-release/source/modules/libpref/init/StaticPrefList.yaml#3461-3488
// [2] https://www.reddit.com/r/firefox/comments/12786yv/improving_performance_in_firefox_android_part_ii/
// -1 = saved as soon as the script is seen for the first time, independently of the size or last access time
// 0 = saved in order to minimize the page-load time (default)
//pref("dom.script_loader.bytecode_cache.enabled", true); // DEFAULT
//pref("dom.script_loader.bytecode_cache.strategy", 0); // DEFAULT
/****************************************************************************
* SECTION: MEMORY CACHE *
****************************************************************************/
// PREF: memory cache
// The "automatic" size selection (default) is based on a decade-old table
// that only contains settings for systems at or below 8GB of system memory [1].
// Waterfox G6 allows it to go above 8GB machines [3].
// Value can be up to the max size of an unsigned 64-bit integer.
// -1=Automatically decide the maximum memory to use to cache decoded images,
// messages, and chrome based on the total amount of RAM
// [1] https://kb.mozillazine.org/Browser.cache.memory.capacity#-1
// [2] https://searchfox.org/mozilla-central/source/netwerk/cache2/CacheObserver.cpp#94-125
// [3] https://github.com/WaterfoxCo/Waterfox/commit/3fed16932c80a2f6b37d126fe10aed66c7f1c214
//pref("browser.cache.memory.capacity", -1); // DEFAULT; 256000=256 MB; 512000=500 MB; 1048576=1GB, 2097152=2GB
//pref("browser.cache.memory.max_entry_size", 10240); // (10 MB); default=5120 (5 MB)
// PREF: amount of Back/Forward cached pages stored in memory for each tab
// Pages that were recently visited are stored in memory in such a way
// that they don't have to be re-parsed. This improves performance
// when pressing Back and Forward. This pref limits the maximum
// number of pages stored in memory. If you are not using the Back
// and Forward buttons that much, but rather using tabs, then there
// is no reason for Firefox to keep memory for this.
// -1=determine automatically (8 pages)
// [1] https://kb.mozillazine.org/Browser.sessionhistory.max_total_viewers#Possible_values_and_their_effects
//pref("browser.sessionhistory.max_total_viewers", 4);
/****************************************************************************
* SECTION: MEDIA CACHE *
****************************************************************************/
// PREF: media disk cache
//pref("media.cache_size", 512000); // DEFAULT
// PREF: media memory cache
// [1] https://hg.mozilla.org/mozilla-central/file/tip/modules/libpref/init/StaticPrefList.yaml#l9652
// [2] https://github.com/arkenfox/user.js/pull/941
pref("media.memory_cache_max_size", 65536); // default=8192; AF=65536; alt=131072
//pref("media.memory_caches_combined_limit_kb", 524288); // DEFAULT; alt=1048576
//pref("media.memory_caches_combined_limit_pc_sysmem", 5); // DEFAULT; alt=10; the percentage of system memory that Firefox can use for media caches
// PREF: Media Source Extensions (MSE) web standard
// Disabling MSE allows videos to fully buffer, but you're limited to 720p.
// [WARNING] Disabling MSE may break certain videos.
// false=Firefox plays the old WebM format
// true=Firefox plays the new WebM format (default)
// [1] https://support.mozilla.org/en-US/questions/1008271
//pref("media.mediasource.enabled", true); // DEFAULT
// PREF: adjust video buffering periods when not using MSE (in seconds)
// [NOTE] Does not affect videos over 720p since they use DASH playback [1]
// [1] https://lifehacker.com/preload-entire-youtube-videos-by-disabling-dash-playbac-1186454034
pref("media.cache_readahead_limit", 7200); // 120 min; default=60; stop reading ahead when our buffered data is this many seconds ahead of the current playback
pref("media.cache_resume_threshold", 3600); // 60 min; default=30; when a network connection is suspended, don't resume it until the amount of buffered data falls below this threshold
/****************************************************************************
* SECTION: IMAGE CACHE *
****************************************************************************/
// PREF: image cache
//pref("image.cache.size", 5242880); // DEFAULT; in MiB; alt=10485760 (cache images up to 10MiB in size)
pref("image.mem.decode_bytes_at_a_time", 32768); // default=16384; alt=65536; chunk size for calls to the image decoders
// PREF: set minimum timeout to unmap shared surfaces since they have been last used
// This is only used on 32-bit builds of Firefox where there is meaningful
// virtual address space pressure.
// [1] https://phabricator.services.mozilla.com/D109440
// [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1699224
//pref("image.mem.shared.unmap.min_expiration_ms", 120000); // default=60000; minimum timeout to unmap shared surfaces since they have been last used
/****************************************************************************
* SECTION: NETWORK *
****************************************************************************/
// PREF: use bigger packets
// [WARNING] Cannot open HTML files bigger than 4MB if changed [2].
// Reduce Firefox's CPU usage by requiring fewer application-to-driver data transfers.
// However, it does not affect the actual packet sizes transmitted over the network.
// [1] https://www.mail-archive.com/support-seamonkey@lists.mozilla.org/msg74561.html
// [2] https://github.com/yokoffing/Betterfox/issues/279
//pref("network.buffer.cache.size", 262144); // 256 kb; default=32768 (32 kb)
//pref("network.buffer.cache.count", 128); // default=24
// PREF: increase the absolute number of HTTP connections
// [1] https://kb.mozillazine.org/Network.http.max-connections
// [2] https://kb.mozillazine.org/Network.http.max-persistent-connections-per-server
// [3] https://www.reddit.com/r/firefox/comments/11m2yuh/how_do_i_make_firefox_use_more_of_my_900_megabit/jbfmru6/
pref("network.http.max-connections", 1800); // default=900
pref("network.http.max-persistent-connections-per-server", 10); // default=6; download connections; anything above 10 is excessive
pref("network.http.max-urgent-start-excessive-connections-per-host", 5); // default=3
//pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
//pref("network.websocket.max-connections", 200); // DEFAULT
// PREF: pacing requests [FF23+]
// Controls how many HTTP requests are sent at a time.
// Pacing HTTP requests can have some benefits, such as reducing network congestion,
// improving web page loading speed, and avoiding server overload.
// Pacing requests adds a slight delay between requests to throttle them.
// If you have a fast machine and internet connection, disabling pacing
// may provide a small speed boost when loading pages with lots of requests.
// false=Firefox will send as many requests as possible without pacing
// true=Firefox will pace requests (default)
pref("network.http.pacing.requests.enabled", false);
//pref("network.http.pacing.requests.min-parallelism", 10); // default=6
//pref("network.http.pacing.requests.burst", 14); // default=10
// PREF: increase DNS cache
// [1] https://developer.mozilla.org/en-US/docs/Web/Performance/Understanding_latency
//pref("network.dnsCacheEntries", 1000); // default=400
// PREF: adjust DNS expiration time
// [ABOUT] about:networking#dns
// [NOTE] These prefs will be ignored by DNS resolver if using DoH/TRR.
pref("network.dnsCacheExpiration", 3600); // keep entries for 1 hour
//pref("network.dnsCacheExpirationGracePeriod", 240); // default=60; cache DNS entries for 4 minutes after they expire
// PREF: the number of threads for DNS
//pref("network.dns.max_high_priority_threads", 40); // DEFAULT [FF 123?]
//pref("network.dns.max_any_priority_threads", 24); // DEFAULT [FF 123?]
// PREF: increase TLS token caching
pref("network.ssl_tokens_cache_capacity", 10240); // default=2048; more TLS token caching (fast reconnects)
/****************************************************************************
* SECTION: SPECULATIVE LOADING *
****************************************************************************/
// These are connections that are not explicitly asked for (e.g., clicked on).
// [1] https://developer.mozilla.org/en-US/docs/Web/Performance/Speculative_loading
// [NOTE] FF85+ partitions (isolates) pooled connections, prefetch connections,
// pre-connect connections, speculative connections, TLS session identifiers,
// and other connections. We can take advantage of the speed of pre-connections
// while preserving privacy. Users may relax hardening to maximize their preference.
// For more information, see SecureFox: "PREF: State Paritioning" and "PREF: Network Partitioning".
// [NOTE] To activate and increase network predictions, go to settings in uBlock Origin and uncheck:
// - "Disable pre-fetching (to prevent any connection for blocked network requests)"
// [NOTE] Add prefs to "MY OVERRIDES" section and uncomment to enable them in your user.js.
// PREF: link-mouseover opening connection to linked server
// When accessing content online, devices use sockets as endpoints.
// The global limit on half-open sockets controls how many speculative
// connection attempts can occur at once when starting new connections [3].
// If the user follows through, pages can load faster since some
// work was done in advance. Firefox opens predictive connections
// to sites when hovering over New Tab thumbnails or starting a
// URL Bar search [1] and hyperlinks within a page [2].
// [NOTE] DNS (if enabled), TCP, and SSL handshakes are set up in advance,
// but page contents are not downloaded until a click on the link is registered.
// [1] https://support.mozilla.org/en-US/kb/how-stop-firefox-making-automatic-connections?redirectslug=how-stop-firefox-automatically-making-connections&redirectlocale=en-US#:~:text=Speculative%20pre%2Dconnections
// [2] https://news.slashdot.org/story/15/08/14/2321202/how-to-quash-firefoxs-silent-requests
// [3] https://searchfox.org/mozilla-central/rev/028c68d5f32df54bca4cf96376f79e48dfafdf08/modules/libpref/init/all.js#1280-1282
// [4] https://www.keycdn.com/blog/resource-hints#prefetch
// [5] https://3perf.com/blog/link-rels/#prefetch
//pref("network.http.speculative-parallel-limit", 20); // DEFAULT (FF127+?)
// PREF: DNS prefetching for HTMLLinkElement <link rel="dns-prefetch">
// Used for cross-origin connections to provide small performance improvements.
// You can enable rel=dns-prefetch for the HTTPS document without prefetching
// DNS for anchors, whereas the latter makes more specualtive requests [5].
// [1] https://bitsup.blogspot.com/2008/11/dns-prefetching-for-firefox.html
// [2] https://css-tricks.com/prefetching-preloading-prebrowsing/#dns-prefetching
// [3] https://www.keycdn.com/blog/resource-hints#2-dns-prefetching
// [4] http://www.mecs-press.org/ijieeb/ijieeb-v7-n5/IJIEEB-V7-N5-2.pdf
// [5] https://bugzilla.mozilla.org/show_bug.cgi?id=1596935#c28
pref("network.dns.disablePrefetch", true);
pref("network.dns.disablePrefetchFromHTTPS", true); // [FF127+ false]
// PREF: DNS prefetch for HTMLAnchorElement (speculative DNS)
// Disable speculative DNS calls to prevent Firefox from resolving
// hostnames for other domains linked on a page. This may eliminate
// unnecessary DNS lookups, but can increase latency when following external links.
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1596935#c28
// [2] https://github.com/arkenfox/user.js/issues/1870#issuecomment-2220773972
//pref("dom.prefetch_dns_for_anchor_http_document", false); // [FF128+]
//pref("dom.prefetch_dns_for_anchor_https_document", false); // DEFAULT [FF128+]
// PREF: enable <link rel="preconnect"> tag and Link: rel=preconnect response header handling
//pref("network.preconnect", true); // DEFAULT
// PREF: preconnect to the autocomplete URL in the address bar
// Whether to warm up network connections for autofill or search results.
// Firefox preloads URLs that autocomplete when a user types into the address bar.
// Connects to destination server ahead of time, to avoid TCP handshake latency.
// [NOTE] Firefox will perform DNS lookup (if enabled) and TCP and TLS handshake,
// but will not start sending or receiving HTTP data.
// [1] https://www.ghacks.net/2017/07/24/disable-preloading-firefox-autocomplete-urls/
//pref("browser.urlbar.speculativeConnect.enabled", false);
// PREF: mousedown speculative connections on bookmarks and history [FF98+]
// Whether to warm up network connections for places:menus and places:toolbar.
//pref("browser.places.speculativeConnect.enabled", false);
// PREF: network module preload <link rel="modulepreload"> [FF115+]
// High-priority loading of current page JavaScript modules.
// Used to preload high-priority JavaScript modules for strategic performance improvements.
// Module preloading allows developers to fetch JavaScript modules and dependencies
// earlier to accelerate page loads. The browser downloads, parses, and compiles modules
// referenced by links with this attribute in parallel with other resources, rather
// than sequentially waiting to process each. Preloading reduces overall download times.
// Browsers may also automatically preload dependencies without firing extra events.
// Unlike other pre-connection tags (except rel=preload), this tag is mandatory for the browser.
// [1] https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/modulepreload
//pref("network.modulepreload", true); // DEFAULT
// PREF: link prefetching <link rel="prefetch">
// Pre-populates the HTTP cache by prefetching same-site future navigation
// resources or subresources used on those pages.
// Enabling link prefetching allows Firefox to preload pages tagged as important.
// The browser prefetches links with the prefetch-link tag, fetching resources
// likely needed for the next navigation at low priority. When clicking a link
// or loading a new page, prefetching stops and discards hints. Prefetching
// downloads resources without executing them.
// [NOTE] Since link prefetch uses the HTTP cache, it has a number of issues
// with document prefetches, such as being potentially blocked by Cache-Control headers
// (e.g. cache partitioning).
// [1] https://developer.mozilla.org/en-US/docs/Glossary/Prefetch
// [2] http://www.mecs-press.org/ijieeb/ijieeb-v7-n5/IJIEEB-V7-N5-2.pdf
// [3] https://timkadlec.com/remembers/2020-06-17-prefetching-at-this-age/
// [4] https://3perf.com/blog/link-rels/#prefetch
// [5] https://developer.mozilla.org/docs/Web/HTTP/Link_prefetching_FAQ
pref("network.prefetch-next", false);
// PREF: Fetch Priority API [FF119+]
// Indicates whether the `fetchpriority` attribute for elements which support it.
// [1] https://web.dev/articles/fetch-priority
// [2] https://nitropack.io/blog/post/priority-hints
// [2] https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/fetchPriority
// [3] https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement/fetchPriority
//pref("network.fetchpriority.enabled", true);
// PREF: early hints [FF120+]
// [1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/103
// [2] https://developer.chrome.com/blog/early-hints/
// [3] https://blog.cloudflare.com/early-hints/
// [4] https://blog.cloudflare.com/early-hints-performance/
//pref("network.early-hints.enabled", true);
// PREF: `Link: rel=preconnect` in 103 Early Hint response [FF120+]
// Used to warm most critical cross-origin connections to provide
// performance improvements when connecting to them.
// [NOTE] When 0, this is limited by "network.http.speculative-parallel-limit".
//pref("network.early-hints.preconnect.enabled", true);
//pref("network.early-hints.preconnect.max_connections", 10); // DEFAULT
// PREF: Network Predictor (NP)
// When enabled, it trains and uses Firefox's algorithm to preload page resource
// by tracking past page resources. It uses a local file (history) of needed images,
// scripts, etc. to request them preemptively when navigating.
// [NOTE] By default, it only preconnects, doing DNS, TCP, and SSL handshakes.
// No data sends until clicking. With "network.predictor.enable-prefetch" enabled,
// it also performs prefetches.
// [1] https://wiki.mozilla.org/Privacy/Reviews/Necko
// [2] https://www.ghacks.net/2014/05/11/seer-disable-firefox/
// [3] https://github.com/dillbyrne/random-agent-spoofer/issues/238#issuecomment-110214518
// [4] https://www.igvita.com/posa/high-performance-networking-in-google-chrome/#predictor
pref("network.predictor.enabled", false);
// PREF: Network Predictor fetch for resources ahead of time
// Prefetch page resources based on past user behavior.
//pref("network.predictor.enable-prefetch", false); // DEFAULT
// PREF: make Network Predictor active when hovering over links
// When hovering over links, Network Predictor uses past resource history to
// preemptively request what will likely be needed instead of waiting for the document.
// Predictive connections automatically open when hovering over links to speed up
// loading, starting some work in advance.
//pref("network.predictor.enable-hover-on-ssl", false); // DEFAULT
// PREF: assign Network Predictor confidence levels
// [NOTE] Keep in mind that Network Predictor must LEARN your browsing habits.
// Editing these lower will cause more speculative connections to occur,
// which reduces accuracy over time and has privacy implications.
//pref("network.predictor.preresolve-min-confidence", 60); // DEFAULT
//pref("network.predictor.preconnect-min-confidence", 90); // DEFAULT
//pref("network.predictor.prefetch-min-confidence", 100); // DEFAULT
// PREF: other Network Predictor values
// [NOTE] Keep in mmind that Network Predictor must LEARN your browsing habits.
//pref("network.predictor.prefetch-force-valid-for", 10); // DEFAULT; how long prefetched resources are considered valid and usable (in seconds) for the prediction modeling
//pref("network.predictor.prefetch-rolling-load-count", 10); // DEFAULT; the maximum number of resources that Firefox will prefetch in memory at one time based on prediction modeling
//pref("network.predictor.max-resources-per-entry", 250); // default=100
//pref("network.predictor.max-uri-length", 1000); // default=500
/****************************************************************************
* SECTION: EXPERIMENTAL *
****************************************************************************/
// PREF: CSS Masonry Layout [NIGHTLY]
// [1] https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Masonry_Layout
pref("layout.css.grid-template-masonry-value.enabled", true);
// PREF: Prioritized Task Scheduling API [NIGHTLY]
// [1] https://blog.mozilla.org/performance/2022/06/02/prioritized-task-scheduling-api-is-prototyped-in-nightly/
// [2] https://medium.com/airbnb-engineering/building-a-faster-web-experience-with-the-posttask-scheduler-276b83454e91
pref("dom.enable_web_task_scheduling", true);
// PREF: HTML Sanitizer API [NIGHTLY]
// [1] https://developer.mozilla.org/en-US/docs/Web/API/Sanitizer
// [2] https://caniuse.com/mdn-api_sanitizer
pref("dom.security.sanitizer.enabled", true);
// PREF: WebGPU [HIGHLY EXPERIMENTAL!]
// [WARNING] Do not enable unless you are a web developer!
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1746245
// [2] https://developer.chrome.com/docs/web-platform/webgpu/
// [3] https://github.com/gpuweb/gpuweb/wiki/Implementation-Status
// [4] https://hacks.mozilla.org/2020/04/experimental-webgpu-in-firefox/
//pref("dom.webgpu.enabled", true);
//pref("gfx.webgpu.force-enabled", true); // enforce
// enable WebGPU indirect draws/dispatches:
//pref("dom.webgpu.indirect-dispatch.enabled", true);
/****************************************************************************
* SECTION: TAB UNLOAD *
****************************************************************************/
// PREF: unload tabs on low memory
// [ABOUT] about:unloads
// Firefox will detect if your computers memory is running low (less than 200MB)
// and suspend tabs that you have not used in awhile.
// [1] https://support.mozilla.org/en-US/kb/unload-inactive-tabs-save-system-memory-firefox
// [2] https://hacks.mozilla.org/2021/10/tab-unloading-in-firefox-93/
//pref("browser.tabs.unloadOnLowMemory", true); // DEFAULT
// PREF: determine when tabs unload [WINDOWS] [LINUX]
// Notify TabUnloader or send the memory pressure if the memory resource
// notification is signaled AND the available commit space is lower than
// this value.
// Set this to some high value, e.g. 2/3 of total memory available in your system:
// 4GB=2640, 8GB=5280, 16GB=10560, 32GB=21120, 64GB=42240
// [1] https://dev.to/msugakov/taking-firefox-memory-usage-under-control-on-linux-4b02
//pref("browser.low_commit_space_threshold_mb", 2640); // default=200; WINDOWS LINUX
// PREF: determine when tabs unload [LINUX]
// On Linux, Firefox checks available memory in comparison to total memory,
// and use this percent value (out of 100) to determine if Firefox is in a
// low memory scenario.
// [1] https://dev.to/msugakov/taking-firefox-memory-usage-under-control-on-linux-4b02
//pref("browser.low_commit_space_threshold_percent", 33); // default=5; LINUX
// PREF: determine how long (in ms) tabs are inactive before they unload
// 60000=1min; 300000=5min; 600000=10min (default)
//pref("browser.tabs.min_inactive_duration_before_unload", 300000); // 5min; default=600000
/****************************************************************************
* SECTION: PROCESS COUNT *
****************************************************************************/
// PREF: process count
// [ABOUT] View in about:processes.
// With Firefox Quantum (2017), CPU cores = processCount. However, since the
// introduction of Fission [2], the number of website processes is controlled
// by processCount.webIsolated. Disabling fission.autostart or changing
// fission.webContentIsolationStrategy reverts control back to processCount.
// [1] https://www.reddit.com/r/firefox/comments/r69j52/firefox_content_process_limit_is_gone/
// [2] https://firefox-source-docs.mozilla.org/dom/ipc/process_model.html#web-content-processes
//pref("dom.ipc.processCount", 8); // DEFAULT; Shared Web Content
//pref("dom.ipc.processCount.webIsolated", 1); // default=4; Isolated Web Content
// PREF: use one process for process preallocation cache
//pref("dom.ipc.processPrelaunch.fission.number", 1); // default=3; Process Preallocation Cache
// PREF: configure process isolation
// [1] https://hg.mozilla.org/mozilla-central/file/tip/dom/ipc/ProcessIsolation.cpp#l53
// [2] https://www.reddit.com/r/firefox/comments/r69j52/firefox_content_process_limit_is_gone/
// OPTION 1: isolate all websites
// Web content is always isolated into its own `webIsolated` content process
// based on site-origin, and will only load in a shared `web` content process
// if site-origin could not be determined.
//pref("fission.webContentIsolationStrategy", 1); // DEFAULT
//pref("browser.preferences.defaultPerformanceSettings.enabled", true); // DEFAULT
//pref("dom.ipc.processCount.webIsolated", 1); // one process per site origin
// OPTION 2: isolate only "high value" websites
// Only isolates web content loaded by sites which are considered "high
// value". A site is considered high value if it has been granted a
// `highValue*` permission by the permission manager, which is done in
// response to certain actions.
//pref("fission.webContentIsolationStrategy", 2);
//pref("browser.preferences.defaultPerformanceSettings.enabled", false);
//pref("dom.ipc.processCount.webIsolated", 1); // one process per site origin (high value)
//pref("dom.ipc.processCount", 8); // determine by number of CPU cores/processors
// OPTION 3: do not isolate websites
// All web content is loaded into a shared `web` content process. This is
// similar to the non-Fission behavior; however, remote subframes may still
// be used for sites with special isolation behavior, such as extension or
// mozillaweb content processes.
//pref("fission.webContentIsolationStrategy", 0);
//pref("browser.preferences.defaultPerformanceSettings.enabled", false);
//pref("dom.ipc.processCount", 8); // determine by number of CPU cores/processors

View File

@@ -13,15 +13,15 @@ pref("browser.tabs.hoverPreview.enabled", true);
pref("browser.tabs.cardPreview.delayMs", 100);
#ifdef MOZ_UPDATE_CHANNEL
pref("devtools.debugger.prompt-connection", false);
pref("devtools.debugger.prompt-connection", true);
#endif
// Dont download the multilingual dictionary
pref("intl.multilingual.downloadEnabled", false);
// Theme
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
pref('browser.compactmode.show', true);
pref('browser.display.focus_ring_on_anything', true);
pref('browser.display.focus_ring_style', 0);
pref('browser.display.focus_ring_width', 0);
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
pref('browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled', true);
@@ -59,19 +59,33 @@ pref("browser.ping-centre.telemetry", false);
pref("browser.attribution.enabled", false);
pref("toolkit.telemetry.pioneer-new-studies-available", false);
pref("app.update.checkInstallTime.days", 2);
// CUSTOM ZEN PREFS
pref('zen.welcomeScreen.enabled', true);
pref('zen.welcomeScreen.seen', false);
pref('zen.tabs.vertical', true);
pref('zen.tabs.vertical.right-side', false);
pref('zen.theme.accent-color', "#aac7ff");
pref('zen.theme.border-radius', 10); // In pixels
pref('zen.theme.toolbar-themed', true);
pref('zen.theme.pill-button', false);
pref('zen.theme.floating-urlbar', false);
pref('zen.view.compact', false);
pref('zen.view.compact.hide-toolbar', false);
pref('zen.view.sidebar-expanded', false);
pref('zen.view.sidebar-expanded.on-hover', false);
pref('zen.view.sidebar-expanded.show-button', true);
pref('zen.view.sidebar-expanded.max-width', 400);
pref('zen.view.sidebar-collapsed.hide-mute-button', true);
pref('zen.keyboard.shortcuts.enabled', true);
pref('zen.keyboard.shortcuts', ""); // Empty string means default shortcuts
pref('zen.keyboard.shortcuts.disable-firefox', false);
pref('zen.tabs.dim-pending', true);
pref('zen.themes.updated-value-observer', false);
// Pref to enable the new profiles (TODO: Check this out!)
//pref("browser.profiles.enabled", true);
@@ -79,7 +93,7 @@ pref('zen.view.sidebar-expanded.show-button', true);
// Zen Sidebar
pref('zen.sidebar.data', "{\"data\":\n {\"p1\":{\n \"url\":\"https://www.wikipedia.org/\"\n },\n\"p2\":{\n \"url\":\"https://m.twitter.com/\",\n\"ua\": true\n },\n\"p3\": {\n \"url\": \"https://www.youtube.com/\",\n\"ua\": true\n},\n\"p4\": {\n \"url\": \"https://translate.google.com/\",\n\"ua\": true\n},\n\"p5\": {\n \"url\": \"https://todoist.com/\",\n\"ua\": true\n}},\n\"index\":[\"p1\",\"p2\",\"p3\",\"p4\",\"p5\"]}");
pref('zen.sidebar.enabled', true);
pref('zen.sidebar.floating', true);
pref('zen.sidebar.close-on-blur', true);
// Zen Split View
pref('zen.splitView.working', false);
@@ -88,27 +102,77 @@ pref('zen.splitView.working', false);
pref('zen.workspaces.enabled', true);
// Zen Watermark
pref('zen.watermark.enabled', true);
pref('zen.watermark.enabled', true, sticky);
// Smooth scrolling
user_pref('apz.overscroll.enabled', true); // not DEFAULT on Linux
user_pref('general.smoothScroll', true); // DEFAULT
pref('apz.overscroll.enabled', true); // not DEFAULT on Linux
pref('general.smoothScroll', true); // DEFAULT
// Privacy
pref('dom.private-attribution.submission.enabled', false);
pref('dom.security.https_only_mode', true);
pref('media.eme.enabled', true);
pref('webgl.disabled', false);
pref("app.update.url.manual", "https://get-zen.vercel.app/download");
pref("app.update.url.details", "hhttps://get-zen.vercel.app/download");
pref("app.releaseNotesURL", "https://get-zen.vercel.app/release-notes");
pref("app.releaseNotesURL.aboutDialog", "https://get-zen.vercel.app/release-notes");
pref("app.update.url.manual", "https://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.aboutDialog", "https://www.zen-browser.app/release-notes");
// Enable importers for other browsers
pref('browser.migrate.vivaldi.enabled', true);
pref('browser.migrate.opera-gx.enabled', true);
pref('browser.migrate.opera.enabled', true);
#include fast-fox.js
#include better-fox.js
// DNS
// pref('network.proxy.type', 0);
// pref('network.trr.mode', 5);
pref('xpinstall.signatures.required', false);
// Experimental Zen Features
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
pref('dom.script_loader.bytecode_cache.strategy', 2);
// Font rendering, not for MacOSX and Linux
#ifndef XP_UNIX
#ifndef XP_MACOSX
pref('gfx.font_rendering.cleartype_params.rendering_mode', 5);
pref('gfx.font_rendering.cleartype_params.gamma', 1750);
#endif
#endif
pref('gfx.webrender.all', true);
pref('layers.acceleration.force-enabled', true);
#include better-fox.js
// Betterfox overrides (Stay below the include directive)
// Jang's personal speedups (Thanks to Jang for these!)
// Prefetching:
pref("network.dns.disablePrefetch", false);
pref("network.prefetch-next", true);
pref("network.predictor.enabled", true);
pref("network.dns.disablePrefetchFromHTTPS", false);
pref("network.predictor.enable-hover-on-ssl", true);
pref("network.http.speculative-parallel-limit", 10);
pref("network.http.rcwn.enabled", false);
// Enable Browser Toolbox, Ctrl+Shift+Alt+I for debugging and modifying UI
pref("devtools.debugger.remote-enabled", false);
pref("devtools.chrome.enabled", true);
// Disable firefox's revamp
pref("sidebar.revamp", false, locked);
pref("sidebar.verticalTabs", false, locked);
// Better Windows theming
pref("widget.non-native-theme.scrollbar.style", 2);
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", "");

View File

@@ -1,544 +0,0 @@
var gZenBrowserManagerSidebar = {
_sidebarElement: null,
_currentPanel: null,
_lastOpenedPanel: null,
_hasChangedConfig: true,
_splitterElement: null,
_hSplitterElement: null,
_hasRegisteredPinnedClickOutside: false,
_isDragging: false,
contextTab: null,
DEFAULT_MOBILE_USER_AGENT: "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36 Edg/114.0.1823.79",
MAX_SIDEBAR_PANELS: 8, // +1 for the add panel button
MAX_RUNS: 3,
init() {
this.update();
this.close(); // avoid caching
this.listenForPrefChanges();
this.insertIntoContextMenu();
},
get sidebarData() {
let services = Services.prefs.getStringPref("zen.sidebar.data");
if (services === "") {
return {};
}
return JSON.parse(services);
},
listenForPrefChanges() {
Services.prefs.addObserver("zen.sidebar.data", this.handleEvent.bind(this));
Services.prefs.addObserver("zen.sidebar.enabled", this.handleEvent.bind(this));
Services.prefs.addObserver("zen.sidebar.floating", this.handleEvent.bind(this));
let sidebar = document.getElementById("zen-sidebar-web-panel");
this.splitterElement.addEventListener("mousedown", (function(event) {
let computedStyle = window.getComputedStyle(sidebar);
let maxWidth = parseInt(computedStyle.getPropertyValue("max-width").replace("px", ""));
let minWidth = parseInt(computedStyle.getPropertyValue("min-width").replace("px", ""));
if (!this._isDragging) { // Prevent multiple resizes
this._isDragging = true;
let sidebarWidth = sidebar.getBoundingClientRect().width;
let startX = event.clientX;
let startWidth = sidebarWidth;
let mouseMove = (function(e) {
let newWidth = startWidth + e.clientX - startX;
if (newWidth <= minWidth+10) {
newWidth = minWidth+1;
} else if (newWidth >= maxWidth-10) {
newWidth = maxWidth-1;
}
sidebar.style.width = `${newWidth}px`;
});
let mouseUp = (function() {
this.handleEvent();
this._isDragging = false;
document.removeEventListener("mousemove", mouseMove);
document.removeEventListener("mouseup", mouseUp);
}).bind(this);
document.addEventListener("mousemove", mouseMove);
document.addEventListener("mouseup", mouseUp);
}
}).bind(this));
this.hSplitterElement.addEventListener("mousedown", (function(event) {
let computedStyle = window.getComputedStyle(sidebar);
const parent = sidebar.parentElement;
// relative to avoid the top margin
// 20px is the padding
let parentRelativeHeight = parent.getBoundingClientRect().height - parent.getBoundingClientRect().top + 20;
let minHeight = parseInt(computedStyle.getPropertyValue("min-height").replace("px", ""));
if (!this._isDragging) { // Prevent multiple resizes
this._isDragging = true;
let sidebarHeight = sidebar.getBoundingClientRect().height;
let startY = event.clientY;
let startHeight = sidebarHeight;
let mouseMove = (function(e) {
let newHeight = startHeight + e.clientY - startY;
if (newHeight <= minHeight+10) {
newHeight = minHeight+1;
} else if (newHeight >= parentRelativeHeight) { // 10px is the padding
newHeight = parentRelativeHeight;
}
sidebar.style.height = `${newHeight}px`;
});
let mouseUp = (function() {
this.handleEvent();
this._isDragging = false;
document.removeEventListener("mousemove", mouseMove);
document.removeEventListener("mouseup", mouseUp);
}).bind(this);
document.addEventListener("mousemove", mouseMove);
document.addEventListener("mouseup", mouseUp);
}
}).bind(this));
this.handleEvent();
},
handleEvent() {
this._hasChangedConfig = true;
this.update();
this._hasChangedConfig = false;
// https://stackoverflow.com/questions/11565471/removing-event-listener-which-was-added-with-bind
var clickOutsideHandler = this._handleClickOutside.bind(this);
if (Services.prefs.getBoolPref("zen.sidebar.floating") && !this._hasRegisteredPinnedClickOutside) {
document.addEventListener("mouseup", clickOutsideHandler);
this._hasRegisteredPinnedClickOutside = true;
} else if (!Services.prefs.getBoolPref("zen.sidebar.floating") && this._hasRegisteredPinnedClickOutside) {
document.removeEventListener("mouseup", clickOutsideHandler);
this._hasRegisteredPinnedClickOutside = false;
}
const button = document.getElementById("zen-sidepanel-button");
if (Services.prefs.getBoolPref("zen.sidebar.enabled")) {
button.removeAttribute("hidden");
} else {
button.setAttribute("hidden", "true");
this._closeSidebarPanel();
return;
}
},
_handleClickOutside(event) {
let sidebar = document.getElementById("zen-sidebar-web-panel");
if (!sidebar.hasAttribute("pinned") || !this._currentPanel || this._isDragging) {
return;
}
let target = event.target;
const closestSelector = [
"#zen-sidebar-web-panel",
"#zen-sidebar-panels-wrapper",
"#zenWebPanelContextMenu",
"#zen-sidebar-web-panel-splitter",
"#contentAreaContextMenu"
].join(", ");
if (target.closest(closestSelector)) {
return;
}
this.close();
},
toggle() {
if (!this._currentPanel) {
this._currentPanel = this._lastOpenedPanel;
}
if (document.getElementById("zen-sidebar-web-panel").hasAttribute("hidden")) {
this.open();
return;
}
this.close();
},
open() {
let sidebar = document.getElementById("zen-sidebar-web-panel");
sidebar.removeAttribute("hidden");
this.update();
},
update() {
this._updateWebPanels();
this._updateSidebarButton();
this._updateWebPanel();
this._updateButtons();
},
_updateSidebarButton() {
let button = document.getElementById("zen-sidepanel-button");
if (!document.getElementById("zen-sidebar-web-panel").hasAttribute("hidden")) {
button.setAttribute("open", "true");
} else {
button.removeAttribute("open");
}
},
_updateWebPanels() {
if (Services.prefs.getBoolPref("zen.sidebar.enabled")) {
this.sidebarElement.removeAttribute("hidden");
} else {
this.sidebarElement.setAttribute("hidden", "true");
this._closeSidebarPanel();
return;
}
let data = this.sidebarData;
if (!data.data || !data.index) {
return;
}
this.sidebarElement.innerHTML = "";
for (let site of data.index) {
let panel = data.data[site];
if (!panel || !panel.url) {
continue;
}
let button = document.createXULElement("toolbarbutton");
button.classList.add("zen-sidebar-panel-button", "toolbarbutton-1", "chromeclass-toolbar-additional");
button.setAttribute("flex", "1");
button.setAttribute("zen-sidebar-id", site);
button.setAttribute("context", "zenWebPanelContextMenu");
this._getWebPanelIcon(panel.url, button);
button.addEventListener("click", this._handleClick.bind(this));
this.sidebarElement.appendChild(button);
}
const addButton = document.getElementById("zen-sidebar-add-panel-button");
if (data.index.length < this.MAX_SIDEBAR_PANELS) {
addButton.removeAttribute("hidden");
} else {
addButton.setAttribute("hidden", "true");
}
},
async _openAddPanelDialog() {
let dialogURL = "chrome://browser/content/places/zenNewWebPanel.xhtml";
let features = "centerscreen,chrome,modal,resizable=no";
let aParentWindow = Services.wm.getMostRecentWindow("navigator:browser");
if (aParentWindow?.gDialogBox) {
await aParentWindow.gDialogBox.open(dialogURL, {});
} else {
aParentWindow.openDialog(dialogURL, "", features, {});
}
},
_setPinnedToElements() {
let sidebar = document.getElementById("zen-sidebar-web-panel");
sidebar.setAttribute("pinned", "true");
document.getElementById("zen-sidebar-web-panel-pinned").setAttribute("pinned", "true");
},
_removePinnedFromElements() {
let sidebar = document.getElementById("zen-sidebar-web-panel");
sidebar.removeAttribute("pinned");
document.getElementById("zen-sidebar-web-panel-pinned").removeAttribute("pinned");
},
_closeSidebarPanel() {
let sidebar = document.getElementById("zen-sidebar-web-panel");
sidebar.setAttribute("hidden", "true");
this._lastOpenedPanel = this._currentPanel;
this._currentPanel = null;
},
_handleClick(event) {
let target = event.target;
let panelId = target.getAttribute("zen-sidebar-id");
if (this._currentPanel === panelId) {
return;
}
this._currentPanel = panelId;
this._updateWebPanel();
},
_createNewPanel(url) {
let data = this.sidebarData;
let newName = "p" + new Date().getTime();
data.index.push(newName);
data.data[newName] = {
url: url,
ua: false,
};
Services.prefs.setStringPref("zen.sidebar.data", JSON.stringify(data));
this._currentPanel = newName;
this.open();
},
_updateButtons() {
for (let button of this.sidebarElement.querySelectorAll(".zen-sidebar-panel-button")) {
if (button.getAttribute("zen-sidebar-id") === this._currentPanel) {
button.setAttribute("selected", "true");
} else {
button.removeAttribute("selected");
}
}
},
_hideAllWebPanels() {
let sidebar = document.getElementById("zen-sidebar-web-panel");
for (let browser of sidebar.querySelectorAll("browser[zen-sidebar-id]")) {
browser.setAttribute("hidden", "true");
browser.docShellIsActive = false;
}
},
get introductionPanel() {
return document.getElementById("zen-sidebar-introduction-panel");
},
_updateWebPanel() {
this._updateButtons();
let sidebar = document.getElementById("zen-sidebar-web-panel");
this._hideAllWebPanels();
if (!this._currentPanel) {
this.introductionPanel.removeAttribute("hidden");
return;
}
this.introductionPanel.setAttribute("hidden", "true");
let existantWebview = this._getCurrentBrowser();
if (existantWebview) {
existantWebview.docShellIsActive = true;
existantWebview.removeAttribute("hidden");
document.getElementById("zen-sidebar-web-panel-title").textContent = existantWebview.contentTitle;
return;
}
let data = this._getWebPanelData(this._currentPanel);
let browser = this._createWebPanelBrowser(data);
let browserContainers = document.getElementById("zen-sidebar-web-panel-browser-containers");
browserContainers.appendChild(browser);
if (data.ua) {
browser.browsingContext.customUserAgent = this.DEFAULT_MOBILE_USER_AGENT;
}
browser.docShellIsActive = true;
},
_getWebPanelData(id) {
let data = this.sidebarData;
let panel = data.data[id];
if (!panel || !panel.url) {
return {};
}
return {
id: id,
...panel,
};
},
_createWebPanelBrowser(data) {
const titleContainer = document.getElementById("zen-sidebar-web-panel-title");
titleContainer.textContent = "Loading...";
let browser = gBrowser.createBrowser({});
browser.setAttribute("disablefullscreen", "true");
browser.setAttribute("src", data.url);
browser.setAttribute("zen-sidebar-id", data.id);
browser.setAttribute("disableglobalhistory", "true");
browser.setAttribute("autoscroll", "false");
browser.setAttribute("autocompletepopup", "PopupAutoComplete");
browser.setAttribute("contextmenu", "contentAreaContextMenu");
browser.setAttribute("disablesecurity", "true");
browser.addEventListener("pagetitlechanged", (function(event) {
let browser = event.target;
let title = browser.contentTitle;
if (!title) {
return;
}
let id = browser.getAttribute("zen-sidebar-id");
if (id === this._currentPanel) {
titleContainer.textContent = title;
}
}).bind(this));
return browser;
},
_getWebPanelIcon(url, element) {
let { preferredURI } = Services.uriFixup.getFixupURIInfo(url);
element.setAttribute("image", `page-icon:${preferredURI.spec}`);
fetch(`https://s2.googleusercontent.com/s2/favicons?domain_url=${preferredURI.spec}`).then(async response => {
if (response.ok) {
let blob = await response.blob();
let reader = new FileReader();
reader.onload = function() {
element.setAttribute("image", reader.result);
};
reader.readAsDataURL(blob);
}
});
},
_getBrowserById(id) {
let sidebar = document.getElementById("zen-sidebar-web-panel");
return sidebar.querySelector(`browser[zen-sidebar-id="${id}"]`);
},
_getCurrentBrowser() {
return this._getBrowserById(this._currentPanel);
},
reload() {
let browser = this._getCurrentBrowser();
if (browser) {
browser.reload();
}
},
forward() {
let browser = this._getCurrentBrowser();
if (browser) {
browser.goForward();
}
},
back() {
let browser = this._getCurrentBrowser();
if (browser) {
browser.goBack();
}
},
home() {
let browser = this._getCurrentBrowser();
if (browser) {
browser.gotoIndex();
}
},
close() {
this._hideAllWebPanels();
this._closeSidebarPanel();
this._updateSidebarButton();
},
togglePinned(elem) {
let sidebar = document.getElementById("zen-sidebar-web-panel");
if (sidebar.hasAttribute("pinned")) {
this._removePinnedFromElements();
} else {
this._setPinnedToElements();
}
Services.prefs.setBoolPref("zen.sidebar.floating", sidebar.hasAttribute("pinned"));
this.update();
},
get sidebarElement() {
if (!this._sidebarElement) {
this._sidebarElement = document.getElementById("zen-sidebar-panels-sites");
}
return this._sidebarElement;
},
get splitterElement() {
if (!this._splitterElement) {
this._splitterElement = document.getElementById("zen-sidebar-web-panel-splitter");
}
return this._splitterElement;
},
get hSplitterElement() {
if (!this._hSplitterElement) {
this._hSplitterElement = document.getElementById("zen-sidebar-web-panel-hsplitter");
}
return this._hSplitterElement;
},
// Context menu
updateContextMenu(aPopupMenu) {
let panel =
aPopupMenu.triggerNode &&
(aPopupMenu.triggerNode || aPopupMenu.triggerNode.closest("toolbarbutton[zen-sidebar-id]"));
if (!panel) {
return;
}
let id = panel.getAttribute("zen-sidebar-id");
this.contextTab = id;
let data = this._getWebPanelData(id);
let browser = this._getBrowserById(id);
let isMuted = browser && browser.audioMuted;
let mutedContextItem = document.getElementById("context_zenToggleMuteWebPanel");
document.l10n.setAttributes(mutedContextItem,
!isMuted ? "zen-web-side-panel-context-mute-panel" : "zen-web-side-panel-context-unmute-panel");
if (!isMuted) {
mutedContextItem.setAttribute("muted", "true");
} else {
mutedContextItem.removeAttribute("muted");
}
document.l10n.setAttributes(document.getElementById("context_zenToogleUAWebPanel"),
data.ua ? "zen-web-side-panel-context-disable-ua" : "zen-web-side-panel-context-enable-ua");
if (!browser) {
document.getElementById("context_zenUnloadWebPanel").setAttribute("disabled", "true");
} else {
document.getElementById("context_zenUnloadWebPanel").removeAttribute("disabled");
}
},
contextOpenNewTab() {
let browser = this._getBrowserById(this.contextTab);
let data = this.sidebarData;
let panel = data.data[this.contextTab];
let url = (browser == null) ? panel.url : browser.currentURI.spec;
gZenUIManager.openAndChangeToTab(url);
this.close();
},
contextToggleMuteAudio() {
let browser = this._getBrowserById(this.contextTab);
if (browser.audioMuted) {
browser.unmute();
} else {
browser.mute();
}
},
contextToggleUserAgent() {
let browser = this._getBrowserById(this.contextTab);
browser.browsingContext.customUserAgent = browser.browsingContext.customUserAgent ? null : this.DEFAULT_MOBILE_USER_AGENT;
let data = this.sidebarData;
data.data[this.contextTab].ua = !data.data[this.contextTab].ua;
Services.prefs.setStringPref("zen.sidebar.data", JSON.stringify(data));
browser.reload();
},
contextDelete() {
let data = this.sidebarData;
delete data.data[this.contextTab];
data.index = data.index.filter(id => id !== this.contextTab);
let browser = this._getBrowserById(this.contextTab);
if (browser) {
browser.remove();
}
this._closeSidebarPanel();
this.close();
this._lastOpenedPanel = null;
Services.prefs.setStringPref("zen.sidebar.data", JSON.stringify(data));
},
contextUnload() {
let browser = this._getBrowserById(this.contextTab);
browser.remove();
this._closeSidebarPanel();
this.close();
this._lastOpenedPanel = null;
},
insertIntoContextMenu() {
const sibling = document.getElementById("context-stripOnShareLink");
const menuitem = document.createXULElement("menuitem");
menuitem.setAttribute("id", "context-zenAddToWebPanel");
menuitem.setAttribute("hidden", "true");
menuitem.setAttribute("oncommand", "gZenBrowserManagerSidebar.addPanelFromContextMenu();");
menuitem.setAttribute("data-l10n-id", "zen-web-side-panel-context-add-to-panel");
sibling.insertAdjacentElement("afterend", menuitem);
},
addPanelFromContextMenu() {
const url = gContextMenu.linkURL || gContextMenu.target.ownerDocument.location.href;
this._createNewPanel(url);
},
};
gZenBrowserManagerSidebar.init();

View File

@@ -0,0 +1,120 @@
var ZenStartup = {
init() {
this._changeSidebarLocation();
this._zenInitBrowserLayout();
window.SessionStore.promiseInitialized.then(async () => {
this._focusSearchBar();
});
},
_zenInitBrowserLayout() {
if (this.__hasInitBrowserLayout) return;
this.__hasInitBrowserLayout = true;
this.openWatermark();
console.info("ZenThemeModifier: init browser layout");
const kNavbarItems = [
"nav-bar",
"PersonalToolbar"
];
const kNewContainerId = "zen-appcontent-navbar-container";
let newContainer = document.getElementById(kNewContainerId);
for (let id of kNavbarItems) {
const node = document.getElementById(id);
console.assert(node, "Could not find node with id: " + id);
if (!node) continue;
newContainer.appendChild(node);
}
// Fix notification deck
document.getElementById("zen-appcontent-navbar-container")
.appendChild(document.getElementById("tab-notification-deck-template"));
gZenVerticalTabsManager.init();
gZenCompactModeManager.init();
gZenKeyboardShortcuts.init();
function throttle(f, delay) {
let timer = 0;
return function(...args) {
clearTimeout(timer);
timer = setTimeout(() => f.apply(this, args), delay);
}
}
new ResizeObserver(throttle(
this._updateTabsToolbar.bind(this), 1000
)).observe(document.getElementById("tabbrowser-tabs"));
this.closeWatermark();
},
_updateTabsToolbar() {
// Set tabs max-height to the "toolbar-items" height
const toolbarItems = document.getElementById("tabbrowser-tabs");
const tabs = document.getElementById("tabbrowser-arrowscrollbox");
tabs.style.maxHeight = '0px'; // reset to 0
const toolbarRect = toolbarItems.getBoundingClientRect();
// -5 for the controls padding
tabs.style.maxHeight = toolbarRect.height - 5 + "px";
console.info("ZenThemeModifier: set tabs max-height to", toolbarRect.height + "px");
},
openWatermark() {
if (!Services.prefs.getBoolPref("zen.watermark.enabled", false)) {
return;
}
const watermark = window.MozXULElement.parseXULToFragment(`
<html:div id="zen-watermark">
<image src="chrome://branding/content/about-logo.png" />
</html:div>
`);
document.body.appendChild(watermark);
},
closeWatermark() {
const watermark = document.getElementById("zen-watermark");
if (watermark) {
watermark.setAttribute("hidden", "true");
}
},
_changeSidebarLocation() {
const kElementsToAppend = [
"sidebar-splitter",
"sidebar-box",
];
const wrapper = document.getElementById("zen-tabbox-wrapper");
const appWrapepr = document.getElementById("zen-sidebar-box-container");
for (let id of kElementsToAppend) {
const elem = document.getElementById(id);
if (elem) {
wrapper.prepend(elem);
}
}
appWrapepr.setAttribute("hidden", "true");
const browser = document.getElementById("browser")
const toolbox = document.getElementById("navigator-toolbox");
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
const splitter = document.createXULElement("splitter");
splitter.setAttribute("id", "zen-sidebar-splitter");
splitter.setAttribute("orient", "horizontal");
splitter.setAttribute("resizebefore", "sibling");
splitter.setAttribute("resizeafter", "none");
toolbox.insertAdjacentElement("afterend", splitter);
},
_focusSearchBar() {
gURLBar.focus();
},
};
ZenStartup.init();

View File

@@ -21,14 +21,63 @@ var gZenUIManager = {
const button = document.getElementById('zen-bookmark-button');
SidebarController.toggle('viewBookmarksSidebar', button);
},
createValidXULText(text) {
return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
};
var gZenVerticalTabsManager = {
init() {
//Services.prefs.addObserver('zen.view.compact', this._updateEvent.bind(this));
//Services.prefs.addObserver('zen.view.sidebar-expanded', this._updateEvent.bind(this));
Services.prefs.addObserver('zen.view.sidebar-expanded', this._updateEvent.bind(this));
Services.prefs.addObserver('zen.view.sidebar-expanded.max-width', this._updateEvent.bind(this));
Services.prefs.addObserver('zen.view.sidebar-expanded.on-hover', this._updateOnHoverVerticalTabs.bind(this));
this._updateMaxWidth();
this.initRightSideOrderContextMenu();
this._updateOnHoverVerticalTabs();
},
_updateOnHoverVerticalTabs() {
let onHover = Services.prefs.getBoolPref('zen.view.sidebar-expanded.on-hover');
let sidebar = document.getElementById('navigator-toolbox');
if (onHover) {
sidebar.setAttribute('zen-user-hover', 'true');
} else {
sidebar.removeAttribute('zen-user-hover');
}
},
initRightSideOrderContextMenu() {
const kConfigKey = 'zen.tabs.vertical.right-side';
const fragment = window.MozXULElement.parseXULToFragment(`
<menuitem id="zen-toolbar-context-tabs-right"
type="checkbox"
${Services.prefs.getBoolPref(kConfigKey) ? 'checked="true"' : ''}
data-lazy-l10n-id="zen-toolbar-context-tabs-right"/>
`);
fragment.getElementById("zen-toolbar-context-tabs-right").addEventListener('click', () => {
let rightSide = Services.prefs.getBoolPref(kConfigKey);
Services.prefs.setBoolPref(kConfigKey, !rightSide);
});
document.getElementById('viewToolbarsMenuSeparator').before(fragment);
},
_updateEvent() {
this._updateMaxWidth();
},
_updateMaxWidth() {
let isCompactMode = Services.prefs.getBoolPref('zen.view.compact');
let expanded = this.expanded;
let maxWidth = Services.prefs.getIntPref('zen.view.sidebar-expanded.max-width');
let toolbox = document.getElementById('navigator-toolbox');
if (expanded && !isCompactMode) {
toolbox.style.maxWidth = `${maxWidth}px`;
} else {
toolbox.style.removeProperty('maxWidth');
}
},
get expanded() {
return Services.prefs.getBoolPref('zen.view.sidebar-expanded');
@@ -56,9 +105,38 @@ var gZenVerticalTabsManager = {
toggleExpand() {
let expanded = !this.expanded;
Services.prefs.setBoolPref('zen.view.sidebar-expanded', expanded);
let toolbox = document.getElementById('navigator-toolbox');
toolbox.removeAttribute('width');
toolbox.style.removeProperty('width');
Services.prefs.setBoolPref('zen.view.sidebar-expanded.on-hover', false);
},
};
var gZenCompactModeManager = {
init() {
Services.prefs.addObserver('zen.view.compact', this._updateEvent.bind(this));
},
get prefefence() {
return Services.prefs.getBoolPref('zen.view.compact');
},
set preference(value) {
Services.prefs.setBoolPref('zen.view.compact', value);
},
_updateEvent() {
Services.prefs.setBoolPref('zen.view.sidebar-expanded.on-hover', false);
},
toggle() {
this.preference = !this.prefefence;
},
toggleSidebar() {
let sidebar = document.getElementById('navigator-toolbox');
sidebar.toggleAttribute('zen-user-show');
},
toggleToolbar() {
let toolbar = document.getElementById('zen-appcontent-navbar-container');
toolbar.toggleAttribute('zen-user-show');
}
};

View File

@@ -1,305 +0,0 @@
var gZenViewSplitter = {
/**
* [
* {
* tabs: [
* tab1,
* tab2,
* tab3,
* ],
* gridType: "vsep" | "hsep" | "grid",
* }
* ]
*/
_data: [],
currentView: -1,
init() {
Services.prefs.setBoolPref("zen.splitView.working", false);
window.addEventListener("TabClose", this);
this.insertIntoContextMenu();
console.log("ZenViewSplitter initialized");
},
handleEvent(event) {
switch (event.type) {
case "TabClose":
this.onTabClose(event);
}
},
insertIntoContextMenu() {
const sibling = document.getElementById("context-stripOnShareLink");
const menuitem = document.createXULElement("menuitem");
menuitem.setAttribute("id", "context-zenSplitLink");
menuitem.setAttribute("hidden", "true");
menuitem.setAttribute("oncommand", "gZenViewSplitter.contextSplitLink();");
menuitem.setAttribute("data-l10n-id", "zen-split-link");
const separator = document.createXULElement("menuseparator");
sibling.insertAdjacentElement("afterend", menuitem);
sibling.insertAdjacentElement("afterend", separator);
},
get tabBrowserPanel() {
if (!this._tabBrowserPanel) {
this._tabBrowserPanel = document.getElementById("tabbrowser-tabpanels");
}
return this._tabBrowserPanel;
},
onTabClose(event) {
const tab = event.target;
let index = this._data.findIndex((group) => group.tabs.includes(tab));
if (index < 0) {
return;
}
let dataTab = this._data[index].tabs;
dataTab.splice(dataTab.indexOf(tab), 1);
tab._zenSplitted = false;
tab.linkedBrowser.zenModeActive = false;
let container = tab.linkedBrowser.closest(".browserSidebarContainer");
container.removeAttribute("zen-split");
if (!event.forUnsplit) {
tab.linkedBrowser.docShellIsActive = false;
container.style.display = "none";
} else {
container.style.gridArea = "1 / 1";
}
if (dataTab.length < 2) {
this._data.splice(index, 1);
if (this.currentView == index) {
console.assert(dataTab.length == 1, "Data tab length is not 1");
this.currentView = -1;
this.tabBrowserPanel.removeAttribute("zen-split-view");
this.tabBrowserPanel.style.gridTemplateAreas = "";
this.tabBrowserPanel.style.gridGap = "0px";
Services.prefs.setBoolPref("zen.splitView.working", false);
for (const tab of dataTab) {
let container = tab.linkedBrowser.closest(".browserSidebarContainer");
container.removeAttribute("zen-split");
container.style.gridArea = "1 / 1";
tab._zenSplitted = false;
}
}
return;
}
let lastTab = dataTab[dataTab.length - 1];
this._showSplitView(lastTab);
},
contextSplitLink() {
const url = gContextMenu.linkURL || gContextMenu.target.ownerDocument.location.href;
const tab = gBrowser.selectedTab;
const newTab = gZenUIManager.openAndChangeToTab(url);
this.splitTabs([tab, newTab]);
},
onLocationChange(browser) {
let tab = gBrowser.getTabForBrowser(browser);
this.updateSplitViewButton(!(tab && tab._zenSplitted));
if (!tab) {
return;
}
this._showSplitView(tab);
},
splitTabs(tabs) {
if (tabs.length < 2) {
return;
}
// Check if any tab is already split
for (const tab of tabs) {
if (tab._zenSplitted) {
let index = this._data.findIndex((group) => group.tabs.includes(tab));
if (index < 0) {
return;
}
this._showSplitView(tab);
return;
}
}
this._data.push({
tabs,
gridType: "grid",
});
gBrowser.selectedTab = tabs[0];
this._showSplitView(tabs[0]);
},
_showSplitView(tab) {
const splitData = this._data.find((group) => group.tabs.includes(tab));
function modifyDecks(tabs, add) {
for (const tab of tabs) {
tab.linkedBrowser.zenModeActive = add;
tab.linkedBrowser.docShellIsActive = add;
let browser = tab.linkedBrowser.closest(".browserSidebarContainer");
if (add) {
browser.setAttribute("zen-split", "true");
continue;
}
browser.removeAttribute("zen-split");
}
}
const handleClick = (tab) => {
return ((event) => {
gBrowser.selectedTab = tab;
})
};
if (!splitData || (this.currentView >= 0 && !this._data[this.currentView].tabs.includes(tab))) {
this.updateSplitViewButton(true);
if (this.currentView < 0) {
return;
}
for (const tab of this._data[this.currentView].tabs) {
//tab._zenSplitted = false;
let container = tab.linkedBrowser.closest(".browserSidebarContainer");
container.removeAttribute("zen-split-active");
container.classList.remove("deck-selected");
console.assert(container, "No container found for tab");
container.removeEventListener("click", handleClick(tab));
container.style.gridArea = "";
}
this.tabBrowserPanel.removeAttribute("zen-split-view");
this.tabBrowserPanel.style.gridTemplateAreas = "";
Services.prefs.setBoolPref("zen.splitView.working", false);
modifyDecks(this._data[this.currentView].tabs, false);
// console.log("Setting the active tab to be active", gBrowser.selectedTab);
gBrowser.selectedTab.linkedBrowser.docShellIsActive = true; // Make sure the active tab is active
this.currentView = -1;
if (!splitData) {
return;
}
}
this.tabBrowserPanel.setAttribute("zen-split-view", "true");
Services.prefs.setBoolPref("zen.splitView.working", true);
this.currentView = this._data.indexOf(splitData);
let gridType = splitData.gridType || "grid"; // TODO: let user decide the grid type
let i = 0;
// 2 rows, infinite columns
let currentRowGridArea = ["", ""/* first row, second row */];
let numberOfRows = 0;
for (const _tab of splitData.tabs) {
_tab._zenSplitted = true;
let container = _tab.linkedBrowser.closest(".browserSidebarContainer");
console.assert(container, "No container found for tab");
container.removeAttribute("zen-split-active");
if (_tab == tab) {
container.setAttribute("zen-split-active", "true");
}
container.setAttribute("zen-split-anim", "true");
container.addEventListener("click", handleClick(_tab));
// Set the grid type for the container. If the grid type is not "grid", then set the grid type contain
// each column or row. If it's "grid", then try to create
if (gridType == "grid") {
// Each 2 tabs, create a new row
if (i % 2 == 0) {
currentRowGridArea[0] += ` tab${i + 1}`;
} else {
currentRowGridArea[1] += ` tab${i + 1}`;
numberOfRows++;
}
container.style.gridArea = `tab${i + 1}`;
}
i++;
}
if (gridType == "grid") {
if ((numberOfRows < splitData.tabs.length / 2) && (splitData.tabs.length != 2)) {
// Make the last tab occupy the last row
currentRowGridArea[1] += ` tab${i}`;
}
if (gridType == "grid" && (splitData.tabs.length === 2)) {
currentRowGridArea[0] = `tab1 tab2`;
currentRowGridArea[1] = "";
}
this.tabBrowserPanel.style.gridTemplateAreas = `'${currentRowGridArea[0]}'`;
if (currentRowGridArea[1] != "") {
this.tabBrowserPanel.style.gridTemplateAreas += ` '${currentRowGridArea[1]}'`;
}
} else if (gridType == "vsep") {
this.tabBrowserPanel.style.gridTemplateAreas = `'${splitData.tabs.map((_, i) => `tab${i + 1}`).join(" ")}'`;
} else if (gridType == "hsep") {
this.tabBrowserPanel.style.gridTemplateAreas = `${splitData.tabs.map((_, i) => `'tab${i + 1}'`).join(" ")}`;
}
modifyDecks(splitData.tabs, true);
this.updateSplitViewButton(false);
},
contextSplitTabs() {
let tabs = gBrowser.selectedTabs;
this.splitTabs(tabs);
},
contextCanSplitTabs() {
if (gBrowser.selectedTabs.length < 2) {
return false;
}
// Check if any tab is already split
for (const tab of gBrowser.selectedTabs) {
if (tab._zenSplitted) {
return false;
}
}
return true;
},
// Panel and url button
updateSplitViewButton(hidden) {
let button = document.getElementById("zen-split-views-box");
if (hidden) {
button.setAttribute("hidden", "true");
return;
}
button.removeAttribute("hidden");
},
get _modifierElement() {
if (!this.__modifierElement) {
let wrapper = document.getElementById("template-zen-split-view-modifier");
const panel = wrapper.content.firstElementChild;
wrapper.replaceWith(wrapper.content);
this.__modifierElement = panel;
}
return this.__modifierElement;
},
async openSplitViewPanel(event) {
let panel = this._modifierElement;
let target = event.target.parentNode;
for (const gridType of ["hsep", "vsep", "grid", "unsplit"]) {
let selector = panel.querySelector(`.zen-split-view-modifier-preview.${gridType}`);
selector.classList.remove("active");
if (this.currentView >= 0 && this._data[this.currentView].gridType == gridType) {
selector.classList.add("active");
}
if (this.__hasSetMenuListener) {
continue;
}
selector.addEventListener("click", ((gridType) => {
if (gridType === "unsplit") {
let currentTab = gBrowser.selectedTab;
let tabs = this._data[this.currentView].tabs;
for (const tab of tabs) {
this.onTabClose({ target: tab, forUnsplit: true });
}
gBrowser.selectedTab = currentTab;
panel.hidePopup();
this.updateSplitViewButton(true);
return;
}
this._data[this.currentView].gridType = gridType;
this._showSplitView(gBrowser.selectedTab);
panel.hidePopup();
}).bind(this, gridType));
}
this.__hasSetMenuListener = true;
PanelMultiView.openPopup(panel, target, {
position: "bottomright topright",
triggerEvent: event,
}).catch(console.error);
},
};
gZenViewSplitter.init();

View File

@@ -1,426 +0,0 @@
var ZenWorkspaces = {
async init() {
let docElement = document.documentElement;
if (docElement.getAttribute("chromehidden").includes("toolbar")
|| docElement.getAttribute("chromehidden").includes("menubar")
|| docElement.hasAttribute("privatebrowsingmode")) {
console.warn("ZenWorkspaces: !!! ZenWorkspaces is disabled in hidden windows !!!");
return; // We are in a hidden window, don't initialize ZenWorkspaces
}
console.log("ZenWorkspaces: Initializing ZenWorkspaces...");
await this.initializeWorkspaces();
console.log("ZenWorkspaces: ZenWorkspaces initialized");
},
get workspaceEnabled() {
return Services.prefs.getBoolPref("zen.workspaces.enabled", false);
},
// Wrorkspaces saving/loading
get _storeFile() {
return PathUtils.join(
PathUtils.profileDir,
"zen-workspaces",
"Workspaces.json",
);
},
async _workspaces() {
if (!this._workspaceCache) {
this._workspaceCache = await IOUtils.readJSON(this._storeFile);
if (!this._workspaceCache.workspaces) {
this._workspaceCache.workspaces = [];
}
}
return this._workspaceCache;
},
onWorkspacesEnabledChanged() {
if (this.workspaceEnabled) {
this.initializeWorkspaces();
} else {
this._workspaceCache = null;
document.getElementById("zen-workspaces-button")?.remove();
for (let tab of gBrowser.tabs) {
gBrowser.showTab(tab);
}
}
},
async initializeWorkspaces() {
Services.prefs.addObserver("zen.workspaces.enabled", this.onWorkspacesEnabledChanged.bind(this));
this.initializeWorkspacesButton();
let file = new FileUtils.File(this._storeFile);
if (!file.exists()) {
await IOUtils.writeJSON(this._storeFile, {});
}
if (this.workspaceEnabled) {
let workspaces = await this._workspaces();
if (workspaces.workspaces.length === 0) {
await this.createAndSaveWorkspace("Default Workspace", true);
} else {
let activeWorkspace = workspaces.workspaces.find(workspace => workspace.default);
if (!activeWorkspace) {
activeWorkspace = workspaces.workspaces.find(workspace => workspace.used);
activeWorkspace.used = true;
await this.saveWorkspaces();
}
if (!activeWorkspace) {
activeWorkspace = workspaces.workspaces[0];
activeWorkspace.used = true;
await this.saveWorkspaces();
}
await this.changeWorkspace(activeWorkspace);
}
this._initializeWorkspaceIcons();
}
},
_initializeWorkspaceIcons() {
const kIcons = ["🏠", "📄", "💹", "💼", "📧", "✅", "👥"];
let container = document.getElementById("PanelUI-zen-workspaces-create-icons-container");
for (let icon of kIcons) {
let button = document.createXULElement("toolbarbutton");
button.className = "toolbarbutton-1";
button.setAttribute("label", icon);
button.onclick = ((event) => {
for (let button of container.children) {
button.removeAttribute("selected");
}
button.setAttribute("selected", "true");
}).bind(this, button);
container.appendChild(button);
}
},
async saveWorkspace(workspaceData) {
let json = await IOUtils.readJSON(this._storeFile);
if (typeof json.workspaces === "undefined") {
json.workspaces = [];
}
json.workspaces.push(workspaceData);
console.log("ZenWorkspaces: Saving workspace", workspaceData);
await IOUtils.writeJSON(this._storeFile, json);
this._workspaceCache = null;
},
async removeWorkspace(windowID) {
let json = await this._workspaces();
console.log("ZenWorkspaces: Removing workspace", windowID);
await this.changeWorkspace(json.workspaces.find(workspace => workspace.uuid !== windowID));
this._deleteAllTabsInWorkspace(windowID);
json.workspaces = json.workspaces.filter(workspace => workspace.uuid !== windowID);
await this.unsafeSaveWorkspaces(json);
await this._propagateWorkspaceData();
},
async saveWorkspaces() {
await IOUtils.writeJSON(this._storeFile, await this._workspaces());
this._workspaceCache = null;
},
async unsafeSaveWorkspaces(workspaces) {
await IOUtils.writeJSON(this._storeFile, workspaces);
this._workspaceCache = null;
},
// Workspaces dialog UI management
openSaveDialog() {
let parentPanel = document.getElementById("PanelUI-zen-workspaces-multiview");
PanelUI.showSubView("PanelUI-zen-workspaces-create", parentPanel);
},
cancelWorkspaceCreation() {
let parentPanel = document.getElementById("PanelUI-zen-workspaces-multiview");
parentPanel.goBack();
},
workspaceHasIcon(workspace) {
return typeof workspace.icon !== "undefined" && workspace.icon !== "";
},
getWorkspaceIcon(workspace) {
if (this.workspaceHasIcon(workspace)) {
return workspace.icon;
}
return workspace.name[0].toUpperCase();
},
async _propagateWorkspaceData() {
let currentContainer = document.getElementById("PanelUI-zen-workspaces-current-info");
let workspaceList = document.getElementById("PanelUI-zen-workspaces-list");
const createWorkspaceElement = (workspace) => {
let element = document.createXULElement("toolbarbutton");
element.className = "subviewbutton";
element.setAttribute("tooltiptext", workspace.name);
element.setAttribute("zen-workspace-id", workspace.uuid);
//element.setAttribute("context", "zenWorkspaceActionsMenu");
let childs = window.MozXULElement.parseXULToFragment(`
<div class="zen-workspace-icon">
${this.getWorkspaceIcon(workspace)}
</div>
<div class="zen-workspace-name">
${workspace.name}
</div>
<toolbarbutton closemenu="none" class="toolbarbutton-1 zen-workspace-actions">
<image class="toolbarbutton-icon" id="zen-workspace-actions-menu-icon"></image>
</toolbarbutton>
`);
childs.querySelector(".zen-workspace-actions").addEventListener("command", ((event) => {
let button = event.target;
this._contextMenuId = button.closest("toolbarbutton[zen-workspace-id]").getAttribute("zen-workspace-id");
const popup = button.ownerDocument.getElementById(
"zenWorkspaceActionsMenu"
);
popup.openPopup(button, "after_end");
}).bind(this));
element.appendChild(childs);
element.onclick = (async () => {
if (event.target.closest(".zen-workspace-actions")) {
return; // Ignore clicks on the actions button
}
await this.changeWorkspace(workspace)
let panel = document.getElementById("PanelUI-zen-workspaces");
PanelMultiView.hidePopup(panel);
}).bind(this, workspace);
return element;
}
let workspaces = await this._workspaces();
let activeWorkspace = workspaces.workspaces.find(workspace => workspace.used);
currentContainer.innerHTML = "";
workspaceList.innerHTML = "";
workspaceList.parentNode.style.display = "flex";
if (workspaces.workspaces.length - 1 <= 0) {
workspaceList.innerHTML = "No workspaces available";
workspaceList.setAttribute("empty", "true");
} else {
workspaceList.removeAttribute("empty");
}
if (activeWorkspace) {
let currentWorkspace = createWorkspaceElement(activeWorkspace);
currentContainer.appendChild(currentWorkspace);
}
for (let workspace of workspaces.workspaces) {
if (workspace.used) {
continue;
}
let workspaceElement = createWorkspaceElement(workspace);
workspaceList.appendChild(workspaceElement);
}
},
async openWorkspacesDialog(event) {
if (!this.workspaceEnabled) {
return;
}
let target = event.target;
let panel = document.getElementById("PanelUI-zen-workspaces");
await this._propagateWorkspaceData();
PanelMultiView.openPopup(panel, target, {
position: "bottomright topright",
triggerEvent: event,
}).catch(console.error);
},
initializeWorkspacesButton() {
if (!this.workspaceEnabled) {
return;
} else if (document.getElementById("zen-workspaces-button")) {
let button = document.getElementById("zen-workspaces-button");
button.removeAttribute("hidden");
return;
}
let browserTabs = document.getElementById("tabbrowser-tabs");
let button = document.createElement("toolbarbutton");
button.id = "zen-workspaces-button";
button.className = "toolbarbutton-1 chromeclass-toolbar-additional";
button.setAttribute("label", "Workspaces");
button.setAttribute("tooltiptext", "Workspaces");
button.onclick = this.openWorkspacesDialog.bind(this);
browserTabs.insertAdjacentElement("beforebegin", button);
},
async _updateWorkspacesButton() {
let button = document.getElementById("zen-workspaces-button");
if (!button) {
return;
}
let activeWorkspace = (await this._workspaces()).workspaces.find(workspace => workspace.used);
if (activeWorkspace) {
button.innerHTML = `
<div class="zen-workspace-sidebar-icon">
${this.getWorkspaceIcon(activeWorkspace)}
</div>
<div class="zen-workspace-sidebar-name">
${activeWorkspace.name}
</div>
`;
if (!this.workspaceHasIcon(activeWorkspace)) {
button.querySelector(".zen-workspace-sidebar-icon").setAttribute("no-icon", "true");
}
}
},
// Workspaces management
get _workspaceInput() {
return document.getElementById("PanelUI-zen-workspaces-create-input");
},
_deleteAllTabsInWorkspace(workspaceID) {
for (let tab of gBrowser.tabs) {
if (tab.getAttribute("zen-workspace-id") === workspaceID) {
gBrowser.removeTab(tab, {
animate: true,
skipSessionStore: true,
closeWindowWithLastTab: false,
});
}
}
},
_prepareNewWorkspace(window) {
document.documentElement.setAttribute("zen-workspace-id", window.uuid);
let tabCount = 0;
for (let tab of gBrowser.tabs) {
if (!tab.hasAttribute("zen-workspace-id")) {
tab.setAttribute("zen-workspace-id", window.uuid);
tabCount++;
}
}
if (tabCount === 0) {
this._createNewTabForWorkspace(window);
}
},
_createNewTabForWorkspace(window) {
let tab = gZenUIManager.openAndChangeToTab(Services.prefs.getStringPref("browser.startup.homepage"));
tab.setAttribute("zen-workspace-id", window.uuid);
},
async saveWorkspaceFromInput() {
// Go to the next view
let parentPanel = document.getElementById("PanelUI-zen-workspaces-multiview");
PanelUI.showSubView("PanelUI-zen-workspaces-create-icons", parentPanel);
},
async saveWorkspaceFromIcon() {
let workspaceName = this._workspaceInput.value;
if (!workspaceName) {
return;
}
this._workspaceInput.value = "";
let icon = document.querySelector("#PanelUI-zen-workspaces-create-icons-container [selected]");
icon?.removeAttribute("selected");
await this.createAndSaveWorkspace(workspaceName, false, icon?.label);
document.getElementById("PanelUI-zen-workspaces").hidePopup(true);
},
onWorkspaceNameChange(event) {
let button = document.getElementById("PanelUI-zen-workspaces-create-save");
if (this._workspaceInput.value === "") {
button.setAttribute("disabled", "true");
return;
}
button.removeAttribute("disabled");
},
async changeWorkspace(window) {
if (!this.workspaceEnabled) {
return;
}
let firstTab = undefined;
let workspaces = await this._workspaces();
for (let workspace of workspaces.workspaces) {
workspace.used = workspace.uuid === window.uuid;
}
this.unsafeSaveWorkspaces(workspaces);
console.log("ZenWorkspaces: Changing workspace to", window.uuid);
for (let tab of gBrowser.tabs) {
if (tab.getAttribute("zen-workspace-id") === window.uuid && !tab.pinned) {
if (!firstTab) {
firstTab = tab;
gBrowser.selectedTab = firstTab;
}
gBrowser.showTab(tab);
}
}
if (typeof firstTab === "undefined") {
this._createNewTabForWorkspace(window);
}
for (let tab of gBrowser.tabs) {
if (tab.getAttribute("zen-workspace-id") !== window.uuid) {
gBrowser.hideTab(tab);
}
}
document.documentElement.setAttribute("zen-workspace-id", window.uuid);
await this.saveWorkspaces();
await this._updateWorkspacesButton();
await this._propagateWorkspaceData();
},
_createWorkspaceData(name, isDefault, icon) {
let window = {
uuid: gZenUIManager.generateUuidv4(),
default: isDefault,
used: true,
icon: icon,
name: name,
};
this._prepareNewWorkspace(window);
return window;
},
async createAndSaveWorkspace(name = "New Workspace", isDefault = false, icon = undefined) {
if (!this.workspaceEnabled) {
return;
}
let workspaceData = this._createWorkspaceData(name, isDefault, icon);
await this.saveWorkspace(workspaceData);
await this.changeWorkspace(workspaceData);
},
async onLocationChange(browser) {
let tab = gBrowser.getTabForBrowser(browser);
let workspaceID = tab.getAttribute("zen-workspace-id");
if (!workspaceID) {
let workspaces = await this._workspaces();
let activeWorkspace = workspaces.workspaces.find(workspace => workspace.used);
if (!activeWorkspace) {
return;
}
tab.setAttribute("zen-workspace-id", activeWorkspace.uuid);
}
},
// Context menu management
_contextMenuId: null,
async updateContextMenu(_) {
console.assert(this._contextMenuId, "No context menu ID set");
document.querySelector(`#PanelUI-zen-workspaces [zen-workspace-id="${this._contextMenuId}"] .zen-workspace-actions`).setAttribute("active", "true");
const workspaces = await this._workspaces();
let deleteMenuItem = document.getElementById("context_zenDeleteWorkspace");
if (workspaces.workspaces.length <= 1) {
deleteMenuItem.setAttribute("disabled", "true");
} else {
deleteMenuItem.removeAttribute("disabled");
}
},
onContextMenuClose() {
let target = document.querySelector(`#PanelUI-zen-workspaces [zen-workspace-id="${this._contextMenuId}"] .zen-workspace-actions`);
if (target) {
target.removeAttribute("active");
}
this._contextMenuId = null;
},
async contextDelete() {
await this.removeWorkspace(this._contextMenuId);
}
};
ZenWorkspaces.init();

View File

@@ -1,69 +0,0 @@
diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
index cdd08ec8f3d3cd652be9fcf6d4fb5b50dcf270ba..6cb35378aea2e7967dff0c91d09201b053645fbd 100644
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -2,6 +2,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+@import url("chrome://global/skin/zen-global-shared.css");
+
@namespace html url("http://www.w3.org/1999/xhtml");
panelmultiview {
@@ -566,9 +568,9 @@ printpreview-pagination:focus-within,
#sidebar-box {
- min-width: 14em;
+ min-width: 323px;
max-width: 36em;
- width: 18em;
+ width: 393px;
}
/* WebExtension Sidebars */
@@ -583,3 +585,43 @@ printpreview-pagination:focus-within,
toolbar[keyNav=true]:not([collapsed=true], [customizing=true]) toolbartabstop {
-moz-user-focus: normal;
}
+
+
+/**
+ *
+ * ZEN OVERRIDES
+ */
+
+.content-prompt-dialog > .dialogOverlay {
+ align-content: start;
+}
+
+.dialogBox:not(.spotlightBox) {
+ border: 1px solid var(--zen-dialog-border-color);
+}
+
+#window-modal-dialog:not([zen-dialog-welcome-element="true"]) .dialogBox:not(.spotlightBox) {
+ transform: translateY(-9px);
+}
+
+#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogBox:not(.spotlightBox) {
+ margin: 0 !important;
+}
+
+#window-modal-dialog[zen-dialog-welcome-element="true"],
+#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogOverlay,
+#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogFrame,
+#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogBox {
+ width: 100% !important;
+ height: 100% !important;
+ max-height: none !important;
+ max-width: none !important;
+}
+
+#window-modal-dialog[zen-dialog-welcome-element="true"] {
+ --zen-welcome-dialog-space: 7px;
+ margin: 0 auto !important;
+ max-width: calc(100% - calc(var(--zen-welcome-dialog-space) * 2)) !important;
+ max-height: calc(100% - calc(var(--zen-welcome-dialog-space) * 2)) !important;
+ margin-top: var(--zen-welcome-dialog-space) !important;
+}

View File

@@ -1,12 +1,13 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
index a79a9734619f89639c15087fe28e9615354a7209..edaef604d33d76b570571e1bbb2ebc590e045d87 100644
index f8d49ac2a3a62f389ea44b07a26fcb102abc0b24..c29415e10c776ebc435f33e55f8afb71f0dcf22a 100644
--- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js
@@ -237,6 +237,9 @@ var gBrowserInit = {
@@ -237,6 +237,10 @@ var gBrowserInit = {
gPrivateBrowsingUI.init();
BrowserSearch.init();
BrowserPageActions.init();
+
+ Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window);
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
+
if (gToolbarKeyNavEnabled) {

View File

@@ -1,32 +0,0 @@
diff --git a/browser/base/content/browser-siteProtections.js b/browser/base/content/browser-siteProtections.js
index 5364aa74cd938141e85e3a3333e8d1fa58ea3ae4..5cd1748a883b19caa2977c1047d51b9551686bf4 100644
--- a/browser/base/content/browser-siteProtections.js
+++ b/browser/base/content/browser-siteProtections.js
@@ -1904,9 +1904,14 @@ var gProtectionsHandler = {
// the information contained there would mostly be broken and/or
// irrelevant anyway.
this._trackingProtectionIconContainer.hidden = true;
+ // ZEN: We make a clear distinction between native UI and websites for security reasons.
+ // we can remove the separator for websites that dont need it, like "about:*" pages, where
+ // they are safe to use.
+ this._nativeSeparatorForWebsitesContainer.hidden = true;
return;
}
this._trackingProtectionIconContainer.hidden = false;
+ this._nativeSeparatorForWebsitesContainer.hidden = false;
// Check whether the user has added an exception for this site.
this.hasException = ContentBlockingAllowList.includes(
@@ -2882,4 +2887,12 @@ var gProtectionsHandler = {
return messageEl;
},
+
+ get _nativeSeparatorForWebsitesContainer() {
+ delete this._nativeSeparatorForWebsitesContainer;
+ return (this._nativeSeparatorForWebsitesContainer = document.getElementById(
+ "zen-website-and-native-separator"
+ ));
+ },
+
};

View File

@@ -1,17 +1,17 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 3063370347db9e2812ad30205e585c849e44c91e..be74d9e624b8220cb9bd009bae31fb513c4ec73f 100644
index 481ebbee437250c71e9bd10c4fb6fc0c31314925..3bb046a4635fad831cc447e29516ee5ed407a3f2 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -139,6 +139,8 @@
@@ -138,6 +138,8 @@
window.addEventListener("DOMContentLoaded",
gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
</script>
+#include zen-locales.inc.xhtml
+#include zen-scripts.inc.xhtml
+#include zen-assets.inc.xhtml
</head>
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
# All sets except for popupsets (commands, keys, and stringbundles)
@@ -160,9 +162,12 @@
@@ -159,9 +161,12 @@
</vbox>
</html:template>
@@ -27,10 +27,3 @@ index 3063370347db9e2812ad30205e585c849e44c91e..be74d9e624b8220cb9bd009bae31fb51
<html:template id="customizationPanel">
<box id="customization-container" flex="1" hidden="true"><![CDATA[
@@ -176,5 +181,6 @@
<!-- Put it at the very end to make sure it's not covered by anything. -->
<html:div id="fullscr-toggler" hidden="hidden"/>
+#include zen-watermark.inc.xhtml
</html:body>
</html>

View File

@@ -1,11 +0,0 @@
diff --git a/browser/base/content/global-scripts.inc b/browser/base/content/global-scripts.inc
index f5f43b8f9509c37bf217b3ed1c6c562be85430e0..c8ab55760f817aa14e3db15f6b5556118e65d218 100644
--- a/browser/base/content/global-scripts.inc
+++ b/browser/base/content/global-scripts.inc
@@ -22,4 +22,6 @@ if (AppConstants.platform == "macosx") {
Services.scriptloader.loadSubScript("chrome://global/content/macWindowMenu.js", this);
}
+Services.scriptloader.loadSubScript("chrome://browser/content/zen-browser-places.js", this);
+
</script>

View File

@@ -1,21 +1,8 @@
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
index ef8245938ea669227c255d85422a26b99cb2290b..48c061796072e976a45f7bd0ca1c8b3913728fc7 100644
index 1fb595272a184f9a40f56f87d86232e3324f7750..8dd0f0ff856be524a5fa27fb8c6180c1fe058134 100644
--- a/browser/base/content/main-popupset.inc.xhtml
+++ b/browser/base/content/main-popupset.inc.xhtml
@@ -80,6 +80,12 @@
<menuitem id="context_closeDuplicateTabs"
data-lazy-l10n-id="tab-context-close-duplicate-tabs"
oncommand="gBrowser.removeDuplicateTabs(TabContextMenu.contextTab);"/>
+ <menuseparator/>
+ <menuitem id="context_zenSplitTabs"
+ data-lazy-l10n-id="tab-zen-split-tabs"
+ data-l10n-args='{"tabCount": 1}'
+ oncommand="gZenViewSplitter.contextSplitTabs();"/>
+ <menuseparator/>
<menu id="context_closeTabOptions"
data-lazy-l10n-id="tab-context-close-multiple-tabs">
<menupopup id="closeTabOptions">
@@ -169,6 +175,10 @@
@@ -144,6 +144,10 @@
hidden="true"
tabspecific="true"
aria-labelledby="editBookmarkPanelTitle">
@@ -26,22 +13,15 @@ index ef8245938ea669227c255d85422a26b99cb2290b..48c061796072e976a45f7bd0ca1c8b39
<box class="panel-header">
<html:h1>
<html:span id="editBookmarkPanelTitle"/>
@@ -191,12 +201,14 @@
class="footer-button"
data-l10n-id="bookmark-panel-save-button"
default="true"
+ autofocus="true"
oncommand="StarUI.panel.hidePopup();"/>
<button id="editBookmarkPanelRemoveButton"
class="footer-button"
oncommand="StarUI.removeBookmarkButtonCommand();"/>
@@ -169,6 +173,7 @@
class="footer-button"/>
</html:moz-button-group>
</vbox>
+ </vbox>
</panel>
</html:template>
@@ -514,6 +526,8 @@
@@ -454,6 +459,8 @@
#include popup-notifications.inc

View File

@@ -1,7 +1,16 @@
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
index 390a1300a1213af2b411ba09c67e3c25750ee6c3..7c80c54dd43b5414bf5ea9101d53431c0b4a140b 100644
index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56edbd7405c 100644
--- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -2,7 +2,7 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-<toolbox id="navigator-toolbox">
+<toolbox id="navigator-toolbox" persist="width style">
<vbox id="titlebar">
<!-- Menu -->
@@ -32,10 +32,11 @@
<hbox class="titlebar-spacer" type="pre-tabs"/>
@@ -44,22 +53,7 @@ index 390a1300a1213af2b411ba09c67e3c25750ee6c3..7c80c54dd43b5414bf5ea9101d53431c
</toolbar>
</vbox>
@@ -409,6 +412,14 @@
<image id="star-button"
class="urlbar-icon"/>
</hbox>
+ <hbox id="zen-split-views-box"
+ hidden="true"
+ role="button"
+ class="urlbar-page-action"
+ onclick="gZenViewSplitter.openSplitViewPanel(event);">
+ <image id="zen-split-views-button"
+ class="urlbar-icon"/>
+ </hbox>
</hbox>
</hbox>
</hbox>
@@ -450,6 +461,7 @@
@@ -450,6 +453,7 @@
<toolbarbutton id="fxa-toolbar-menu-button" class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
badged="true"
@@ -67,7 +61,7 @@ index 390a1300a1213af2b411ba09c67e3c25750ee6c3..7c80c54dd43b5414bf5ea9101d53431c
delegatesanchor="true"
onmousedown="gSync.toggleAccountPanel(this, event)"
onkeypress="gSync.toggleAccountPanel(this, event)"
@@ -501,6 +513,8 @@
@@ -501,6 +505,8 @@
consumeanchor="PanelUI-button"
data-l10n-id="appmenu-menu-button-closed2"/>
</toolbaritem>

View File

@@ -1,18 +0,0 @@
diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js
index b5c8dd44daaab18397cf01d0ef9f5288f5113925..8840b8171d5992da0a2f6216d8da9e1ec6dc1e93 100644
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -1047,6 +1047,13 @@ class nsContextMenu {
!this.isSecureAboutPage()
);
+ this.showItem(
+ "context-zenAddToWebPanel",
+ this.onLink && !this.onMailtoLink && !this.onTelLink
+ );
+
+ this.showItem("context-zenSplitLink", this.onLink && !this.onMailtoLink && !this.onTelLink);
+
let copyLinkSeparator = document.getElementById("context-sep-copylink");
// Show "Copy Link", "Copy" and "Copy Clean Link" with no divider, and "copy link" and "Send link to Device" with no divider between.
// Other cases will show a divider.

View File

@@ -0,0 +1,18 @@
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
index 6c2317b8036378c6b8e0ad9a4fe71388bcb385f5..4bf277b02d3c69efc0f2d46c8b0f9deb7d7fb45a 100644
--- a/browser/base/content/nsContextMenu.sys.mjs
+++ b/browser/base/content/nsContextMenu.sys.mjs
@@ -1153,6 +1153,13 @@ export class nsContextMenu {
!this.isSecureAboutPage()
);
+ this.showItem(
+ "context-zenAddToWebPanel",
+ this.onLink && !this.onMailtoLink && !this.onTelLink
+ );
+
+ this.showItem("context-zenSplitLink", this.onLink && !this.onMailtoLink && !this.onTelLink);
+
let copyLinkSeparator = this.document.getElementById(
"context-sep-copylink"
);

View File

@@ -1,12 +0,0 @@
diff --git a/browser/base/content/webext-panels.xhtml b/browser/base/content/webext-panels.xhtml
index 902fa7e7b3edb3c9502a12e475ade016436b2490..5c6ad5f9d86cd29a12483d7cb71ce9979002f092 100644
--- a/browser/base/content/webext-panels.xhtml
+++ b/browser/base/content/webext-panels.xhtml
@@ -16,6 +16,7 @@
<script src="chrome://global/content/globalOverlay.js"/>
<script src="chrome://browser/content/utilityOverlay.js"/>
<script src="chrome://global/content/editMenuOverlay.js"/>
+ <script src="chrome://browser/content/zen-browser-places.js"/>
<linkset>
<html:link rel="stylesheet" href="chrome://global/skin/global.css" />

View File

@@ -0,0 +1,37 @@
<!-- Styles used all over the browser -->
<linkset>
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-theme.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-animations.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-sidebar.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-buttons.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-toolbar.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-tabs.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-browser-ui.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-panel-ui.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-single-components.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-browser-container.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-urlbar.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-workspaces.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-decks.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-profile-dialog.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-sidebar-panels.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-popup.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-compact-mode.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/skin/zen-icons/icons.css" />
</linkset>
<!-- Scripts used all over the browser -->
<script type="text/javascript">
window.addEventListener("DOMContentLoaded", async () => {
// Theme importer always needs to be loaded first
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesImporter.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenSidebarManager.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspaces.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenViewSplitter.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenProfileDialogUI.mjs");
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs");
}, { once: true });
</script>

View File

@@ -0,0 +1,42 @@
content/browser/zenThemeModifier.js (content/zenThemeModifier.js)
content/browser/ZenStartup.mjs (content/ZenStartup.mjs)
content/browser/ZenUIManager.mjs (content/ZenUIManager.mjs)
content/browser/zen-components/ZenViewSplitter.mjs (content/zen-components/src/ZenViewSplitter.mjs)
content/browser/zen-components/ZenWorkspaces.mjs (content/zen-components/src/ZenWorkspaces.mjs)
content/browser/zen-components/ZenSidebarManager.mjs (content/zen-components/src/ZenSidebarManager.mjs)
content/browser/zen-components/ZenProfileDialogUI.mjs (content/zen-components/src/ZenProfileDialogUI.mjs)
content/browser/zen-components/ZenKeyboardShortcuts.mjs (content/zen-components/src/ZenKeyboardShortcuts.mjs)
content/browser/zen-components/ZenThemeBuilder.mjs (content/zen-components/src/ZenThemeBuilder.mjs)
content/browser/zen-components/ZenThemesImporter.mjs (content/zen-components/src/ZenThemesImporter.mjs)
content/browser/zen-styles/zen-theme.css (content/zen-styles/zen-theme.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/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-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-single-components.css (content/zen-styles/zen-single-components.css)
content/browser/zen-styles/zen-sidebar.css (content/zen-styles/zen-sidebar.css)
content/browser/zen-styles/zen-toolbar.css (content/zen-styles/zen-toolbar.css)
content/browser/zen-styles/zen-decks.css (content/zen-styles/zen-decks.css)
content/browser/zen-styles/zen-browser-container.css (content/zen-styles/zen-browser-container.css)
content/browser/zen-styles/zen-workspaces.css (content/zen-styles/zen-workspaces.css)
content/browser/zen-styles/zen-profile-dialog.css (content/zen-styles/zen-profile-dialog.css)
content/browser/zen-styles/zen-urlbar.css (content/zen-styles/zen-urlbar.css)
content/browser/zen-styles/zen-popup.css (content/zen-styles/zen-popup.css)
content/browser/zen-styles/zen-sidebar-panels.css (content/zen-styles/zen-sidebar-panels.css)
content/browser/zen-styles/zen-panels/bookmarks.css (content/zen-styles/zen-panels/bookmarks.css)
content/browser/zen-styles/zen-panels/extensions.css (content/zen-styles/zen-panels/extensions.css)
content/browser/zen-styles/zen-panels/print.css (content/zen-styles/zen-panels/print.css)
content/browser/zen-styles/zen-panels/welcome.css (content/zen-styles/zen-panels/welcome.css)
content/browser/zen-styles/zen-compact-mode.css (content/zen-styles/zen-compact-mode.css)
# Actors
content/browser/zen-components/actors/ZenThemeMarketplaceParent.sys.mjs (content/zen-components/src/actors/ZenThemeMarketplaceParent.sys.mjs)
content/browser/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs (content/zen-components/src/actors/ZenThemeMarketplaceChild.sys.mjs)

View File

@@ -1 +1,6 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#253342"></rect><rect x="10" y="30" width="80" height="10" fill="#232226" transform="translate(6 -6) rotate(236 40 40)"></rect><circle cx="40" cy="40" fill="#DDDDDD" r="16" transform="translate(15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#5E9188" transform="translate(12 -12) rotate(112 40 40)"></line></g></svg>

Before

Width:  |  Height:  |  Size: 674 B

After

Width:  |  Height:  |  Size: 894 B

View File

@@ -1 +1,6 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#FFF6C7"></rect><rect x="10" y="30" width="80" height="10" fill="#DCD7C2" transform="translate(6 -6) rotate(236 40 40)"></rect><circle cx="40" cy="40" fill="#9D9382" r="16" transform="translate(15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFC1B2" transform="translate(12 -12) rotate(112 40 40)"></line></g></svg>

Before

Width:  |  Height:  |  Size: 674 B

After

Width:  |  Height:  |  Size: 894 B

View File

@@ -1 +1,6 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#5E9188"></rect><rect x="10" y="30" width="80" height="80" fill="#3E5954" transform="translate(-8 -8) rotate(222 40 40)"></rect><circle cx="40" cy="40" fill="#253342" r="16" transform="translate(9 -9)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#232226" transform="translate(-4 4) rotate(84 40 40)"></line></g></svg>

Before

Width:  |  Height:  |  Size: 671 B

After

Width:  |  Height:  |  Size: 891 B

Some files were not shown because too many files have changed in this diff Show More