Compare commits

...

154 Commits

Author SHA1 Message Date
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
357 changed files with 3521 additions and 943 deletions

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

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

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

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

View File

@@ -49,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
@@ -117,259 +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
- 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:
@@ -421,112 +174,65 @@ 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-windows-x86_64-profile-data-and-jarlog.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:
runs-on: macos-14
needs: [build-data, check-release]
steps:
- name: Install Node.js
uses: actions/setup-node@v3
name: macOS build
uses: ./.github/workflows/macos-alpha-build.yml
permissions:
contents: write
needs: [build-data]
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
- 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: |
export ZEN_RELEASE=1
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
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, mac]
needs: [build-data, linux, source, windows-step-3, check-release, mac]
runs-on: ubuntu-latest
steps:
@@ -536,30 +242,13 @@ jobs:
- name: Git Pull
run: git pull
- uses: actions/download-artifact@v3
- name: release-github
uses: 'marvinpinto/action-automatic-releases@latest'
with:
repo_token: '${{ secrets.DEPLOY_KEY }}'
automatic_release_tag: ${{ needs.build-data.outputs.version }}
title: 'Alpha build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})'
files: |
zen.linux.tar.bz2
zen.win64.zip
zen.source.tar.gz
linux.mar
windows.mar
macos.mar
zen.installer.exe
zen.installer.pretty.exe
zen.macos.dmg
- uses: actions/download-artifact@v4
- name: List
run: find .
- name: Clone updates repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: zen-browser/updates-server
path: updates-server
@@ -580,36 +269,54 @@ jobs:
commit_user_email: zen-browser-bot@users.noreply.github.com
repository: ./updates-server
- name: release-github
uses: 'marvinpinto/action-automatic-releases@latest'
with:
repo_token: '${{ secrets.DEPLOY_KEY }}'
automatic_release_tag: ${{ needs.build-data.outputs.version }}
title: 'Alpha build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})'
files: |
zen.linux.tar.bz2
zen.win64.zip
zen.source.tar.gz
linux.mar
windows.mar
macos.mar
zen.installer.exe
zen.installer.pretty.exe
zen.macos.dmg
distro-flatpak:
name: Build flatpak repos
needs: [release]
needs: [linux, release]
runs-on: ubuntu-latest
permissions:
contents: write
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-44
options: --privileged
if: ${{ github.event.inputs.create_release == 'true' && false }}
if: ${{ github.event.inputs.create_release == 'true' }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
repository: zen-browser/flatpak
token: ${{ secrets.DEPLOY_KEY }}
submodules: recursive
- name: Ensure repo is on main branch
run: |
cd flatpak
git checkout main
git pull
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: org.zen.browser.flatpak
manifest-path: flatpak/org.zen.browser.flatpak.json
manifest-path: org.zen.browser.flatpak.yml
cache-key: flatpak-builder-${{ github.sha }}
verbose: true
- name: Upload flatpak repo
uses: actions/upload-artifact@v3
- name: Find flatpak bundle
run: find .
- name: Upload flatpak bundle
uses: actions/upload-artifact@v4
with:
name: flatpak-repo
path: flatpak/repo
name: zen.flatpak
path: ./org.zen.browser.flatpak

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

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

@@ -0,0 +1,98 @@
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: surfer build
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

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

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

@@ -13,7 +13,7 @@ export MOZ_STUB_INSTALLER=1
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"
@@ -21,15 +21,21 @@ 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"
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
# ac_add_options --without-wasm-sandboxed-libraries
# 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,200 @@
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
unset SURFER_PLATFORM
export ZEN_CROSS_COMPILING=1
if test ${{ inputs.generate-gpo }}; then
#export ZEN_GA_GENERATE_PROFILE=1
echo "note: PGO build is disabled"
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,90 @@
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: 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

View File

@@ -5,7 +5,7 @@ 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.2`!
* Checkout the latest [releases notes](https://get-zen.vercel.app/release-notes)!

View File

@@ -1,9 +1,6 @@
# Browser branding
ac_add_options --enable-update-channel=release
ac_add_options --without-wasm-sandboxed-libraries
ac_add_options --with-branding=${brandingDir}
ac_add_options --with-app-name=${binName}
ac_add_options --with-app-basename=Zen
@@ -21,7 +18,7 @@ export MOZ_MACBUNDLE_NAME="Zen Browser.app"
# 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
@@ -34,7 +31,6 @@ ac_add_options --enable-bootstrap
ac_add_options --enable-application=browser
if test "$ZEN_RELEASE"; then
ac_add_options --enable-optimize
ac_add_options --enable-release
ac_add_options --disable-debug
ac_add_options --disable-debug-symbols
@@ -42,33 +38,37 @@ if test "$ZEN_RELEASE"; then
ac_add_options --disable-tests
ac_add_options --enable-strip
ac_add_options --enable-install-strip
ac_add_options --enable-lto=full
ac_add_options --enable-rust-simd
ac_add_options --disable-parental-controls
ac_add_options --disable-crashreporter
ac_add_options --enable-jemalloc
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 --enable-sandbox
ac_add_options --disable-crashreporter
ac_add_options --disable-dmd
ac_add_options --disable-geckodriver
ac_add_options --disable-profiling
ac_add_options --disable-rust-tests
ac_add_options --disable-default-browser-agent
ac_add_options --enable-lto
export MOZ_LTO=thin
ac_add_options MOZ_LTO=thin
ac_add_options --enable-lto=thin
if test "$ZEN_CROSS_COMPILING"; then
ac_add_options --disable-jemalloc
else
ac_add_options --enable-jemalloc
fi
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
@@ -78,8 +78,8 @@ if test "$ZEN_RELEASE"; then
export RUSTC_OPT_LEVEL="3"
ac_add_options RUSTC_OPT_LEVEL="3"
export MOZ_LTO=1
ac_add_options MOZ_LTO=1
mk_add_options AUTOCLOBBER=1
export AUTOCLOBBER=1
fi
ac_add_options --enable-unverified-updates
@@ -91,11 +91,16 @@ ac_add_options --enable-jxl
ac_add_options --enable-av1
ac_add_options --enable-eme=widevine
ac_add_options --without-wasm-sandboxed-libraries
ac_add_options --with-unsigned-addon-scopes=app,system
export MOZ_REQUIRE_SIGNING=
export MOZ_TELEMETRY_REPORTING=
mk_add_options MOZ_CRASHREPORTER=0
mk_add_options MOZ_DATA_REPORTING=0
mk_add_options MOZ_SERVICES_HEALTHREPORT=0
mk_add_options MOZ_TELEMETRY_REPORTING=0
if test "$ZEN_CROSS_COMPILING"; then
ac_add_options --target=x86_64-pc-linux-gnu
fi
@@ -103,4 +108,3 @@ fi
export MOZ_APP_UA_NAME="Firefox"
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE

View File

@@ -2,15 +2,6 @@ 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 --disable-elf-hack
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
@@ -21,8 +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"
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'
# 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="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes"
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes"
export CXXFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes"
export LDFLAGS="-Wl,-O3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes"
POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
export RUSTFLAGS="$RUSTFLAGS -C target-feature=+avx -C codegen-units=1 -Ctarget-cpu=x86-64-v3"
fi
# Disable telemetry and tracking

View File

@@ -1,15 +1,9 @@
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"
if test "$ZEN_RELEASE"; then
ac_add_options --enable-optimize="-mcpu=apple-m1 -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=apple-m1"
fi
# if test "$ZEN_RELEASE"; then
# ac_add_options --enable-optimize="-mcpu=apple-m1 -O3 -w"
# export RUSTFLAGS="$RUSTFLAGS -Ctarget-cpu=apple-m1"
# fi
ac_add_options --enable-install-strip
ac_add_options --target=aarch64-apple-darwin
mk_add_options AUTOCLOBBER=1
export MOZ_INCLUDE_SOURCE_INFO=1

View File

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

12
docs/changes.md Normal file
View File

@@ -0,0 +1,12 @@
## 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
* Overall UX

View File

@@ -13,7 +13,7 @@
"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",
@@ -27,6 +27,6 @@
},
"homepage": "https://github.com/zen-browser/core#readme",
"dependencies": {
"@zen-browser/surfer": "^1.0.14"
"@zen-browser/surfer": "^1.1.4"
}
}

545
pnpm-lock.yaml generated
View File

@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@zen-browser/surfer':
specifier: ^1.0.14
version: 1.0.14
specifier: ^1.1.4
version: 1.1.4
packages:
@@ -109,8 +109,8 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
'@zen-browser/surfer@1.0.14':
resolution: {integrity: sha512-m7RWU4LqGuC4UvEAkho5H41b8T2zMZhN/dBrm+xugZ+rGRAHcw0NMjE3YDsjDr0/r3ZcKw4INPZGhhgSwIs2TA==}
'@zen-browser/surfer@1.1.4':
resolution: {integrity: sha512-fNG/zZfqlEIUVyxLzC07mn+TBVhRwlZJTPMiyckJPo2jqrehGnaOimw23RA6ZgeXCEvu645u9XxWQ7dhkkwnIw==}
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.14':
'@zen-browser/surfer@1.1.4':
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,287 @@
// 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('browser.formfill.enable', false);
pref('security.insecure_connection_text.enabled', true);
pref('security.insecure_connection_text.pbmode.enabled', true);
pref('network.IDN_show_punycode', true);
/** HTTPS-FIRST POLICY ***/
pref('dom.security.https_first', true);
pref('dom.security.https_first_schemeless', true);
/** PASSWORDS ***/
pref('signon.rememberSignons', false);
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.addresses.enabled', false);
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.shell.checkDefaultBrowser', false);
pref('browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons', false);
pref(
'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features',
false
);
pref('browser.preferences.moreFromMozilla', false);
pref('browser.tabs.tabmanager.enabled', false);
pref('browser.aboutConfig.showWarning', false);
pref('browser.aboutwelcome.enabled', false);
/** THEME ADJUSTMENTS ***/
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
pref('browser.compactmode.show', true);
pref('layout.css.prefers-color-scheme.content-override', 2);
pref('browser.privateWindowSeparation.enabled', false); // WINDOWS
/** COOKIE BANNER HANDLING ***/
pref('cookiebanners.service.mode', 1);
pref('cookiebanners.service.mode.privateBrowsing', 1);
/** FULLSCREEN NOTICE ***/
pref('full-screen-api.transition-duration.enter', '0 0');
pref('full-screen-api.transition-duration.leave', '0 0');
pref('full-screen-api.warning.delay', -1);
pref('full-screen-api.warning.timeout', 0);
/** URL BAR ***/
pref('browser.urlbar.suggest.calculator', true);
pref('browser.urlbar.unitConversion.enabled', true);
pref('browser.urlbar.trending.featureGate', false);
/** 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

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

View File

@@ -6,37 +6,16 @@ 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.translations.newSettingsUI.enable', true);
@@ -44,11 +23,6 @@ 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);
@@ -61,45 +35,14 @@ 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);
// 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);
@@ -121,36 +64,10 @@ 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('layers.acceleration.force-enabled', true);
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);
@@ -165,3 +82,20 @@ pref('zen.splitView.working', false);
// Zen Workspaces
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 fast-fox.js
#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

@@ -19,6 +19,7 @@ var gZenBrowserManagerSidebar = {
this.update();
this.close(); // avoid caching
this.listenForPrefChanges();
this.insertIntoContextMenu();
},
get sidebarData() {
@@ -231,6 +232,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.update();
},
_updateButtons() {
for (let button of this.sidebarElement.querySelectorAll(".zen-sidebar-panel-button")) {
if (button.getAttribute("zen-sidebar-id") === this._currentPanel) {
@@ -477,6 +491,21 @@ var gZenBrowserManagerSidebar = {
browser.remove();
this._closeSidebarPanel();
},
insertIntoContextMenu() {
const sibling = document.getElementById("context-stripOnShareLink");
const menuitem = document.createXULElement("menuitem");
menuitem.setAttribute("id", "context-zenAddToWebPanel");
menuitem.setAttribute("hidden", "true");
menuitem.setAttribute("oncommand", "gZenBrowserManagerSidebar.addPanelFromContextMenu();");
menuitem.setAttribute("data-l10n-id", "zen-web-side-panel-context-add-to-panel");
sibling.insertAdjacentElement("afterend", menuitem);
},
addPanelFromContextMenu() {
const url = gContextMenu.linkURL || gContextMenu.target.ownerDocument.location.href;
this._createNewPanel(url);
},
};
gZenBrowserManagerSidebar.init();

View File

@@ -16,4 +16,52 @@ var gZenUIManager = {
(+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));
},
//_updateEvent() {
// this._updateExpandButton();
//},
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

@@ -3,7 +3,8 @@ var ZenWorkspaces = {
async init() {
let docElement = document.documentElement;
if (docElement.getAttribute("chromehidden").includes("toolbar")
|| docElement.getAttribute("chromehidden").includes("menubar")) {
|| docElement.getAttribute("chromehidden").includes("menubar")
|| docElement.hasAttribute("privatebrowsingmode")) {
console.log("!!! ZenWorkspaces is disabled in hidden windows !!!");
return; // We are in a hidden window, don't initialize ZenWorkspaces
}
@@ -73,6 +74,24 @@ var ZenWorkspaces = {
}
await this.changeWorkspace(activeWorkspace);
}
this._initializeWorkspaceIcons();
}
},
_initializeWorkspaceIcons() {
const kIcons = ["🏠", "📄", "💹", "💼", "📧", "✅", "👥"];
let container = document.getElementById("PanelUI-zen-workspaces-create-icons-container");
for (let icon of kIcons) {
let button = document.createXULElement("toolbarbutton");
button.className = "toolbarbutton-1";
button.setAttribute("label", icon);
button.onclick = ((event) => {
for (let button of container.children) {
button.removeAttribute("selected");
}
button.setAttribute("selected", "true");
}).bind(this, button);
container.appendChild(button);
}
},
@@ -118,6 +137,13 @@ var ZenWorkspaces = {
parentPanel.goBack();
},
getWorkspaceIcon(workspace) {
if (typeof workspace.icon !== "undefined") {
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");
@@ -129,7 +155,7 @@ var ZenWorkspaces = {
element.setAttribute("context", "zenWorkspaceActionsMenu");
let childs = window.MozXULElement.parseXULToFragment(`
<div class="zen-workspace-icon">
${workspace.name[0].toUpperCase()}
${this.getWorkspaceIcon(workspace)}
</div>
<div class="zen-workspace-name">
${workspace.name}
@@ -162,7 +188,10 @@ var ZenWorkspaces = {
workspaceList.innerHTML = "";
workspaceList.parentNode.style.display = "flex";
if (workspaces.workspaces.length - 1 <= 0) {
workspaceList.parentNode.style.display = "none";
workspaceList.innerHTML = "No workspaces available";
workspaceList.setAttribute("empty", "true");
} else {
workspaceList.removeAttribute("empty");
}
if (activeWorkspace) {
let currentWorkspace = createWorkspaceElement(activeWorkspace);
@@ -215,7 +244,17 @@ var ZenWorkspaces = {
}
let activeWorkspace = (await this._workspaces()).workspaces.find(workspace => workspace.used);
if (activeWorkspace) {
button.innerHTML = activeWorkspace.name[0].toUpperCase();
button.innerHTML = `
<div class="zen-workspace-sidebar-icon">
${this.getWorkspaceIcon(activeWorkspace)}
</div>
<div class="zen-workspace-sidebar-name">
${activeWorkspace.name}
</div>
`;
if (typeof activeWorkspace.icon === "undefined") {
button.querySelector(".zen-workspace-sidebar-icon").setAttribute("no-icon", "true");
}
}
},
@@ -253,12 +292,20 @@ var ZenWorkspaces = {
},
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 = "";
await this.createAndSaveWorkspace(workspaceName);
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);
},
@@ -277,15 +324,15 @@ var ZenWorkspaces = {
}
let firstTab = undefined;
// Get the number of tabs that are hidden before we start hiding them
let numHiddenTabs = gBrowser.tabs.reduce((acc, tab) => {
return tab.getAttribute("zen-workspace-id") !== window.uuid ? acc + 1 : acc;
let numShownTabs = gBrowser.tabs.reduce((acc, tab) => {
return (tab.getAttribute("zen-workspace-id") === window.uuid) ? acc + 1 : acc;
}, 0);
let workspaces = await this._workspaces();
for (let workspace of workspaces.workspaces) {
workspace.used = workspace.uuid === window.uuid;
}
this.unsafeSaveWorkspaces(workspaces);
if (numHiddenTabs === gBrowser.tabs.length) {
if (numShownTabs === gBrowser.tabs.length-1) {
// If all tabs are hidden, we need to create a new tab
// to show the workspace
this._createNewTabForWorkspace(window);
@@ -310,23 +357,23 @@ var ZenWorkspaces = {
await this._propagateWorkspaceData();
},
_createWorkspaceData(name, isDefault) {
_createWorkspaceData(name, isDefault, icon) {
let window = {
uuid: gZenUIManager.generateUuidv4(),
default: isDefault,
used: true,
icon: "",
icon: icon,
name: name,
};
this._prepareNewWorkspace(window);
return window;
},
async createAndSaveWorkspace(name = "New Workspace", isDefault = false) {
async createAndSaveWorkspace(name = "New Workspace", isDefault = false, icon = undefined) {
if (!this.workspaceEnabled) {
return;
}
let workspaceData = this._createWorkspaceData(name, isDefault);
let workspaceData = this._createWorkspaceData(name, isDefault, icon);
await this.saveWorkspace(workspaceData);
await this.changeWorkspace(workspaceData);
},

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;
}
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", this);
@@ -237,6 +237,9 @@ var gBrowserInit = {
gPrivateBrowsingUI.init();
BrowserSearch.init();
BrowserPageActions.init();
+
// Misc. inits.
gUIDensity.init();
TabletModeUpdater.init();
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
+
if (gToolbarKeyNavEnabled) {
ToolbarKeyboardNavigator.init();
}

View File

@@ -0,0 +1,16 @@
diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js
index b5c8dd44daaab18397cf01d0ef9f5288f5113925..f59b494dc287edaa148f726902244224330d81c5 100644
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -1047,6 +1047,11 @@ class nsContextMenu {
!this.isSecureAboutPage()
);
+ this.showItem(
+ "context-zenAddToWebPanel",
+ 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

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(243 18 18) scale(1)" fill="#e290ff" rx="36"></rect><g transform="translate(-3 -1) rotate(3 18 18)"><path d="M15 19c2 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: 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="#DDDDDD"></rect><rect x="10" y="30" width="80" height="80" fill="#5E9188" transform="translate(0 0) rotate(20 40 40)"></rect><circle cx="40" cy="40" fill="#3E5954" r="16" transform="translate(12 -12)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#253342" transform="translate(0 0) rotate(40 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 669 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="#9D9382"></rect><rect x="10" y="30" width="80" height="80" fill="#FFC1B2" transform="translate(0 0) rotate(20 40 40)"></rect><circle cx="40" cy="40" fill="#FFDBC8" r="16" transform="translate(12 -12)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFF6C7" transform="translate(0 0) rotate(40 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 669 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 7) rotate(223 18 18) scale(1.1)" fill="#e290ff" rx="36"></rect><g transform="translate(-7 3.5) rotate(-3 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: 757 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(16 16) rotate(158 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(316 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(16 16) rotate(158 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(316 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 -4) rotate(238 18 18) scale(1.1)" fill="#fac89a" rx="6"></rect><g transform="translate(4 0) rotate(-8 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: 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="#DDDDDD"></rect><rect x="10" y="30" width="80" height="10" fill="#5E9188" transform="translate(16 -16) rotate(70 40 40)"></rect><circle cx="40" cy="40" fill="#3E5954" r="16" transform="translate(-3 3)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#253342" transform="translate(0 0) rotate(140 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="#9D9382"></rect><rect x="10" y="30" width="80" height="10" fill="#FFC1B2" transform="translate(16 -16) rotate(70 40 40)"></rect><circle cx="40" cy="40" fill="#FFDBC8" r="16" transform="translate(-3 3)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFF6C7" transform="translate(0 0) rotate(140 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="#fac89a"></rect><rect x="0" y="0" width="36" height="36" transform="translate(1 7) rotate(223 18 18) scale(1.1)" fill="#e290ff" rx="36"></rect><g transform="translate(-7 3.5) rotate(-3 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: 757 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="#DDDDDD"></rect><rect x="10" y="30" width="80" height="10" fill="#5E9188" transform="translate(4 -4) rotate(90 40 40)"></rect><circle cx="40" cy="40" fill="#3E5954" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#253342" transform="translate(0 0) rotate(180 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 668 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="#9D9382"></rect><rect x="10" y="30" width="80" height="10" fill="#FFC1B2" transform="translate(4 -4) rotate(90 40 40)"></rect><circle cx="40" cy="40" fill="#FFDBC8" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFF6C7" transform="translate(0 0) rotate(180 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 668 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(341 18 18) scale(1.2)" fill="#e290ff" rx="36"></rect><g transform="translate(-5 -6) rotate(1 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: 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="#DDDDDD"></rect><rect x="10" y="30" width="80" height="10" fill="#5E9188" transform="translate(-6 6) rotate(340 40 40)"></rect><circle cx="40" cy="40" fill="#3E5954" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#253342" transform="translate(0 0) rotate(320 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 669 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="#9D9382"></rect><rect x="10" y="30" width="80" height="10" fill="#FFC1B2" transform="translate(-6 6) rotate(340 40 40)"></rect><circle cx="40" cy="40" fill="#FFDBC8" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFF6C7" transform="translate(0 0) rotate(320 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 669 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(34 18 18) scale(1.1)" fill="#fac89a" rx="6"></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: 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="#DDDDDD"></rect><rect x="10" y="30" width="80" height="80" fill="#5E9188" transform="translate(-2 2) rotate(140 40 40)"></rect><circle cx="40" cy="40" fill="#3E5954" r="16" transform="translate(15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#253342" transform="translate(0 0) rotate(280 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="#9D9382"></rect><rect x="10" y="30" width="80" height="80" fill="#FFC1B2" transform="translate(-2 2) rotate(140 40 40)"></rect><circle cx="40" cy="40" fill="#FFDBC8" r="16" transform="translate(15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFF6C7" transform="translate(0 0) rotate(280 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="#fac89a"></rect><rect x="0" y="0" width="36" height="36" transform="translate(9 9) rotate(259 18 18) scale(1.1)" fill="#e290ff" rx="6"></rect><g transform="translate(4.5 4.5) rotate(-9 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: 757 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="10" fill="#3E5954" transform="translate(0 0) rotate(232 40 40)"></rect><circle cx="40" cy="40" fill="#253342" r="16" transform="translate(-15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#232226" transform="translate(-4 4) rotate(104 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="#FFC1B2"></rect><rect x="10" y="30" width="80" height="10" fill="#FFDBC8" transform="translate(0 0) rotate(232 40 40)"></rect><circle cx="40" cy="40" fill="#FFF6C7" r="16" transform="translate(-15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#DCD7C2" transform="translate(-4 4) rotate(104 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(4 4) rotate(180 18 18) scale(1)" fill="#fac89a" rx="36"></rect><g transform="translate(-4 6) rotate(0 18 18)"><path d="M13,19 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="#5E9188"></rect><rect x="10" y="30" width="80" height="80" fill="#3E5954" transform="translate(-12 12) rotate(142 40 40)"></rect><circle cx="40" cy="40" fill="#253342" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#232226" transform="translate(-4 -4) rotate(284 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="#FFC1B2"></rect><rect x="10" y="30" width="80" height="80" fill="#FFDBC8" transform="translate(-12 12) rotate(142 40 40)"></rect><circle cx="40" cy="40" fill="#FFF6C7" r="16" transform="translate(0 0)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#DCD7C2" transform="translate(-4 -4) rotate(284 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="#fac89a"></rect><rect x="0" y="0" width="36" height="36" transform="translate(7 7) rotate(97 18 18) scale(1.1)" fill="#e290ff" rx="6"></rect><g transform="translate(3.5 3.5) rotate(-7 18 18)"><path d="M13,20 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: 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(0 0) rotate(354 40 40)"></rect><circle cx="40" cy="40" fill="#232226" r="16" transform="translate(3 3)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#DDDDDD" transform="translate(-8 -8) rotate(348 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 670 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(0 0) rotate(354 40 40)"></rect><circle cx="40" cy="40" fill="#DCD7C2" r="16" transform="translate(3 3)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#9D9382" transform="translate(-8 -8) rotate(348 40 40)"></line></g></svg>

After

Width:  |  Height:  |  Size: 670 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(7 1) rotate(213 18 18) scale(1)" fill="#e290ff" rx="6"></rect><g transform="translate(3.5 -5) rotate(-3 18 18)"><path d="M15 19c2 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: 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(2 2) rotate(58 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(116 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="10" fill="#9D9382" transform="translate(2 2) rotate(58 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(116 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="#fac89a"></rect><rect x="0" y="0" width="36" height="36" transform="translate(-1 -1) rotate(125 18 18) scale(1.2)" fill="#e290ff" rx="36"></rect><g transform="translate(-5 -5) rotate(5 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: 787 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="#DDDDDD"></rect><rect x="10" y="30" width="80" height="80" fill="#5E9188" transform="translate(-20 -20) rotate(60 40 40)"></rect><circle cx="40" cy="40" fill="#3E5954" r="16" transform="translate(18 -18)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#253342" transform="translate(0 0) rotate(120 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