Compare commits

...

272 Commits

Author SHA1 Message Date
Mauro Balades
e9f727ceba chore: Remove unused browser.ftl file 2024-07-29 21:52:00 +02:00
Mauro Balades
5342c408fa chore: Add context menu open link in new tab 2024-07-29 21:04:00 +02:00
Mauro Balades
b494f661b2 chore: Update CFLAGS, CXXFLAGS, and RUSTFLAGS in mozconfig 2024-07-29 20:19:24 +02:00
mauro 🤙
5020640e8e Im supposed to be on my valorant rest 2024-07-29 18:45:24 +02:00
Mauro Balades
48773b80f4 chore: Hide introduction panel when current panel is set in ZenSidebarManager 2024-07-29 14:51:28 +02:00
Mauro Balades
e3edc10e95 chore: Update grid-template-columns in zen-browser-shared.css 2024-07-29 14:32:58 +02:00
Mauro Balades
d5a4ce2331 Expanded functionality of compact mode 2024-07-29 14:30:06 +02:00
Mauro Balades
1bd4bcf93f chore: Update @zen-browser/surfer dependency to version 1.1.8 2024-07-29 13:55:52 +02:00
mauro-balades
7b7f8a3f13 🔖 Update version to 1.0.0-a.8 2024-07-29 09:44:29 +00:00
Mauro Balades
81df7ea605 feat: Enable updater in common mozconfig 2024-07-29 11:43:53 +02:00
Mauro Balades
2b56b9b97d Tried to fix themes and popups ( LOOK INTO THIS ) 2024-07-29 11:42:52 +02:00
Mauro Balades
80027fbe48 chore: Add special thanks to Erlend for making the logo 2024-07-29 11:22:33 +02:00
Mauro Balades
bd23758cd0 Updated icons 2024-07-29 11:19:38 +02:00
Mauro Balades
1e464392c2 Updated logos! 2024-07-29 09:43:40 +02:00
Mauro Balades
96f31e8993 Fixed wrong color for context menu popups (closes #88) 2024-07-29 01:24:13 +02:00
Mauro Balades
01bdbfca4e Fixed borders not showing with hidden tabs (#100) 2024-07-29 01:20:31 +02:00
Mauro Balades
cc900885ca refactor: Update advanced-issue-labeler to version 3 for severity label functionality 2024-07-29 01:10:44 +02:00
Mauro Balades
a3213e069b refactor: Add severity dropdown to bug report template 2024-07-29 01:07:01 +02:00
Mauro Balades
711fd0ab8b refactor: Add severity dropdown to bug report template 2024-07-29 01:04:35 +02:00
Mauro Balades
05a6dcb416 refactor: Update bug report template with severity options 2024-07-29 00:59:29 +02:00
Mauro Balades
fd7d0bbd50 refactor: Update bug report template with severity options 2024-07-29 00:55:22 +02:00
Mauro Balades
bf96065340 refactor: Add multiple severity options to bug report template 2024-07-29 00:49:55 +02:00
Mauro Balades
5985420dbb refactor: Add severity dropdown to bug report template 2024-07-29 00:43:01 +02:00
Mauro Balades
2dd50cfe9a refactor: Update @zen-browser/surfer dependency to version 1.1.6 and fixed compact mode! 2024-07-29 00:36:24 +02:00
Mauro Balades
c3a94c128f Remove flatpak from the equation 2024-07-27 14:15:51 +02:00
Mauro Balades
b94c6c616a Quick HOTFIX 2024-07-27 12:08:20 +02:00
Mauro Balades
9950ebd99e refactor: Update flatpak package name in alpha.yml workflow 2024-07-27 11:52:22 +02:00
Mauro Balades
1c4108d961 refactor: Remove font-weight property from zen-panel-ui.css 2024-07-27 09:45:45 +02:00
Mauro Balades
1be4bbf08b refactor: Remove commented code in windows-alpha-build.yml 2024-07-27 09:26:53 +02:00
mauro-balades
5ba50f2988 🔖 Update version to 1.0.0-a.7 2024-07-27 06:51:40 +00:00
Mauro Balades
e2618e5681 refactor: Update actions/checkout to v4 in alpha.yml workflow 2024-07-27 08:50:31 +02:00
Mauro Balades
3304259383 refactor: Update alpha.yml workflow to remove unused Windows build steps 2024-07-27 00:57:34 +02:00
Mauro Balades
d83df429bc refactor: Update macOS alpha build workflow to use macOS 14 instead of macOS 14 Large 2024-07-26 22:03:42 +02:00
Mauro Balades
191ffd6efe refactor: Update macOS alpha build workflow to use macOS 14 instead of macOS 14 Large 2024-07-26 20:43:25 +02:00
Mauro Balades
7e0e3f4145 refactor: Update profile data path in alpha.yml workflow 2024-07-26 14:57:29 +02:00
Mauro Balades
8b56897a11 feat: Enable newtabWallpapers v2 in Zen browser theme 2024-07-26 14:09:37 +02:00
Mauro Balades
6a55fecca6 refactor: Update macOS alpha build workflow to use macOS 14 instead of macOS 14 Large 2024-07-26 12:28:21 +02:00
Mauro Balades
f80a454261 refactor: Fixed macos builds and flatpaks 2024-07-26 12:26:35 +02:00
Mauro Balades
0f97a1cb4d refactor: Improved pinned tabs! 2024-07-26 12:10:00 +02:00
Mauro Balades
58e049a76f refactor: Hide sidebar splitter in Zen browser theme 2024-07-26 09:42:51 +02:00
Mauro Balades
dfa5013a79 Fixed windows builds 2024-07-26 09:20:11 +02:00
Mauro Balades
22dfa8daec refactor: Update alpha.yml workflow to use flat-manager v6.1 for uploading flatpak bundle 2024-07-26 09:19:18 +02:00
Mauro Balades
5c5608938d refactor: Update alpha.yml workflow to use flat-manager v6.1 for uploading flatpak bundle 2024-07-26 09:12:52 +02:00
Mauro Balades
cfd1ef11aa Revert testing 2024-07-26 01:03:06 +02:00
Mauro Balades
b82530c890 testing 2024-07-26 01:02:28 +02:00
Mauro Balades
69e5bb552f refactor: Update alpha.yml workflow to use flat-manager v6.1 for uploading flatpak bundle 2024-07-26 01:00:05 +02:00
Mauro Balades
915350db3c Hide sidebar webpanel when clicked outside 2024-07-26 00:20:33 +02:00
Mauro Balades
0dfb198609 refactor: Improve workspace icon handling and tab visibility logic 2024-07-25 23:29:49 +02:00
Mauro Balades
f1039324cf refactor: Improve sidebar panel button scaling 2024-07-25 22:46:38 +02:00
Mauro Balades
3ce4bb8ecf chore: Update alpha.yml workflow to use flat-manager v6.1 for uploading flatpak bundle 2024-07-25 22:45:43 +02:00
Mauro Balades
005398a20d chore: Enable PGO (Profile-Guided Optimization) for Linux builds 2024-07-25 15:33:42 +02:00
Mauro Balades
f45b1ec317 chore: Update alpha.yml workflow to download artifacts in the "Download artifacts" step 2024-07-25 15:33:22 +02:00
Mauro Balades
4714cfcc84 chore: Update alpha.yml workflow to consistently use the use-warp-build input 2024-07-25 12:59:05 +02:00
Mauro Balades
c221c8e242 chore: Update alpha.yml workflow to include continue-on-error option 2024-07-25 11:20:00 +02:00
Mauro Balades
5464da21c4 chore: Add option to create a flatpak release in alpha.yml workflow 2024-07-25 11:19:24 +02:00
Mauro Balades
f2a783fbce refactor: Improve workspace icon handling and tab visibility logic 2024-07-25 10:31:41 +02:00
Mauro Balades
bb3ee371a1 refactor: Improve workspace icon handling and tab visibility logic 2024-07-25 09:56:17 +02:00
Mauro Balades
95e053562e chore: Update alpha.yml workflow to consistently use the use-warp-build input 2024-07-25 09:16:23 +02:00
Mauro Balades
e5eba4496f chore: Update alpha.yml workflow to consistently use the use-warp-build input 2024-07-24 23:32:05 +02:00
Mauro Balades
eba7459acf chore: Update alpha.yml workflow to consistently use the use-warp-build input 2024-07-24 21:09:50 +02:00
Mauro Balades
7251dbd013 chore: Update alpha.yml workflow to consistently use the use-warp-build input 2024-07-24 19:19:37 +02:00
Mauro Balades
43ffc452a2 chore: Update alpha.yml workflow to consistently use the use-warp-build input 2024-07-24 15:23:46 +02:00
mauro-balades
2027487c56 🔖 Update version to 1.0.0-a.6 2024-07-24 12:40:34 +00:00
Mauro Balades
77b96aed0a chore: Update surfer.json to display version 1.0.0-a.5 instead of 1.0.0-a.6 2024-07-24 14:39:55 +02:00
Mauro Balades
dc5b9f00dd chore: Update alpha.yml workflow to use-warp-build input consistently 2024-07-24 14:39:39 +02:00
mauro-balades
67d2238660 🔖 Update version to 1.0.0-a.6 2024-07-24 12:33:37 +00:00
Mauro Balades
e018a6154b chore: Update alpha.yml workflow to include use-warp-build input 2024-07-24 14:32:49 +02:00
Mauro Balades
32837dd742 chore: Update flatpak build workflow to include release job 2024-07-24 14:31:39 +02:00
Mauro Balades
494c829b53 chore: Update build workflows to support warp builds 2024-07-24 14:27:51 +02:00
Mauro Balades
cffdd29121 chore: Update @zen-browser/surfer dependency to version 1.1.4 2024-07-24 12:12:15 +02:00
Mauro Balades
17598a2725 chore: Refactor Windows profile build workflow to improve efficiency and remove unnecessary steps 2024-07-24 11:51:56 +02:00
Mauro Balades
1433d594c7 chore: Disable PGO build in Windows profile build workflow 2024-07-24 11:15:18 +02:00
Mauro Balades
5ca89116e7 chore: Update Windows profile build workflow to remove unnecessary steps and improve efficiency 2024-07-24 00:35:06 +02:00
Mauro Balades
67aa0dc732 chore: Update common mozconfig to enable proxy bypass protection and remove unnecessary options 2024-07-23 22:45:20 +02:00
Mauro Balades
6f47ee3ffa chore: Update Windows profile build workflow to use x86_64-pc-windows-msvc target 2024-07-23 20:35:06 +02:00
Mauro Balades
a54b93318a chore: Update @zen-browser/surfer dependency to version 1.1.2 2024-07-23 20:34:04 +02:00
Mauro Balades
18b267300c chore: Set up git configuration in Windows profile build workflow 2024-07-23 18:28:45 +02:00
Mauro Balades
de8e45a38f chore: Update grid-gap in zen-decks.css to 5px for better visual spacing 2024-07-23 18:08:34 +02:00
Mauro Balades
230bb3da67 chore: Refactor Windows profile build workflow to improve efficiency and remove unnecessary steps 2024-07-23 17:25:59 +02:00
Mauro Balades
825bfd91db chore: Update Windows profile build workflow to include downloading and extracting Firefox source code 2024-07-23 17:22:52 +02:00
Mauro Balades
f2cab3dddb test 2 2024-07-23 15:58:21 +02:00
Mauro Balades
6209250260 testing 2024-07-23 15:43:47 +02:00
Mauro Balades
68f9cc7e00 chore: Update Windows profile build workflow to rename extracted Firefox source code folder 2024-07-23 14:51:27 +02:00
Mauro Balades
141728ab83 chore: Update macOS alpha build workflow to use actions/checkout@v4 2024-07-23 14:04:35 +02:00
Mauro Balades
af697f69c8 chore: Remove swap space configuration from macOS alpha build workflow 2024-07-23 13:48:29 +02:00
Mauro Balades
85b76f525c chore: Update disk-setup-and-swap.sh to conditionally execute 'free -h' and 'df -h' commands 2024-07-23 13:46:32 +02:00
Mauro Balades
1bcd4021dd chore: Update Windows profile build workflow to remove unnecessary steps and dependencies 2024-07-23 13:44:46 +02:00
Mauro Balades
a946f31b50 chore: Update Windows profile build workflow to include downloading and extracting Firefox source code 2024-07-23 13:43:50 +02:00
Mauro Balades
6e5611d1af chore: Enable blank issues in issue template configuration 2024-07-23 12:54:06 +02:00
Mauro Balades
b5865dd326 chore: Update bug report issue template with additional fields 2024-07-23 12:53:05 +02:00
Mauro Balades
963ac294f4 chore: Update bug report issue template with additional fields 2024-07-23 12:51:48 +02:00
Mauro Balades
a7fe238a71 chore: Update Windows profile build workflow to use x86_64-pc-mingw32 target 2024-07-23 11:56:09 +02:00
Mauro Balades
9c6b0912a5 chore: Update theme pill-button default value and styles 2024-07-23 11:35:26 +02:00
Mauro Balades
26b633553c testing 2024-07-23 09:49:11 +02:00
Mauro Balades
51ccbb0c7c chore: Update Windows profile build workflow to include debug session 2024-07-23 09:43:55 +02:00
Mauro Balades
93668396da chore: Update Xvfb installation in alpha-build.sh to only run if not cross-compiling 2024-07-22 23:39:16 +02:00
Mauro Balades
7355138f14 chore: Update Windows profile build workflow to include version bump step and disable wasm sandboxed libraries 2024-07-22 21:30:36 +02:00
Mauro Balades
1a761535df chore: Update flatpak manifest path in alpha.yml workflow 2024-07-22 19:46:14 +02:00
Mauro Balades
2962f0741c Always build flatpaks! 2024-07-22 19:41:48 +02:00
Mauro Balades
8de06906b8 chore: Update Windows profile build workflow to include version bump step 2024-07-22 19:41:15 +02:00
Mauro Balades
18a21bd85a Update Windows profile build workflow to include version bump step 2024-07-22 19:36:52 +02:00
Mauro Balades
c630d4e479 Lets try with waterfox 2024-07-22 19:24:37 +02:00
Mauro Balades
ab0ca282ff Update Windows profile build workflow to include version bump step 2024-07-22 19:08:11 +02:00
Mauro Balades
f7970fb004 chore: Update Windows profile build workflow to include version bump step 2024-07-22 19:05:37 +02:00
Mauro Balades
5904663634 Update Windows profile build workflow to download and unpack artifact, setup MozillaBuild, and clone Waterfox repository 2024-07-22 19:03:56 +02:00
Mauro Balades
358818b754 Check for files 2024-07-22 19:02:36 +02:00
Mauro Balades
4a287ad2eb Update Windows profile build workflow to download and unpack artifact, setup MozillaBuild, and clone Waterfox repository 2024-07-22 18:51:26 +02:00
Mauro Balades
ffcf71f25d Update Windows profile build workflow to download and unpack artifact, setup MozillaBuild, and clone Waterfox repository 2024-07-22 17:04:35 +02:00
Mauro Balades
3cf12e5b70 Update Windows profile build workflow to download and unpack artifact, setup MozillaBuild, and clone Waterfox repository 2024-07-22 14:46:26 +02:00
Mauro Balades
32ecb73303 Fixed mozilla build path 2024-07-22 14:35:02 +02:00
Mauro Balades
24eb4a27cb Update Windows profile build workflow to download and unpack artifact, setup MozillaBuild, and clone Waterfox repository 2024-07-22 14:16:46 +02:00
Mauro Balades
5a7bd1e868 Update Windows profile build workflow to download and unpack artifact, setup MozillaBuild, and clone Waterfox repository 2024-07-22 14:12:26 +02:00
Mauro Balades
c6ec84444d Remove mozconfig on windows PGO 2024-07-22 14:06:32 +02:00
Mauro Balades
3044b44967 Update Windows profile build workflow to download and unpack artifact, setup MozillaBuild, and clone Waterfox repository 2024-07-22 13:57:01 +02:00
Mauro Balades
2384b32a08 Update Windows profile build workflow to download and unpack artifact, setup MozillaBuild, and clone Waterfox repository 2024-07-22 13:50:23 +02:00
Mauro Balades
350d72033b chore: Update Windows profile build workflow to download and unpack artifact, setup MozillaBuild, and clone Waterfox repository 2024-07-22 13:43:35 +02:00
Mauro Balades
5d9b8b7244 use git for firefox cloning 2024-07-22 13:30:04 +02:00
Mauro Balades
006ab63b39 Added no interactive flag 2024-07-22 13:14:07 +02:00
Mauro Balades
4b54e4cfb5 chore: Update @zen-browser/surfer dependency to version 1.0.35 2024-07-22 13:09:13 +02:00
Mauro Balades
a6113ed7e8 chore: Update @zen-browser/surfer dependency to version 1.0.35 2024-07-22 12:59:22 +02:00
Mauro Balades
b8e6c059b0 test 2024-07-22 12:53:52 +02:00
Mauro Balades
ac972254ae chore: Update @zen-browser/surfer dependency to version 1.0.35 2024-07-22 12:51:41 +02:00
Mauro Balades
bc41044103 chore: Update @zen-browser/surfer dependency to version 1.0.35 2024-07-22 12:12:44 +02:00
Mauro Balades
5d4b34f802 chore: Update @zen-browser/surfer dependency to version 1.0.35 2024-07-22 11:55:52 +02:00
Mauro Balades
bfff708d0c chore: Update @zen-browser/surfer dependency to version 1.0.34 2024-07-22 11:47:06 +02:00
Mauro Balades
cf23fba41e chore: Update @zen-browser/surfer dependency to version 1.0.33 2024-07-22 11:10:13 +02:00
Mauro Balades
2e51a18490 chore: Update @zen-browser/surfer dependency to version 1.0.32 2024-07-22 10:58:02 +02:00
Mauro Balades
1adc22e44f chore: Update @zen-browser/surfer dependency to version 1.0.31 2024-07-22 10:53:12 +02:00
Mauro Balades
e4cbfc8e78 chore: Update @zen-browser/surfer dependency to version 1.0.30 2024-07-22 10:36:44 +02:00
Mauro Balades
02f11033cd chore: Update @zen-browser/surfer dependency to version 1.0.29 2024-07-22 10:31:24 +02:00
Mauro Balades
e955e871e5 chore: Update @zen-browser/surfer dependency to version 1.0.28 2024-07-22 10:22:20 +02:00
Mauro Balades
5b1ba8f4e9 chore: Update @zen-browser/surfer dependency to version 1.0.27 2024-07-22 10:03:44 +02:00
Mauro Balades
c73afb011a chore: Update @zen-browser/surfer dependency to version 1.0.26 2024-07-22 09:57:33 +02:00
Mauro Balades
2538fa9b0a chore: Update @zen-browser/surfer dependency to version 1.0.25 2024-07-22 09:48:15 +02:00
Mauro Balades
0fc4e356d7 chore: Update @zen-browser/surfer dependency to version 1.0.24 2024-07-22 09:37:47 +02:00
Mauro Balades
df7a7916f5 chore: Update windows-profile-build workflow to include windows-step-1 in the needs array 2024-07-22 09:33:31 +02:00
Mauro Balades
4225302a4b chore: Update windows-profile-build workflow to include windows-step-1 in the needs array 2024-07-22 09:15:23 +02:00
Mauro Balades
7d978f5f96 chore: Update windows-profile-build workflow to include windows-step-1 in the needs array 2024-07-22 09:11:56 +02:00
Mauro Balades
d433950935 chore: Update windows-profile-build workflow to remove unnecessary step and generate mozilla-build-run.sh 2024-07-22 09:08:28 +02:00
Mauro Balades
138ea1cb57 chore: Update windows-profile-build workflow to include windows-step-1 in the needs array 2024-07-22 01:51:39 +02:00
Mauro Balades
ec9bc6ed92 chore: Update windows-profile-build workflow to remove unnecessary step and generate mozilla-build-run.sh 2024-07-22 01:49:59 +02:00
Mauro Balades
ccbb80ff4c chore: Fix compact mode for vertical tabs 2024-07-22 01:38:42 +02:00
Mauro Balades
e16c36ba10 chore: Update @zen-browser/surfer dependency to version 1.0.23 2024-07-22 00:54:13 +02:00
Mauro Balades
42503c7ccf chore: Update workspace button styles and behavior 2024-07-22 00:44:00 +02:00
Mauro Balades
46b63a777b chore: Update @zen-browser/surfer dependency to version 1.0.22 2024-07-21 22:48:20 +02:00
Mauro Balades
26b1243cc0 chore: Update @zen-browser/surfer dependency to version 1.0.21 2024-07-21 22:00:36 +02:00
Mauro Balades
cf116b5ad3 chore: Fixed pinned tabs 2024-07-21 20:34:47 +02:00
Mauro Balades
cc36e8a6e0 chore: Update windows-profile-build workflow to install Node.js and pnpm, and download dependencies 2024-07-21 19:49:09 +02:00
Mauro Balades
69c7cc198d chore: Update windows-alpha-build workflow to use profile data zip archive 2024-07-21 19:00:24 +02:00
Mauro Balades
96ef22dabc chore: Update windows-alpha-build workflow to use actions/upload-artifact@v4 2024-07-21 17:53:07 +02:00
Mauro Balades
77ee0cc065 chore: Update windows-profile-build workflow to unpack artifact using 7z 2024-07-21 17:01:21 +02:00
Mauro Balades
e939e32da0 chore: Update artifact name in windows-alpha-build workflow 2024-07-21 16:12:34 +02:00
Mauro Balades
b9e008afbe chore: Update build workflows and mozconfig files 2024-07-21 14:27:21 +02:00
Mauro Balades
542d631edd chore: Update build workflows and mozconfig files 2024-07-21 12:39:38 +02:00
Mauro Balades
acb1750bba chore: Update build workflows and mozconfig files 2024-07-21 11:54:54 +02:00
Mauro Balades
b9b8d161f3 chore: Configure sccache in build workflows 2024-07-21 10:21:42 +02:00
Mauro Balades
0c0de72a2c chore: Remove unnecessary packages and directories 2024-07-21 10:07:52 +02:00
Mauro Balades
0cebb046f8 testing 2024-07-21 09:59:26 +02:00
Mauro Balades
7eda59fb9c chore: Update workflow to include 'windows-step-2' as a dependency 2024-07-21 09:58:51 +02:00
Mauro Balades
e28661c5d4 chore: Add write permissions to workflow steps 2024-07-21 09:58:10 +02:00
Mauro Balades
e72f2e4245 Fixed workflow issues 2024-07-21 09:56:52 +02:00
Mauro Balades
6dac955cc7 test this workflow with PGO 2024-07-21 09:55:38 +02:00
Mauro Balades
84f9237c91 new workflow implementation 2024-07-21 09:54:39 +02:00
Mauro Balades
e2233816dd chore: Update @zen-browser/surfer dependency to version 1.0.20 2024-07-21 02:09:34 +02:00
Mauro Balades
542de32106 Update windows_mozconfig and linux/mozconfig files 2024-07-21 02:08:07 +02:00
Mauro Balades
7c99456c00 Test 2024-07-21 02:00:54 +02:00
Mauro Balades
f69421b7c6 chore: Update @zen-browser/surfer dependency to version 1.0.19 2024-07-21 00:55:16 +02:00
Mauro Balades
011e503c97 chore: Update @zen-browser/surfer dependency to version 1.0.18 2024-07-20 23:41:35 +02:00
Mauro Balades
7106409061 chore: Update install script, removed debug flag 2024-07-20 22:31:13 +02:00
Mauro Balades
49ee736731 chore: Update alpha-build.sh script to handle xvfb-run not found and enable lazy loading for images 2024-07-20 22:20:58 +02:00
Mauro Balades
766c4e941d chore: Enable jemalloc in mozconfig for Zen release builds 2024-07-20 19:37:27 +02:00
Mauro Balades
b6fa393035 chore: Update RUSTFLAGS in windows_mozconfig to target x86-64 CPU architecture 2024-07-20 18:34:05 +02:00
Mauro Balades
c14191847f chore: Update zen-sidebar.css to hide sidebar when not expanded 2024-07-20 17:20:34 +02:00
Mauro Balades
c2866e0b26 chore: Update alpha-build.sh script to handle xvfb-run not found and enable lazy loading for images 2024-07-20 17:06:29 +02:00
Mauro Balades
a8bbc0ade6 chore: Update alpha-build.sh script to handle xvfb-run not found and enable lazy loading for images 2024-07-20 16:58:45 +02:00
Mauro Balades
4cfd3ba121 chore: Update mozconfig to enable MOZ_PGO for Zen release builds 2024-07-20 15:33:32 +02:00
Mauro Balades
ae746fa0af chore: Update mozconfig to enable jemalloc and linker lld for non-cross-compiling builds 2024-07-20 15:32:00 +02:00
Mauro Balades
31908c8775 chore: Update mozconfig to enable jemalloc and linker lld for non-cross-compiling builds 2024-07-20 13:55:49 +02:00
Mauro Balades
6c34fc6e8d test 2024-07-20 11:32:45 +02:00
Mauro Balades
57f8a8fccd chore: Update alpha-build.sh script to handle xvfb-run not found and disable LTO when cross-compiling 2024-07-20 11:22:22 +02:00
Mauro Balades
3f7e2bf1c7 chore: Update alpha-build.sh script to handle xvfb-run not found and set LLVM_PROFDATA path conditionally 2024-07-20 11:19:40 +02:00
Mauro Balades
dcd63d66bc chore: Update alpha-build.sh script to handle xvfb-run not found and set LLVM_PROFDATA path conditionally 2024-07-20 10:53:19 +02:00
Mauro Balades
0313f1aa14 chore: Update alpha-build.sh script to handle xvfb-run not found and disable profiling 2024-07-20 09:24:34 +02:00
Mauro Balades
e3c465b59a chore: Update alpha-build.sh script to handle xvfb-run not found and enable LTO only when not cross-compiling 2024-07-20 02:07:39 +02:00
Mauro Balades
093a9625a7 chore: Update alpha-build.sh script to handle xvfb-run not found and enable LTO only when not cross-compiling 2024-07-20 02:00:37 +02:00
Mauro Balades
b04d6fc4f0 Update Zen Browser styles for dark mode compatibility 2024-07-20 01:49:23 +02:00
Mauro Balades
57850038fc Update Zen Browser styles for dark mode compatibility 2024-07-20 01:32:59 +02:00
Mauro Balades
323c0e51f3 Update tabs max-height calculation in ZenThemeModifier 2024-07-20 01:01:07 +02:00
Mauro Balades
a4a1aa5c43 chore: Update tabs max-height calculation in ZenThemeModifier 2024-07-20 00:38:04 +02:00
Mauro Balades
dddccee707 chore: Update alpha-build.sh script to handle xvfb-run not found and enable LTO only when not cross-compiling
- Add conditional check for xvfb-run command availability
- Enable LTO (Link Time Optimization) only when not cross-compiling

Related recent commits:
- Update Zen Browser styles for dark mode compatibility
- Update Windows mozconfig and ZenWorkspaces.mjs
2024-07-20 00:32:39 +02:00
Mauro Balades
528e020176 chore: Hide watermark when "zen.watermark.enabled" preference is false 2024-07-19 23:54:01 +02:00
Mauro Balades
fb8bc5d532 chore: Update TabsToolbar styles for Zen Browser 2024-07-19 23:47:48 +02:00
Mauro Balades
6c3a67aa9a chore: Update TabsToolbar styles for Zen Browser
- Set width to 100% and justify-content to start for toolbar buttons in TabsToolbar
- Add border-radius to toolbar buttons in TabsToolbar
- Update hover background color for toolbar buttons in TabsToolbar
- Adjust text alignment and remove unnecessary padding for toolbar buttons in TabsToolbar
- Set background to transparent for text, icon, and badge stack in toolbar buttons in TabsToolbar
- Set width to 100% for tabbrowser-tabs

Related recent commits:
- Update Zen Browser styles for dark mode compatibility
- Update Zen Browser preferences and styles for vertical tabs layout
2024-07-19 23:46:38 +02:00
Mauro Balades
3828f2547e chore: Update Windows mozconfig and ZenWorkspaces.mjs
- Commented out the WIN32_REDIST_DIR and WIN_UCRT_REDIST_DIR lines in the Windows mozconfig file
- Modified the condition in ZenWorkspaces.mjs to check if the number of shown tabs is equal to the length of gBrowser.tabs minus one

Related recent commits:
- Update Zen Browser styles for dark mode compatibility
- Update alpha-build.sh script to handle xvfb-run not found, enable LTO only when not cross-compiling, and set LLVM_PROFDATA environment variable
- Update alpha-build.sh script to handle xvfb-run not found and enable LTO only when not cross-compiling
2024-07-19 23:23:02 +02:00
Mauro Balades
b44d4b4f41 chore: Update Zen Browser styles for dark mode compatibility 2024-07-19 23:11:15 +02:00
Mauro Balades
8c1e1bc97d chore: Update alpha-build.sh script to handle xvfb-run not found, enable LTO only when not cross-compiling, and set LLVM_PROFDATA environment variable 2024-07-19 22:35:31 +02:00
Mauro Balades
93ba4e0638 chore: Update alpha-build.sh script to handle xvfb-run not found and enable LTO only when not cross-compiling 2024-07-19 22:01:55 +02:00
Mauro Balades
16f7b06cec chore: Update Zen Browser styles for dark mode compatibility 2024-07-19 21:50:11 +02:00
Mauro Balades
e1e910e339 chore: Update xvfb-run command in alpha-build.sh script 2024-07-19 19:54:09 +02:00
Mauro Balades
fb34e6c2fd chore: Remove unused debug module option in mozconfig 2024-07-19 19:35:08 +02:00
Mauro Balades
bcd6116e5c chore: Update build process to use alpha-build.sh script 2024-07-19 19:28:00 +02:00
Mauro Balades
628a0bf269 chore: Update Zen Browser preferences and styles for vertical tabs layout 2024-07-19 19:15:01 +02:00
Mauro Balades
d3900ca905 chore: Enable Link Time Optimization (LTO) and Profile Guided Optimization (PGO) 2024-07-19 17:59:51 +02:00
Mauro Balades
851b181ae9 chore: Update @zen-browser/surfer dependency to version 1.0.15 2024-07-19 17:55:22 +02:00
Mauro Balades
275fe8e837 chore: Enable smooth scrolling and overscroll in Zen Browser 2024-07-19 17:48:38 +02:00
Mauro Balades
80f8e829df fix: Fix ZenWorkspaces initialization in hidden windows and private browsing mode 2024-07-19 17:36:57 +02:00
Mauro Balades
a0f30e595b chore: Refactor tab browser styles for improved readability and maintainability 2024-07-19 17:19:24 +02:00
Mauro Balades
43460815ac Fixed tab browser when DOM fullscreen is enabled 2024-07-19 17:11:04 +02:00
Mauro Balades
69e352624e chore: Remove unused CSS color property 2024-07-19 16:55:00 +02:00
Mauro Balades
40b652869d feat: Add toggleBookmarksSidebar function to ZenUIManager 2024-07-19 16:44:54 +02:00
mauro-balades
ccb5df88b4 🔖 Update version to 1.0.0-a.5 2024-07-16 15:17:52 +00:00
mauro 🤙
4e6418c83e Actualizar windows_mozconfig 2024-07-16 11:13:25 +02:00
mauro 🤙
0e17cb9c50 Actualizar mozconfig 2024-07-16 11:13:05 +02:00
mauro 🤙
ecf5c6af38 Actualizar mozconfig 2024-07-16 11:12:47 +02:00
mauro 🤙
afe8438958 chore: Remove enable-clang-plugin option from mozconfig 2024-07-16 08:49:37 +00:00
mauro 🤙
360baa1553 Update branding in MacOSInstaller.svg 2024-07-16 08:48:36 +00:00
mauro 🤙
a34675379b chore: Remove linker option from mozconfig 2024-07-16 08:46:28 +00:00
mauro 🤙
215e2f10a9 chore: Remove enable-rust-si option from mozconfig 2024-07-16 08:37:21 +00:00
mauro 🤙
ca9b6525a2 chore: Update mozconfig to fix target option for Windows build 2024-07-16 08:29:25 +00:00
mauro 🤙
47cddef5de chore: Remove disable-maintenance-service option from mozconfig 2024-07-16 08:28:19 +00:00
mauro 🤙
bbedfd50a5 chore: Update mozconfig to enable LTO and remove unused options 2024-07-16 08:18:32 +00:00
mauro 🤙
6f60d2ff48 Merge pull request #63 from thisisarnabdas/patch-1
Fixed the license link
2024-07-16 09:08:10 +02:00
ARNAB DAS
0f76e65372 Update README.md 2024-07-16 01:30:50 +00:00
mauro 🤙
d83f189a63 chore: Update MPL LICENSE link in README.md 2024-07-15 21:57:48 +00:00
Mauro Balades
f1d4b27c58 chore: Update privacy preferences and disable telemetry 2024-07-15 03:25:12 +02:00
Mauro Balades
f2ace58825 chore: Update mozconfig to enable LTO and remove unused options 2024-07-15 03:19:11 +02:00
Mauro Balades
fe74d96914 chore: Enable workspaces by default 2024-07-15 02:57:18 +02:00
Mauro Balades
379232e94a chore: Update mozconfig to enable LTO and remove unused options 2024-07-15 01:59:27 +02:00
Mauro Balades
7e74d75612 chore: Update mozconfig to enable LTO and remove unused options 2024-07-15 01:48:55 +02:00
Mauro Balades
ac92f251bc chore: Enable LTO and remove unused options in mozconfig 2024-07-15 01:29:40 +02:00
Mauro Balades
42711a079b Added test LTO flags 2024-07-15 01:09:25 +02:00
mauro-balades
373937ea0c 🔖 Update version to 1.0.0-a.4 2024-07-14 15:08:34 +00:00
Mauro Balades
285a8de152 Refactor CSS selectors for open elements in navbar and toolbox 2024-07-14 17:07:28 +02:00
mauro-balades
11da1bf9ba 🔖 Update version to 1.0.0-a.4 2024-07-14 14:59:56 +00:00
Mauro Balades
bcb3a88d16 Refactor CSS selectors for open elements in navbar and toolbox 2024-07-14 16:58:30 +02:00
mauro-balades
092fc77fb0 🔖 Update version to 1.0.0-a.4 2024-07-14 14:54:22 +00:00
Mauro Balades
9e2cd65560 Disable workspaces by default for now 2024-07-14 16:53:31 +02:00
Mauro Balades
f8fbc79f35 Add default icon for tabs with no icon 2024-07-14 16:43:20 +02:00
Mauro Balades
577c57ba87 Refactor tab styling and layout for pinned tabs 2024-07-14 16:37:57 +02:00
Mauro Balades
0d28e86fea God, I shoud've had never created compact mode 2024-07-14 15:41:13 +02:00
Mauro Balades
41862e5d39 feat: Add link to latest release notes in README.md 2024-07-14 01:13:35 +02:00
mauro-balades
5559d1375c 🔖 Update version to 1.0.0-a.3 2024-07-13 22:59:04 +00:00
Mauro Balades
9907722feb chore: Enable Zen Workspaces functionality and set default workspace to "Default Workspace" 2024-07-14 00:58:08 +02:00
Mauro Balades
4b706ff33a Fixed subwindows not displaying correctly (closes #54) 2024-07-14 00:48:20 +02:00
Mauro Balades
52b6eab0d7 Refactor ZenWorkspaces to use _createNewTabForWorkspace method for preparing new workspace 2024-07-14 00:32:35 +02:00
Mauro Balades
8dd9b01048 Refactor ZenWorkspaces to use _createNewTabForWorkspace method for preparing new workspace 2024-07-14 00:31:09 +02:00
Mauro Balades
8521a2d044 chore: Update npm init script to use npm run commands for bootstrap and import 2024-07-13 22:29:33 +02:00
Mauro Balades
7e1c76a1da Refactor ZenWorkspaces to use _createNewTabForWorkspace method for preparing new workspace 2024-07-13 22:09:50 +02:00
Mauro Balades
9a816fe73a Refactor ZenWorkspaces to use _createNewTabForWorkspace method for preparing new workspace 2024-07-13 21:32:07 +02:00
Mauro Balades
b0c036e72b chore: Refactor ZenWorkspaces to use _createNewTabForWorkspace method for preparing new workspace 2024-07-13 21:03:14 +02:00
Mauro Balades
0a34fb4fb0 chore: Add onLocationChange method to ZenWorkspaces 2024-07-13 20:53:46 +02:00
Mauro Balades
aa812d1fea feat: Enable Zen Workspaces functionality 2024-07-13 20:39:44 +02:00
Mauro Balades
c63cfebd4f Started working on workspaces 2024-07-13 17:53:22 +02:00
Mauro Balades
c76492571b chore: Update zen-browser-shared.css to hide tab icon overlay 2024-07-13 13:43:40 +02:00
Mauro Balades
34a40bbf86 chore: Update alpha.yml GitHub workflow to use flatpak-github-actions:gnome-44 container 2024-07-13 12:05:06 +02:00
Mauro Balades
1132c70565 chore: Update if condition in alpha.yml GitHub workflow 2024-07-13 11:50:15 +02:00
Mauro Balades
515a0d4016 chore: Build flatpak repos in GitHub workflow 2024-07-13 10:31:04 +02:00
Mauro Balades
9d6cf0cb6c Fixed pinned tabs and welcome page 2024-07-13 10:00:42 +02:00
mauro-balades
f585ad045b 🔖 Update version to 1.0.0-a.2 2024-07-12 23:09:02 +00:00
Mauro Balades
0b9832dcc2 chore: Add macOS update manifest to alpha workflow 2024-07-13 01:08:29 +02:00
mauro-balades
882a6b87c7 🔖 Update version to 1.0.0-a.2 2024-07-12 21:27:13 +00:00
Mauro Balades
3ff2bcaace chore: Update zen-browser-shared.css to hide tab icon overlay (closes #41) 2024-07-12 23:24:22 +02:00
Mauro Balades
bd0cf2ea86 chore: Update zen-browser-shared.css to round the border radius of browserStack > browser 2024-07-12 23:15:24 +02:00
Mauro Balades
cfee3bf9c3 chore: Update branding names for Firefox Screenshots, Firefox Profiler, Firefox Translations, Firefox Suggest, Firefox Home, and Firefox View 2024-07-12 22:51:07 +02:00
Mauro Balades
fc8c0facdd chore: Update pnpm cache setup in GitHub workflow 2024-07-12 22:48:21 +02:00
Mauro Balades
ad79a7e318 chore: Update runs-on to macos-14 for Mac job, add macos.mar to artifact list, and update mozconfig for Linux build 2024-07-12 21:36:05 +02:00
Mauro Balades
9297fe8f9a chore: Update runs-on to macos-14 for Mac job and bump @zen-browser/surfer to version 1.0.14 2024-07-12 19:43:09 +02:00
Mauro Balades
73b7903839 chore: Update runs-on to macos-14 for Mac job 2024-07-12 19:30:21 +02:00
Mauro Balades
cef86e1b02 chore: Update mozconfig for Linux build 2024-07-12 19:05:48 +02:00
Mauro Balades
a274035159 chore: Set ZEN_RELEASE environment variable for surfer build 2024-07-12 18:53:43 +02:00
Mauro Balades
c57e93ba7b let's try build for macos 2024-07-12 18:18:17 +02:00
mauro-balades
82327db0d2 🔖 Update version to 1.0.0-a.1 2024-07-12 14:11:35 +00:00
413 changed files with 4556 additions and 1154 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
patreon: zen_browser

63
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,63 @@
name: Bug Report
description: File a bug report
labels: [bug]
body:
- type: markdown
attributes:
value: |
Thank you for filing a bug report.
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Also tell us, what did you expect to happen?
placeholder: Tell us what you see!
validations:
required: true
- type: checkboxes
id: firefox
attributes:
label: Reproducible?
description: Is this issue reproducible on Firefox?
options:
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
- type: input
id: version
attributes:
label: Version
description: What version of our software are you running? Please DO NOT report Classic bugs.
placeholder: 1.0.0
validations:
required: true
- type: dropdown
id: severity
attributes:
label: Severity impact
description: See label descriptions for more information.
options:
- Low
- Medium
- High
- Critical
- Enhancement
multiple: true
validations:
required: true
- type: dropdown
id: platform
attributes:
label: What platform are you seeing the problem on?
multiple: true
options:
- Linux
- macOS
- Windows
validations:
required: true
- type: textarea
id: logs
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

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1 @@
blank_issues_enabled: true

View File

@@ -0,0 +1,20 @@
---
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.

18
.github/advanced-issue-labeler.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
---
# Keep up to date with workflows/issue-create.yml !!!
policy:
- section:
- id: [severity]
label:
- name: 'kind: low severity'
keys: ['Low']
- name: 'kind: medium severity'
keys: ['Medium']
- name: 'kind: high severity'
keys: ['High']
- name: 'kind: critical severity'
keys: ['Critical']
- name: 'kind: enhancement'
keys: ['Enhancement']

View File

@@ -41,14 +41,6 @@ jobs:
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
@@ -57,9 +49,15 @@ jobs:
npm i -g @zen-browser/surfer
- name: Bump version
if: ${{ github.event.inputs.update_version == 'true' }}
run: |
pnpm surfer ci --brand alpha --bump prerelease
- name: Bump version without new version
if: ${{ github.event.inputs.update_version == 'false' }}
run: |
pnpm surfer ci --brand alpha
- name: Debug
run: |
surfer get version
@@ -101,14 +99,6 @@ jobs:
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
@@ -133,267 +123,6 @@ jobs:
exit 1
fi
linux:
permissions:
contents: write
runs-on: ubuntu-latest
needs: [build-data, check-release]
steps:
- 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
with:
swap-size-gb: 6
- name: Setup git
run: |
git config --global user.email "mauro-balades@users.noreply.github.com"
git config --global user.name "mauro-balades"
- name: Install system dependencies
run: |
sudo apt-get update --fix-missing
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: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Install sccache
env:
LINK: https://github.com/mozilla/sccache/releases/download
SCCACHE_VERSION: 0.2.13
run: |
SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl
mkdir -p $HOME/.local/bin
curl -L "$LINK/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz
mv -f $SCCACHE_FILE/sccache $HOME/.local/bin/sccache
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Save sccache
uses: actions/cache@v3
continue-on-error: false
with:
path: /home/runner/.cache/sccache
key: ${{ runner.os }}-sccache
- name: Install pnpm
run: npm install -g pnpm
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Load surfer CI setup
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
- name: Download firefox source and dependencies
run: pnpm surfer download
- name: Import
run: pnpm surfer import
- name: Bootstrap
run: |
cd engine
./mach --no-interactive bootstrap --application-choice browser
cd ..
- name: Build
run: |
export ZEN_RELEASE=1
pnpm build
- name: Package
run: pnpm package
- name: Rename artifacts
run: |
mv dist/zen-*.tar.bz2 "zen.linux.tar.bz2"
mv dist/output.mar linux.mar
- name: Upload binary
uses: actions/upload-artifact@v3
with:
name: zen.linux.tar.bz2
path: ./zen.linux.tar.bz2
- name: Upload mar
uses: actions/upload-artifact@v3
with:
name: linux.mar
path: ./linux.mar
- name: Upload update manifests
uses: actions/upload-artifact@v3
with:
name: linux_update_manifest
path: ./dist/update
windows:
runs-on: ubuntu-latest
needs: [build-data, check-release]
steps:
- name: Install Node.js and pnpm
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
with:
swap-size-gb: 6
- name: Install pnpm
run: npm install -g pnpm
- name: Setup git
run: |
git config --global user.email "mauro-balades@users.noreply.github.com"
git config --global user.name "mauro-balades"
- name: Install dependencies
run: |
pnpm i
- name: Load surfer CI setup
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
- name: Download
run: pnpm surfer download
- name: Free up space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Setup For Windows
run: |
set -x
mkdir -p ~/win-cross
cd engine/
echo Setup wine
aria2c "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/gecko.cache.level-1.toolchains.v3.linux64-wine.latest/artifacts/public%2Fbuild%2Fwine.tar.zst" -o wine.tar.zst
tar --zstd -xvf wine.tar.zst -C ~/win-cross
rm wine.tar.zst
echo Setup Visual Studio
sudo apt install -y msitools python3-pip
./mach python --virtualenv build taskcluster/scripts/misc/get_vs.py build/vs/vs2022.yaml ~/win-cross/vs2022
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"
pnpm surfer bootstrap
cd engine/
ls ~/.mozbuild/clang/lib/clang/
echo "export LIB=\"$(cd ~/.mozbuild/clang/lib/clang/* && cd lib/windows && pwd)\"" >> ../configs/common/mozconfig
cat ../configs/common/mozconfig
ls ~/win-cross/wine || true
ls ~/win-cross/vs2022 || true
- name: setup Rust
run: |
cd engine/
# Install a rust version compatible with 17
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.76
source $HOME/.cargo/env
rustup target add x86_64-pc-windows-msvc
cargo install cargo-download
cargo download -x windows=0.52.0
#? https://github.com/mozilla/sccache#known-caveats
export CARGO_INCREMENTAL=0
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.52.0" >> ../configs/common/mozconfig
- name: Import
run: pnpm surfer import --verbose
- name: Build
run: |
unset SURFER_PLATFORM
export ZEN_RELEASE=1
export ZEN_CROSS_COMPILING=1
pnpm build
- name: Package
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 .
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: zen.win64.zip
path: ./zen.win64.zip
- name: Upload mar
uses: actions/upload-artifact@v3
with:
name: windows.mar
path: ./windows.mar
- name: Upload installer
uses: actions/upload-artifact@v3
with:
name: zen.installer.exe
path: ./dist/zen.installer.exe
- name: Upload installer stub
uses: actions/upload-artifact@v3
with:
name: zen.installer.pretty.exe
path: ./dist/zen.installer.pretty.exe
- name: Upload update manifests
uses: actions/upload-artifact@v3
with:
name: windows_update_manifest
path: ./dist/update
source:
permissions:
@@ -445,129 +174,100 @@ jobs:
cd ..
- name: Upload artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: zen.source.tar.gz
path: ./zen.source.tar.gz
#windows-step-1:
# name: Windows build step 1 (PGO build)
# uses: ./.github/workflows/windows-alpha-build.yml
# needs: [build-data]
# permissions:
# contents: write
# with:
# build-version: ${{ needs.build-data.outputs.version }}
# generate-gpo: true
# profile-data-path-archive: zen-windows-x86_64-profile-data-and-jarlog.zip
#windows-step-2:
# name: Windows build step 2 (Generate profile data)
# uses: ./.github/workflows/windows-profile-build.yml
# permissions:
# contents: write
# needs: [windows-step-1, build-data]
# with:
# build-version: ${{ needs.build-data.outputs.version }}
# profile-data-path-archive: zen.win64-pgo-stage-1.zip
windows-step-3:
name: Windows build step 3 (build with profile data)
uses: ./.github/workflows/windows-alpha-build.yml
permissions:
contents: write
needs: [build-data]
with:
build-version: ${{ needs.build-data.outputs.version }}
generate-gpo: false
linux:
name: Linux build
uses: ./.github/workflows/linux-alpha-build.yml
permissions:
contents: write
needs: [build-data]
with:
build-version: ${{ needs.build-data.outputs.version }}
mac:
if: false
runs-on: macos-13
needs: [build-data, check-release]
steps:
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 20
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- uses: actions/checkout@v3
- name: Setup git
run: |
git config --global user.email "mauro-balades@users.noreply.github.com"
git config --global user.name "mauro-balades"
- name: Install system dependencies
run: |
brew install cairo sccache gnu-tar mercurial
sudo pip install setuptools
- name: Force usage fo gnu-tar
run: |
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zsh
source ~/.bash_profile
- name: Save sccache
uses: actions/cache@v3
continue-on-error: false
with:
path: ~/Library/Caches/Mozilla.sccache
key: ${{ runner.os }}-sccache
- name: Install pnpm
run: npm install -g pnpm
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Load surfer CI setup
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
- 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
cd ..
- name: surfer build
run: pnpm build --verbose
- name: Package
run: pnpm package
- name: Rename artifacts
run: |
mv ./dist/*.dmg "zen.macos.dmg"
mv ./dist/output.mar macos.mar
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: zen.macos.dmg
path: ./zen.macos.dmg
- name: Upload mar
uses: actions/upload-artifact@v3
with:
name: macos.mar
path: ./macos.mar
- name: Upload update manifests
uses: actions/upload-artifact@v3
with:
name: macos_update_manifest
path: ./dist/update
name: macOS build
uses: ./.github/workflows/macos-alpha-build.yml
permissions:
contents: write
needs: [build-data]
with:
build-version: ${{ needs.build-data.outputs.version }}
release:
if: ${{ github.event.inputs.create_release == 'true' }}
permissions: write-all
name: Release
needs: [build-data, linux, source, windows, check-release]
needs: [build-data, linux, source, windows-step-3, check-release, mac]
runs-on: ubuntu-latest
steps:
- name: Update repo
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Git Pull
run: git pull
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
- name: List
run: find .
- name: Clone updates repo
uses: actions/checkout@v4
with:
repository: zen-browser/updates-server
path: updates-server
token: ${{ secrets.DEPLOY_KEY }}
- name: Copy update manifests
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/
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 🚀 Update update manifests
commit_user_name: Zen Browser Robot
commit_user_email: zen-browser-bot@users.noreply.github.com
repository: ./updates-server
- name: release-github
uses: 'marvinpinto/action-automatic-releases@latest'
@@ -581,30 +281,7 @@ jobs:
zen.source.tar.gz
linux.mar
windows.mar
macos.mar
zen.installer.exe
zen.installer.pretty.exe
- name: List
run: find .
- name: Clone updates repo
uses: actions/checkout@v3
with:
repository: zen-browser/updates-server
path: updates-server
token: ${{ secrets.DEPLOY_KEY }}
- name: Copy update manifests
run: |
cd updates-server
mkdir -p updates
cp -a ../linux_update_manifest/. updates/
cp -a ../windows_update_manifest/. updates/
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 🚀 Update update manifests
commit_user_name: Zen Browser Robot
commit_user_email: zen-browser-bot@users.noreply.github.com
repository: ./updates-server
zen.macos.dmg

35
.github/workflows/issue-create.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
name: Issue labeler
on:
issues:
types: [ opened ]
permissions:
contents: read
jobs:
label-component:
runs-on: ubuntu-latest
permissions:
# required for all workflows
issues: write
# only required for workflows in private repositories
actions: read
contents: read
steps:
- uses: actions/checkout@v3
- name: Parse issue form
uses: stefanbuck/github-issue-parser@v3
id: issue-parser
with:
template-path: .github/ISSUE_TEMPLATE/bug_report.yml
- name: Set labels based on severity field
uses: redhat-plumbers-in-action/advanced-issue-labeler@v3
with:
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
token: ${{ secrets.GITHUB_TOKEN }}
section: severity

129
.github/workflows/linux-alpha-build.yml vendored Normal file
View File

@@ -0,0 +1,129 @@
on:
workflow_call:
inputs:
build-version:
description: 'The version to build'
required: true
type: string
jobs:
build-linux:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- 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
with:
swap-size-gb: 6
- name: Setup git
run: |
git config --global user.email "mauro-balades@users.noreply.github.com"
git config --global user.name "mauro-balades"
- name: Install system dependencies
run: |
sudo apt-get update --fix-missing
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:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Install sccache
env:
LINK: https://github.com/mozilla/sccache/releases/download
SCCACHE_VERSION: 0.2.13
run: |
SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl
mkdir -p $HOME/.local/bin
curl -L "$LINK/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz
mv -f $SCCACHE_FILE/sccache $HOME/.local/bin/sccache
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Save sccache
uses: actions/cache@v3
continue-on-error: false
with:
path: /home/runner/.cache/sccache
key: ${{ runner.os }}-sccache
- name: Install pnpm
run: npm install -g pnpm
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Install dependencies
run: pnpm install
- name: Load surfer CI setup
run: pnpm surfer ci --brand alpha --display-version ${{ inputs.build-version }}
- name: Download firefox source and dependencies
run: pnpm surfer download
- name: Import
run: pnpm surfer import
- name: Bootstrap
run: |
cd engine
./mach --no-interactive bootstrap --application-choice browser
cd ..
- name: Build
continue-on-error: true
run: sh .github/workflows/src/alpha-build.sh
- name: Build again if it failed
if: failure()
run: sh .github/workflows/src/alpha-build.sh
- name: Package
run: pnpm package
- name: Rename artifacts
run: |
mv dist/zen-*.tar.bz2 "zen.linux.tar.bz2"
mv dist/output.mar linux.mar
- name: Upload binary
uses: actions/upload-artifact@v4
with:
name: zen.linux.tar.bz2
path: ./zen.linux.tar.bz2
- name: Upload mar
uses: actions/upload-artifact@v4
with:
name: linux.mar
path: ./linux.mar
- name: Upload update manifests
uses: actions/upload-artifact@v4
with:
name: linux_update_manifest
path: ./dist/update

102
.github/workflows/macos-alpha-build.yml vendored Normal file
View File

@@ -0,0 +1,102 @@
on:
workflow_call:
inputs:
build-version:
description: 'The version to build'
required: true
type: string
jobs:
mac-build:
runs-on: macos-14
steps:
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 20
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- uses: actions/checkout@v4
- name: Setup git
run: |
git config --global user.email "mauro-balades@users.noreply.github.com"
git config --global user.name "mauro-balades"
- name: Install system dependencies
run: |
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
- name: Force usage fo gnu-tar
run: |
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zsh
source ~/.bash_profile
- name: Install pnpm
run: npm install -g pnpm
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Install dependencies
run: pnpm install
- name: Load surfer CI setup
run: pnpm surfer ci --brand alpha --display-version ${{ inputs.build-version }}
- 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
cd ..
- name: build Zen
run: sh .github/workflows/src/alpha-build.sh
- name: Rebuild Zen if failed
if: failure()
run: sh .github/workflows/src/alpha-build.sh
- name: Package
run: pnpm package
- name: Rename artifacts
run: |
mv ./dist/*.dmg "zen.macos.dmg"
mv ./dist/output.mar macos.mar
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: zen.macos.dmg
path: ./zen.macos.dmg
- name: Upload mar
uses: actions/upload-artifact@v4
with:
name: macos.mar
path: ./macos.mar
- name: Upload update manifests
uses: actions/upload-artifact@v4
with:
name: macos_update_manifest
path: ./dist/update

27
.github/workflows/src/alpha-build.sh vendored Normal file
View File

@@ -0,0 +1,27 @@
set -ex
if command -v apt-get &> /dev/null
then
sudo apt-get update
sudo apt-get install -y xvfb
fi
ulimit -n 4096
# Check if xfvb is installed
if ! command -v Xvfb &> /dev/null; then
if ! test "$ZEN_CROSS_COMPILING"
then
Xvfb :2 -screen 0 1024x768x24 &
export LLVM_PROFDATA=$HOME/.mozbuild/clang/bin/llvm-profdata
export DISPLAY=:2
fi
export ZEN_RELEASE=1
pnpm build
else
echo "Xvfb could not be found, running without it"
echo "ASSUMING YOU ARE RUNNING THIS ON MACOS"
set -v
export ZEN_RELEASE=1
pnpm build
fi

View File

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

@@ -7,15 +7,13 @@ 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-mingw32
ac_add_options --target=x86_64-pc-windows-msvc
export MOZ_STUB_INSTALLER=1
export MOZ_MAINTENANCE_SERVICE=
export MOZ_PKG_FORMAT=TAR
export CROSS_BUILD=1
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"
CROSS_COMPILE=1
TOOLS=$(echo ~)/win-cross
export MIDL="$TOOLS/wine/bin/widl"
@@ -23,19 +21,20 @@ 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 --enable-release
ac_add_options --enable-rust-simd
ac_add_options RUSTC_OPT_LEVEL=3
export MOZILLA_OFFICIAL=1
export RUSTFLAGS="$RUSTFLAGS -Ctarget-cpu=x86-64"
ac_add_options --enable-default-browser-agent
ac_add_options --enable-install-strip
ac_add_options --enable-jxl
ac_add_options --disable-maintenance-service
ac_add_options --disable-bits-download
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE
#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

@@ -0,0 +1,199 @@
on:
workflow_call:
inputs:
generate-gpo:
required: true
type: boolean
default: false
build-version:
description: 'The version to build'
required: true
type: string
profile-data-path-archive:
description: 'The path to the zip archive containing the profile data'
type: string
jobs:
windows-build:
runs-on: ubuntu-latest
steps:
- 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
- name: Install pnpm
run: npm install -g pnpm
- name: Setup git
run: |
git config --global user.email "mauro-balades@users.noreply.github.com"
git config --global user.name "mauro-balades"
- name: Install dependencies
run: |
pnpm i
- name: Load surfer CI setup
run: pnpm surfer ci --brand alpha --display-version ${{ inputs.build-version }}
- 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
id: cache-win-cross
uses: actions/cache@v4
with:
path: ${HOME}/win-cross
key: win-cross
- name: Configure sccache
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Setup For Windows
if: steps.cache-win-cross.outputs.cache-hit != 'true'
run: |
set -x
mkdir -p ~/win-cross
cd engine/
echo Setup wine
aria2c "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/gecko.cache.level-1.toolchains.v3.linux64-wine.latest/artifacts/public%2Fbuild%2Fwine.tar.zst" -o wine.tar.zst
tar --zstd -xvf wine.tar.zst -C ~/win-cross
rm wine.tar.zst
echo Setup Visual Studio
sudo apt install -y msitools python3-pip
./mach python --virtualenv build taskcluster/scripts/misc/get_vs.py build/vs/vs2022.yaml ~/win-cross/vs2022
- name: Bootstrap
run: |
set -x
cd engine/
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"
pnpm surfer bootstrap
cd engine/
ls ~/.mozbuild/clang/lib/clang/
echo "export LIB=\"$(cd ~/.mozbuild/clang/lib/clang/* && cd lib/windows && pwd)\"" >> ../configs/common/mozconfig
cat ../configs/common/mozconfig
ls ~/win-cross/wine || true
ls ~/win-cross/vs2022 || true
- name: setup Rust
run: |
cd engine/
# Install a rust version compatible with 17
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.76
source $HOME/.cargo/env
rustup target add x86_64-pc-windows-msvc
cargo install cargo-download
cargo download -x windows=0.52.0
#? https://github.com/mozilla/sccache#known-caveats
export CARGO_INCREMENTAL=0
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.52.0" >> ../configs/common/mozconfig
- uses: actions/download-artifact@v4
name: Download artifact if use profdata
if: ${{ !inputs.generate-gpo }}
with:
path: ~/artifact
- name: Import
run: pnpm surfer import --verbose
- name: Build
run: |
set -x
export SURFER_PLATFORM="win32"
export ZEN_CROSS_COMPILING=1
# if test ${{ inputs.generate-gpo }}; then
# export ZEN_GA_GENERATE_PROFILE=1
# fi
sh .github/workflows/src/alpha-build.sh
- name: Package
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 .
- name: Move package for PGO upload
if: ${{ inputs.generate-gpo }}
run: |
set -x
mv ./zen.win64.zip ./zen.win64-pgo-stage-1.zip
- name: Upload artifact
uses: actions/upload-artifact@v4
if: ${{ !inputs.generate-gpo }}
with:
name: zen.win64.zip
path: ./zen.win64.zip
- name: Upload PGO build
uses: actions/upload-artifact@v4
if: ${{ inputs.generate-gpo }}
with:
name: ${{ 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: Upload installer
uses: actions/upload-artifact@v4
if: ${{ !inputs.generate-gpo }}
with:
name: zen.installer.exe
path: ./dist/zen.installer.exe
- name: Upload installer stub
uses: actions/upload-artifact@v4
if: ${{ !inputs.generate-gpo }}
with:
name: zen.installer.pretty.exe
path: ./dist/zen.installer.pretty.exe
- name: Upload update manifests
uses: actions/upload-artifact@v4
if: ${{ !inputs.generate-gpo }}
with:
name: windows_update_manifest
path: ./dist/update

View File

@@ -0,0 +1,91 @@
on:
workflow_call:
inputs:
build-version:
description: 'The version to build'
required: true
type: string
profile-data-path-archive:
description: 'The path to the zip archive containing the profile data'
required: false
type: string
jobs:
windows-profile-build:
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:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node.js and pnpm
uses: actions/setup-node@v3
with:
node-version: 20
- name: Setup git
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: Unpack artifact
run: |
cd C:\artifact
ls
7z x ${{ inputs.profile-data-path-archive }}
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 './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
timeout-minutes: 15
- name: Publish merged.profdata
uses: actions/upload-artifact@v4
with:
path: merged.profdata
- name: Publish en-US.log
uses: actions/upload-artifact@v4
with:
path: en-US.log

373
LICENSE Normal file
View File

@@ -0,0 +1,373 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
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/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.

View File

@@ -5,7 +5,9 @@ Experience tranquillity while browsing the web without people tracking you!
# Compatibility
Zen is currently built using firefox version `128.0`!
Zen is currently built using firefox version `128.0.3`!
* Checkout the latest [releases notes](https://get-zen.vercel.app/release-notes)!
## 🚀 Run Locally
@@ -25,7 +27,7 @@ npm i
Download and bootstrap the browser
```
npm run bootstrap
npm run init
```
Start building the browser
@@ -48,8 +50,11 @@ 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)
## License
[MPL LICENSE](https://choosealicense.com/licenses/mit/)
[MPL LICENSE](/LICENSE)

View File

@@ -1,4 +1,4 @@
<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" />
<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: 228 B

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 483 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 B

After

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 629 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 830 B

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -1,4 +1,4 @@
<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" />
<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: 228 B

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 483 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 B

After

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 629 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 830 B

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -1,11 +1,10 @@
# Browser branding
ac_add_options --enable-update-channel=release
ac_add_options --without-wasm-sandboxed-libraries
# ac_add_options --with-branding=beta
ac_add_options --with-app-name=${binName}
ac_add_options --with-app-basename=Zen
export MOZ_USER_DIR="${name}"
export MOZ_APP_VENDOR="${vendor}"
export MOZ_APP_BASENAME=Zen
@@ -13,45 +12,102 @@ export MOZ_APP_PROFILE=${binName}
export MOZ_APP_DISPLAYNAME="${name}"
export MOZ_BRANDING_DIRECTORY=${brandingDir}
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
export MOZ_MACBUNDLE_ID=${appId}
export MOZ_DISTRIBUTION_ID=${appId}
# Uncomment if builds are too resource hungry
# mk_add_options MOZ_MAKE_FLAGS="-j4"
#ac_add_options --enable-linker=gold
# ac_add_options --enable-linker=gold
# Misc
export MOZ_STUB_INSTALLER=1
export MOZ_INCLUDE_SOURCE_INFO=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
ac_add_options --enable-hardening
ac_add_options --enable-rust-simd
ac_add_options --enable-release
ac_add_options --enable-optimize
ac_add_options --with-ccache=sccache
ac_add_options --disable-debug
ac_add_options --disable-crashreporter
ac_add_options --disable-dmd
ac_add_options --disable-geckodriver
ac_add_options --disable-parental-controls
ac_add_options --disable-profiling
ac_add_options --disable-tests
if test "$ZEN_RELEASE"; then
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-accessibility
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-proxy-bypass-protection
ac_add_options --enable-hardening
ac_add_options --disable-crashreporter
ac_add_options --disable-geckodriver
ac_add_options --disable-rust-tests
ac_add_options --disable-default-browser-agent
export MOZ_LTO=1
ac_add_options MOZ_LTO=1
ac_add_options --enable-lto
ac_add_options --enable-jemalloc
ac_add_options --disable-jprof
mk_add_options MOZILLA_OFFICIAL=1
MOZILLA_OFFICIAL=1
export MOZILLA_OFFICIAL=1
mk_add_options MOZ_OPTIMIZE=1
MOZ_OPTIMIZE=1
export MOZ_OPTIMIZE=1
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
fi
ac_add_options --enable-unverified-updates
ac_add_options --enable-updater
ac_add_options --without-wasm-sandboxed-libraries
ac_add_options --enable-raw
ac_add_options --enable-webrtc
ac_add_options --enable-jxl
ac_add_options --enable-av1
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=
ac_add_options --target=x86_64-pc-linux-gnu
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
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE
if test "$ZEN_CROSS_COMPILING"; then
ac_add_options --target=x86_64-pc-linux-gnu
fi
export MOZ_APP_UA_NAME="Firefox"
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE

View File

@@ -1,14 +1,7 @@
ac_add_options --enable-wasm-avx
# not when cross compiling
if ! test "$ZEN_CROSS_COMPILING"; then
if test "$ZEN_RELEASE"; then
ac_add_options --enable-optimize="-march=x86-64 -msse3 -mtune=haswell -O3 -w"
ac_add_options --enable-release
ac_add_options --enable-rust-simd
ac_add_options RUSTC_OPT_LEVEL=3
export MOZILLA_OFFICIAL=1
export RUSTFLAGS="$RUSTFLAGS -Ctarget-cpu=x86-64"
fi
if test -d "$HOME/.mozbuild/clang/bin"; then
export CC="$HOME"/.mozbuild/clang/bin/clang
@@ -19,7 +12,31 @@ if ! test "$ZEN_CROSS_COMPILING"; then
fi
ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack
fi
if test "$ZEN_RELEASE"; then
ac_add_options --enable-strip
export STRIP_FLAGS="--strip-debug --strip-unneeded"
if [ -f /home/runner/.mozbuild/sccache/sccache ]; then
mk_add_options 'export RUSTC_WRAPPER=/home/runner/.mozbuild/sccache/sccache'
mk_add_options 'export CCACHE_CPP2=yes'
ac_add_options --with-ccache=/home/runner/.mozbuild/sccache/sccache
mk_add_options 'export SCCACHE_GHA_ENABLED=on'
fi
# PGO may cause link errors on windows!
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="$CFLAGS -march=x86-64-v2 -mtune=haswell -O3 -pipe -fno-plt -fexceptions -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection"
export CXXLAGS="$CXXFLAGS -march=x86-64-v2 -mtune=haswell -O3 -pipe -fno-plt -fexceptions -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection"
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 codegen-units=1 -Ctarget-cpu=x86-64-v2"
fi
# Disable telemetry and tracking

View File

@@ -1,14 +1,12 @@
# Optimise builds
ac_add_options --enable-application=browser
ac_add_options --enable-hardening
ac_add_options --enable-rust-simd
ac_add_options --enable-release
ac_add_options --enable-optimize
ac_add_options --with-ccache=sccache
ac_add_options --disable-debug
ac_add_options --enable-updater
mk_add_options MOZ_MAKE_FLAGS="-j4"
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"
# Disable telemetry and tracking
mk_add_options MOZ_TELEMETRY_REPORTING=
mk_add_options MOZ_DATA_REPORTING=
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
export MOZ_MACBUNDLE_ID=${appId}
export MOZ_MACBUNDLE_NAME="Zen Browser.app"

View File

@@ -1,5 +1,4 @@
ac_add_options --enable-js-shell
# Disable telemetry and tracking
mk_add_options MOZ_TELEMETRY_REPORTING=

13
docs/changes.md Normal file
View File

@@ -0,0 +1,13 @@
## Changed things that should be tested each release
* Workspaces
* Sidebar
* Split views
* Vertical tabs (expanded and not expanded)
* Tab groups
* Welcome Page
* Overall performance
* Overall stability
* Pinning tabs (Grid layout)
* Overall UX

19
docs/workspaces.md Normal file
View File

@@ -0,0 +1,19 @@
# Workspaces Layout
```
{
"workspaces": [
{
"uuid": "uuid1",
"name": "workspace1",
"icon": "icon1",
"default": true
},
...
]
}
```
To save the tabs and identity them, they will contain a `zen-workspace-uuid` attribute with the workspace uuid.
We will make use of firefox's builtin session restore feature to save the tabs and windows after the user closes the browser.

View File

@@ -8,11 +8,12 @@
"start": "cd engine && ./mach run --noprofile",
"import": "surfer import",
"export": "surfer export",
"init": "npm run bootstrap && npm run import",
"bootstrap": "surfer download && surfer bootstrap",
"package": "surfer package",
"update-ff": "python3 scripts/update_ff.py",
"update-ff:raw": "surfer update",
"update-newtab": "python3 update_newtab.py"
"update-newtab": "python3 scripts/update_newtab.py"
},
"repository": {
"type": "git",
@@ -26,6 +27,6 @@
},
"homepage": "https://github.com/zen-browser/core#readme",
"dependencies": {
"@zen-browser/surfer": "^1.0.13"
"@zen-browser/surfer": "^1.1.8"
}
}

545
pnpm-lock.yaml generated
View File

@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@zen-browser/surfer':
specifier: ^1.0.13
version: 1.0.13
specifier: ^1.1.8
version: 1.1.8
packages:
@@ -109,8 +109,8 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
'@zen-browser/surfer@1.0.13':
resolution: {integrity: sha512-1lM62lJbaLNQJNC/aYNpbdg3SNBno8HXEgsbFlYwS6hZ92aekO8qu1Uy7YlCvxq0jUB6iJ4AgjP4vKmItw5ZOQ==}
'@zen-browser/surfer@1.1.8':
resolution: {integrity: sha512-y51pqi0eMeiuXn+86Qfec3kHK4F3l6e0ut3LDewDY+f3TDe6xGTQb5z975KIW7GAz0KAOe/jWsrqvD0a87Sqxg==}
hasBin: true
ansi-regex@5.0.1:
@@ -124,6 +124,10 @@ packages:
argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
async-compat@1.4.7:
resolution: {integrity: sha512-DzJRBBF6Q+AJYuAnFXflE5P0FEkJ7oKMOOR4YhzMNZsDnXOSUdCpYt+PpbCGrljempC3hujxy48rHBcBAWdr7g==}
engines: {node: '>=0.8'}
async-icns@1.0.2:
resolution: {integrity: sha512-d2P/f3aAWdOE3+tEqTW4HLj9Ob7/t54/NH2nRFK9Q7ZhJJXK7TlF1G3vgB6UP/ILHjI3Akjv+d8sFXyAZxCIFQ==}
hasBin: true
@@ -131,12 +135,43 @@ packages:
axios@0.21.4:
resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
base64-js@0.0.2:
resolution: {integrity: sha512-Pj9L87dCdGcKlSqPVUjD+q96pbIx1zQQLb2CUiWURfjiBELv84YX+0nGnKmyT/9KkC7PQk7UN1w+Al8bBozaxQ==}
engines: {node: '>= 0.4'}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
bl@2.2.1:
resolution: {integrity: sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==}
bl@3.0.1:
resolution: {integrity: sha512-jrCW5ZhfQ/Vt07WX1Ngs+yn9BDqPL/gw28S7s9H6QK/gupnizNzJAss5akW20ISgOrbLTlXOOCTJeNUQqruAWQ==}
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
bops@0.1.1:
resolution: {integrity: sha512-Cx1zStcMp+YoFan8OgudNPMih82eJZE+27feki1WeyoFTR9Ye7AR1SUW3saE6QQvdS/g52aJ2IojBjWOiRiLbw==}
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
buffer-alloc-unsafe@1.1.0:
resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==}
buffer-alloc@1.2.0:
resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
buffer-fill@1.0.0:
resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
buffer-v6-polyfill@1.0.5:
resolution: {integrity: sha512-LdUw/JMZyKN+EBDbOHqynYtOLXDjgo+uf5vCUhfO5hVsU2chvbqyexizvxUMaU4ipYZy9MiQyIFwMeIgsb6nBA==}
buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
@@ -173,9 +208,22 @@ packages:
resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
engines: {node: ^12.20.0 || >=14}
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
content-disposition@0.5.4:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
core-js-pure@3.37.1:
resolution: {integrity: sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==}
core-js@3.37.1:
resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==}
core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -192,6 +240,9 @@ packages:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
duplexify@4.1.3:
resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -211,6 +262,20 @@ packages:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
extract-base-iterator@1.0.1:
resolution: {integrity: sha512-CbDiNxzBKMsVv/EVZnG+itxULcsRijEUm1l8cZ5S0519R77MA9jX3FOJsf+96OnxfVwUJiy1q9+pDvXarkQKHQ==}
engines: {node: '>=0.8'}
fast-extract@1.1.0:
resolution: {integrity: sha512-uUN0xFXyicJXBhwP4a7IRYmLWDB8POLb1DpBy+4HyWwWcD8dzlWZCDUWXdpvjCq3ve/RWlWRIVT5ZJ4WKbIPZw==}
engines: {node: '>=0.8'}
fifo@2.4.1:
resolution: {integrity: sha512-XTbUCNmo54Jav0hcL6VxDuY4x1eCQH61HEF80C2Oww283pfjQ2C8avZeyq4v43sW2S2403kmzssE9j4lbF66Sg==}
flush-write-stream@2.0.0:
resolution: {integrity: sha512-uXClqPxT4xW0lcdSBheb2ObVU+kuqUk3Jk64EwieirEXZx9XUrVwp/JuBfKAWaM4T5Td/VL7QLDWPXp/MvGm/g==}
follow-redirects@1.15.6:
resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
engines: {node: '>=4.0'}
@@ -220,6 +285,10 @@ packages:
debug:
optional: true
fs-access-compat@1.0.3:
resolution: {integrity: sha512-bIT52oDQuazHSEnu17+MnRGVTTtLpMluu9Zuv25RhJ+iVWrTX95aXK+9yEsQ1ZaIRCWeHjx1IgR38QH/8psWKQ==}
engines: {node: '>=0.8'}
fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
@@ -227,6 +296,13 @@ packages:
resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
engines: {node: '>=12'}
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
get-caller-file@2.0.5:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
@@ -234,6 +310,10 @@ packages:
github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
globalyzer@0.1.0:
resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
@@ -247,6 +327,9 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
hash-string@1.0.0:
resolution: {integrity: sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==}
human-signals@2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
@@ -254,6 +337,14 @@ packages:
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
@@ -264,6 +355,10 @@ packages:
resolution: {integrity: sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
is-absolute@1.0.0:
resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==}
engines: {node: '>=0.10.0'}
is-apple-silicon@https://codeload.github.com/trickypr/is-apple-silicon/tar.gz/5f75501a1d7566ba9f94174b6825d7bd9d302b6a:
resolution: {tarball: https://codeload.github.com/trickypr/is-apple-silicon/tar.gz/5f75501a1d7566ba9f94174b6825d7bd9d302b6a}
version: 1.0.1
@@ -271,14 +366,35 @@ packages:
is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
is-error@2.2.2:
resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==}
is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
is-promise@4.0.0:
resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
is-relative@1.0.0:
resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==}
engines: {node: '>=0.10.0'}
is-stream@2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
is-unc-path@1.0.0:
resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==}
engines: {node: '>=0.10.0'}
is-windows@1.0.2:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
isarray@1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -297,6 +413,15 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
lifecycle@1.0.4:
resolution: {integrity: sha512-FJx0SNrM2rouctdOH4rATsHT+BvgyXX4LEQ+Yn9COQNPK3u4XAPp9qS7OKpRO22MeT39oxkjZkRcLnHxSmiduw==}
lodash.compact@3.0.1:
resolution: {integrity: sha512-2ozeiPi+5eBXW1CLtzjk8XQFhQOEMwwfxblqeq6EGyTxZJ1bPATqilY0e6g2SLQpP4KuMeuioBhEnWz5Pr7ICQ==}
lodash.throttle@4.1.1:
resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -308,12 +433,22 @@ packages:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
mkpath@1.0.0:
resolution: {integrity: sha512-PbNHr7Y/9Y/2P5pKFv5XOGBfNQqZ+fdiHWcuf7swLACN5ZW5LU7J5tMU8LSBjpluAxAxKYGD9nnaIbdRy9+m1w==}
mock-require-lazy@1.0.1:
resolution: {integrity: sha512-Sv05IW2MuG7C+gVTHirqF8cbqAM8MeMEIKU3MIQDA1pyXKnv0AGa/3l0iwXk/i+81OoFzt+iU0p8DdphV2Ejww==}
engines: {node: '>=0.8'}
modern-async@1.1.4:
resolution: {integrity: sha512-jaZlzQB3W9PRF43+T144lYWb7UaTapJM6MZxNGLqpgPVal6uV4ixkR+t/1H1/7UM03jDu5BnvAYDqeawvL7kiw==}
@@ -323,6 +458,9 @@ packages:
napi-build-utils@1.0.2:
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
next-tick@1.1.0:
resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
node-abi@3.65.0:
resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==}
engines: {node: '>=10'}
@@ -330,6 +468,10 @@ packages:
node-addon-api@5.1.0:
resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==}
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
@@ -341,6 +483,14 @@ packages:
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
engines: {node: '>=6'}
os-shim@0.1.3:
resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==}
engines: {node: '>= 0.4.0'}
path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@@ -363,6 +513,12 @@ packages:
engines: {node: '>=10'}
hasBin: true
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
progress-stream@2.0.0:
resolution: {integrity: sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==}
prompts@2.4.2:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
@@ -370,20 +526,49 @@ packages:
pump@3.0.0:
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
pumpify@2.0.1:
resolution: {integrity: sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==}
queue-cb@1.2.1:
resolution: {integrity: sha512-6BliHPdr+07JEc1f3WSZq1oun1okwC4g5StX+DBBIr4Xrx3a5oRLHV9fRFPH1kfOxP4o/sIsoJX3qY9JqTIORw==}
engines: {node: '>=0.8'}
rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
readable-stream@2.3.8:
resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
readable-stream@3.6.2:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
require_optional@1.0.1:
resolution: {integrity: sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==}
resolve-from@2.0.0:
resolution: {integrity: sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==}
engines: {node: '>=0.10.0'}
rimraf@2.7.1:
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
rustic@1.2.2:
resolution: {integrity: sha512-aagYrcImcYj3QbaP7nirOw8/q8aULMu0LkKucP9B4WsRbXlXpk195nYAEB+uJzAcgk2pKS+yMzbAJtIoOqwZoQ==}
safe-buffer@5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
semver@5.7.2:
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
hasBin: true
semver@7.6.2:
resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
@@ -401,6 +586,9 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
short-hash@1.0.0:
resolution: {integrity: sha512-qbUCD2Pkl4IXRyVqneEjGnUr0NGDGLzZnBUVGJngIQZf/FrhOL0yJhH+JQzak0t8xMmScIKpoX1SxOsPHdwa4w==}
signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -416,13 +604,26 @@ packages:
sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
speedometer@1.0.0:
resolution: {integrity: sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==}
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
stack-base-iterator@1.1.1:
resolution: {integrity: sha512-1mNThtigubwfisTX+RwMXahSxLch7quWujkD0ef957UD/5STUrnl3TQM/Kspwqm5tokJ9eOukDUkOGroigh3Kw==}
engines: {node: '>=0.8'}
stream-shift@1.0.3:
resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
string_decoder@1.1.1:
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
@@ -445,16 +646,44 @@ packages:
tar-fs@2.1.1:
resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
tar-iterator@1.0.1:
resolution: {integrity: sha512-RxwFVLHCrZCEHIaWUaxXG21dPlzU/POiTAMqZzaRgy/ndOP2sPnB/P2/g4yN/VwXMgFu343M5URlYbH8qg7gAA==}
engines: {node: '>=0.8'}
tar-stream-compat@2.1.5:
resolution: {integrity: sha512-hhIcRHj6S+y7IDR+VO8IcOjPUsAJ+50POvGK1fDFqbOTLTs/J7YA07TUgvpSkYkYuRUfYsuAFM/0SrvrdIZMdQ==}
engines: {node: '>=0.8'}
tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
temp-suffix@0.1.1:
resolution: {integrity: sha512-wcluXJ6A8HhyhEOOTXHPKV9TRTcL7vwmnfrWTZn7c7zrFp16trP1lfpsxaKN52pToFNByQ+y3zsJC8JlDAaKrg==}
engines: {node: '>=0.8'}
through2@2.0.5:
resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
tiny-glob@0.2.9:
resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
to-utf8@0.0.1:
resolution: {integrity: sha512-zks18/TWT1iHO3v0vFp5qLKOG27m67ycq/Y7a7cTiRuUNlc4gf3HGnkRgMv0NyhnfTamtkYBJl+YeD1/j07gBQ==}
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
unbzip2-stream@1.4.3:
resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
unc-path-regex@0.1.2:
resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==}
engines: {node: '>=0.10.0'}
universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
@@ -474,6 +703,17 @@ packages:
resolution: {integrity: sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==}
engines: {node: '>=12.0'}
xtend@4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
engines: {node: '>=0.4'}
zip-iterator@1.0.1:
resolution: {integrity: sha512-0mrjvo33Z9E/7rd2iiNmEJMjbiv+/czKyTl+IOdgpY87+y9vUW+bB6HmhGU9s7G3TpWsEIID3n+7cckK3D2hwQ==}
engines: {node: '>=0.8'}
zip@1.2.0:
resolution: {integrity: sha512-8B4Z9BXJKkI8BkHhKvQan4rwCzUENnj95YHFYrI7F1NbqKCIdW86kujctzEB+kJ6XapHPiAhiZ9xi5GbW5SPdw==}
snapshots:
'@oozcitak/dom@1.15.10':
@@ -546,7 +786,7 @@ snapshots:
'@types/node@17.0.45': {}
'@zen-browser/surfer@1.0.13':
'@zen-browser/surfer@1.1.8':
dependencies:
'@resvg/resvg-js': 1.4.0
async-icns: 1.0.2
@@ -555,6 +795,7 @@ snapshots:
cli-progress: 3.12.0
commander: 6.2.1
execa: 5.1.1
fast-extract: 1.1.0
fs-extra: 10.1.0
ini: 3.0.1
is-apple-silicon: https://codeload.github.com/trickypr/is-apple-silicon/tar.gz/5f75501a1d7566ba9f94174b6825d7bd9d302b6a
@@ -581,6 +822,11 @@ snapshots:
dependencies:
sprintf-js: 1.0.3
async-compat@1.4.7:
dependencies:
is-error: 2.2.2
is-promise: 4.0.0
async-icns@1.0.2:
dependencies:
commander: 9.5.0
@@ -591,14 +837,48 @@ snapshots:
transitivePeerDependencies:
- debug
balanced-match@1.0.2: {}
base64-js@0.0.2: {}
base64-js@1.5.1: {}
bl@2.2.1:
dependencies:
readable-stream: 2.3.8
safe-buffer: 5.2.1
bl@3.0.1:
dependencies:
readable-stream: 3.6.2
bl@4.1.0:
dependencies:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.2
bops@0.1.1:
dependencies:
base64-js: 0.0.2
to-utf8: 0.0.1
brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
buffer-alloc-unsafe@1.1.0: {}
buffer-alloc@1.2.0:
dependencies:
buffer-alloc-unsafe: 1.1.0
buffer-fill: 1.0.0
buffer-fill@1.0.0: {}
buffer-v6-polyfill@1.0.5: {}
buffer@5.7.1:
dependencies:
base64-js: 1.5.1
@@ -635,8 +915,18 @@ snapshots:
commander@9.5.0: {}
concat-map@0.0.1: {}
content-disposition@0.5.4:
dependencies:
safe-buffer: 5.2.1
core-js-pure@3.37.1: {}
core-js@3.37.1: {}
core-util-is@1.0.3: {}
cross-spawn@7.0.3:
dependencies:
path-key: 3.1.1
@@ -651,6 +941,13 @@ snapshots:
detect-libc@2.0.3: {}
duplexify@4.1.3:
dependencies:
end-of-stream: 1.4.4
inherits: 2.0.4
readable-stream: 3.6.2
stream-shift: 1.0.3
emoji-regex@8.0.0: {}
end-of-stream@1.4.4:
@@ -673,8 +970,54 @@ snapshots:
expand-template@2.0.3: {}
extract-base-iterator@1.0.1:
dependencies:
core-js: 3.37.1
fs-access-compat: 1.0.3
graceful-fs: 4.2.11
is-absolute: 1.0.0
lodash.compact: 3.0.1
mkpath: 1.0.0
queue-cb: 1.2.1
rimraf: 2.7.1
stack-base-iterator: 1.1.1
fast-extract@1.1.0:
dependencies:
bl: 3.0.1
buffer-v6-polyfill: 1.0.5
content-disposition: 0.5.4
core-js: 3.37.1
end-of-stream: 1.4.4
flush-write-stream: 2.0.0
lodash.throttle: 4.1.1
mkpath: 1.0.0
mock-require-lazy: 1.0.1
next-tick: 1.1.0
once: 1.4.0
progress-stream: 2.0.0
pumpify: 2.0.1
queue-cb: 1.2.1
readable-stream: 2.3.8
require_optional: 1.0.1
rimraf: 2.7.1
signal-exit: 3.0.7
tar-iterator: 1.0.1
temp-suffix: 0.1.1
unbzip2-stream: 1.4.3
zip-iterator: 1.0.1
fifo@2.4.1: {}
flush-write-stream@2.0.0:
dependencies:
inherits: 2.0.4
readable-stream: 3.6.2
follow-redirects@1.15.6: {}
fs-access-compat@1.0.3: {}
fs-constants@1.0.0: {}
fs-extra@10.1.0:
@@ -683,10 +1026,23 @@ snapshots:
jsonfile: 6.1.0
universalify: 2.0.1
fs.realpath@1.0.0: {}
get-caller-file@2.0.5: {}
get-stream@6.0.1: {}
github-from-package@0.0.0: {}
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
globalyzer@0.1.0: {}
globrex@0.1.2: {}
@@ -695,24 +1051,54 @@ snapshots:
has-flag@4.0.0: {}
hash-string@1.0.0: {}
human-signals@2.1.0: {}
ieee754@1.2.1: {}
imurmurhash@0.1.4: {}
inflight@1.0.6:
dependencies:
once: 1.4.0
wrappy: 1.0.2
inherits@2.0.4: {}
ini@1.3.8: {}
ini@3.0.1: {}
is-absolute@1.0.0:
dependencies:
is-relative: 1.0.0
is-windows: 1.0.2
is-apple-silicon@https://codeload.github.com/trickypr/is-apple-silicon/tar.gz/5f75501a1d7566ba9f94174b6825d7bd9d302b6a: {}
is-arrayish@0.3.2: {}
is-error@2.2.2: {}
is-fullwidth-code-point@3.0.0: {}
is-promise@4.0.0: {}
is-relative@1.0.0:
dependencies:
is-unc-path: 1.0.0
is-stream@2.0.1: {}
is-unc-path@1.0.0:
dependencies:
unc-path-regex: 0.1.2
is-windows@1.0.2: {}
isarray@1.0.0: {}
isexe@2.0.0: {}
js-yaml@3.14.1:
@@ -730,16 +1116,33 @@ snapshots:
kleur@4.1.5: {}
lifecycle@1.0.4: {}
lodash.compact@3.0.1: {}
lodash.throttle@4.1.1: {}
merge-stream@2.0.0: {}
mimic-fn@2.1.0: {}
mimic-response@3.1.0: {}
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
minimist@1.2.8: {}
mkdirp-classic@0.5.3: {}
mkpath@1.0.0: {}
mock-require-lazy@1.0.1:
dependencies:
get-caller-file: 2.0.5
normalize-path: 3.0.0
modern-async@1.1.4:
dependencies:
core-js-pure: 3.37.1
@@ -749,12 +1152,16 @@ snapshots:
napi-build-utils@1.0.2: {}
next-tick@1.1.0: {}
node-abi@3.65.0:
dependencies:
semver: 7.6.2
node-addon-api@5.1.0: {}
normalize-path@3.0.0: {}
npm-run-path@4.0.1:
dependencies:
path-key: 3.1.1
@@ -767,6 +1174,10 @@ snapshots:
dependencies:
mimic-fn: 2.1.0
os-shim@0.1.3: {}
path-is-absolute@1.0.1: {}
path-key@3.1.1: {}
picomatch@2.3.1: {}
@@ -794,6 +1205,13 @@ snapshots:
tar-fs: 2.1.1
tunnel-agent: 0.6.0
process-nextick-args@2.0.1: {}
progress-stream@2.0.0:
dependencies:
speedometer: 1.0.0
through2: 2.0.5
prompts@2.4.2:
dependencies:
kleur: 3.0.3
@@ -804,6 +1222,14 @@ snapshots:
end-of-stream: 1.4.4
once: 1.4.0
pumpify@2.0.1:
dependencies:
duplexify: 4.1.3
inherits: 2.0.4
pump: 3.0.0
queue-cb@1.2.1: {}
rc@1.2.8:
dependencies:
deep-extend: 0.6.0
@@ -811,16 +1237,41 @@ snapshots:
minimist: 1.2.8
strip-json-comments: 2.0.1
readable-stream@2.3.8:
dependencies:
core-util-is: 1.0.3
inherits: 2.0.4
isarray: 1.0.0
process-nextick-args: 2.0.1
safe-buffer: 5.1.2
string_decoder: 1.1.1
util-deprecate: 1.0.2
readable-stream@3.6.2:
dependencies:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
require_optional@1.0.1:
dependencies:
resolve-from: 2.0.0
semver: 5.7.2
resolve-from@2.0.0: {}
rimraf@2.7.1:
dependencies:
glob: 7.2.3
rustic@1.2.2: {}
safe-buffer@5.1.2: {}
safe-buffer@5.2.1: {}
semver@5.7.2: {}
semver@7.6.2: {}
sharp@0.30.7:
@@ -840,6 +1291,10 @@ snapshots:
shebang-regex@3.0.0: {}
short-hash@1.0.0:
dependencies:
hash-string: 1.0.0
signal-exit@3.0.7: {}
simple-concat@1.0.1: {}
@@ -856,14 +1311,28 @@ snapshots:
sisteransi@1.0.5: {}
speedometer@1.0.0: {}
sprintf-js@1.0.3: {}
stack-base-iterator@1.1.1:
dependencies:
async-compat: 1.4.7
fifo: 2.4.1
once: 1.4.0
stream-shift@1.0.3: {}
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
string_decoder@1.1.1:
dependencies:
safe-buffer: 5.1.2
string_decoder@1.3.0:
dependencies:
safe-buffer: 5.2.1
@@ -887,6 +1356,28 @@ snapshots:
pump: 3.0.0
tar-stream: 2.2.0
tar-iterator@1.0.1:
dependencies:
end-of-stream: 1.4.4
extract-base-iterator: 1.0.1
fs-access-compat: 1.0.3
lifecycle: 1.0.4
lodash.compact: 3.0.1
mkpath: 1.0.0
once: 1.4.0
queue-cb: 1.2.1
rimraf: 2.7.1
tar-stream-compat: 2.1.5
tar-stream-compat@2.1.5:
dependencies:
bl: 2.2.1
buffer-alloc: 1.2.0
end-of-stream: 1.4.4
fs-constants: 1.0.0
inherits: 2.0.4
readable-stream: 2.3.8
tar-stream@2.2.0:
dependencies:
bl: 4.1.0
@@ -895,15 +1386,35 @@ snapshots:
inherits: 2.0.4
readable-stream: 3.6.2
temp-suffix@0.1.1:
dependencies:
imurmurhash: 0.1.4
through2@2.0.5:
dependencies:
readable-stream: 2.3.8
xtend: 4.0.2
through@2.3.8: {}
tiny-glob@0.2.9:
dependencies:
globalyzer: 0.1.0
globrex: 0.1.2
to-utf8@0.0.1: {}
tunnel-agent@0.6.0:
dependencies:
safe-buffer: 5.2.1
unbzip2-stream@1.4.3:
dependencies:
buffer: 5.7.1
through: 2.3.8
unc-path-regex@0.1.2: {}
universalify@2.0.1: {}
util-deprecate@1.0.2: {}
@@ -920,3 +1431,27 @@ snapshots:
'@oozcitak/infra': 1.0.8
'@oozcitak/util': 8.3.8
js-yaml: 3.14.1
xtend@4.0.2: {}
zip-iterator@1.0.1:
dependencies:
buffer-v6-polyfill: 1.0.5
end-of-stream: 1.4.4
extract-base-iterator: 1.0.1
fs-access-compat: 1.0.3
lifecycle: 1.0.4
lodash.compact: 3.0.1
mkpath: 1.0.0
once: 1.4.0
os-shim: 0.1.3
queue-cb: 1.2.1
readable-stream: 2.3.8
rimraf: 2.7.1
short-hash: 1.0.0
temp-suffix: 0.1.1
zip: 1.2.0
zip@1.2.0:
dependencies:
bops: 0.1.1

View File

@@ -0,0 +1,275 @@
// Ignore license in this file
//
// 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
* changes will be overwritten by the user.js when the application restarts.
*
* To make lasting changes to preferences, you will have to edit the user.js.
*/
/****************************************************************************
* Betterfox *
* "Ad meliora" *
* version: 121 *
* url: https://github.com/yokoffing/Betterfox *
****************************************************************************/
/****************************************************************************
* SECTION: FASTFOX *
****************************************************************************/
/** GENERAL ***/
pref('content.notify.interval', 100000);
/** GFX ***/
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);
/** MEDIA CACHE ***/
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);
/** 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);
/** SPECULATIVE LOADING ***/
pref('network.dns.disablePrefetch', true);
pref('network.prefetch-next', false);
pref('network.predictor.enabled', 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);
/****************************************************************************
* 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);
/** OCSP & CERTS / HPKP ***/
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);
/** DISK AVOIDANCE ***/
pref('browser.privatebrowsing.forceMediaMemoryCache', true);
pref('browser.sessionstore.interval', 60000);
/** SHUTDOWN & SANITIZING ***/
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);
/** CONTAINERS ***/
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);
/** SAFE BROWSING ***/
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', '');
/** 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);
/** EXPERIMENTS ***/
pref('app.shield.optoutstudies.enabled', false);
pref('app.normandy.enabled', false);
pref('app.normandy.api_url', '');
/** CRASH REPORTS ***/
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);
/****************************************************************************
* 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);
/** 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
/** COOKIE BANNER HANDLING ***/
pref('cookiebanners.service.mode', 1);
pref('cookiebanners.service.mode.privateBrowsing', 1);
/** URL BAR ***/
pref('browser.urlbar.suggest.calculator', true);
pref('browser.urlbar.unitConversion.enabled', true);
pref('browser.urlbar.trending.featureGate', false);
/** NEW TAB PAGE ***/
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
/*** POCKET ***/
pref('extensions.pocket.enabled', false);
/** DOWNLOADS ***/
pref('browser.download.always_ask_before_handling_new_types', true);
pref('browser.download.manager.addToRecentDocs', false);
/** PDF ***/
pref('browser.download.open_pdf_attachments_inline', true);
/** TAB BEHAVIOR ***/
pref('browser.bookmarks.openInTabClosesMenu', false);
pref('browser.menu.showViewImageInfo', true);
pref('findbar.highlightAll', true);
pref('layout.word_select.eat_space_to_next_word', false);
/****************************************************************************
* 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

@@ -6,49 +6,24 @@ pref("browser.tabs.cardPreview.enabled", true);
pref("browser.tabs.hoverPreview.enabled", true);
pref("browser.tabs.cardPreview.delayMs", 100);
pref("browser.urlbar.suggest.calculator", true);
#ifdef MOZ_UPDATE_CHANNEL
pref("devtools.debugger.prompt-connection", false);
#endif
// Mozilla Services
pref('browser.privatebrowsing.vpnpromourl', '');
pref("browser.vpn_promo.enabled", false);
pref("browser.contentblocking.report.show_mobile_app", false);
pref("browser.protections_panel.infoMessage.seen", true);
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', true);
pref("browser.aboutwelcome.showModal", false);
pref('browser.translations.select.enable', true);
// 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.privateWindowSeparation.enabled', false); // WINDOWS
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
pref('browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled', true);
pref('browser.translations.newSettingsUI.enable', true);
pref("browser.urlbar.trimHttps", true);
pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
// Cookie banner handling (reject by default)
pref('cookiebanners.service.mode', 1);
pref('cookiebanners.service.mode.privateBrowsing', 1);
// Url bar
pref('browser.urlbar.unitConversion.enabled', true);
pref('browser.urlbar.trending.featureGate', false);
@@ -59,52 +34,25 @@ pref('browser.urlbar.clipboard.featureGate', true);
// new tab page
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
pref("browser.topsites.contile.enabled", false);
// Pocket
pref('extensions.pocket.enabled', false);
pref("browser.topsites.contile.enabled", true);
// Pdf
pref('browser.download.open_pdf_attachments_inline', true);
pref('pdfjs.enableHighlightEditor', true);
pref('pdfjs.enableHighlightFloatingButton', true);
// Tabs
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('privacy.userContext.enabled', true);
pref('privacy.userContext.ui.enabled', true);
// UA
pref('general.useragent.compatMode.firefox', true);
// Tracking protection
pref(
'urlclassifier.trackingSkipURLs',
'*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com'
);
pref(
'urlclassifier.features.socialtracking.skipURLs',
'*.instagram.com, *.twitter.com, *.twimg.com'
);
pref('network.cookie.sameSite.noneRequiresSecure', true);
pref('browser.download.start_downloads_in_tmp_dir', true);
pref('browser.helperApps.deleteTempFileOnExit', true);
pref('privacy.globalprivacycontrol.enabled', true);
pref('gfx.canvas.accelerated.cache-items', 4096);
pref('gfx.canvas.accelerated.cache-size', 512);
pref('gfx.content.skia-font-cache-size', 20);
pref('gfx.webrender.all', true);
pref('layout.css.backdrop-filter.enabled', true);
pref("alerts.showFavicons", true);
pref('browser.toolbars.bookmarks.visibility', 'never');
// Enable Do Not Track and GPC by default.
pref("privacy.donottrackheader.enabled", true);
pref("privacy.globalprivacycontrol.enabled", true);
// Disable more telemetry
pref("toolkit.telemetry.enabled", false);
pref("browser.ping-centre.telemetry", false);
pref("browser.attribution.enabled", false);
pref("toolkit.telemetry.pioneer-new-studies-available", false);
// CUSTOM ZEN PREFS
pref('zen.welcomeScreen.enabled', true);
@@ -112,34 +60,11 @@ pref('zen.welcomeScreen.seen', false);
pref('zen.tabs.vertical', true);
pref('zen.theme.accent-color', "#aac7ff");
pref('zen.theme.toolbar-themed', true);
pref('zen.theme.pill-button', false);
pref('zen.view.compact', false);
pref('browser.cache.jsbc_compression_level', 3);
pref('media.memory_cache_max_size', 65536);
pref('media.cache_readahead_limit', 7200);
pref('media.cache_resume_threshold', 3600);
pref('image.mem.decode_bytes_at_a_time', 32768);
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.dns.disablePrefetch', true);
pref('network.prefetch-next', false);
pref('network.predictor.enabled', false);
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('zen.view.compact.hide-toolbar', false);
pref('zen.view.sidebar-expanded', false);
pref('zen.view.sidebar-expanded.show-button', true);
// Pref to enable the new profiles (TODO: Check this out!)
//pref("browser.profiles.enabled", true);
@@ -153,4 +78,20 @@ pref('zen.sidebar.floating', true);
pref('zen.splitView.working', false);
// Zen Workspaces
pref('zen.workspaces.enabled', false);
pref('zen.workspaces.enabled', true);
// Zen Watermark
pref('zen.watermark.enabled', true);
// Smooth scrolling
user_pref('apz.overscroll.enabled', true); // not DEFAULT on Linux
user_pref('general.smoothScroll', true); // DEFAULT
// Privacy
pref('dom.private-attribution.submission.enabled', false);
// From Librewolf
pref('media.eme.enabled', true);
pref('webgl.disabled', false);
#include better-fox.js

View File

@@ -0,0 +1,14 @@
diff --git a/browser/app/splash.rc b/browser/app/splash.rc
index 259a8068c3aa256b8c50487a04f1844292b90b2e..8b9c792e1484bb801246b06b6ce43fb6d6271ee8 100644
--- a/browser/app/splash.rc
+++ b/browser/app/splash.rc
@@ -6,6 +6,9 @@
#include <windows.h>
#include "nsNativeAppSupportWin.h"
+#define MANIFEST_PATH "firefox.exe.manifest"
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST MANIFEST_PATH
+
IDI_APPICON ICON FIREFOX_ICO
IDI_DOCUMENT ICON DOCUMENT_ICO
IDI_APPLICATION ICON FIREFOX_ICO

View File

@@ -8,6 +8,7 @@ var gZenBrowserManagerSidebar = {
_hasChangedConfig: true,
_splitterElement: null,
_hSplitterElement: null,
_hasRegisteredPinnedClickOutside: false,
_isDragging: false,
contextTab: null,
@@ -19,6 +20,7 @@ var gZenBrowserManagerSidebar = {
this.update();
this.close(); // avoid caching
this.listenForPrefChanges();
this.insertIntoContextMenu();
},
get sidebarData() {
@@ -105,6 +107,16 @@ var gZenBrowserManagerSidebar = {
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");
@@ -115,20 +127,42 @@ var gZenBrowserManagerSidebar = {
}
},
_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 (!this._currentPanel) {
let data = this.sidebarData;
this._currentPanel = data.index[0];
}
this.update();
return;
}
// already open?
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();
@@ -138,7 +172,7 @@ var gZenBrowserManagerSidebar = {
_updateSidebarButton() {
let button = document.getElementById("zen-sidepanel-button");
if (this._currentPanel) {
if (!document.getElementById("zen-sidebar-web-panel").hasAttribute("hidden")) {
button.setAttribute("open", "true");
} else {
button.removeAttribute("open");
@@ -205,15 +239,6 @@ var gZenBrowserManagerSidebar = {
document.getElementById("zen-sidebar-web-panel-pinned").removeAttribute("pinned");
},
_openAndGetWebPanelWrapper() {
let sidebar = document.getElementById("zen-sidebar-web-panel");
sidebar.removeAttribute("hidden");
if (Services.prefs.getBoolPref("zen.sidebar.floating")) {
this._setPinnedToElements();
}
return sidebar;
},
_closeSidebarPanel() {
let sidebar = document.getElementById("zen-sidebar-web-panel");
sidebar.setAttribute("hidden", "true");
@@ -231,6 +256,19 @@ var gZenBrowserManagerSidebar = {
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) {
@@ -242,21 +280,26 @@ var gZenBrowserManagerSidebar = {
},
_hideAllWebPanels() {
let sidebar = this._openAndGetWebPanelWrapper();
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 = this._openAndGetWebPanelWrapper();
let sidebar = document.getElementById("zen-sidebar-web-panel");
this._hideAllWebPanels();
if (!this._currentPanel) {
sidebar.setAttribute("hidden", "true");
this.introductionPanel.removeAttribute("hidden");
return;
}
this.introductionPanel.setAttribute("hidden", "true");
let existantWebview = this._getCurrentBrowser();
if (existantWebview) {
existantWebview.docShellIsActive = true;
@@ -469,6 +512,8 @@ var gZenBrowserManagerSidebar = {
browser.remove();
}
this._closeSidebarPanel();
this.close();
this._lastOpenedPanel = null;
Services.prefs.setStringPref("zen.sidebar.data", JSON.stringify(data));
},
@@ -476,6 +521,23 @@ var gZenBrowserManagerSidebar = {
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);
},
};

View File

@@ -4,9 +4,61 @@ var gZenUIManager = {
if (window.ownerGlobal.parent) {
let tab = window.ownerGlobal.parent.gBrowser.addTrustedTab(url, options);
window.ownerGlobal.parent.gBrowser.selectedTab = tab;
return;
return tab;
}
let tab = window.gBrowser.addTrustedTab(url, options);
window.gBrowser.selectedTab = tab;
}
return tab;
},
generateUuidv4() {
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, c =>
(+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16)
);
},
toogleBookmarksSidebar() {
const button = document.getElementById('zen-bookmark-button');
SidebarController.toggle('viewBookmarksSidebar', button);
},
};
var gZenVerticalTabsManager = {
init() {
//Services.prefs.addObserver('zen.view.compact', this._updateEvent.bind(this));
//Services.prefs.addObserver('zen.view.sidebar-expanded', this._updateEvent.bind(this));
},
get expanded() {
return Services.prefs.getBoolPref('zen.view.sidebar-expanded');
},
get expandButton() {
if (this._expandButton) {
return this._expandButton;
}
this._expandButton = document.getElementById('zen-expand-sidebar-button');
return this._expandButton;
},
//_updateExpandButton() {
// let isCompactMode = Services.prefs.getBoolPref('zen.view.compact');
// let button = this.expandButton;
// let expanded = this.expanded;
// if (expanded && !isCompactMode) {
// button.setAttribute('open', 'true');
// } else {
// button.removeAttribute('open');
// }
//},
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');
},
};

View File

@@ -18,6 +18,7 @@ var gZenViewSplitter = {
init() {
Services.prefs.setBoolPref("zen.splitView.working", false);
window.addEventListener("TabClose", this);
this.insertIntoContextMenu();
console.log("ZenViewSplitter initialized");
},
@@ -28,6 +29,18 @@ var gZenViewSplitter = {
}
},
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");
@@ -75,6 +88,13 @@ var gZenViewSplitter = {
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));
@@ -89,6 +109,17 @@ var gZenViewSplitter = {
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",

View File

@@ -1,8 +1,16 @@
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 initialized");
console.log("ZenWorkspaces: ZenWorkspaces initialized");
},
get workspaceEnabled() {
@@ -18,57 +26,397 @@ var ZenWorkspaces = {
);
},
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();
}
},
async saveWorkspace(workspaceData, windowID) {
_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);
json[windowID] = workspaceData;
if (typeof json.workspaces === "undefined") {
json.workspaces = [];
}
json.workspaces.push(workspaceData);
console.log("ZenWorkspaces: Saving workspace", workspaceData);
await IOUtils.writeJSON(this._storeFile, json);
},
async loadWorkspace(windowID) {
let json = await IOUtils.readJSON(this._storeFile);
return json[windowID];
this._workspaceCache = null;
},
async removeWorkspace(windowID) {
let json = await IOUtils.readJSON(this._storeFile);
delete json[windowID];
await IOUtils.writeJSON(this._storeFile, json);
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 getWorkspaces() {
let json = await IOUtils.readJSON(this._storeFile);
return json;
async saveWorkspaces() {
await IOUtils.writeJSON(this._storeFile, await this._workspaces());
this._workspaceCache = null;
},
async getWorkspace(windowID) {
let json = await IOUtils.readJSON(this._storeFile);
return json[windowID];
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
_createWorkspaceData(windowID) {
let window = Services.wm.getOuterWindowWithId(windowID);
let tabs = Array.from(window.gBrowser.tabs).map(tab => ({
url: tab.linkedBrowser.currentURI.spec,
title: tab.label,
}));
return {
tabs,
};
get _workspaceInput() {
return document.getElementById("PanelUI-zen-workspaces-create-input");
},
async saveCurrentWorkspace(windowID) {
let workspaceData = this._createWorkspaceData(windowID);
await this.saveWorkspace(workspaceData, windowID);
_deleteAllTabsInWorkspace(workspaceID) {
for (let tab of gBrowser.tabs) {
if (tab.getAttribute("zen-workspace-id") === workspaceID) {
gBrowser.removeTab(tab);
}
}
},
_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,11 +0,0 @@
diff --git a/browser/base/content/appmenu-viewcache.inc.xhtml b/browser/base/content/appmenu-viewcache.inc.xhtml
index 07b1765f18236835363fb74c898d3a690659cc9b..7b58cbb5de147ed29fbc48c0093c731fe5cca90b 100644
--- a/browser/base/content/appmenu-viewcache.inc.xhtml
+++ b/browser/base/content/appmenu-viewcache.inc.xhtml
@@ -765,5 +765,6 @@
</vbox>
</panelview>
+#include zen-panels-ui.inc.xhtml
#include ../../components/reportbrokensite/content/reportBrokenSitePanel.inc.xhtml
</html:template>

View File

@@ -1,12 +1,10 @@
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
index b0308911446dd6fc549401371a85faa6341f8338..3942a0b45308b110685c34e8a9367d7c5d40d8c4 100644
index 16559b2c0e3aef391b43e09281aee24007feb0bd..2579cea92a55fabb73fdd130c3706af08c3fd849 100644
--- a/browser/base/content/browser-box.inc.xhtml
+++ b/browser/base/content/browser-box.inc.xhtml
@@ -18,12 +18,18 @@
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
@@ -21,11 +21,15 @@
</vbox>
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
+ <vbox id="browser">
<vbox id="appcontent" flex="1">
+ <html:div id="zen-appcontent-navbar-container"></html:div>
<!-- gNotificationBox will be added here lazily. -->
@@ -18,6 +16,5 @@ index b0308911446dd6fc549401371a85faa6341f8338..3942a0b45308b110685c34e8a9367d7c
flex="1" selectedIndex="0"/>
</tabbox>
+ </hbox>
+ </vbox>
</vbox>
</hbox>

View File

@@ -1,13 +1,14 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
index a79a9734619f89639c15087fe28e9615354a7209..212628c6fb2bed5ba17a3d2908f5d4b2376fa95e 100644
index a79a9734619f89639c15087fe28e9615354a7209..edaef604d33d76b570571e1bbb2ebc590e045d87 100644
--- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js
@@ -230,6 +230,8 @@ var gBrowserInit = {
gURLBar.readOnly = true;
@@ -237,6 +237,9 @@ var gBrowserInit = {
gPrivateBrowsingUI.init();
BrowserSearch.init();
BrowserPageActions.init();
+
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
+
if (gToolbarKeyNavEnabled) {
ToolbarKeyboardNavigator.init();
}
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", this);
+
// Misc. inits.
gUIDensity.init();
TabletModeUpdater.init();

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cdb5315b70 100644
index b18f371a47fec53882c3dfb68e34d1a474eaf446..2c183d7e7fc65e00403f5e40e7859b915a3ea700 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -630,6 +630,15 @@ XPCOMUtils.defineLazyPreferenceGetter(
@@ -18,16 +18,17 @@ index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cd
customElements.setElementCreationCallback("screenshots-buttons", () => {
Services.scriptloader.loadSubScript(
"chrome://browser/content/screenshots/screenshots-buttons.js",
@@ -3668,6 +3677,8 @@ var XULBrowserWindow = {
@@ -3679,6 +3688,9 @@ var XULBrowserWindow = {
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
+ gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser);
+ ZenWorkspaces.onLocationChange(gBrowser.selectedBrowser);
+
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
if (!gMultiProcessBrowser) {
@@ -4982,7 +4993,7 @@ function setToolbarVisibility(
@@ -5001,7 +5013,7 @@ function setToolbarVisibility(
);
}
@@ -36,7 +37,7 @@ index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cd
switch (isVisible) {
case true:
case "always":
@@ -7813,6 +7824,12 @@ var gDialogBox = {
@@ -7832,6 +7844,12 @@ var gDialogBox = {
parentElement.showModal();
this._didOpenHTMLDialog = true;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
index 0a67afa81ff5e10dcbfb53149f7ed9109de084ac..bdcce262b5fc18767efd1054fd724b97c42471e4 100644
index 390a1300a1213af2b411ba09c67e3c25750ee6c3..7c80c54dd43b5414bf5ea9101d53431c0b4a140b 100644
--- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -32,10 +32,11 @@

View File

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

After

Width:  |  Height:  |  Size: 674 B

View File

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

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#fac89a"></rect><rect x="0" y="0" width="36" height="36" transform="translate(1 1) rotate(43 18 18) scale(1.1)" fill="#e290ff" rx="36"></rect><g transform="translate(-3 -1) rotate(-3 18 18)"><path d="M15 20c2 1 4 1 6 0" stroke="#000000" fill="none" stroke-linecap="round"></path><rect x="11" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="23" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 785 B

View File

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

After

Width:  |  Height:  |  Size: 671 B

View File

@@ -0,0 +1 @@
<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="#FFC1B2"></rect><rect x="10" y="30" width="80" height="80" fill="#FFDBC8" transform="translate(-8 -8) rotate(222 40 40)"></rect><circle cx="40" cy="40" fill="#FFF6C7" r="16" transform="translate(9 -9)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#DCD7C2" transform="translate(-4 4) rotate(84 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 671 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#e290ff"></rect><rect x="0" y="0" width="36" height="36" transform="translate(-2 6) rotate(106 18 18) scale(1.1)" fill="#fac89a" rx="36"></rect><g transform="translate(-2 3) rotate(-6 18 18)"><path d="M13,20 a1,0.75 0 0,0 10,0" fill="#000000"></path><rect x="13" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="21" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 756 B

View File

@@ -0,0 +1 @@
<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="#3E5954"></rect><rect x="10" y="30" width="80" height="80" fill="#253342" transform="translate(16 -16) rotate(214 40 40)"></rect><circle cx="40" cy="40" fill="#232226" r="16" transform="translate(-15 -15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#DDDDDD" transform="translate(-8 8) rotate(68 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 675 B

View File

@@ -0,0 +1 @@
<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="#FFDBC8"></rect><rect x="10" y="30" width="80" height="80" fill="#FFF6C7" transform="translate(16 -16) rotate(214 40 40)"></rect><circle cx="40" cy="40" fill="#DCD7C2" r="16" transform="translate(-15 -15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#9D9382" transform="translate(-8 8) rotate(68 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 675 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#e290ff"></rect><rect x="0" y="0" width="36" height="36" transform="translate(4 4) rotate(110 18 18) scale(1.2)" fill="#fac89a" rx="6"></rect><g transform="translate(6 -3) rotate(0 18 18)"><path d="M15 21c2 1 4 1 6 0" stroke="#000000" fill="none" stroke-linecap="round"></path><rect x="14" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="20" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 783 B

View File

@@ -0,0 +1 @@
<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="80" fill="#232226" transform="translate(20 20) rotate(276 40 40)"></rect><circle cx="40" cy="40" fill="#DDDDDD" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#5E9188" transform="translate(12 12) rotate(192 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 672 B

View File

@@ -0,0 +1 @@
<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="80" fill="#DCD7C2" transform="translate(20 20) rotate(276 40 40)"></rect><circle cx="40" cy="40" fill="#9D9382" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFC1B2" transform="translate(12 12) rotate(192 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 672 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#e290ff"></rect><rect x="0" y="0" width="36" height="36" transform="translate(8 8) rotate(178 18 18) scale(1.1)" fill="#fac89a" rx="6"></rect><g transform="translate(4 4) rotate(-8 18 18)"><path d="M13,20 a1,0.75 0 0,0 10,0" fill="#000000"></path><rect x="11" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="23" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 753 B

View File

@@ -0,0 +1 @@
<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="#232226"></rect><rect x="10" y="30" width="80" height="80" fill="#DDDDDD" transform="translate(0 0) rotate(88 40 40)"></rect><circle cx="40" cy="40" fill="#5E9188" r="16" transform="translate(18 -18)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#3E5954" transform="translate(16 -16) rotate(176 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 673 B

View File

@@ -0,0 +1 @@
<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="#DCD7C2"></rect><rect x="10" y="30" width="80" height="80" fill="#9D9382" transform="translate(0 0) rotate(88 40 40)"></rect><circle cx="40" cy="40" fill="#FFC1B2" r="16" transform="translate(18 -18)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFDBC8" transform="translate(16 -16) rotate(176 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 673 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#e290ff"></rect><rect x="0" y="0" width="36" height="36" transform="translate(6 2) rotate(52 18 18) scale(1.1)" fill="#fac89a" rx="6"></rect><g transform="translate(4 -1) rotate(-2 18 18)"><path d="M15 20c2 1 4 1 6 0" stroke="#000000" fill="none" stroke-linecap="round"></path><rect x="12" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="22" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 783 B

View File

@@ -0,0 +1 @@
<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="#3E5954"></rect><rect x="10" y="30" width="80" height="10" fill="#253342" transform="translate(-10 10) rotate(64 40 40)"></rect><circle cx="40" cy="40" fill="#232226" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#DDDDDD" transform="translate(-8 -8) rotate(128 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 672 B

View File

@@ -0,0 +1 @@
<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="#FFDBC8"></rect><rect x="10" y="30" width="80" height="10" fill="#FFF6C7" transform="translate(-10 10) rotate(64 40 40)"></rect><circle cx="40" cy="40" fill="#DCD7C2" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#9D9382" transform="translate(-8 -8) rotate(128 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 672 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#e290ff"></rect><rect x="0" y="0" width="36" height="36" transform="translate(6 -2) rotate(236 18 18) scale(1.2)" fill="#fac89a" rx="6"></rect><g transform="translate(4 -4) rotate(6 18 18)"><path d="M15 21c2 1 4 1 6 0" stroke="#000000" fill="none" stroke-linecap="round"></path><rect x="13" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="21" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 784 B

View File

@@ -0,0 +1 @@
<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="80" fill="#232226" transform="translate(-20 20) rotate(106 40 40)"></rect><circle cx="40" cy="40" fill="#DDDDDD" r="16" transform="translate(9 -9)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#5E9188" transform="translate(12 12) rotate(212 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -0,0 +1 @@
<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="80" fill="#DCD7C2" transform="translate(-20 20) rotate(106 40 40)"></rect><circle cx="40" cy="40" fill="#9D9382" r="16" transform="translate(9 -9)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFC1B2" transform="translate(12 12) rotate(212 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#e290ff"></rect><rect x="0" y="0" width="36" height="36" transform="translate(0 8) rotate(124 18 18) scale(1.1)" fill="#fac89a" rx="36"></rect><g transform="translate(-4 4) rotate(4 18 18)"><path d="M13,20 a1,0.75 0 0,0 10,0" fill="#000000"></path><rect x="10" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="24" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 754 B

View File

@@ -0,0 +1 @@
<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="#232226"></rect><rect x="10" y="30" width="80" height="80" fill="#DDDDDD" transform="translate(0 0) rotate(28 40 40)"></rect><circle cx="40" cy="40" fill="#5E9188" r="16" transform="translate(-12 12)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#3E5954" transform="translate(16 16) rotate(56 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 671 B

View File

@@ -0,0 +1 @@
<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="#DCD7C2"></rect><rect x="10" y="30" width="80" height="80" fill="#9D9382" transform="translate(0 0) rotate(28 40 40)"></rect><circle cx="40" cy="40" fill="#FFC1B2" r="16" transform="translate(-12 12)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFDBC8" transform="translate(16 16) rotate(56 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 671 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#e290ff"></rect><rect x="0" y="0" width="36" height="36" transform="translate(6 6) rotate(192 18 18) scale(1)" fill="#fac89a" rx="6"></rect><g transform="translate(0 2) rotate(-2 18 18)"><path d="M13,19 a1,0.75 0 0,0 10,0" fill="#000000"></path><rect x="12" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="22" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 751 B

View File

@@ -0,0 +1 @@
<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="#3E5954"></rect><rect x="10" y="30" width="80" height="10" fill="#253342" transform="translate(-20 20) rotate(184 40 40)"></rect><circle cx="40" cy="40" fill="#232226" r="16" transform="translate(18 18)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#DDDDDD" transform="translate(-8 -8) rotate(8 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 673 B

View File

@@ -0,0 +1 @@
<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="#FFDBC8"></rect><rect x="10" y="30" width="80" height="10" fill="#FFF6C7" transform="translate(-20 20) rotate(184 40 40)"></rect><circle cx="40" cy="40" fill="#DCD7C2" r="16" transform="translate(18 18)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#9D9382" transform="translate(-8 -8) rotate(8 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 673 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#e290ff"></rect><rect x="0" y="0" width="36" height="36" transform="translate(0 8) rotate(164 18 18) scale(1.2)" fill="#fac89a" rx="36"></rect><g transform="translate(-4 4) rotate(4 18 18)"><path d="M13,21 a1,0.75 0 0,0 10,0" fill="#000000"></path><rect x="10" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="24" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 754 B

View File

@@ -0,0 +1 @@
<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="#232226"></rect><rect x="10" y="30" width="80" height="10" fill="#DDDDDD" transform="translate(-14 -14) rotate(68 40 40)"></rect><circle cx="40" cy="40" fill="#5E9188" r="16" transform="translate(-9 9)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#3E5954" transform="translate(16 -16) rotate(136 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 675 B

View File

@@ -0,0 +1 @@
<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="#DCD7C2"></rect><rect x="10" y="30" width="80" height="10" fill="#9D9382" transform="translate(-14 -14) rotate(68 40 40)"></rect><circle cx="40" cy="40" fill="#FFC1B2" r="16" transform="translate(-9 9)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFDBC8" transform="translate(16 -16) rotate(136 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 675 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#fac89a"></rect><rect x="0" y="0" width="36" height="36" transform="translate(5 5) rotate(35 18 18) scale(1.2)" fill="#e290ff" rx="6"></rect><g transform="translate(3 6) rotate(-5 18 18)"><path d="M13,21 a1,0.75 0 0,0 10,0" fill="#000000"></path><rect x="14" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="20" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 752 B

View File

@@ -0,0 +1 @@
<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="#3E5954"></rect><rect x="10" y="30" width="80" height="10" fill="#253342" transform="translate(14 -14) rotate(14 40 40)"></rect><circle cx="40" cy="40" fill="#232226" r="16" transform="translate(-15 -15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#DDDDDD" transform="translate(-8 8) rotate(28 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -0,0 +1 @@
<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="#FFDBC8"></rect><rect x="10" y="30" width="80" height="10" fill="#FFF6C7" transform="translate(14 -14) rotate(14 40 40)"></rect><circle cx="40" cy="40" fill="#DCD7C2" r="16" transform="translate(-15 -15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#9D9382" transform="translate(-8 8) rotate(28 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#e290ff"></rect><rect x="0" y="0" width="36" height="36" transform="translate(8 0) rotate(254 18 18) scale(1.2)" fill="#fac89a" rx="6"></rect><g transform="translate(4 -1) rotate(-4 18 18)"><path d="M15 21c2 1 4 1 6 0" stroke="#000000" fill="none" stroke-linecap="round"></path><rect x="10" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="24" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 784 B

View File

@@ -0,0 +1 @@
<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="#232226"></rect><rect x="10" y="30" width="80" height="10" fill="#DDDDDD" transform="translate(14 14) rotate(218 40 40)"></rect><circle cx="40" cy="40" fill="#5E9188" r="16" transform="translate(-15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#3E5954" transform="translate(16 16) rotate(76 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -0,0 +1 @@
<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="#DCD7C2"></rect><rect x="10" y="30" width="80" height="10" fill="#9D9382" transform="translate(14 14) rotate(218 40 40)"></rect><circle cx="40" cy="40" fill="#FFC1B2" r="16" transform="translate(-15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFDBC8" transform="translate(16 16) rotate(76 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__beam" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#mask__beam)"><rect width="36" height="36" fill="#fac89a"></rect><rect x="0" y="0" width="36" height="36" transform="translate(3 3) rotate(201 18 18) scale(1)" fill="#e290ff" rx="36"></rect><g transform="translate(-1 -2) rotate(-1 18 18)"><path d="M15 19c2 1 4 1 6 0" stroke="#000000" fill="none" stroke-linecap="round"></path><rect x="13" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="21" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>

Before

Width:  |  Height:  |  Size: 784 B

View File

@@ -0,0 +1 @@
<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="#232226"></rect><rect x="10" y="30" width="80" height="80" fill="#DDDDDD" transform="translate(-14 14) rotate(228 40 40)"></rect><circle cx="40" cy="40" fill="#5E9188" r="16" transform="translate(-6 6)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#3E5954" transform="translate(16 -16) rotate(96 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -0,0 +1 @@
<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="#DCD7C2"></rect><rect x="10" y="30" width="80" height="80" fill="#9D9382" transform="translate(-14 14) rotate(228 40 40)"></rect><circle cx="40" cy="40" fill="#FFC1B2" r="16" transform="translate(-6 6)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFDBC8" transform="translate(16 -16) rotate(96 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 674 B

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