Compare commits
663 Commits
0.0.0-a.2
...
1.0.0-a.21
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7b23af1d76 | ||
![]() |
ec9804314d | ||
![]() |
b1d13f947d | ||
![]() |
f558aee231 | ||
![]() |
9d8c91809e | ||
![]() |
24400237a0 | ||
![]() |
6b766db159 | ||
![]() |
37297d9c9f | ||
![]() |
6c90e9726f | ||
![]() |
fe54849453 | ||
![]() |
df693676b7 | ||
![]() |
77a539243d | ||
![]() |
075ae9a459 | ||
![]() |
8f8bc5a9be | ||
![]() |
81225c05ee | ||
![]() |
3d6fc9ea7a | ||
![]() |
2d6660aa4d | ||
![]() |
739d1b1f59 | ||
![]() |
8cd17adbf5 | ||
![]() |
60984fefb9 | ||
![]() |
99b9448f2c | ||
![]() |
abf7ec6c1d | ||
![]() |
13515a5458 | ||
![]() |
3b9a96e330 | ||
![]() |
c4db4b2bd9 | ||
![]() |
f5b42396b0 | ||
![]() |
fd627a25d5 | ||
![]() |
31c0cf5074 | ||
![]() |
d8d8ffa438 | ||
![]() |
45d43c0666 | ||
![]() |
cd62640086 | ||
![]() |
6cf7fe90b8 | ||
![]() |
edca28339b | ||
![]() |
bd28d7439e | ||
![]() |
f6e486ba17 | ||
![]() |
48e0dbe68a | ||
![]() |
ae67b53276 | ||
![]() |
48ee6519a5 | ||
![]() |
b607473973 | ||
![]() |
c46aa247c7 | ||
![]() |
5a72ca7703 | ||
![]() |
7e00a28ba9 | ||
![]() |
b590535343 | ||
![]() |
6309853dd6 | ||
![]() |
b584bb2d4e | ||
![]() |
e0712d80a4 | ||
![]() |
bc291c99c3 | ||
![]() |
6c802b75fa | ||
![]() |
797d3c1766 | ||
![]() |
844a329be5 | ||
![]() |
fb6cbc0e23 | ||
![]() |
e64d8a4fd2 | ||
![]() |
8c90f378d7 | ||
![]() |
7a0d962e62 | ||
![]() |
92f3db6633 | ||
![]() |
d5abc0dd48 | ||
![]() |
36e7fdad8b | ||
![]() |
194056007a | ||
![]() |
3bfbcf64e3 | ||
![]() |
5f9f555083 | ||
![]() |
5cd5db6b3e | ||
![]() |
b596d7b466 | ||
![]() |
d2d3d39464 | ||
![]() |
4087d82922 | ||
![]() |
5a9c4a6666 | ||
![]() |
33ef14c3d8 | ||
![]() |
ad9c9c6141 | ||
![]() |
19ccd0760a | ||
![]() |
e474815d7e | ||
![]() |
8cdc29f1e8 | ||
![]() |
a08c1567eb | ||
![]() |
bc7df76629 | ||
![]() |
c049059911 | ||
![]() |
8c0082bcf0 | ||
![]() |
db4a9b41cc | ||
![]() |
f85794b47d | ||
![]() |
83dcaa3e54 | ||
![]() |
af75d67b30 | ||
![]() |
cedd505a09 | ||
![]() |
1a450ebc72 | ||
![]() |
a395fe34d0 | ||
![]() |
e604372a9f | ||
![]() |
d5e8babaf2 | ||
![]() |
650337f9b5 | ||
![]() |
aa4d950be1 | ||
![]() |
c2dd526195 | ||
![]() |
5df2cce01c | ||
![]() |
aba58af1da | ||
![]() |
c6455e86ef | ||
![]() |
c57db962f8 | ||
![]() |
bd449faf05 | ||
![]() |
cf3f673c35 | ||
![]() |
27386c608e | ||
![]() |
14b7d97579 | ||
![]() |
16b5521087 | ||
![]() |
903f73f7d5 | ||
![]() |
f4e3bfdb9e | ||
![]() |
7276f8a885 | ||
![]() |
f96981e84b | ||
![]() |
5cb8d5356a | ||
![]() |
241614f9e8 | ||
![]() |
6b0e5f6b30 | ||
![]() |
ea6512aee3 | ||
![]() |
7205aaa360 | ||
![]() |
ee5b193785 | ||
![]() |
d54b59554c | ||
![]() |
8d33db3c15 | ||
![]() |
c77110efec | ||
![]() |
0dac0afc9d | ||
![]() |
f515fd9566 | ||
![]() |
c67554a5e5 | ||
![]() |
fb7b6f05f2 | ||
![]() |
1553348812 | ||
![]() |
2035706c2a | ||
![]() |
be8a7ef6a4 | ||
![]() |
ab0e82790b | ||
![]() |
0527f8b788 | ||
![]() |
b07759dab6 | ||
![]() |
e552564ba0 | ||
![]() |
2264c5f67d | ||
![]() |
cc024a4528 | ||
![]() |
4402ed8fc1 | ||
![]() |
0c07a44dc6 | ||
![]() |
1e368f6f0f | ||
![]() |
5b50649739 | ||
![]() |
5718798e81 | ||
![]() |
fd0fbc7fb6 | ||
![]() |
87801ca3be | ||
![]() |
80d0bbcdff | ||
![]() |
84a1ea31e5 | ||
![]() |
7758bdabce | ||
![]() |
0de414158b | ||
![]() |
03b3436025 | ||
![]() |
d250c34d41 | ||
![]() |
ec2466ca02 | ||
![]() |
fc5bd615f4 | ||
![]() |
1e1d78a874 | ||
![]() |
d3287ce216 | ||
![]() |
fb6845f651 | ||
![]() |
e50d16b0cf | ||
![]() |
246a6d60da | ||
![]() |
6f7a6faf90 | ||
![]() |
3f1bdfe50d | ||
![]() |
537b20d2dc | ||
![]() |
d810608a8c | ||
![]() |
20b6203851 | ||
![]() |
9474fa3f3c | ||
![]() |
5dfaef2594 | ||
![]() |
8005aa1f43 | ||
![]() |
cd234259f7 | ||
![]() |
df26d06d12 | ||
![]() |
1265cd623e | ||
![]() |
de19bdf2b4 | ||
![]() |
056f70a6fa | ||
![]() |
08e7a92223 | ||
![]() |
5316ff8e47 | ||
![]() |
214e290af3 | ||
![]() |
0499ba0004 | ||
![]() |
a513d95aad | ||
![]() |
fd556f8186 | ||
![]() |
c61eb6d28a | ||
![]() |
3c04945df6 | ||
![]() |
c27168953a | ||
![]() |
33e731dfe5 | ||
![]() |
fdd05926ab | ||
![]() |
ccd40b544a | ||
![]() |
0aa9d8c6ed | ||
![]() |
eef45c8007 | ||
![]() |
9ce7c60d4a | ||
![]() |
79701ed6dc | ||
![]() |
a90e5f3456 | ||
![]() |
a933c5b9bd | ||
![]() |
9968d550ae | ||
![]() |
3e17c3c1e2 | ||
![]() |
2d72365dbd | ||
![]() |
d61186a042 | ||
![]() |
33ba2f25cd | ||
![]() |
3e4d69a012 | ||
![]() |
c27f4767db | ||
![]() |
6740a7a610 | ||
![]() |
c00eb07484 | ||
![]() |
1b72b68a47 | ||
![]() |
0ac10f2c03 | ||
![]() |
0b824acd20 | ||
![]() |
b37b2e656a | ||
![]() |
36d6abda0d | ||
![]() |
07893e79fe | ||
![]() |
d8a9cabb2b | ||
![]() |
9729f8d84e | ||
![]() |
641c709f5d | ||
![]() |
be45bdb83f | ||
![]() |
2773bd4850 | ||
![]() |
a0e95e7748 | ||
![]() |
b90e50ed87 | ||
![]() |
9c8b0081c0 | ||
![]() |
bb1cd6097b | ||
![]() |
1496f3addc | ||
![]() |
a2bd16a210 | ||
![]() |
26e158072e | ||
![]() |
84a5f05eb6 | ||
![]() |
79967edb22 | ||
![]() |
53644a4ba0 | ||
![]() |
01df43fdc5 | ||
![]() |
b524ec7569 | ||
![]() |
eea0a8aee7 | ||
![]() |
498c909756 | ||
![]() |
661dcbb9f9 | ||
![]() |
c2e8b2790c | ||
![]() |
14da8cd9e7 | ||
![]() |
741cfd7af4 | ||
![]() |
fa6911df5e | ||
![]() |
4e61ab5e98 | ||
![]() |
3900908ed7 | ||
![]() |
3cd21f5516 | ||
![]() |
29411d02d5 | ||
![]() |
ab5cf96bf1 | ||
![]() |
d60d4e888a | ||
![]() |
9998f93942 | ||
![]() |
76b2b55eda | ||
![]() |
b224616b43 | ||
![]() |
236c4160fc | ||
![]() |
7e3c44846d | ||
![]() |
b1709c757a | ||
![]() |
65841d2085 | ||
![]() |
58f18098f7 | ||
![]() |
e31d49ec36 | ||
![]() |
3454ca6336 | ||
![]() |
bd5c242c8c | ||
![]() |
86f8b91fdb | ||
![]() |
3d57cff39b | ||
![]() |
7b40eba9b7 | ||
![]() |
57ac6c1b37 | ||
![]() |
d7630b258a | ||
![]() |
0883536f75 | ||
![]() |
6e2b4b17e6 | ||
![]() |
38e4a7150c | ||
![]() |
052774c5c3 | ||
![]() |
18055e09d9 | ||
![]() |
e24dcdb6ac | ||
![]() |
e3774d666f | ||
![]() |
ec1eef6159 | ||
![]() |
6862e6cbc6 | ||
![]() |
639806e13f | ||
![]() |
ef01c86d7c | ||
![]() |
e32d9cad92 | ||
![]() |
3b5e401899 | ||
![]() |
3bfdb7e3db | ||
![]() |
e567dee12f | ||
![]() |
c55fadc889 | ||
![]() |
33d2954e93 | ||
![]() |
9304b51391 | ||
![]() |
0347ead8a1 | ||
![]() |
9fd9883c8f | ||
![]() |
01e99f6f3d | ||
![]() |
259072a5e5 | ||
![]() |
5079bb6364 | ||
![]() |
37bc8f5f65 | ||
![]() |
4f97d66443 | ||
![]() |
8e19e74894 | ||
![]() |
babc34cc90 | ||
![]() |
c2f97454ac | ||
![]() |
7de872b4dd | ||
![]() |
dc5992bdc7 | ||
![]() |
453c9fef53 | ||
![]() |
5d946db186 | ||
![]() |
406f11dd9a | ||
![]() |
be1efb2ac5 | ||
![]() |
6c4b3aa6f9 | ||
![]() |
2975d5c645 | ||
![]() |
97ce6bae00 | ||
![]() |
b659bfd5e6 | ||
![]() |
81f88c2c21 | ||
![]() |
5bbbefb2a7 | ||
![]() |
ea5c42674e | ||
![]() |
ad2e2f6b24 | ||
![]() |
3333fe22d2 | ||
![]() |
349b33c115 | ||
![]() |
2c0b34e666 | ||
![]() |
84bc2c3c89 | ||
![]() |
2927b58924 | ||
![]() |
a6aa7e3eae | ||
![]() |
d67e1e5b3e | ||
![]() |
09b808b18a | ||
![]() |
deaa0e2781 | ||
![]() |
3140931cdb | ||
![]() |
084d70e68d | ||
![]() |
ac3df15a57 | ||
![]() |
6688fff000 | ||
![]() |
33ff028509 | ||
![]() |
e2ca345dea | ||
![]() |
b17fb12715 | ||
![]() |
51bd006bd1 | ||
![]() |
4fc321292f | ||
![]() |
ea3c6e7131 | ||
![]() |
234f4ecfed | ||
![]() |
d5164f05a5 | ||
![]() |
ae2aa202de | ||
![]() |
940ce6a6d7 | ||
![]() |
edf17c7eed | ||
![]() |
2f668de97d | ||
![]() |
73dea3ad96 | ||
![]() |
2171635145 | ||
![]() |
935fcd9153 | ||
![]() |
a9bfa4dd26 | ||
![]() |
2dc59efd99 | ||
![]() |
b1a3f97592 | ||
![]() |
3bd2d169b4 | ||
![]() |
fc8a501e73 | ||
![]() |
32a3ad96ee | ||
![]() |
3f684745ee | ||
![]() |
13f1daf465 | ||
![]() |
28c84d971d | ||
![]() |
9251970257 | ||
![]() |
a3fd8d17ba | ||
![]() |
17fea1b017 | ||
![]() |
b11c0d8700 | ||
![]() |
86aca3144f | ||
![]() |
11890a70c0 | ||
![]() |
e9f727ceba | ||
![]() |
5342c408fa | ||
![]() |
b494f661b2 | ||
![]() |
5020640e8e | ||
![]() |
48773b80f4 | ||
![]() |
e3edc10e95 | ||
![]() |
d5a4ce2331 | ||
![]() |
1bd4bcf93f | ||
![]() |
7b7f8a3f13 | ||
![]() |
81df7ea605 | ||
![]() |
2b56b9b97d | ||
![]() |
80027fbe48 | ||
![]() |
bd23758cd0 | ||
![]() |
1e464392c2 | ||
![]() |
96f31e8993 | ||
![]() |
01bdbfca4e | ||
![]() |
cc900885ca | ||
![]() |
a3213e069b | ||
![]() |
711fd0ab8b | ||
![]() |
05a6dcb416 | ||
![]() |
fd7d0bbd50 | ||
![]() |
bf96065340 | ||
![]() |
5985420dbb | ||
![]() |
2dd50cfe9a | ||
![]() |
c3a94c128f | ||
![]() |
b94c6c616a | ||
![]() |
9950ebd99e | ||
![]() |
1c4108d961 | ||
![]() |
1be4bbf08b | ||
![]() |
5ba50f2988 | ||
![]() |
e2618e5681 | ||
![]() |
3304259383 | ||
![]() |
d83df429bc | ||
![]() |
191ffd6efe | ||
![]() |
7e0e3f4145 | ||
![]() |
8b56897a11 | ||
![]() |
6a55fecca6 | ||
![]() |
f80a454261 | ||
![]() |
0f97a1cb4d | ||
![]() |
58e049a76f | ||
![]() |
dfa5013a79 | ||
![]() |
22dfa8daec | ||
![]() |
5c5608938d | ||
![]() |
cfd1ef11aa | ||
![]() |
b82530c890 | ||
![]() |
69e5bb552f | ||
![]() |
915350db3c | ||
![]() |
0dfb198609 | ||
![]() |
f1039324cf | ||
![]() |
3ce4bb8ecf | ||
![]() |
005398a20d | ||
![]() |
f45b1ec317 | ||
![]() |
4714cfcc84 | ||
![]() |
c221c8e242 | ||
![]() |
5464da21c4 | ||
![]() |
f2a783fbce | ||
![]() |
bb3ee371a1 | ||
![]() |
95e053562e | ||
![]() |
e5eba4496f | ||
![]() |
eba7459acf | ||
![]() |
7251dbd013 | ||
![]() |
43ffc452a2 | ||
![]() |
2027487c56 | ||
![]() |
77b96aed0a | ||
![]() |
dc5b9f00dd | ||
![]() |
67d2238660 | ||
![]() |
e018a6154b | ||
![]() |
32837dd742 | ||
![]() |
494c829b53 | ||
![]() |
cffdd29121 | ||
![]() |
17598a2725 | ||
![]() |
1433d594c7 | ||
![]() |
5ca89116e7 | ||
![]() |
67aa0dc732 | ||
![]() |
6f47ee3ffa | ||
![]() |
a54b93318a | ||
![]() |
18b267300c | ||
![]() |
de8e45a38f | ||
![]() |
230bb3da67 | ||
![]() |
825bfd91db | ||
![]() |
f2cab3dddb | ||
![]() |
6209250260 | ||
![]() |
68f9cc7e00 | ||
![]() |
141728ab83 | ||
![]() |
af697f69c8 | ||
![]() |
85b76f525c | ||
![]() |
1bcd4021dd | ||
![]() |
a946f31b50 | ||
![]() |
6e5611d1af | ||
![]() |
b5865dd326 | ||
![]() |
963ac294f4 | ||
![]() |
a7fe238a71 | ||
![]() |
9c6b0912a5 | ||
![]() |
26b633553c | ||
![]() |
51ccbb0c7c | ||
![]() |
93668396da | ||
![]() |
7355138f14 | ||
![]() |
1a761535df | ||
![]() |
2962f0741c | ||
![]() |
8de06906b8 | ||
![]() |
18a21bd85a | ||
![]() |
c630d4e479 | ||
![]() |
ab0ca282ff | ||
![]() |
f7970fb004 | ||
![]() |
5904663634 | ||
![]() |
358818b754 | ||
![]() |
4a287ad2eb | ||
![]() |
ffcf71f25d | ||
![]() |
3cf12e5b70 | ||
![]() |
32ecb73303 | ||
![]() |
24eb4a27cb | ||
![]() |
5a7bd1e868 | ||
![]() |
c6ec84444d | ||
![]() |
3044b44967 | ||
![]() |
2384b32a08 | ||
![]() |
350d72033b | ||
![]() |
5d9b8b7244 | ||
![]() |
006ab63b39 | ||
![]() |
4b54e4cfb5 | ||
![]() |
a6113ed7e8 | ||
![]() |
b8e6c059b0 | ||
![]() |
ac972254ae | ||
![]() |
bc41044103 | ||
![]() |
5d4b34f802 | ||
![]() |
bfff708d0c | ||
![]() |
cf23fba41e | ||
![]() |
2e51a18490 | ||
![]() |
1adc22e44f | ||
![]() |
e4cbfc8e78 | ||
![]() |
02f11033cd | ||
![]() |
e955e871e5 | ||
![]() |
5b1ba8f4e9 | ||
![]() |
c73afb011a | ||
![]() |
2538fa9b0a | ||
![]() |
0fc4e356d7 | ||
![]() |
df7a7916f5 | ||
![]() |
4225302a4b | ||
![]() |
7d978f5f96 | ||
![]() |
d433950935 | ||
![]() |
138ea1cb57 | ||
![]() |
ec9bc6ed92 | ||
![]() |
ccbb80ff4c | ||
![]() |
e16c36ba10 | ||
![]() |
42503c7ccf | ||
![]() |
46b63a777b | ||
![]() |
26b1243cc0 | ||
![]() |
cf116b5ad3 | ||
![]() |
cc36e8a6e0 | ||
![]() |
69c7cc198d | ||
![]() |
96ef22dabc | ||
![]() |
77ee0cc065 | ||
![]() |
e939e32da0 | ||
![]() |
b9e008afbe | ||
![]() |
542d631edd | ||
![]() |
acb1750bba | ||
![]() |
b9b8d161f3 | ||
![]() |
0c0de72a2c | ||
![]() |
0cebb046f8 | ||
![]() |
7eda59fb9c | ||
![]() |
e28661c5d4 | ||
![]() |
e72f2e4245 | ||
![]() |
6dac955cc7 | ||
![]() |
84f9237c91 | ||
![]() |
e2233816dd | ||
![]() |
542de32106 | ||
![]() |
7c99456c00 | ||
![]() |
f69421b7c6 | ||
![]() |
011e503c97 | ||
![]() |
7106409061 | ||
![]() |
49ee736731 | ||
![]() |
766c4e941d | ||
![]() |
b6fa393035 | ||
![]() |
c14191847f | ||
![]() |
c2866e0b26 | ||
![]() |
a8bbc0ade6 | ||
![]() |
4cfd3ba121 | ||
![]() |
ae746fa0af | ||
![]() |
31908c8775 | ||
![]() |
6c34fc6e8d | ||
![]() |
57f8a8fccd | ||
![]() |
3f7e2bf1c7 | ||
![]() |
dcd63d66bc | ||
![]() |
0313f1aa14 | ||
![]() |
e3c465b59a | ||
![]() |
093a9625a7 | ||
![]() |
b04d6fc4f0 | ||
![]() |
57850038fc | ||
![]() |
323c0e51f3 | ||
![]() |
a4a1aa5c43 | ||
![]() |
dddccee707 | ||
![]() |
528e020176 | ||
![]() |
fb8bc5d532 | ||
![]() |
6c3a67aa9a | ||
![]() |
3828f2547e | ||
![]() |
b44d4b4f41 | ||
![]() |
8c1e1bc97d | ||
![]() |
93ba4e0638 | ||
![]() |
16f7b06cec | ||
![]() |
e1e910e339 | ||
![]() |
fb34e6c2fd | ||
![]() |
bcd6116e5c | ||
![]() |
628a0bf269 | ||
![]() |
d3900ca905 | ||
![]() |
851b181ae9 | ||
![]() |
275fe8e837 | ||
![]() |
80f8e829df | ||
![]() |
a0f30e595b | ||
![]() |
43460815ac | ||
![]() |
69e352624e | ||
![]() |
40b652869d | ||
![]() |
ccb5df88b4 | ||
![]() |
4e6418c83e | ||
![]() |
0e17cb9c50 | ||
![]() |
ecf5c6af38 | ||
![]() |
afe8438958 | ||
![]() |
360baa1553 | ||
![]() |
a34675379b | ||
![]() |
215e2f10a9 | ||
![]() |
ca9b6525a2 | ||
![]() |
47cddef5de | ||
![]() |
bbedfd50a5 | ||
![]() |
6f60d2ff48 | ||
![]() |
0f76e65372 | ||
![]() |
d83f189a63 | ||
![]() |
f1d4b27c58 | ||
![]() |
f2ace58825 | ||
![]() |
fe74d96914 | ||
![]() |
379232e94a | ||
![]() |
7e74d75612 | ||
![]() |
ac92f251bc | ||
![]() |
42711a079b | ||
![]() |
373937ea0c | ||
![]() |
285a8de152 | ||
![]() |
11da1bf9ba | ||
![]() |
bcb3a88d16 | ||
![]() |
092fc77fb0 | ||
![]() |
9e2cd65560 | ||
![]() |
f8fbc79f35 | ||
![]() |
577c57ba87 | ||
![]() |
0d28e86fea | ||
![]() |
41862e5d39 | ||
![]() |
5559d1375c | ||
![]() |
9907722feb | ||
![]() |
4b706ff33a | ||
![]() |
52b6eab0d7 | ||
![]() |
8dd9b01048 | ||
![]() |
8521a2d044 | ||
![]() |
7e1c76a1da | ||
![]() |
9a816fe73a | ||
![]() |
b0c036e72b | ||
![]() |
0a34fb4fb0 | ||
![]() |
aa812d1fea | ||
![]() |
c63cfebd4f | ||
![]() |
c76492571b | ||
![]() |
34a40bbf86 | ||
![]() |
1132c70565 | ||
![]() |
515a0d4016 | ||
![]() |
9d6cf0cb6c | ||
![]() |
f585ad045b | ||
![]() |
0b9832dcc2 | ||
![]() |
882a6b87c7 | ||
![]() |
3ff2bcaace | ||
![]() |
bd0cf2ea86 | ||
![]() |
cfee3bf9c3 | ||
![]() |
fc8c0facdd | ||
![]() |
ad79a7e318 | ||
![]() |
9297fe8f9a | ||
![]() |
73b7903839 | ||
![]() |
cef86e1b02 | ||
![]() |
a274035159 | ||
![]() |
c57e93ba7b | ||
![]() |
82327db0d2 | ||
![]() |
51f36685e1 | ||
![]() |
9b64ee08a2 | ||
![]() |
a9f02e6120 | ||
![]() |
99dd17560a | ||
![]() |
97defffac3 | ||
![]() |
323ac423c9 | ||
![]() |
3c603fea40 | ||
![]() |
e1183c0ff4 | ||
![]() |
3db9315f82 | ||
![]() |
9ecd4a418d | ||
![]() |
089ff67a17 | ||
![]() |
c804ef7149 | ||
![]() |
68e990e762 | ||
![]() |
f97103ce8b | ||
![]() |
0cfb6875c5 | ||
![]() |
cdd67cd79e | ||
![]() |
c151b41e56 | ||
![]() |
d72c3eae4b | ||
![]() |
e570ad9b4d | ||
![]() |
f8ad77c903 | ||
![]() |
cc60b06b7f | ||
![]() |
19788deee4 | ||
![]() |
ac5f5e1ad3 | ||
![]() |
d3e1b09b00 | ||
![]() |
7c371d295a | ||
![]() |
fb8ccfed50 | ||
![]() |
b4b7eb554f | ||
![]() |
cad9436029 | ||
![]() |
7f6dbadc9c | ||
![]() |
0579b88dc7 | ||
![]() |
18407288ea | ||
![]() |
42218242e2 | ||
![]() |
7b61419039 | ||
![]() |
97da0b2bf0 | ||
![]() |
d0ea429401 | ||
![]() |
f30c7e33ec | ||
![]() |
b300a95854 | ||
![]() |
c6632e8dc8 | ||
![]() |
3b2ae304d2 | ||
![]() |
a2afe5b93a | ||
![]() |
b59174d47d | ||
![]() |
0449a14c19 | ||
![]() |
29b77b7591 | ||
![]() |
718ee7c51a | ||
![]() |
8a3b30e8a6 | ||
![]() |
023a8e26b9 | ||
![]() |
b092d44a7c | ||
![]() |
79dc54c3f4 | ||
![]() |
ef99073b06 | ||
![]() |
2783fa64d8 | ||
![]() |
4719e0ce31 | ||
![]() |
6b0945663a | ||
![]() |
5cafa401c3 | ||
![]() |
15b134511b | ||
![]() |
4270c571ac | ||
![]() |
f5c9e0d405 | ||
![]() |
ec9f5f4dfa | ||
![]() |
4c6f9ef06c | ||
![]() |
d087a26af2 | ||
![]() |
f32ef38823 | ||
![]() |
cf581654ef | ||
![]() |
62a6573f71 | ||
![]() |
968bd32ae3 | ||
![]() |
bc3a1f329e | ||
![]() |
9fca7074ee | ||
![]() |
eece97990d | ||
![]() |
8acae4deb3 | ||
![]() |
eed3bac755 | ||
![]() |
da89b77e75 | ||
![]() |
a12c433b65 | ||
![]() |
a79197c78d | ||
![]() |
5e8a3df528 | ||
![]() |
6a28d0cee9 |
2
.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
*.patch linguist-language=C++
|
2
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
patreon: zen_browser
|
63
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
name: Bug Report Or Feature Request
|
||||
description: File a bug report
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for filing a bug report.
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: What happened?
|
||||
description: Also tell us, what did you expect to happen?
|
||||
placeholder: Tell us what you see!
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: firefox
|
||||
attributes:
|
||||
label: Reproducible?
|
||||
description: Is this issue reproducible on Firefox?
|
||||
options:
|
||||
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of our software are you running? Please DO NOT report Classic bugs.
|
||||
placeholder: 1.0.0
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: severity
|
||||
attributes:
|
||||
label: Severity impact
|
||||
description: See label descriptions for more information.
|
||||
options:
|
||||
- Low
|
||||
- Medium
|
||||
- High
|
||||
- Critical
|
||||
- Enhancement
|
||||
multiple: true
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: platform
|
||||
attributes:
|
||||
label: What platform are you seeing the problem on?
|
||||
multiple: true
|
||||
options:
|
||||
- Linux
|
||||
- macOS - aarch64
|
||||
- macOS - Intel
|
||||
- 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
@@ -0,0 +1 @@
|
||||
blank_issues_enabled: false
|
32
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
name: Feature Request
|
||||
description: File a feature request
|
||||
labels:
|
||||
- "kind: enhancement"
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for filing a feature request.
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: What feature would you like to see?
|
||||
description: Please describe the feature you would like to see.
|
||||
placeholder: Tell us what you would like to see!
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: platform
|
||||
attributes:
|
||||
label: What platform are you seeing the problem on?
|
||||
options:
|
||||
- Linux
|
||||
- macOS
|
||||
- Windows
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context about the feature request here.
|
18
.github/advanced-issue-labeler.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
# Keep up to date with workflows/issue-create.yml !!!
|
||||
|
||||
policy:
|
||||
- section:
|
||||
- id: [severity]
|
||||
label:
|
||||
- name: 'kind: low severity'
|
||||
keys: ['Low']
|
||||
- name: 'kind: medium severity'
|
||||
keys: ['Medium']
|
||||
- name: 'kind: high severity'
|
||||
keys: ['High']
|
||||
- name: 'kind: critical severity'
|
||||
keys: ['Critical']
|
||||
- name: 'kind: enhancement'
|
||||
keys: ['Enhancement']
|
||||
|
630
.github/workflows/alpha.yml
vendored
@@ -30,8 +30,11 @@ jobs:
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
@@ -41,14 +44,6 @@ jobs:
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
name: Setup pnpm cache
|
||||
with:
|
||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
@@ -57,9 +52,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
|
||||
@@ -89,8 +90,10 @@ jobs:
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
@@ -101,14 +104,6 @@ jobs:
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
name: Setup pnpm cache
|
||||
with:
|
||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
@@ -133,277 +128,24 @@ 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: Disable wasm sandboxing for the sake of my sanity
|
||||
run: |
|
||||
echo "ac_add_options --without-wasm-sandboxed-libraries" >> mozconfig
|
||||
|
||||
- name: Free up space
|
||||
run: |
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /opt/ghc
|
||||
sudo rm -rf "/usr/local/share/boost"
|
||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
||||
|
||||
- name: Install sccache
|
||||
env:
|
||||
LINK: https://github.com/mozilla/sccache/releases/download
|
||||
SCCACHE_VERSION: 0.2.13
|
||||
run: |
|
||||
SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl
|
||||
mkdir -p $HOME/.local/bin
|
||||
curl -L "$LINK/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz
|
||||
mv -f $SCCACHE_FILE/sccache $HOME/.local/bin/sccache
|
||||
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: Save sccache
|
||||
uses: actions/cache@v3
|
||||
continue-on-error: false
|
||||
with:
|
||||
path: /home/runner/.cache/sccache
|
||||
key: ${{ runner.os }}-sccache
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Get pnpm store directory
|
||||
id: pnpm-cache
|
||||
shell: bash
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
name: Setup pnpm cache
|
||||
with:
|
||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Load surfer CI setup
|
||||
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- name: Download firefox source and dependencies
|
||||
run: pnpm surfer download
|
||||
|
||||
- name: Import
|
||||
run: pnpm surfer import
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
cd engine
|
||||
./mach --no-interactive bootstrap --application-choice browser
|
||||
cd ..
|
||||
|
||||
- name: Build
|
||||
run: 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: Disable wasm sandboxing for the sake of my sanity
|
||||
run: |
|
||||
cd engine/
|
||||
echo "ac_add_options --without-wasm-sandboxed-libraries" >> mozconfig
|
||||
|
||||
- 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
|
||||
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/nsis || 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: pnpm build
|
||||
|
||||
- name: Package
|
||||
run: |
|
||||
set -x
|
||||
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.installer.exe
|
||||
# path: ./dist/zen.installer.exe
|
||||
|
||||
- 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 update manifests
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: windows_update_manifest
|
||||
path: ./dist/update
|
||||
|
||||
source:
|
||||
if: false
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build-data]
|
||||
|
||||
needs: [build-data, check-release]
|
||||
environment: production
|
||||
steps:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup git
|
||||
run: |
|
||||
@@ -439,165 +181,283 @@ 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
|
||||
|
||||
mac:
|
||||
if: false
|
||||
runs-on: macos-13
|
||||
needs: [build-data, check-release]
|
||||
#windows-step-1:
|
||||
# name: Windows build step 1 (PGO build)
|
||||
# uses: ./.github/workflows/windows-alpha-build.yml
|
||||
# needs: [build-data]
|
||||
# permissions:
|
||||
# contents: write
|
||||
# secrets: inherit
|
||||
# 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
|
||||
# secrets: inherit
|
||||
# needs: [windows-step-1, build-data]
|
||||
# with:
|
||||
# build-version: ${{ needs.build-data.outputs.version }}
|
||||
# profile-data-path-archive: zen.win64-pgo-stage-1.zip
|
||||
|
||||
windows-step-3:
|
||||
name: Windows build step 3 (build with profile data)
|
||||
uses: ./.github/workflows/windows-alpha-build.yml
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
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
|
||||
secrets: inherit
|
||||
needs: [build-data]
|
||||
with:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
|
||||
mac:
|
||||
name: macOS build
|
||||
uses: ./.github/workflows/macos-alpha-build.yml
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
needs: [build-data]
|
||||
with:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
|
||||
appimage:
|
||||
name: AppImage build - Linux ${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
generic: [true, false]
|
||||
needs: [linux]
|
||||
steps:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup git
|
||||
run: |
|
||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||
git config --global user.name "mauro-balades"
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
brew install cairo sccache gnu-tar mercurial
|
||||
sudo pip install setuptools
|
||||
|
||||
- name: Force usage fo gnu-tar
|
||||
run: |
|
||||
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bash_profile
|
||||
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zsh
|
||||
source ~/.bash_profile
|
||||
|
||||
- name: Save sccache
|
||||
uses: actions/cache@v3
|
||||
continue-on-error: false
|
||||
with:
|
||||
path: ~/Library/Caches/Mozilla.sccache
|
||||
key: ${{ runner.os }}-sccache
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Get pnpm store directory
|
||||
id: pnpm-cache
|
||||
shell: bash
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
name: Setup pnpm cache
|
||||
with:
|
||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pnpm-store-
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- 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 ..
|
||||
npm install -g pnpm
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install libfuse2 desktop-file-utils
|
||||
|
||||
- name: surfer build
|
||||
run: pnpm build --verbose
|
||||
- name: Download linux build
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
||||
|
||||
- name: Package
|
||||
run: pnpm package
|
||||
|
||||
- name: Rename artifacts
|
||||
- name: Execute AppImage build
|
||||
run: |
|
||||
mv ./dist/*.dmg "zen.macos.dmg"
|
||||
mv ./dist/output.mar macos.mar
|
||||
set -eux
|
||||
rm AppDir/.DirIcon || true
|
||||
cp configs/branding/alpha/logo128.png AppDir/usr/share/icons/hicolor/128x128/apps/zen.png
|
||||
cp configs/branding/alpha/logo128.png AppDir/zen.png && ln -s zen.png AppDir/.DirIcon
|
||||
|
||||
APPDIR=AppDir
|
||||
tar -xvf *.tar.* && rm -rf *.tar.*
|
||||
mv zen/* $APPDIR/
|
||||
wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
|
||||
chmod +x *.AppImage
|
||||
chmod +x ./AppDir/AppRun
|
||||
echo "AppDir: $APPDIR"
|
||||
ls -al
|
||||
find .
|
||||
ls -al "$APPDIR"
|
||||
ARCH=x86_64 ./appimagetool-x86_64.AppImage --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 10 \
|
||||
-u "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|desktop|latest|zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync" \
|
||||
"$APPDIR" zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
||||
mkdir dist
|
||||
mv zen*AppImage* dist/.
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zen.macos.dmg
|
||||
path: ./zen.macos.dmg
|
||||
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
||||
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
||||
|
||||
- name: Upload mar
|
||||
uses: actions/upload-artifact@v3
|
||||
- name: Upload artifact (ZSync)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: macos.mar
|
||||
path: ./macos.mar
|
||||
|
||||
- name: Upload update manifests
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: macos_update_manifest
|
||||
path: ./dist/update
|
||||
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
|
||||
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
|
||||
|
||||
release:
|
||||
if: ${{ github.event.inputs.create_release == 'true' }}
|
||||
permissions: write-all
|
||||
name: Release
|
||||
needs: [build-data, linux, source, windows, check-release]
|
||||
needs: [build-data, linux, windows-step-3, check-release, mac, appimage]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Update repo
|
||||
uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Git Pull
|
||||
run: git pull
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
- uses: actions/download-artifact@v4
|
||||
|
||||
- name: List
|
||||
run: find .
|
||||
|
||||
- name: Clone updates repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: zen-browser/updates-server
|
||||
path: updates-server
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Copy update manifests
|
||||
run: |
|
||||
cd updates-server
|
||||
mkdir -p updates
|
||||
cp -a ../linux_update_manifest_generic/. updates/
|
||||
cp -a ../linux_update_manifest_specific/. updates/
|
||||
|
||||
cp -a ../windows_update_manifest_generic/. updates/
|
||||
cp -a ../windows_update_manifest_specific/. updates/
|
||||
|
||||
cp -a ../macos_update_manifest_aarch64/. updates/
|
||||
cp -a ../macos_update_manifest_x64/. updates/
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: 🚀 Update update manifests
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||
repository: ./updates-server
|
||||
|
||||
- name: release-github
|
||||
uses: 'marvinpinto/action-automatic-releases@latest'
|
||||
with:
|
||||
repo_token: '${{ secrets.DEPLOY_KEY }}'
|
||||
automatic_release_tag: ${{ needs.build-data.outputs.version }}
|
||||
prerelease: false
|
||||
title: 'Alpha build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})'
|
||||
files: |
|
||||
zen.linux.tar.bz2
|
||||
zen.win64.zip
|
||||
zen.source.tar.gz
|
||||
zen.linux-generic.tar.bz2
|
||||
zen.linux-specific.tar.bz2
|
||||
zen-generic.AppImage
|
||||
zen-generic.AppImage.zsync
|
||||
zen-specific.AppImage
|
||||
zen-specific.AppImage.zsync
|
||||
zen.win-generic.zip
|
||||
zen.win-specific.zip
|
||||
linux.mar
|
||||
linux-generic.mar
|
||||
windows.mar
|
||||
windows-generic.mar
|
||||
macos-x64.mar
|
||||
macos-aarch64.mar
|
||||
zen.installer.exe
|
||||
zen.installer-generic.exe
|
||||
zen.macos-x64.dmg
|
||||
zen.macos-aarch64.dmg
|
||||
|
||||
- name: List
|
||||
run: find .
|
||||
release-flatpak:
|
||||
if: ${{ github.event.inputs.create_release == 'true' }}
|
||||
permissions: write-all
|
||||
name: Release Flatpak
|
||||
needs: [release, linux, build-data]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
- name: Clone updates repo
|
||||
run: git clone https://github.com/zen-browser/updates-server.git
|
||||
steps:
|
||||
- name: Clone flatpak repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: flathub/io.github.zen_browser.zen
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Copy update manifests
|
||||
- name: Download linux generic build
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen.linux-generic.tar.bz2
|
||||
|
||||
- name: Update repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: zen-browser
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Download flatpak archive
|
||||
run: |
|
||||
cd updates-server
|
||||
mkdir -p updates
|
||||
cp -a ../linux_update_manifest/. updates/
|
||||
cp -a ../windows_update_manifest/. updates/
|
||||
wget https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar -O archive.tar
|
||||
|
||||
- name: Setup git
|
||||
run: |
|
||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||
git config --global user.name "mauro-balades"
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
|
||||
- name: Commit update manifests
|
||||
- name: Prepare flatpak manifest
|
||||
run: |
|
||||
cd updates-server
|
||||
git add .
|
||||
git commit -m "Update manifests for ${{ needs.build-data.outputs.version }}"
|
||||
git push
|
||||
|
||||
python3 ./zen-browser/scripts/prepare-flatpak-release.py \
|
||||
--flatpak-archive archive.tar \
|
||||
--version ${{ needs.build-data.outputs.version }} \
|
||||
--linux-archive zen.linux-generic.tar.bz2 \
|
||||
--output io.github.zen_browser.zen.yml \
|
||||
--template-root ./zen-browser/flatpak
|
||||
|
||||
- name: Commit changes
|
||||
run: |
|
||||
git add io.github.zen_browser.zen.yml
|
||||
git commit -m "Update to version ${{ needs.build-data.outputs.version }}"
|
||||
|
||||
- name: Clean up
|
||||
run: |
|
||||
rm -rf zen-browser
|
||||
rm -rf archive.tar
|
||||
rm -rf zen.linux-generic.tar.bz2
|
||||
|
||||
- name: Upload flatpak manifest
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: io.github.zen_browser.zen.yml
|
||||
path: ./io.github.zen_browser.zen.yml
|
||||
|
||||
- name: Create pull request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
env:
|
||||
GIT_TRACE: 1
|
||||
GIT_CURL_VERBOSE: 1
|
||||
with:
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
commit-message: 🚀 Update to version ${{ needs.build-data.outputs.version }}
|
||||
title: 🚀 Update to version ${{ needs.build-data.outputs.version }}
|
||||
body: |
|
||||
This PR updates the Zen Browser Flatpak package to version ${{ needs.build-data.outputs.version }}.
|
||||
|
||||
@mauro-balades
|
||||
branch: update-to-${{ needs.build-data.outputs.version }}
|
||||
base: master
|
||||
git-token: ${{ secrets.DEPLOY_KEY }}
|
||||
delete-branch: true
|
||||
|
||||
|
||||
|
30
.github/workflows/clear-cache.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
name: Clear cache
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
jobs:
|
||||
clear-cache:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clear cache
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
console.log("About to clear")
|
||||
const caches = await github.rest.actions.getActionsCacheList({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
})
|
||||
for (const cache of caches.data.actions_caches) {
|
||||
console.log(cache)
|
||||
github.rest.actions.deleteActionsCacheById({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
cache_id: cache.id,
|
||||
})
|
||||
}
|
||||
console.log("Clear completed")
|
35
.github/workflows/issue-create.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
name: Issue labeler
|
||||
on:
|
||||
issues:
|
||||
types: [ opened ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
label-component:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
# required for all workflows
|
||||
issues: write
|
||||
|
||||
# only required for workflows in private repositories
|
||||
actions: read
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Parse issue form
|
||||
uses: stefanbuck/github-issue-parser@v3
|
||||
id: issue-parser
|
||||
with:
|
||||
template-path: .github/ISSUE_TEMPLATE/bug_report.yml
|
||||
|
||||
- name: Set labels based on severity field
|
||||
uses: redhat-plumbers-in-action/advanced-issue-labeler@v3
|
||||
with:
|
||||
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
section: severity
|
145
.github/workflows/linux-alpha-build.yml
vendored
Normal file
@@ -0,0 +1,145 @@
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-version:
|
||||
description: 'The version to build'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
build-linux:
|
||||
environment: production
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
generic: [true, false]
|
||||
name: Build Linux - ${{ matrix.generic == true && 'Generic' || 'Specific' }}
|
||||
|
||||
steps:
|
||||
- name: Free Disk Space (Ubuntu)
|
||||
uses: jlumbroso/free-disk-space@main
|
||||
with:
|
||||
# this might remove tools that are actually needed,
|
||||
# if set to "true" but frees about 6 GB
|
||||
tool-cache: false
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- 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: 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
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm surfer import
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
cd engine
|
||||
./mach --no-interactive bootstrap --application-choice browser
|
||||
cd ..
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
continue-on-error: true
|
||||
run: sh .github/workflows/src/alpha-build.sh
|
||||
|
||||
- name: Build again if it failed
|
||||
if: failure()
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: sh .github/workflows/src/alpha-build.sh
|
||||
|
||||
- name: Package
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm package
|
||||
|
||||
- name: Rename artifacts
|
||||
run: |
|
||||
mv dist/zen-*.tar.bz2 "zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2"
|
||||
mv dist/output.mar linux${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
|
||||
- name: Upload binary
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
||||
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
||||
path: ./zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
||||
|
||||
- name: Upload mar
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: linux${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
path: ./linux${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
|
||||
- name: Upload update manifests
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: linux_update_manifest_${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
path: ./dist/update
|
122
.github/workflows/macos-alpha-build.yml
vendored
Normal file
@@ -0,0 +1,122 @@
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-version:
|
||||
description: 'The version to build'
|
||||
required: true
|
||||
type: string
|
||||
jobs:
|
||||
mac-build:
|
||||
name: Build macOS - ${{ matrix.arch }}
|
||||
environment: production
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- arch: aarch64
|
||||
os: macos-14
|
||||
- arch: x64
|
||||
os: macos-13
|
||||
|
||||
steps:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- 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: 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
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||
run: |
|
||||
pnpm surfer import
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
cd engine
|
||||
./mach --no-interactive bootstrap --application-choice browser
|
||||
cd ..
|
||||
|
||||
- name: build Zen
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||
run: |
|
||||
if test "${{ matrix.arch }}" = "x64"; then
|
||||
export ZEN_DISABLE_LTO=1
|
||||
fi
|
||||
sh .github/workflows/src/alpha-build.sh
|
||||
|
||||
- name: Rebuild Zen if failed
|
||||
if: failure()
|
||||
run: sh .github/workflows/src/alpha-build.sh
|
||||
|
||||
- name: Package
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||
run: pnpm package
|
||||
|
||||
- name: Rename artifacts
|
||||
run: |
|
||||
mv ./dist/*.dmg "zen.macos-${{ matrix.arch }}.dmg"
|
||||
mv ./dist/output.mar macos-${{ matrix.arch }}.mar
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zen.macos-${{ matrix.arch }}.dmg
|
||||
path: ./zen.macos-${{ matrix.arch }}.dmg
|
||||
|
||||
- name: Upload mar
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: macos-${{ matrix.arch }}.mar
|
||||
path: ./macos-${{ matrix.arch }}.mar
|
||||
|
||||
- name: Upload update manifests
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: macos_update_manifest_${{ matrix.arch }}
|
||||
path: ./dist/update
|
26
.github/workflows/src/alpha-build.sh
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
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
|
19
.github/workflows/src/windows_mozconfig
vendored
@@ -1,19 +0,0 @@
|
||||
|
||||
export WINSYSROOT="$(echo ~)/win-cross/vs2022"
|
||||
|
||||
export MIDL="$(echo ~)/win-cross/wine/bin/widl"
|
||||
export WINE="$(echo ~)/win-cross/wine/bin/wine64"
|
||||
export WINEDEBUG=-all
|
||||
|
||||
#? https://bugzilla.mozilla.org/show_bug.cgi?id=1617793
|
||||
#? https://phabricator.services.mozilla.com/D170170
|
||||
ac_add_options --target=x86_64-pc-windows-msvc
|
||||
|
||||
export MOZ_STUB_INSTALLER=1
|
||||
export MOZ_MAINTENANCE_SERVICE=
|
||||
|
||||
export MOZ_PKG_FORMAT=TAR
|
||||
export MOZ_LTO=cross
|
||||
|
||||
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE
|
||||
|
221
.github/workflows/windows-alpha-build.yml
vendored
Normal file
@@ -0,0 +1,221 @@
|
||||
|
||||
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:
|
||||
name: Build Windows - ${{ matrix.generic == true && 'Generic' || 'Specific' }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
generic: [true, false]
|
||||
environment: production
|
||||
steps:
|
||||
- name: Free Disk Space (Ubuntu)
|
||||
uses: jlumbroso/free-disk-space@main
|
||||
with:
|
||||
# this might remove tools that are actually needed,
|
||||
# if set to "true" but frees about 6 GB
|
||||
tool-cache: false
|
||||
|
||||
- name: Install Node.js and pnpm
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- 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: "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
|
||||
|
||||
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
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install dos2unix
|
||||
|
||||
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 "" >> ../configs/common/mozconfig
|
||||
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
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm surfer import --verbose
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: |
|
||||
set -x
|
||||
dos2unix configs/windows/mozconfig
|
||||
export SURFER_PLATFORM="win32"
|
||||
export ZEN_CROSS_COMPILING=1
|
||||
if test ${{ inputs.generate-gpo }} = true; then
|
||||
export ZEN_GA_GENERATE_PROFILE=1
|
||||
fi
|
||||
sh .github/workflows/src/alpha-build.sh
|
||||
|
||||
- name: Package
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: |
|
||||
set -x
|
||||
export SURFER_PLATFORM="win32"
|
||||
pnpm package
|
||||
mv ./dist/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: Rename artifacts
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
run: |
|
||||
mv ./zen.win64.zip zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
|
||||
mv ./dist/output.mar windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
mv ./dist/zen.installer.exe ./zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
with:
|
||||
name: zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
|
||||
path: ./zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
|
||||
|
||||
- name: Upload PGO build
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ inputs.generate-gpo }}
|
||||
with:
|
||||
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-${{ inputs.profile-data-path-archive }}
|
||||
path: ./zen.win64-pgo-stage-1.zip
|
||||
|
||||
- name: Upload mar
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
with:
|
||||
name: windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
path: ./windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
|
||||
- name: Upload installer
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
with:
|
||||
name: zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
||||
path: ./zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
||||
|
||||
- name: Upload installer stub
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ !inputs.generate-gpo && false }}
|
||||
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_${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
path: ./dist/update
|
88
.github/workflows/windows-profile-build.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
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:
|
||||
name: Windows Profile Build - ${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
generic: [true, false]
|
||||
runs-on: windows-latest
|
||||
# Script edited from https://github.com/Floorp-Projects/Floorp/blob/ESR115/.github/workflows/window-generate-profile-data-and-jarlog.yml
|
||||
steps:
|
||||
- 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: ${{ matrix.generic == true && 'generic' || 'specific' }}-zen-windows-x86_64-profile-data-and-jarlog.zip
|
||||
|
||||
- name: Unpack artifact
|
||||
run: |
|
||||
cd C:\artifact
|
||||
ls
|
||||
Expand-Archive -Path .\${{ inputs.profile-data-path-archive }} -DestinationPath C:\artifact
|
||||
ls
|
||||
- name: Setup
|
||||
run: |
|
||||
(New-Object System.Net.WebClient).DownloadFile("https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe","C:\MozillaBuildSetup-Latest.exe")
|
||||
C:\MozillaBuildSetup-Latest.exe /S | out-null
|
||||
- name: Download firefox
|
||||
run: |
|
||||
git config --global core.safecrlf false
|
||||
pnpm surfer download
|
||||
- name: Generate
|
||||
run: |
|
||||
ls
|
||||
$Env:USE_MINTTY = "0"
|
||||
$workspace_dir_current = [regex]::replace($env:GITHUB_WORKSPACE, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\","/"
|
||||
$workspace_dir = $workspace_dir_current + "/engine"
|
||||
echo $workspace_dir
|
||||
echo "cd $workspace_dir" '' >> mozilla-build-run.sh
|
||||
echo 'export PATH=/c/mozilla-build/msys2/usr/bin:$PATH' '' >> mozilla-build-run.sh
|
||||
echo './mach --no-interactive bootstrap --application-choice browser' '' >> mozilla-build-run.sh
|
||||
echo 'ls /c/Users/runneradmin/.mozbuild/clang/bin' '' >> mozilla-build-run.sh
|
||||
echo 'LLVM_PROFDATA=/c/Users/runneradmin/.mozbuild/clang/bin/llvm-profdata.exe JARLOG_FILE=en-US.log ./mach python build/pgo/profileserver.py --binary /c/artifact/zen/zen.exe' '' >> mozilla-build-run.sh
|
||||
C:\mozilla-build\start-shell.bat $workspace_dir_current\mozilla-build-run.sh
|
||||
- name: 🐛 Debug Session
|
||||
if: ${{ failure() }}
|
||||
uses: Warpbuilds/gha-debug@v1.3
|
||||
timeout-minutes: 15
|
||||
|
||||
- name: Publish merged.profdata
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: merged-${{ matrix.generic == true && 'generic' || 'specific' }}.profdata
|
||||
|
||||
- name: Publish en-US.log
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: en-US-${{ matrix.generic == true && 'generic' || 'specific' }}.log
|
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "src/browser/base/content/zen-components"]
|
||||
path = src/browser/base/content/zen-components
|
||||
url = https://github.com/zen-browser/components
|
6
.vscode/settings.json
vendored
@@ -13,6 +13,10 @@
|
||||
"utility": "cpp",
|
||||
"variant": "cpp",
|
||||
"compare": "cpp",
|
||||
"thread": "cpp"
|
||||
"thread": "cpp",
|
||||
"string": "cpp",
|
||||
"string_view": "cpp",
|
||||
"span": "cpp",
|
||||
"vector": "cpp"
|
||||
}
|
||||
}
|
14
AppDir/AppRun
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
SELF=$(readlink -f "$0")
|
||||
HERE=${SELF%/*}
|
||||
export PATH="${HERE}:${HERE}/usr/bin/:${HERE}/usr/sbin/:${HERE}/usr/games/:${HERE}/bin/:${HERE}/sbin/${PATH:+:$PATH}"
|
||||
export LD_LIBRARY_PATH="${HERE}/usr/lib/:${HERE}/usr/lib/i386-linux-gnu/:${HERE}/usr/lib/x86_64-linux-gnu/:${HERE}/usr/lib32/:${HERE}/usr/lib64/:${HERE}/lib/:${HERE}/lib/i386-linux-gnu/:${HERE}/lib/x86_64-linux-gnu/:${HERE}/lib32/:${HERE}/lib64/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
export PYTHONPATH="${HERE}/usr/share/pyshared/${PYTHONPATH:+:$PYTHONPATH}"
|
||||
export MOZ_LEGACY_PROFILES=1 # Prevent per installation profiles
|
||||
DEFAULT_XDG_DATA_DIRS='./share/:/usr/share/gnome:/usr/local/share/:/usr/share/'
|
||||
export XDG_DATA_DIRS="${HERE}/usr/share/:${XDG_DATA_DIRS:-$DEFAULT_XDG_DATA_DIRS}"
|
||||
export PERLLIB="${HERE}/usr/share/perl5/:${HERE}/usr/lib/perl5/${PERLLIB:+:$PERLLIB}"
|
||||
export GSETTINGS_SCHEMA_DIR="${HERE}/usr/share/glib-2.0/schemas/${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}"
|
||||
export QT_PLUGIN_PATH="${HERE}/usr/lib/qt4/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt4/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt4/plugins/:${HERE}/usr/lib32/qt4/plugins/:${HERE}/usr/lib64/qt4/plugins/:${HERE}/usr/lib/qt5/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt5/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt5/plugins/:${HERE}/usr/lib32/qt5/plugins/:${HERE}/usr/lib64/qt5/plugins/${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH}"
|
||||
EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2 | cut -d " " -f 1)
|
||||
exec "${EXEC}" "$@"
|
8
AppDir/distribution/policies.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"policies": {
|
||||
"DisableAppUpdate": true,
|
||||
"AppAutoUpdate": false,
|
||||
"ManualAppUpdateOnly": true,
|
||||
"BackgroundAppUpdate": false
|
||||
}
|
||||
}
|
25
AppDir/zen.desktop
Normal file
@@ -0,0 +1,25 @@
|
||||
[Desktop Entry]
|
||||
Name=Zen Browser
|
||||
Exec=zen %u
|
||||
Icon=zen
|
||||
Type=Application
|
||||
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json;
|
||||
StartupWMClass=zen-alpha
|
||||
Categories=Network;WebBrowser;
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
X-MultipleArgs=false
|
||||
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||
Actions=new-window;new-private-window;profilemanager;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=Open a New Window
|
||||
Exec=zen %u
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=Open a New Private Window
|
||||
Exec=zen --private-window %u
|
||||
|
||||
[Desktop Action profilemanager]
|
||||
Name=Open the Profile Manager
|
||||
Exec=zen --ProfileManager %u
|
373
LICENSE
Normal file
@@ -0,0 +1,373 @@
|
||||
Mozilla Public License Version 2.0
|
||||
==================================
|
||||
|
||||
1. Definitions
|
||||
--------------
|
||||
|
||||
1.1. "Contributor"
|
||||
means each individual or legal entity that creates, contributes to
|
||||
the creation of, or owns Covered Software.
|
||||
|
||||
1.2. "Contributor Version"
|
||||
means the combination of the Contributions of others (if any) used
|
||||
by a Contributor and that particular Contributor's Contribution.
|
||||
|
||||
1.3. "Contribution"
|
||||
means Covered Software of a particular Contributor.
|
||||
|
||||
1.4. "Covered Software"
|
||||
means Source Code Form to which the initial Contributor has attached
|
||||
the notice in Exhibit A, the Executable Form of such Source Code
|
||||
Form, and Modifications of such Source Code Form, in each case
|
||||
including portions thereof.
|
||||
|
||||
1.5. "Incompatible With Secondary Licenses"
|
||||
means
|
||||
|
||||
(a) that the initial Contributor has attached the notice described
|
||||
in Exhibit B to the Covered Software; or
|
||||
|
||||
(b) that the Covered Software was made available under the terms of
|
||||
version 1.1 or earlier of the License, but not also under the
|
||||
terms of a Secondary License.
|
||||
|
||||
1.6. "Executable Form"
|
||||
means any form of the work other than Source Code Form.
|
||||
|
||||
1.7. "Larger Work"
|
||||
means a work that combines Covered Software with other material, in
|
||||
a separate file or files, that is not Covered Software.
|
||||
|
||||
1.8. "License"
|
||||
means this document.
|
||||
|
||||
1.9. "Licensable"
|
||||
means having the right to grant, to the maximum extent possible,
|
||||
whether at the time of the initial grant or subsequently, any and
|
||||
all of the rights conveyed by this License.
|
||||
|
||||
1.10. "Modifications"
|
||||
means any of the following:
|
||||
|
||||
(a) any file in Source Code Form that results from an addition to,
|
||||
deletion from, or modification of the contents of Covered
|
||||
Software; or
|
||||
|
||||
(b) any new file in Source Code Form that contains any Covered
|
||||
Software.
|
||||
|
||||
1.11. "Patent Claims" of a Contributor
|
||||
means any patent claim(s), including without limitation, method,
|
||||
process, and apparatus claims, in any patent Licensable by such
|
||||
Contributor that would be infringed, but for the grant of the
|
||||
License, by the making, using, selling, offering for sale, having
|
||||
made, import, or transfer of either its Contributions or its
|
||||
Contributor Version.
|
||||
|
||||
1.12. "Secondary License"
|
||||
means either the GNU General Public License, Version 2.0, the GNU
|
||||
Lesser General Public License, Version 2.1, the GNU Affero General
|
||||
Public License, Version 3.0, or any later versions of those
|
||||
licenses.
|
||||
|
||||
1.13. "Source Code Form"
|
||||
means the form of the work preferred for making modifications.
|
||||
|
||||
1.14. "You" (or "Your")
|
||||
means an individual or a legal entity exercising rights under this
|
||||
License. For legal entities, "You" includes any entity that
|
||||
controls, is controlled by, or is under common control with You. For
|
||||
purposes of this definition, "control" means (a) the power, direct
|
||||
or indirect, to cause the direction or management of such entity,
|
||||
whether by contract or otherwise, or (b) ownership of more than
|
||||
fifty percent (50%) of the outstanding shares or beneficial
|
||||
ownership of such entity.
|
||||
|
||||
2. License Grants and Conditions
|
||||
--------------------------------
|
||||
|
||||
2.1. Grants
|
||||
|
||||
Each Contributor hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license:
|
||||
|
||||
(a) under intellectual property rights (other than patent or trademark)
|
||||
Licensable by such Contributor to use, reproduce, make available,
|
||||
modify, display, perform, distribute, and otherwise exploit its
|
||||
Contributions, either on an unmodified basis, with Modifications, or
|
||||
as part of a Larger Work; and
|
||||
|
||||
(b) under Patent Claims of such Contributor to make, use, sell, offer
|
||||
for sale, have made, import, and otherwise transfer either its
|
||||
Contributions or its Contributor Version.
|
||||
|
||||
2.2. Effective Date
|
||||
|
||||
The licenses granted in Section 2.1 with respect to any Contribution
|
||||
become effective for each Contribution on the date the Contributor first
|
||||
distributes such Contribution.
|
||||
|
||||
2.3. Limitations on Grant Scope
|
||||
|
||||
The licenses granted in this Section 2 are the only rights granted under
|
||||
this License. No additional rights or licenses will be implied from the
|
||||
distribution or licensing of Covered Software under this License.
|
||||
Notwithstanding Section 2.1(b) above, no patent license is granted by a
|
||||
Contributor:
|
||||
|
||||
(a) for any code that a Contributor has removed from Covered Software;
|
||||
or
|
||||
|
||||
(b) for infringements caused by: (i) Your and any other third party's
|
||||
modifications of Covered Software, or (ii) the combination of its
|
||||
Contributions with other software (except as part of its Contributor
|
||||
Version); or
|
||||
|
||||
(c) under Patent Claims infringed by Covered Software in the absence of
|
||||
its Contributions.
|
||||
|
||||
This License does not grant any rights in the trademarks, service marks,
|
||||
or logos of any Contributor (except as may be necessary to comply with
|
||||
the notice requirements in Section 3.4).
|
||||
|
||||
2.4. Subsequent Licenses
|
||||
|
||||
No Contributor makes additional grants as a result of Your choice to
|
||||
distribute the Covered Software under a subsequent version of this
|
||||
License (see Section 10.2) or under the terms of a Secondary License (if
|
||||
permitted under the terms of Section 3.3).
|
||||
|
||||
2.5. Representation
|
||||
|
||||
Each Contributor represents that the Contributor believes its
|
||||
Contributions are its original creation(s) or it has sufficient rights
|
||||
to grant the rights to its Contributions conveyed by this License.
|
||||
|
||||
2.6. Fair Use
|
||||
|
||||
This License is not intended to limit any rights You have under
|
||||
applicable copyright doctrines of fair use, fair dealing, or other
|
||||
equivalents.
|
||||
|
||||
2.7. Conditions
|
||||
|
||||
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
|
||||
in Section 2.1.
|
||||
|
||||
3. Responsibilities
|
||||
-------------------
|
||||
|
||||
3.1. Distribution of Source Form
|
||||
|
||||
All distribution of Covered Software in Source Code Form, including any
|
||||
Modifications that You create or to which You contribute, must be under
|
||||
the terms of this License. You must inform recipients that the Source
|
||||
Code Form of the Covered Software is governed by the terms of this
|
||||
License, and how they can obtain a copy of this License. You may not
|
||||
attempt to alter or restrict the recipients' rights in the Source Code
|
||||
Form.
|
||||
|
||||
3.2. Distribution of Executable Form
|
||||
|
||||
If You distribute Covered Software in Executable Form then:
|
||||
|
||||
(a) such Covered Software must also be made available in Source Code
|
||||
Form, as described in Section 3.1, and You must inform recipients of
|
||||
the Executable Form how they can obtain a copy of such Source Code
|
||||
Form by reasonable means in a timely manner, at a charge no more
|
||||
than the cost of distribution to the recipient; and
|
||||
|
||||
(b) You may distribute such Executable Form under the terms of this
|
||||
License, or sublicense it under different terms, provided that the
|
||||
license for the Executable Form does not attempt to limit or alter
|
||||
the recipients' rights in the Source Code Form under this License.
|
||||
|
||||
3.3. Distribution of a Larger Work
|
||||
|
||||
You may create and distribute a Larger Work under terms of Your choice,
|
||||
provided that You also comply with the requirements of this License for
|
||||
the Covered Software. If the Larger Work is a combination of Covered
|
||||
Software with a work governed by one or more Secondary Licenses, and the
|
||||
Covered Software is not Incompatible With Secondary Licenses, this
|
||||
License permits You to additionally distribute such Covered Software
|
||||
under the terms of such Secondary License(s), so that the recipient of
|
||||
the Larger Work may, at their option, further distribute the Covered
|
||||
Software under the terms of either this License or such Secondary
|
||||
License(s).
|
||||
|
||||
3.4. Notices
|
||||
|
||||
You may not remove or alter the substance of any license notices
|
||||
(including copyright notices, patent notices, disclaimers of warranty,
|
||||
or limitations of liability) contained within the Source Code Form of
|
||||
the Covered Software, except that You may alter any license notices to
|
||||
the extent required to remedy known factual inaccuracies.
|
||||
|
||||
3.5. Application of Additional Terms
|
||||
|
||||
You may choose to offer, and to charge a fee for, warranty, support,
|
||||
indemnity or liability obligations to one or more recipients of Covered
|
||||
Software. However, You may do so only on Your own behalf, and not on
|
||||
behalf of any Contributor. You must make it absolutely clear that any
|
||||
such warranty, support, indemnity, or liability obligation is offered by
|
||||
You alone, and You hereby agree to indemnify every Contributor for any
|
||||
liability incurred by such Contributor as a result of warranty, support,
|
||||
indemnity or liability terms You offer. You may include additional
|
||||
disclaimers of warranty and limitations of liability specific to any
|
||||
jurisdiction.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation
|
||||
---------------------------------------------------
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this
|
||||
License with respect to some or all of the Covered Software due to
|
||||
statute, judicial order, or regulation then You must: (a) comply with
|
||||
the terms of this License to the maximum extent possible; and (b)
|
||||
describe the limitations and the code they affect. Such description must
|
||||
be placed in a text file included with all distributions of the Covered
|
||||
Software under this License. Except to the extent prohibited by statute
|
||||
or regulation, such description must be sufficiently detailed for a
|
||||
recipient of ordinary skill to be able to understand it.
|
||||
|
||||
5. Termination
|
||||
--------------
|
||||
|
||||
5.1. The rights granted under this License will terminate automatically
|
||||
if You fail to comply with any of its terms. However, if You become
|
||||
compliant, then the rights granted under this License from a particular
|
||||
Contributor are reinstated (a) provisionally, unless and until such
|
||||
Contributor explicitly and finally terminates Your grants, and (b) on an
|
||||
ongoing basis, if such Contributor fails to notify You of the
|
||||
non-compliance by some reasonable means prior to 60 days after You have
|
||||
come back into compliance. Moreover, Your grants from a particular
|
||||
Contributor are reinstated on an ongoing basis if such Contributor
|
||||
notifies You of the non-compliance by some reasonable means, this is the
|
||||
first time You have received notice of non-compliance with this License
|
||||
from such Contributor, and You become compliant prior to 30 days after
|
||||
Your receipt of the notice.
|
||||
|
||||
5.2. If You initiate litigation against any entity by asserting a patent
|
||||
infringement claim (excluding declaratory judgment actions,
|
||||
counter-claims, and cross-claims) alleging that a Contributor Version
|
||||
directly or indirectly infringes any patent, then the rights granted to
|
||||
You by any and all Contributors for the Covered Software under Section
|
||||
2.1 of this License shall terminate.
|
||||
|
||||
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
|
||||
end user license agreements (excluding distributors and resellers) which
|
||||
have been validly granted by You or Your distributors under this License
|
||||
prior to termination shall survive termination.
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 6. Disclaimer of Warranty *
|
||||
* ------------------------- *
|
||||
* *
|
||||
* Covered Software is provided under this License on an "as is" *
|
||||
* basis, without warranty of any kind, either expressed, implied, or *
|
||||
* statutory, including, without limitation, warranties that the *
|
||||
* Covered Software is free of defects, merchantable, fit for a *
|
||||
* particular purpose or non-infringing. The entire risk as to the *
|
||||
* quality and performance of the Covered Software is with You. *
|
||||
* Should any Covered Software prove defective in any respect, You *
|
||||
* (not any Contributor) assume the cost of any necessary servicing, *
|
||||
* repair, or correction. This disclaimer of warranty constitutes an *
|
||||
* essential part of this License. No use of any Covered Software is *
|
||||
* authorized under this License except under this disclaimer. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 7. Limitation of Liability *
|
||||
* -------------------------- *
|
||||
* *
|
||||
* Under no circumstances and under no legal theory, whether tort *
|
||||
* (including negligence), contract, or otherwise, shall any *
|
||||
* Contributor, or anyone who distributes Covered Software as *
|
||||
* permitted above, be liable to You for any direct, indirect, *
|
||||
* special, incidental, or consequential damages of any character *
|
||||
* including, without limitation, damages for lost profits, loss of *
|
||||
* goodwill, work stoppage, computer failure or malfunction, or any *
|
||||
* and all other commercial damages or losses, even if such party *
|
||||
* shall have been informed of the possibility of such damages. This *
|
||||
* limitation of liability shall not apply to liability for death or *
|
||||
* personal injury resulting from such party's negligence to the *
|
||||
* extent applicable law prohibits such limitation. Some *
|
||||
* jurisdictions do not allow the exclusion or limitation of *
|
||||
* incidental or consequential damages, so this exclusion and *
|
||||
* limitation may not apply to You. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
8. Litigation
|
||||
-------------
|
||||
|
||||
Any litigation relating to this License may be brought only in the
|
||||
courts of a jurisdiction where the defendant maintains its principal
|
||||
place of business and such litigation shall be governed by laws of that
|
||||
jurisdiction, without reference to its conflict-of-law provisions.
|
||||
Nothing in this Section shall prevent a party's ability to bring
|
||||
cross-claims or counter-claims.
|
||||
|
||||
9. Miscellaneous
|
||||
----------------
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. Any law or regulation which provides
|
||||
that the language of a contract shall be construed against the drafter
|
||||
shall not be used to construe this License against a Contributor.
|
||||
|
||||
10. Versions of the License
|
||||
---------------------------
|
||||
|
||||
10.1. New Versions
|
||||
|
||||
Mozilla Foundation is the license steward. Except as provided in Section
|
||||
10.3, no one other than the license steward has the right to modify or
|
||||
publish new versions of this License. Each version will be given a
|
||||
distinguishing version number.
|
||||
|
||||
10.2. Effect of New Versions
|
||||
|
||||
You may distribute the Covered Software under the terms of the version
|
||||
of the License under which You originally received the Covered Software,
|
||||
or under the terms of any subsequent version published by the license
|
||||
steward.
|
||||
|
||||
10.3. Modified Versions
|
||||
|
||||
If you create software not governed by this License, and you want to
|
||||
create a new license for such software, you may create and use a
|
||||
modified version of this License if you rename the license and remove
|
||||
any references to the name of the license steward (except to note that
|
||||
such modified license differs from this License).
|
||||
|
||||
10.4. Distributing Source Code Form that is Incompatible With Secondary
|
||||
Licenses
|
||||
|
||||
If You choose to distribute Source Code Form that is Incompatible With
|
||||
Secondary Licenses under the terms of this version of the License, the
|
||||
notice described in Exhibit B of this License must be attached.
|
||||
|
||||
Exhibit A - Source Code Form License Notice
|
||||
-------------------------------------------
|
||||
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
If it is not possible or desirable to put the notice in a particular
|
||||
file, then You may include the notice in a location (such as a LICENSE
|
||||
file in a relevant directory) where a recipient would be likely to look
|
||||
for such a notice.
|
||||
|
||||
You may add additional accurate notices of copyright ownership.
|
||||
|
||||
Exhibit B - "Incompatible With Secondary Licenses" Notice
|
||||
---------------------------------------------------------
|
||||
|
||||
This Source Code Form is "Incompatible With Secondary Licenses", as
|
||||
defined by the Mozilla Public License, v. 2.0.
|
33
README.md
@@ -3,9 +3,25 @@
|
||||
|
||||
Experience tranquillity while browsing the web without people tracking you!
|
||||
|
||||
* [Website](https://www.zen-browser.app)
|
||||
* [Download](https://www.zen-browser.app/download)
|
||||
* [Release Notes](https://www.zen-browser.app/release-notes/latest)
|
||||
|
||||
<a href='https://flathub.org/apps/io.github.zen_browser.zen'>
|
||||
<img width='240' alt='Get it on Flathub' src='https://flathub.org/api/badge?locale=en'/>
|
||||
</a>
|
||||
|
||||
# Compatibility
|
||||
|
||||
Zen is currently built using firefox version `127.0.2`!
|
||||
Zen is currently built using firefox version `129.0.1`!
|
||||
|
||||
* Checkout the latest [releases notes](https://www.zen-browser.app/release-notes)!
|
||||
|
||||
# Performance
|
||||
|
||||
Zen is built with performance in mind, and we have optimized the browser to be as fast as possible!
|
||||
|
||||
* Checkout the latest [performance benchmarks](./docs/performance.md)!
|
||||
|
||||
## 🚀 Run Locally
|
||||
|
||||
@@ -25,7 +41,7 @@ npm i
|
||||
Download and bootstrap the browser
|
||||
|
||||
```
|
||||
npm run bootstrap
|
||||
npm run init
|
||||
```
|
||||
|
||||
Start building the browser
|
||||
@@ -40,16 +56,19 @@ Finally, run the browser!
|
||||
npm start
|
||||
```
|
||||
|
||||
## Contributing
|
||||
## Special Thanks
|
||||
|
||||
Contributions are always welcome!
|
||||
- [IAmJafeth](https://github.com/IAmJafeth) (For sponsoring the domain)
|
||||
- [Donno 🐒](https://www.onnno.nl/) (For making the logo)
|
||||
- [ptr1337](https://github.com/ptr1337) (AUR Packages and optimization flags)
|
||||
|
||||
See `contributing.md` for ways to get started.
|
||||
## Third Party Code
|
||||
|
||||
Please adhere to this project's `code of conduct`.
|
||||
Zen coudn't be in its current state without the help of these amazing projects!
|
||||
|
||||
- Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox)
|
||||
|
||||
## License
|
||||
|
||||
[MPL LICENSE](https://choosealicense.com/licenses/mit/)
|
||||
[MPL LICENSE](/LICENSE)
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
||||
Sorry, your browser does not support inline SVG.
|
||||
</svg>
|
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 226 B |
BIN
configs/branding/alpha/logo-mac.png
Normal file
After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 501 B After Width: | Height: | Size: 624 B |
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 951 B |
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 830 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.6 KiB |
@@ -1,4 +1,4 @@
|
||||
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
||||
Sorry, your browser does not support inline SVG.
|
||||
</svg>
|
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 225 B |
BIN
configs/branding/beta/logo-mac.png
Normal file
After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 501 B After Width: | Height: | Size: 624 B |
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 951 B |
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 830 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.6 KiB |
@@ -1,40 +1,105 @@
|
||||
# Browser branding
|
||||
ac_add_options --enable-update-channel=release
|
||||
ac_add_options --without-wasm-sandboxed-libraries
|
||||
|
||||
# ac_add_options --with-branding=beta
|
||||
|
||||
ac_add_options --with-app-name=${binName}
|
||||
ac_add_options --with-app-basename=Zen
|
||||
ac_add_options --enable-official-branding
|
||||
|
||||
export MOZ_USER_DIR="${name}"
|
||||
export MOZ_APP_VENDOR="${vendor}"
|
||||
export MOZ_APP_BASENAME=Zen
|
||||
export MOZ_APP_PROFILE=${binName}
|
||||
export MOZ_APP_DISPLAYNAME="${name}"
|
||||
export MOZ_BRANDING_DIRECTORY=${brandingDir}
|
||||
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
|
||||
export MOZ_MACBUNDLE_ID=${appId}
|
||||
export MOZ_DISTRIBUTION_ID=${appId}
|
||||
|
||||
# Uncomment if builds are too resource hungry
|
||||
# mk_add_options MOZ_MAKE_FLAGS="-j4"
|
||||
#ac_add_options --enable-linker=gold
|
||||
# ac_add_options --enable-linker=gold
|
||||
|
||||
# Misc
|
||||
export MOZ_STUB_INSTALLER=1
|
||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
export MOZ_SOURCE_REPO=https://github.com/zen-browser/desktop
|
||||
export MOZ_SOURCE_CHANGESET=${changeset}
|
||||
|
||||
ac_add_options --enable-bootstrap
|
||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
|
||||
ac_add_options --enable-application=browser
|
||||
ac_add_options --enable-hardening
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --with-ccache=sccache
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --enable-updater
|
||||
|
||||
# ALWAYS MANTAIN ONE LINE BREAK AT THE END OF THIS FILE
|
||||
if test "$ZEN_RELEASE"; then
|
||||
ac_add_options --enable-bootstrap
|
||||
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --disable-debug-symbols
|
||||
ac_add_options --disable-debug-js-modules
|
||||
ac_add_options --disable-tests
|
||||
ac_add_options --disable-jprof
|
||||
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --enable-wasm-simd
|
||||
|
||||
mk_add_options MOZ_PARALLEL_COMPILE=1
|
||||
|
||||
ac_add_options --enable-proxy-bypass-protection
|
||||
ac_add_options --enable-hardening
|
||||
ac_add_options --disable-profiling
|
||||
|
||||
ac_add_options --disable-crashreporter
|
||||
ac_add_options --disable-geckodriver
|
||||
ac_add_options --disable-rust-tests
|
||||
|
||||
# Done by vlad, if something fails, it's his fault
|
||||
ac_add_options --disable-default-browser-agent
|
||||
|
||||
if ! test "$ZEN_DISABLE_LTO"; then
|
||||
export MOZ_LTO=1
|
||||
ac_add_options MOZ_LTO=1
|
||||
ac_add_options --enable-lto=full,cross
|
||||
fi
|
||||
|
||||
ac_add_options --enable-jemalloc
|
||||
|
||||
mk_add_options MOZILLA_OFFICIAL=1
|
||||
MOZILLA_OFFICIAL=1
|
||||
export MOZILLA_OFFICIAL=1
|
||||
|
||||
mk_add_options MOZ_OPTIMIZE=2
|
||||
MOZ_OPTIMIZE=2
|
||||
export MOZ_OPTIMIZE=2
|
||||
|
||||
export OPT_LEVEL="3"
|
||||
ac_add_options OPT_LEVEL="3"
|
||||
|
||||
export RUSTC_OPT_LEVEL="3"
|
||||
ac_add_options RUSTC_OPT_LEVEL="3"
|
||||
|
||||
mk_add_options AUTOCLOBBER=1
|
||||
export AUTOCLOBBER=1
|
||||
|
||||
ac_add_options --enable-updater
|
||||
|
||||
export MOZ_PACKAGE_JSSHELL=1
|
||||
fi
|
||||
|
||||
ac_add_options --enable-unverified-updates
|
||||
|
||||
ac_add_options --enable-sandbox
|
||||
ac_add_options --enable-raw
|
||||
ac_add_options --enable-webrtc
|
||||
ac_add_options --enable-jxl
|
||||
ac_add_options --enable-av1
|
||||
ac_add_options --enable-eme=widevine
|
||||
|
||||
ac_add_options --allow-addon-sideload
|
||||
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||
|
||||
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
|
||||
|
||||
# Allow loading unsigned extensions
|
||||
export MOZ_REQUIRE_SIGNING=
|
||||
mk_add_options MOZ_REQUIRE_SIGNING=
|
||||
|
||||
# Sorry ptr, I didnt mean to!
|
||||
# Edit: ok, ill remove it, goodbye top #1 on fastest browsers benchmark :[
|
||||
# ac_add_options --without-wasm-sandboxed-libraries
|
||||
|
@@ -1,13 +1,58 @@
|
||||
# Optimise builds
|
||||
# ac_add_options --enable-application=browser
|
||||
# ac_add_options --enable-hardening
|
||||
# ac_add_options --enable-rust-simd
|
||||
# ac_add_options --enable-release
|
||||
# ac_add_options --enable-optimize
|
||||
# ac_add_options --with-ccache=sccache
|
||||
# ac_add_options --disable-debug
|
||||
# ac_add_options --enable-updater
|
||||
|
||||
# Disable telemetry and tracking
|
||||
mk_add_options MOZ_TELEMETRY_REPORTING=
|
||||
mk_add_options MOZ_DATA_REPORTING=
|
||||
if test -d "$HOME/.mozbuild/clang/bin"; then
|
||||
export CC="$HOME"/.mozbuild/clang/bin/clang
|
||||
export CXX="$HOME"/.mozbuild/clang/bin/clang++
|
||||
else
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
fi
|
||||
|
||||
if test "$ZEN_RELEASE"; then
|
||||
|
||||
ac_add_options --disable-dmd
|
||||
ac_add_options --enable-linker=lld
|
||||
ac_add_options --disable-elf-hack
|
||||
|
||||
ac_add_options --disable-gpsd
|
||||
ac_add_options --disable-necko-wifi
|
||||
|
||||
ac_add_options --enable-install-strip
|
||||
ac_add_options --enable-strip
|
||||
export STRIP_FLAGS="--strip-debug --strip-unneeded"
|
||||
|
||||
if [ -f /home/runner/.mozbuild/sccache/sccache ]; then
|
||||
mk_add_options 'export RUSTC_WRAPPER=/home/runner/.mozbuild/sccache/sccache'
|
||||
mk_add_options 'export CCACHE_CPP2=yes'
|
||||
ac_add_options --with-ccache=/home/runner/.mozbuild/sccache/sccache
|
||||
mk_add_options 'export SCCACHE_GHA_ENABLED=on'
|
||||
fi
|
||||
|
||||
export MOZ_PGO=1
|
||||
ac_add_options MOZ_PGO=1
|
||||
|
||||
if test "$SURFER_COMPAT" = "true"; then
|
||||
ac_add_options --enable-optimize="-O3 -march=x86-64"
|
||||
|
||||
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
||||
export CPPFLAGS="$CPPFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
||||
export CXXFLAGS="$CXXFLAGS -O3 -ffp-contract=fast -march=x86-64"
|
||||
export LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64"
|
||||
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64 -C codegen-units=1"
|
||||
else
|
||||
ac_add_options --enable-wasm-avx
|
||||
ac_add_options --enable-optimize="-O3 -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||
|
||||
export CFLAGS="$CFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||
export CPPFLAGS="$CPPFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||
export CXXFLAGS="$CXXFLAGS -O3 -ffp-contract=fast -march=x86-64-v3 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -mpopcnt -mpclmul"
|
||||
export LDFLAGS="$LDFLAGS -Wl,-O3 -Wl,-mllvm,-fp-contract=fast -march=x86-64-v3"
|
||||
export RUSTFLAGS="$RUSTFLAGS -C target-cpu=x86-64-v3 -C target-feature=+sse4.1 -C target-feature=+avx2 -C codegen-units=1"
|
||||
fi
|
||||
export VERBOSE=1
|
||||
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
||||
fi
|
||||
|
||||
ac_add_options --target=x86_64-pc-linux
|
||||
|
||||
ac_add_options --enable-alsa
|
||||
ac_add_options --enable-pulseaudio
|
||||
|
@@ -1,14 +1,36 @@
|
||||
# Optimise builds
|
||||
ac_add_options --enable-application=browser
|
||||
ac_add_options --enable-hardening
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --with-ccache=sccache
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --enable-updater
|
||||
mk_add_options MOZ_MAKE_FLAGS="-j4"
|
||||
|
||||
# Disable telemetry and tracking
|
||||
mk_add_options MOZ_TELEMETRY_REPORTING=
|
||||
mk_add_options MOZ_DATA_REPORTING=
|
||||
# SURFER_COMPAT has a different meaning here, in macOS it means that the build is for
|
||||
# x86_64, not ARM64.
|
||||
unset MOZ_STDCXX_COMPAT
|
||||
|
||||
ac_add_options --disable-dmd
|
||||
|
||||
export MOZ_MACBUNDLE_ID=${appId}
|
||||
export MOZ_MACBUNDLE_NAME="Zen Browser.app"
|
||||
|
||||
if test "$SURFER_COMPAT" = "true"; then
|
||||
export MOZ_PGO=1
|
||||
ac_add_options MOZ_PGO=1
|
||||
ac_add_options --target=x86_64-apple-darwin
|
||||
|
||||
ac_add_options --enable-wasm-avx
|
||||
ac_add_options --enable-optimize="-march=nehalem -mtune=haswell -O3 -w"
|
||||
|
||||
export CFLAGS="-O3 -march=nehalem"
|
||||
export CPPFLAGS="-O3 -march=nehalem"
|
||||
export CXXFLAGS="-O3 -march=nehalem"
|
||||
export LDFLAGS="-Wl,-O3 -march=nehalem"
|
||||
export RUSTFLAGS="-Ctarget-cpu=nehalem -C codegen-units=1"
|
||||
else
|
||||
ac_add_options --target=aarch64-apple-darwin
|
||||
|
||||
ac_add_options --enable-optimize="-O3 -mcpu=apple-m1 -march=armv8.3-a+simd"
|
||||
|
||||
export CFLAGS="-O3 -march=armv8.3-a+simd -mcpu=apple-m1"
|
||||
export CPPFLAGS="-O3 -march=armv8.3-a+simd -mcpu=apple-m1"
|
||||
export CXXFLAGS="-O3 -march=armv8.3-a+simd -mcpu=apple-m1"
|
||||
export LDFLAGS="-Wl,-O3 -march=armv8.3-a+simd -mcpu=apple-m1"
|
||||
export RUSTFLAGS="-C target-feature=+v8.3a -C codegen-units=1 -Ctarget-cpu=apple-m1"
|
||||
fi
|
||||
export VERBOSE=1
|
||||
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
||||
|
@@ -1,8 +1,69 @@
|
||||
ac_add_options --target=x86_64-pc-mingw32
|
||||
ac_add_options --enable-js-shell
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --enable-crashreporter
|
||||
|
||||
# Disable telemetry and tracking
|
||||
mk_add_options MOZ_TELEMETRY_REPORTING=
|
||||
mk_add_options MOZ_DATA_REPORTING=
|
||||
|
||||
if test "$ZEN_CROSS_COMPILING"; then
|
||||
|
||||
export WINSYSROOT="$(echo ~)/win-cross/vs2022"
|
||||
|
||||
export MIDL="$(echo ~)/win-cross/wine/bin/widl"
|
||||
export WINE="$(echo ~)/win-cross/wine/bin/wine64"
|
||||
export WINEDEBUG=-all
|
||||
|
||||
export MOZ_STUB_INSTALLER=1
|
||||
export MOZ_PKG_FORMAT=TAR
|
||||
|
||||
export CROSS_BUILD=1
|
||||
CROSS_COMPILE=1
|
||||
TOOLS=$(echo ~)/win-cross
|
||||
|
||||
export WIN_UCRT_REDIST_DIR="$(echo ~)/win-cross/vs2022/Windows Kits/10/Redist/10.0.22621.0/ucrt/DLLs/x64"
|
||||
export WIN32_REDIST_DIR="$(echo ~)/win-cross/vs2022/VC/Redist/MSVC/14.38.33135/x64/Microsoft.VC143.CRT"
|
||||
|
||||
export MIDL="$TOOLS/wine/bin/widl"
|
||||
export MOZ_INCLUDE_SOURCE_INFO=1
|
||||
export MOZ_STUB_INSTALLER=1
|
||||
export WINEDEBUG=-all
|
||||
export WINE="$TOOLS/wine/bin/wine64"
|
||||
|
||||
fi
|
||||
|
||||
#? https://bugzilla.mozilla.org/show_bug.cgi?id=1617793
|
||||
#? https://phabricator.services.mozilla.com/D170170
|
||||
ac_add_options --target=x86_64-pc-windows-msvc
|
||||
|
||||
ac_add_options --disable-maintenance-service
|
||||
ac_add_options --disable-bits-download
|
||||
|
||||
if test "$SURFER_COMPAT" = "true"; then
|
||||
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize"
|
||||
|
||||
export CFLAGS="-mtune=haswell -march=x86-64"
|
||||
export CPPFLAGS="-mtune=haswell -march=x86-64"
|
||||
export CXXFLAGS="-mtune=haswell -march=x86-64"
|
||||
export LDFLAGS="-Wl,-O3"
|
||||
export RUSTFLAGS="-C codegen-units=1 -Ctarget-cpu=x86-64"
|
||||
else
|
||||
ac_add_options --enable-optimize="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -Xclang -ftree-vectorize -mpopcnt -mpclmul -w"
|
||||
ac_add_options --enable-wasm-avx
|
||||
|
||||
export CFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3 -mpopcnt -mpclmul"
|
||||
export CPPFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3 -mpopcnt -mpclmul"
|
||||
export CXXFLAGS="-O2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -maes -march=x86-64-v3 -mpopcnt -mpclmul"
|
||||
export LDFLAGS="-Wl,-O3 -march=x86-64-v3 -mpopcnt -mpclmul"
|
||||
export RUSTFLAGS="-C target-feature=+avx -C codegen-units=1 -Ctarget-cpu=x86-64-v3"
|
||||
fi
|
||||
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
||||
export VERBOSE=1
|
||||
|
||||
#if test "$ZEN_GA_GENERATE_PROFILE"; then
|
||||
# mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
|
||||
# ac_add_options --enable-profile-generate=cross
|
||||
#else
|
||||
# ac_add_options --enable-profile-use=cross
|
||||
# if test "$SURFER_COMPAT" = "true"; then
|
||||
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged-generic.profdata
|
||||
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US-generic.log
|
||||
# else
|
||||
# ac_add_options --with-pgo-profile-path=$(echo ~)/artifact/merged-specific.profdata
|
||||
# ac_add_options --with-pgo-jarlog=$(echo ~)/artifact/en-US-specific.log
|
||||
# fi
|
||||
#fi
|
||||
|
||||
|
13
docs/changes.md
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
## Changed things that should be tested each release
|
||||
|
||||
* Workspaces
|
||||
* Sidebar
|
||||
* Split views
|
||||
* Vertical tabs (expanded and not expanded)
|
||||
* Tab groups
|
||||
* Welcome Page
|
||||
* Overall performance
|
||||
* Overall stability
|
||||
* Pinning tabs (Grid layout)
|
||||
* Overall UX
|
19
docs/key-shortcuts.md
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
# Custom Keyboard Shortcuts
|
||||
|
||||
```json
|
||||
{
|
||||
"<shortcut-id>": {
|
||||
"key": "<key>",
|
||||
"alt": false,
|
||||
"shift": false,
|
||||
"ctrl": false,
|
||||
"meta": false,
|
||||
"keycode": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The `key` field is the key that will trigger the shortcut. The `alt`, `shift`, `ctrl`, and `meta` fields are booleans that indicate if the respective modifier key should be pressed when the shortcut is triggered.
|
||||
|
||||
The `keycode` field is the keycode of the key that will trigger the shortcut. This field is optional and can be used to specify the keycode of the key that will trigger the shortcut. If the `keycode` field is specified, the `key` field will be ignored.
|
60
docs/performance.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# 🌀 Zen Browser Performance traker
|
||||
|
||||
## Scores
|
||||
|
||||
## 1
|
||||
- [NOCanoa](https://github.com/NOCanoa)
|
||||
|
||||
OS: win 11; CPU: i5 13600k
|
||||
|
||||
## web.basemark
|
||||
|
||||
https://web.basemark.com/
|
||||
|
||||
| | score: |CSS | HTML5 | Page load and Responsiveness | Resize Cap. |
|
||||
|-----------|-----|-----|-------|------------------------------|-------------|
|
||||
| 1.0.0-a.15-opt | 2141.63 | 59% | 91% | 90% | 76% |
|
||||
| 1.0.0-a.13-opt | 1658.87 | 59% | 91% | 90% | 76% |
|
||||
| 1.0.0-a.12-opt | 1874.49 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.11-opt | 1678.49 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.10 | 1660.89 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.9 | 470 | why | why | why | why |
|
||||
| 1.0.0-a.8 | 446.74 | 59% | 91% | 96% | 76% |
|
||||
| 1.0.0-a.7 | 1964.43 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.6 | 1747.98 | 59% | 91% | 91% | 76% |
|
||||
| 1.0.0-a.4 | 470.49 | 59% | 91% | 97% | 76% |
|
||||
| 1.0.0-a.3 | 475.52 |59% | 91% | 97% | 76% |
|
||||
| other | last | utpdate | 31/7 | 2024 | - |
|
||||
| Librewolf 128.0-2 | 1953.65 | 59.66% | 89.01% | 91.72% | 76.12% |
|
||||
| FF nightly 130.0a1 | 1912.77 | 59.66% | 90.91% | 91.72% | 76.12% |
|
||||
|
||||
|
||||
```mermaid
|
||||
xychart-beta
|
||||
title "Performance over time (Higher is better)"
|
||||
x-axis [.3, .4, .6, .7, .8, .9, .10, .11, .12, .13, .15]
|
||||
y-axis "Benchmark Points"
|
||||
bar [475.52, 470.49, 1747.98, 1964.43, 446.74, 470, 1660.89, 1678.49, 1874.49, 1658.87, 2141.63]
|
||||
line [475.52, 470.49, 1747.98, 1964.43, 446.74, 470, 1660.89, 1678.49, 1874.49, 1658.87, 2141.63]
|
||||
```
|
||||
|
||||
## Speedometer3.0
|
||||
|
||||
https://browserbench.org/Speedometer3.0/
|
||||
|
||||
| | score: |
|
||||
|-----------|-----|
|
||||
| 1.0.0-a.15-opt | TODO |
|
||||
| 1.0.0-a.13-opt | 21.1 |
|
||||
| 1.0.0-a.12-opt | 21.5 |
|
||||
| 1.0.0-a.11-opt | 20.8 |
|
||||
| 1.0.0-a.10 | 21.2 |
|
||||
| others| - |
|
||||
| Vivaldi 6.7.3329.39| 27.8 |
|
||||
| FF nightly 130.0a1 | 27.0 |
|
||||
| Librewolf 128.0-2 | 20.2 |
|
||||
|
||||
## Repository View Counter
|
||||
|
||||
<div align='center'><a href='https://www.websitecounterfree.com'><img src='https://www.websitecounterfree.com/c.php?d=9&id=57772&s=40' border='0' alt='Free Website Counter'></a><br / ><small><a href='https://www.websitecounterfree.com' title="Free Website Counter">Free Website Counter</a></small></div>
|
||||
|
31
docs/requirements.md
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
# Supported CPUs for optimized builds (Windows and Linux)
|
||||
|
||||
> If you CPU is not listed, you should use the "Generic" build.
|
||||
|
||||
* AMD Family 15h (Excavator)
|
||||
* AMD Family 17h (Zen)
|
||||
* AMD Family 17h (Zen+)
|
||||
* AMD Family 17h (Zen 2)
|
||||
* AMD Family 19h (Zen 3)
|
||||
* Intel 4th Gen Core (Haswell)
|
||||
* Intel 5th Gen Core (Broadwell)
|
||||
* Intel 6th Gen Core (Skylake)
|
||||
* Intel 7th Gen Core (Kaby Lake)
|
||||
* Intel 8/9th Gen Core (Coffee Lake)
|
||||
* Intel 10th Gen Core (Comet Lake)
|
||||
* Intel 12th Gen (Alder Lake)
|
||||
* Intel 13th Gen (Raptor Lake)
|
||||
* Intel 14th Gen (Raptor Lake Refresh)
|
||||
* Intel 15th Gen (Lunar / Arrow Lake)
|
||||
* AMD Family 19h (Zen 4 / Zen 4c)
|
||||
* AMD Family 1Ah (Zen 5 / Zen 5c)
|
||||
* Intel 6th Gen Core (Skylake X)
|
||||
* Intel 8th Gen Core i3 (Cannon Lake)
|
||||
* Intel Xeon / 10th Gen Core (Ice Lake)
|
||||
* Intel Xeon (Cascade Lake)
|
||||
* Intel Xeon (Cooper Lake)
|
||||
* Intel 3rd Gen 10nm++ (Tiger Lake)
|
||||
* Intel 4th Gen 10nm++ (Sapphire Rapids)
|
||||
* Intel 5th Gen 10nm++ (Emerald Rapids)
|
||||
* Intel 11th Gen (Rocket Lake)
|
5
docs/runners.md
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
# Warp Build
|
||||
|
||||
For linux, we are using [warpbuild](https://warpbuild.com/) because github workflows can't handle building firefox :(
|
||||
|
19
docs/workspaces.md
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
# Workspaces Layout
|
||||
|
||||
```json
|
||||
{
|
||||
"workspaces": [
|
||||
{
|
||||
"uuid": "uuid1",
|
||||
"name": "workspace1",
|
||||
"icon": "icon1",
|
||||
"default": true
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
To save the tabs and identity them, they will contain a `zen-workspace-uuid` attribute with the workspace uuid.
|
||||
|
||||
We will make use of firefox's builtin session restore feature to save the tabs and windows after the user closes the browser.
|
46
flatpak/io.github.zen_browser.zen.yml.template
Normal file
@@ -0,0 +1,46 @@
|
||||
app-id: io.github.zen_browser.zen
|
||||
runtime: org.freedesktop.Platform
|
||||
runtime-version: '23.08'
|
||||
sdk: org.freedesktop.Sdk
|
||||
base: org.mozilla.firefox.BaseApp
|
||||
base-version: '23.08'
|
||||
command: launch-script.sh
|
||||
finish-args:
|
||||
- --share=ipc
|
||||
- --share=network
|
||||
- --socket=pulseaudio
|
||||
- --socket=wayland
|
||||
- --socket=fallback-x11
|
||||
- --socket=pcsc
|
||||
- --socket=cups
|
||||
- --persist=.zen
|
||||
- --filesystem=xdg-download:rw
|
||||
- --device=all
|
||||
- --talk-name=org.freedesktop.FileManager1
|
||||
- --own-name=org.mozilla.zen.*
|
||||
- --own-name=org.mpris.MediaPlayer2.firefox.*
|
||||
- --system-talk-name=org.freedesktop.NetworkManager
|
||||
- --talk-name=org.a11y.Bus
|
||||
modules:
|
||||
- name: zen_browser
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
- mv zen /app/
|
||||
|
||||
- install -Dm0755 metadata/launch-script.sh ${{FLATPAK_DEST}}/bin/launch-script.sh
|
||||
- install -Dm0644 metadata/policies.json ${{FLATPAK_DEST}}/bin/distribution/policies.json
|
||||
- install -Dm0644 metadata/icons/io.github.zen_browser.zen.png ${{FLATPAK_DEST}}/share/icons/hicolor/256x256/apps/${{FLATPAK_ID}}.png
|
||||
- install -Dm0644 metadata/io.github.zen_browser.zen.metainfo.xml ${{FLATPAK_DEST}}/share/metainfo/${{FLATPAK_ID}}.metainfo.xml
|
||||
- install -Dm0644 metadata/io.github.zen_browser.zen.desktop ${{FLATPAK_DEST}}/share/applications/${{FLATPAK_ID}}.desktop
|
||||
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-generic.tar.bz2
|
||||
sha256: {linux_sha256}
|
||||
strip-components: 0
|
||||
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar
|
||||
sha256: {flatpak_sha256}
|
||||
strip-components: 0
|
||||
dest: metadata
|
1297
package-lock.json
generated
@@ -4,14 +4,16 @@
|
||||
"description": "",
|
||||
"scripts": {
|
||||
"build": "surfer build",
|
||||
"build:ui": "surfer build --ui",
|
||||
"start": "cd engine && ./mach run --noprofile",
|
||||
"import": "surfer import",
|
||||
"export": "surfer export",
|
||||
"init": "npm run bootstrap && npm run import",
|
||||
"bootstrap": "surfer download && surfer bootstrap",
|
||||
"package": "surfer package",
|
||||
"update-ff": "python3 scripts/update_ff.py",
|
||||
"update-ff:raw": "surfer update",
|
||||
"update-newtab": "python3 update_newtab.py"
|
||||
"update-newtab": "python3 scripts/update_newtab.py"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -25,6 +27,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/zen-browser/core#readme",
|
||||
"dependencies": {
|
||||
"@zen-browser/surfer": "^1.0.4"
|
||||
"@zen-browser/surfer": "^1.2.7"
|
||||
}
|
||||
}
|
||||
|
545
pnpm-lock.yaml
generated
@@ -9,8 +9,8 @@ importers:
|
||||
.:
|
||||
dependencies:
|
||||
'@zen-browser/surfer':
|
||||
specifier: ^1.0.4
|
||||
version: 1.0.4
|
||||
specifier: ^1.2.7
|
||||
version: 1.2.7
|
||||
|
||||
packages:
|
||||
|
||||
@@ -109,8 +109,8 @@ packages:
|
||||
'@types/node@17.0.45':
|
||||
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
|
||||
|
||||
'@zen-browser/surfer@1.0.4':
|
||||
resolution: {integrity: sha512-uDYuVFX7QvY2zuCwkuMnqR8YkmPf77JS2JZXjuBB4g5WGS3xaEoOqPAkbbo+HahAsKSwaiDuMsJs82V8+Hfe1g==}
|
||||
'@zen-browser/surfer@1.2.7':
|
||||
resolution: {integrity: sha512-VbbbB7crGXrdfk1PPnlsWFWErwjtccXbRuw5mOQzY327d2t5VraxmkqTzcuGSTxpu3CR/KvzNu0gDg/6+7b4NQ==}
|
||||
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.4':
|
||||
'@zen-browser/surfer@1.2.7':
|
||||
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
|
||||
|
58
scripts/prepare-flatpak-release.py
Normal file
@@ -0,0 +1,58 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
import hashlib
|
||||
import argparse
|
||||
|
||||
FLATID = "io.github.zen_browser.zen"
|
||||
|
||||
def get_sha256sum(filename):
|
||||
sha256 = hashlib.sha256()
|
||||
with open(filename, "rb") as f:
|
||||
for byte_block in iter(lambda: f.read(4096), b""):
|
||||
sha256.update(byte_block)
|
||||
return sha256.hexdigest()
|
||||
|
||||
def build_template(template, linux_sha256, flatpak_sha256, version):
|
||||
print(f"Building template with version {version}")
|
||||
print(f"\tLinux archive sha256: {linux_sha256}")
|
||||
print(f"\tFlatpak archive sha256: {flatpak_sha256}")
|
||||
return template.format(linux_sha256=linux_sha256,
|
||||
flatpak_sha256=flatpak_sha256,
|
||||
version=version)
|
||||
|
||||
def get_template(template_root):
|
||||
file = f"{template_root}/{FLATID}.yml.template"
|
||||
print(f"Reading template {file}")
|
||||
with open(file, "r") as f:
|
||||
return f.read()
|
||||
print(f"Template {template_root}/flatpak.yml not found")
|
||||
sys.exit(1)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Prepare flatpak release')
|
||||
parser.add_argument('--version', help='Version of the release', required=True)
|
||||
parser.add_argument('--linux-archive', help='Linux archive', required=True)
|
||||
parser.add_argument('--flatpak-archive', help='Flatpak archive', required=True)
|
||||
parser.add_argument('--output', help='Output file', default=f"{FLATID}.yml")
|
||||
parser.add_argument('--template-root', help='Template root', default="flatpak")
|
||||
args = parser.parse_args()
|
||||
|
||||
version = args.version
|
||||
linux_archive = args.linux_archive
|
||||
flatpak_archive = args.flatpak_archive
|
||||
output = args.output
|
||||
template_root = args.template_root
|
||||
|
||||
linux_sha256 = get_sha256sum(linux_archive)
|
||||
flatpak_sha256 = get_sha256sum(flatpak_archive)
|
||||
|
||||
template = build_template(get_template(template_root), linux_sha256, flatpak_sha256, version)
|
||||
|
||||
print(f"Writing output to {output}")
|
||||
with open(output, "w") as f:
|
||||
f.write(template)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
236
src/browser/app/profile/better-fox.js
Normal file
@@ -0,0 +1,236 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
//
|
||||
/* 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: 128 *
|
||||
* url: https://github.com/yokoffing/Betterfox *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* SECTION: FASTFOX *
|
||||
****************************************************************************/
|
||||
/** GENERAL ***/
|
||||
pref("content.notify.interval", 100000); // (.10s); alt=500000 (.50s)
|
||||
|
||||
/** GFX ***/
|
||||
pref("gfx.canvas.accelerated.cache-items", 4096);
|
||||
pref("gfx.canvas.accelerated.cache-size", 512);
|
||||
pref("gfx.content.skia-font-cache-size", 20);
|
||||
|
||||
/** DISK CACHE ***/
|
||||
pref("browser.cache.jsbc_compression_level", 3);
|
||||
|
||||
/** MEDIA CACHE ***/
|
||||
pref("media.memory_cache_max_size", 1048576);
|
||||
pref("media.memory_caches_combined_limit_kb", 2560000);
|
||||
pref("media.cache_readahead_limit", 9000); // default=60; stop reading ahead when our buffered data is this many seconds ahead of the current playback
|
||||
pref("media.cache_resume_threshold", 6000); // default=30; when a network connection is suspended, don't resume it until the amount of buffered data falls below this threshold (in seconds)
|
||||
|
||||
/** IMAGE CACHE ***/
|
||||
pref("image.mem.decode_bytes_at_a_time", 32768);
|
||||
|
||||
/** NETWORK ***/
|
||||
pref("network.http.max-connections", 1800);
|
||||
pref("network.http.max-persistent-connections-per-server", 10);
|
||||
pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
|
||||
pref("network.http.pacing.requests.enabled", false);
|
||||
pref("network.dnsCacheExpiration", 3600);
|
||||
pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
|
||||
pref("network.websocket.max-connections", 400); // default=200
|
||||
pref("network.ssl_tokens_cache_capacity", 32768);
|
||||
|
||||
pref("network.buffer.cache.size", 262144);
|
||||
pref("network.buffer.cache.count", 128);
|
||||
pref("network.dnsCacheEntries", 20000);
|
||||
pref("network.dnsCacheExpirationGracePeriod", 240);
|
||||
|
||||
/** HTTPS-FIRST POLICY ***/
|
||||
pref("dom.security.https_first", true);
|
||||
|
||||
/** PASSWORDS ***/
|
||||
pref("network.auth.subresource-http-auth-allow", 1);
|
||||
|
||||
/** MIXED CONTENT + CROSS-SITE ***/
|
||||
pref("pdfjs.enableScripting", false);
|
||||
pref("extensions.postDownloadThirdPartyPrompt", false);
|
||||
|
||||
/** EXPERIMENTAL ***/
|
||||
pref("layout.css.grid-template-masonry-value.enabled", true);
|
||||
pref("dom.enable_web_task_scheduling", true);
|
||||
pref("dom.security.sanitizer.enabled", true);
|
||||
|
||||
/****************************************************************************
|
||||
* SECTION: SECUREFOX *
|
||||
****************************************************************************/
|
||||
/** 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("browser.uitour.enabled", false);
|
||||
|
||||
/** OCSP & CERTS / HPKP ***/
|
||||
pref("security.OCSP.enabled", 0);
|
||||
pref("security.remote_settings.crlite_filters.enabled", true);
|
||||
pref("security.pki.crlite_mode", 2);
|
||||
|
||||
/** 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.urlbar.trimHttps", true);
|
||||
pref("browser.search.separatePrivateDefault.ui.enabled", true);
|
||||
pref("browser.urlbar.update2.engineAliasRefresh", true);
|
||||
pref("browser.search.suggest.enabled", false);
|
||||
pref("browser.urlbar.quicksuggest.enabled", false);
|
||||
pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
|
||||
pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
|
||||
pref("browser.urlbar.groupLabels.enabled", false);
|
||||
pref("browser.formfill.enable", false);
|
||||
pref("security.insecure_connection_text.enabled", true);
|
||||
pref("security.insecure_connection_text.pbmode.enabled", true);
|
||||
pref("network.IDN_show_punycode", true);
|
||||
|
||||
/** CONTAINERS ***/
|
||||
pref("privacy.userContext.ui.enabled", true);
|
||||
|
||||
/** 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("permissions.manager.defaultsUrl", "");
|
||||
pref("webchannel.allowObject.urlWhitelist", "");
|
||||
|
||||
/** TELEMETRY ***/
|
||||
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
|
||||
pref("datareporting.healthreport.uploadEnabled", false, locked);
|
||||
pref("toolkit.telemetry.unified", false, locked);
|
||||
pref("toolkit.telemetry.enabled", false, locked);
|
||||
pref("toolkit.telemetry.server", "data:,", locked);
|
||||
pref("toolkit.telemetry.archive.enabled", false, locked);
|
||||
pref("toolkit.telemetry.newProfilePing.enabled", false, locked);
|
||||
pref("toolkit.telemetry.shutdownPingSender.enabled", false, locked);
|
||||
pref("toolkit.telemetry.updatePing.enabled", false, locked);
|
||||
pref("toolkit.telemetry.bhrPing.enabled", false, locked);
|
||||
pref("toolkit.telemetry.firstShutdownPing.enabled", false, locked);
|
||||
pref("toolkit.telemetry.coverage.opt-out", true, locked);
|
||||
pref("toolkit.coverage.opt-out", true, locked);
|
||||
pref("toolkit.coverage.endpoint.base", "", locked);
|
||||
pref("browser.newtabpage.activity-stream.feeds.telemetry", false, locked);
|
||||
pref("browser.newtabpage.activity-stream.telemetry", false, locked);
|
||||
|
||||
/** EXPERIMENTS ***/
|
||||
pref("app.shield.optoutstudies.enabled", false, locked);
|
||||
pref("app.normandy.enabled", false, locked);
|
||||
pref("app.normandy.api_url", "", locked);
|
||||
|
||||
/** CRASH REPORTS ***/
|
||||
pref("breakpad.reportURL", "");
|
||||
pref("browser.tabs.crashReporting.sendReport", false);
|
||||
pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
|
||||
|
||||
/** DETECTION ***/
|
||||
pref("captivedetect.canonicalURL", "");
|
||||
pref("network.captive-portal-service.enabled", false);
|
||||
pref("network.connectivity-service.enabled", false);
|
||||
pref("dom.private-attribution.submission.enabled", false);
|
||||
|
||||
/****************************************************************************
|
||||
* SECTION: PESKYFOX *
|
||||
****************************************************************************/
|
||||
/** MOZILLA UI ***/
|
||||
pref("browser.privatebrowsing.vpnpromourl", "", locked);
|
||||
pref("extensions.getAddons.showPane", false);
|
||||
pref("extensions.htmlaboutaddons.recommendations.enabled", false);
|
||||
pref("browser.discovery.enabled", false);
|
||||
pref("browser.shell.checkDefaultBrowser", false);
|
||||
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
|
||||
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
|
||||
pref("browser.preferences.moreFromMozilla", false);
|
||||
pref("browser.tabs.tabmanager.enabled", false);
|
||||
pref("browser.aboutConfig.showWarning", false);
|
||||
pref("browser.aboutwelcome.enabled", false);
|
||||
|
||||
/** THEME ADJUSTMENTS ***/
|
||||
pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
|
||||
pref("browser.compactmode.show", true);
|
||||
pref("browser.display.focus_ring_on_anything", true);
|
||||
pref("browser.display.focus_ring_style", 0);
|
||||
pref("browser.display.focus_ring_width", 0);
|
||||
pref("layout.css.prefers-color-scheme.content-override", 2);
|
||||
pref("browser.privateWindowSeparation.enabled", false); // WINDOWS
|
||||
|
||||
/** 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 *
|
||||
****************************************************************************/
|
@@ -1,10 +1,10 @@
|
||||
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
|
||||
index 27c2d13fbd8599a131de6b70bba581d435198793..25aa7546d57e206b76838bc23b609f602af43a83 100644
|
||||
index b8aa71126c2bb4521caf25f9caf845a8a429dc64..59cdc2e9998e802d6c79ff967eaa30088a3b7a21 100644
|
||||
--- a/browser/app/profile/firefox.js
|
||||
+++ b/browser/app/profile/firefox.js
|
||||
@@ -3061,3 +3061,5 @@ pref("startup.homepage_override_nimbus_maxVersion", "");
|
||||
pref("toolkit.contentRelevancy.enabled", false);
|
||||
// Pref to enable the ingestion through the Rust component.
|
||||
@@ -3110,3 +3110,5 @@ pref("toolkit.contentRelevancy.enabled", false);
|
||||
pref("toolkit.contentRelevancy.ingestEnabled", false);
|
||||
// Pref to enable extra logging for the content relevancy feature
|
||||
pref("toolkit.contentRelevancy.log", false);
|
||||
+
|
||||
+#include zen-browser.js
|
||||
|
@@ -2,45 +2,30 @@
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
pref("browser.tabs.cardPreview.enabled", true);
|
||||
pref("browser.tabs.cardPreview.delayMs", 100);
|
||||
#ifdef XP_UNIX
|
||||
#ifndef XP_MACOSX
|
||||
#define UNIX_BUT_NOT_MAC
|
||||
#endif
|
||||
#endif
|
||||
|
||||
pref("browser.urlbar.suggest.calculator", true);
|
||||
pref("browser.tabs.cardPreview.enabled", true);
|
||||
pref("browser.tabs.hoverPreview.enabled", true);
|
||||
pref("browser.tabs.cardPreview.delayMs", 100);
|
||||
|
||||
#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
|
||||
|
||||
// Cookie banner handling (reject by default)
|
||||
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
|
||||
pref('browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled', true);
|
||||
pref('browser.translations.newSettingsUI.enable', true);
|
||||
|
||||
pref('cookiebanners.service.mode', 1);
|
||||
pref('cookiebanners.service.mode.privateBrowsing', 1);
|
||||
pref("browser.urlbar.trimHttps", true);
|
||||
pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
|
||||
|
||||
// Url bar
|
||||
pref('browser.urlbar.unitConversion.enabled', true);
|
||||
@@ -52,87 +37,44 @@ pref('browser.urlbar.clipboard.featureGate', true);
|
||||
// new tab page
|
||||
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
|
||||
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
|
||||
pref("browser.topsites.contile.enabled", false);
|
||||
|
||||
// Pocket
|
||||
pref('extensions.pocket.enabled', false);
|
||||
pref("browser.topsites.contile.enabled", true);
|
||||
|
||||
// Pdf
|
||||
pref('browser.download.open_pdf_attachments_inline', true);
|
||||
pref('pdfjs.enableHighlightEditor', true);
|
||||
pref('pdfjs.enableHighlightFloatingButton', true);
|
||||
|
||||
// Tabs
|
||||
pref('browser.bookmarks.openInTabClosesMenu', false);
|
||||
pref('browser.menu.showViewImageInfo', true);
|
||||
pref('findbar.highlightAll', true);
|
||||
pref('layout.word_select.eat_space_to_next_word', false);
|
||||
pref('privacy.userContext.enabled', true);
|
||||
pref('privacy.userContext.ui.enabled', true);
|
||||
|
||||
// UA
|
||||
pref('general.useragent.compatMode.firefox', true);
|
||||
|
||||
|
||||
// Tracking protection
|
||||
|
||||
pref(
|
||||
'urlclassifier.trackingSkipURLs',
|
||||
'*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com'
|
||||
);
|
||||
pref(
|
||||
'urlclassifier.features.socialtracking.skipURLs',
|
||||
'*.instagram.com, *.twitter.com, *.twimg.com'
|
||||
);
|
||||
pref('network.cookie.sameSite.noneRequiresSecure', true);
|
||||
pref('browser.download.start_downloads_in_tmp_dir', true);
|
||||
pref('browser.helperApps.deleteTempFileOnExit', true);
|
||||
pref('privacy.globalprivacycontrol.enabled', true);
|
||||
|
||||
pref('gfx.canvas.accelerated.cache-items', 4096);
|
||||
pref('gfx.canvas.accelerated.cache-size', 512);
|
||||
pref('gfx.content.skia-font-cache-size', 20);
|
||||
pref('gfx.webrender.all', true);
|
||||
pref('layout.css.backdrop-filter.enabled', true);
|
||||
|
||||
pref("alerts.showFavicons", true);
|
||||
pref('browser.toolbars.bookmarks.visibility', 'never');
|
||||
|
||||
// Enable Do Not Track and GPC by default.
|
||||
pref("privacy.donottrackheader.enabled", true);
|
||||
pref("privacy.globalprivacycontrol.enabled", true);
|
||||
// Disable more telemetry
|
||||
pref("toolkit.telemetry.enabled", false);
|
||||
pref("browser.ping-centre.telemetry", false);
|
||||
pref("browser.attribution.enabled", false);
|
||||
pref("toolkit.telemetry.pioneer-new-studies-available", false);
|
||||
|
||||
// CUSTOM ZEN PREFS
|
||||
|
||||
pref('zen.welcomeScreen.enabled', true);
|
||||
pref('zen.welcomeScreen.seen', false);
|
||||
pref('zen.tabs.vertical', true);
|
||||
pref('zen.tabs.vertical.right-side', false);
|
||||
pref('zen.theme.accent-color', "#aac7ff");
|
||||
pref('zen.theme.border-radius', 10); // In pixels
|
||||
pref('zen.theme.toolbar-themed', true);
|
||||
pref('zen.theme.pill-button', false);
|
||||
pref('zen.view.compact', false);
|
||||
|
||||
pref('browser.cache.jsbc_compression_level', 3);
|
||||
|
||||
pref('media.memory_cache_max_size', 65536);
|
||||
pref('media.cache_readahead_limit', 7200);
|
||||
pref('media.cache_resume_threshold', 3600);
|
||||
|
||||
pref('image.mem.decode_bytes_at_a_time', 32768);
|
||||
|
||||
pref('network.buffer.cache.size', 262144);
|
||||
pref('network.buffer.cache.count', 128);
|
||||
pref('network.http.max-connections', 1800);
|
||||
pref('network.http.max-persistent-connections-per-server', 10);
|
||||
pref('network.http.max-urgent-start-excessive-connections-per-host', 5);
|
||||
pref('network.http.pacing.requests.enabled', false);
|
||||
pref('network.dnsCacheExpiration', 3600);
|
||||
pref('network.dns.max_high_priority_threads', 8);
|
||||
pref('network.ssl_tokens_cache_capacity', 10240);
|
||||
|
||||
pref('network.dns.disablePrefetch', true);
|
||||
pref('network.prefetch-next', false);
|
||||
pref('network.predictor.enabled', false);
|
||||
|
||||
pref('layout.css.grid-template-masonry-value.enabled', true);
|
||||
pref('dom.enable_web_task_scheduling', true);
|
||||
pref('layout.css.has-selector.enabled', true);
|
||||
pref('dom.security.sanitizer.enabled', true);
|
||||
pref('zen.view.compact.hide-toolbar', false);
|
||||
pref('zen.view.sidebar-expanded', false);
|
||||
pref('zen.view.sidebar-expanded.show-button', true);
|
||||
pref('zen.view.sidebar-expanded.max-width', 400);
|
||||
pref('zen.keyboard.shortcuts.enabled', true);
|
||||
pref('zen.keyboard.shortcuts', ""); // Empty string means default shortcuts
|
||||
pref('zen.keyboard.shortcuts.disable-firefox', false);
|
||||
pref('zen.tabs.dim-pending', true);
|
||||
|
||||
// Pref to enable the new profiles (TODO: Check this out!)
|
||||
//pref("browser.profiles.enabled", true);
|
||||
@@ -140,10 +82,71 @@ pref('dom.security.sanitizer.enabled', true);
|
||||
// Zen Sidebar
|
||||
pref('zen.sidebar.data', "{\"data\":\n {\"p1\":{\n \"url\":\"https://www.wikipedia.org/\"\n },\n\"p2\":{\n \"url\":\"https://m.twitter.com/\",\n\"ua\": true\n },\n\"p3\": {\n \"url\": \"https://www.youtube.com/\",\n\"ua\": true\n},\n\"p4\": {\n \"url\": \"https://translate.google.com/\",\n\"ua\": true\n},\n\"p5\": {\n \"url\": \"https://todoist.com/\",\n\"ua\": true\n}},\n\"index\":[\"p1\",\"p2\",\"p3\",\"p4\",\"p5\"]}");
|
||||
pref('zen.sidebar.enabled', true);
|
||||
pref('zen.sidebar.floating', true);
|
||||
pref('zen.sidebar.close-on-blur', true);
|
||||
|
||||
// Zen Split View
|
||||
pref('zen.splitView.working', false);
|
||||
|
||||
// Zen Workspaces
|
||||
pref('zen.workspaces.enabled', false);
|
||||
pref('zen.workspaces.enabled', true);
|
||||
|
||||
// Zen Watermark
|
||||
pref('zen.watermark.enabled', true, sticky);
|
||||
|
||||
// Smooth scrolling
|
||||
pref('apz.overscroll.enabled', true); // not DEFAULT on Linux
|
||||
pref('general.smoothScroll', true); // DEFAULT
|
||||
|
||||
// Privacy
|
||||
pref('dom.private-attribution.submission.enabled', false);
|
||||
|
||||
pref('media.eme.enabled', true);
|
||||
pref('webgl.disabled', false);
|
||||
|
||||
pref("app.update.url.manual", "https://www.zen-browser.app/download");
|
||||
pref("app.update.url.details", "hhttps://www.zen-browser.app/download");
|
||||
pref("app.releaseNotesURL", "https://www.zen-browser.app/release-notes");
|
||||
pref("app.releaseNotesURL.aboutDialog", "https://www.zen-browser.app/release-notes");
|
||||
|
||||
// Enable importers for other browsers
|
||||
pref('browser.migrate.vivaldi.enabled', true);
|
||||
pref('browser.migrate.opera-gx.enabled', true);
|
||||
pref('browser.migrate.opera.enabled', true);
|
||||
|
||||
// DNS
|
||||
// pref('network.proxy.type', 0);
|
||||
// pref('network.trr.mode', 5);
|
||||
|
||||
pref('xpinstall.signatures.required', false);
|
||||
|
||||
// Experimental Zen Features
|
||||
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
|
||||
pref('dom.script_loader.bytecode_cache.strategy', 2);
|
||||
|
||||
// Extremly experimental features
|
||||
pref("dom.webgpu.enabled", true);
|
||||
|
||||
#include better-fox.js
|
||||
|
||||
// Betterfox overrides (Stay below the include directive)
|
||||
|
||||
// Jang's personal speedups (Thanks to Jang for these!)
|
||||
|
||||
// Prefetching:
|
||||
pref("network.dns.disablePrefetch", false);
|
||||
pref("network.prefetch-next", true);
|
||||
pref("network.predictor.enabled", true);
|
||||
pref("network.dns.disablePrefetchFromHTTPS", false);
|
||||
pref("network.predictor.enable-hover-on-ssl", true);
|
||||
pref("network.http.speculative-parallel-limit", 10);
|
||||
pref("network.http.rcwn.enabled", false);
|
||||
|
||||
// Enable Browser Toolbox, Ctrl+Shift+Alt+I for debugging and modifying UI
|
||||
pref("devtools.debugger.remote-enabled", true);
|
||||
pref("devtools.chrome.enabled", true);
|
||||
|
||||
// Disable firefox's revamp
|
||||
pref("sidebar.revamp", false, locked);
|
||||
pref("sidebar.verticalTabs", false, locked);
|
||||
|
||||
|
||||
|
14
src/browser/app/splash-rc.patch
Normal 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
|
@@ -1,483 +0,0 @@
|
||||
|
||||
|
||||
|
||||
var gZenBrowserManagerSidebar = {
|
||||
_sidebarElement: null,
|
||||
_currentPanel: null,
|
||||
_lastOpenedPanel: null,
|
||||
_hasChangedConfig: true,
|
||||
_splitterElement: null,
|
||||
_hSplitterElement: null,
|
||||
_isDragging: false,
|
||||
contextTab: null,
|
||||
|
||||
DEFAULT_MOBILE_USER_AGENT: "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36 Edg/114.0.1823.79",
|
||||
MAX_SIDEBAR_PANELS: 8, // +1 for the add panel button
|
||||
MAX_RUNS: 3,
|
||||
|
||||
init() {
|
||||
this.update();
|
||||
this.close(); // avoid caching
|
||||
this.listenForPrefChanges();
|
||||
},
|
||||
|
||||
get sidebarData() {
|
||||
let services = Services.prefs.getStringPref("zen.sidebar.data");
|
||||
if (services === "") {
|
||||
return {};
|
||||
}
|
||||
return JSON.parse(services);
|
||||
},
|
||||
|
||||
listenForPrefChanges() {
|
||||
Services.prefs.addObserver("zen.sidebar.data", this.handleEvent.bind(this));
|
||||
Services.prefs.addObserver("zen.sidebar.enabled", this.handleEvent.bind(this));
|
||||
Services.prefs.addObserver("zen.sidebar.floating", this.handleEvent.bind(this));
|
||||
|
||||
let sidebar = document.getElementById("zen-sidebar-web-panel");
|
||||
this.splitterElement.addEventListener("mousedown", (function(event) {
|
||||
let computedStyle = window.getComputedStyle(sidebar);
|
||||
let maxWidth = parseInt(computedStyle.getPropertyValue("max-width").replace("px", ""));
|
||||
let minWidth = parseInt(computedStyle.getPropertyValue("min-width").replace("px", ""));
|
||||
|
||||
if (!this._isDragging) { // Prevent multiple resizes
|
||||
this._isDragging = true;
|
||||
let sidebarWidth = sidebar.getBoundingClientRect().width;
|
||||
let startX = event.clientX;
|
||||
let startWidth = sidebarWidth;
|
||||
let mouseMove = (function(e) {
|
||||
let newWidth = startWidth + e.clientX - startX;
|
||||
if (newWidth <= minWidth+10) {
|
||||
newWidth = minWidth+1;
|
||||
} else if (newWidth >= maxWidth-10) {
|
||||
newWidth = maxWidth-1;
|
||||
}
|
||||
sidebar.style.width = `${newWidth}px`;
|
||||
});
|
||||
let mouseUp = (function() {
|
||||
this.handleEvent();
|
||||
this._isDragging = false;
|
||||
document.removeEventListener("mousemove", mouseMove);
|
||||
document.removeEventListener("mouseup", mouseUp);
|
||||
}).bind(this);
|
||||
document.addEventListener("mousemove", mouseMove);
|
||||
document.addEventListener("mouseup", mouseUp);
|
||||
}
|
||||
}).bind(this));
|
||||
|
||||
this.hSplitterElement.addEventListener("mousedown", (function(event) {
|
||||
let computedStyle = window.getComputedStyle(sidebar);
|
||||
const parent = sidebar.parentElement;
|
||||
// relative to avoid the top margin
|
||||
// 20px is the padding
|
||||
let parentRelativeHeight = parent.getBoundingClientRect().height - parent.getBoundingClientRect().top + 20;
|
||||
let minHeight = parseInt(computedStyle.getPropertyValue("min-height").replace("px", ""));
|
||||
if (!this._isDragging) { // Prevent multiple resizes
|
||||
this._isDragging = true;
|
||||
let sidebarHeight = sidebar.getBoundingClientRect().height;
|
||||
let startY = event.clientY;
|
||||
let startHeight = sidebarHeight;
|
||||
let mouseMove = (function(e) {
|
||||
let newHeight = startHeight + e.clientY - startY;
|
||||
if (newHeight <= minHeight+10) {
|
||||
newHeight = minHeight+1;
|
||||
} else if (newHeight >= parentRelativeHeight) { // 10px is the padding
|
||||
newHeight = parentRelativeHeight;
|
||||
}
|
||||
sidebar.style.height = `${newHeight}px`;
|
||||
});
|
||||
let mouseUp = (function() {
|
||||
this.handleEvent();
|
||||
this._isDragging = false;
|
||||
document.removeEventListener("mousemove", mouseMove);
|
||||
document.removeEventListener("mouseup", mouseUp);
|
||||
}).bind(this);
|
||||
document.addEventListener("mousemove", mouseMove);
|
||||
document.addEventListener("mouseup", mouseUp);
|
||||
}
|
||||
}).bind(this));
|
||||
|
||||
this.handleEvent();
|
||||
},
|
||||
|
||||
handleEvent() {
|
||||
this._hasChangedConfig = true;
|
||||
this.update();
|
||||
this._hasChangedConfig = false;
|
||||
|
||||
const button = document.getElementById("zen-sidepanel-button");
|
||||
if (Services.prefs.getBoolPref("zen.sidebar.enabled")) {
|
||||
button.removeAttribute("hidden");
|
||||
} else {
|
||||
button.setAttribute("hidden", "true");
|
||||
this._closeSidebarPanel();
|
||||
return;
|
||||
}
|
||||
},
|
||||
|
||||
toggle() {
|
||||
if (!this._currentPanel) {
|
||||
this._currentPanel = this._lastOpenedPanel;
|
||||
if (!this._currentPanel) {
|
||||
let data = this.sidebarData;
|
||||
this._currentPanel = data.index[0];
|
||||
}
|
||||
this.update();
|
||||
return;
|
||||
}
|
||||
// already open?
|
||||
this.close();
|
||||
},
|
||||
|
||||
update() {
|
||||
this._updateWebPanels();
|
||||
this._updateSidebarButton();
|
||||
this._updateWebPanel();
|
||||
this._updateButtons();
|
||||
},
|
||||
|
||||
_updateSidebarButton() {
|
||||
let button = document.getElementById("zen-sidepanel-button");
|
||||
if (this._currentPanel) {
|
||||
button.setAttribute("open", "true");
|
||||
} else {
|
||||
button.removeAttribute("open");
|
||||
}
|
||||
},
|
||||
|
||||
_updateWebPanels() {
|
||||
if (Services.prefs.getBoolPref("zen.sidebar.enabled")) {
|
||||
this.sidebarElement.removeAttribute("hidden");
|
||||
} else {
|
||||
this.sidebarElement.setAttribute("hidden", "true");
|
||||
this._closeSidebarPanel();
|
||||
return;
|
||||
}
|
||||
|
||||
let data = this.sidebarData;
|
||||
if (!data.data || !data.index) {
|
||||
return;
|
||||
}
|
||||
this.sidebarElement.innerHTML = "";
|
||||
for (let site of data.index) {
|
||||
let panel = data.data[site];
|
||||
if (!panel || !panel.url) {
|
||||
continue;
|
||||
}
|
||||
let button = document.createXULElement("toolbarbutton");
|
||||
button.classList.add("zen-sidebar-panel-button", "toolbarbutton-1", "chromeclass-toolbar-additional");
|
||||
button.setAttribute("flex", "1");
|
||||
button.setAttribute("zen-sidebar-id", site);
|
||||
button.setAttribute("context", "zenWebPanelContextMenu");
|
||||
this._getWebPanelIcon(panel.url, button);
|
||||
button.addEventListener("click", this._handleClick.bind(this));
|
||||
this.sidebarElement.appendChild(button);
|
||||
}
|
||||
const addButton = document.getElementById("zen-sidebar-add-panel-button");
|
||||
if (data.index.length < this.MAX_SIDEBAR_PANELS) {
|
||||
addButton.removeAttribute("hidden");
|
||||
} else {
|
||||
addButton.setAttribute("hidden", "true");
|
||||
}
|
||||
},
|
||||
|
||||
async _openAddPanelDialog() {
|
||||
let dialogURL = "chrome://browser/content/places/zenNewWebPanel.xhtml";
|
||||
let features = "centerscreen,chrome,modal,resizable=no";
|
||||
let aParentWindow = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
|
||||
if (aParentWindow?.gDialogBox) {
|
||||
await aParentWindow.gDialogBox.open(dialogURL, {});
|
||||
} else {
|
||||
aParentWindow.openDialog(dialogURL, "", features, {});
|
||||
}
|
||||
},
|
||||
|
||||
_setPinnedToElements() {
|
||||
let sidebar = document.getElementById("zen-sidebar-web-panel");
|
||||
sidebar.setAttribute("pinned", "true");
|
||||
document.getElementById("zen-sidebar-web-panel-pinned").setAttribute("pinned", "true");
|
||||
},
|
||||
|
||||
_removePinnedFromElements() {
|
||||
let sidebar = document.getElementById("zen-sidebar-web-panel");
|
||||
sidebar.removeAttribute("pinned");
|
||||
document.getElementById("zen-sidebar-web-panel-pinned").removeAttribute("pinned");
|
||||
},
|
||||
|
||||
_openAndGetWebPanelWrapper() {
|
||||
let sidebar = document.getElementById("zen-sidebar-web-panel");
|
||||
sidebar.removeAttribute("hidden");
|
||||
if (Services.prefs.getBoolPref("zen.sidebar.floating")) {
|
||||
this._setPinnedToElements();
|
||||
}
|
||||
return sidebar;
|
||||
},
|
||||
|
||||
_closeSidebarPanel() {
|
||||
let sidebar = document.getElementById("zen-sidebar-web-panel");
|
||||
sidebar.setAttribute("hidden", "true");
|
||||
this._lastOpenedPanel = this._currentPanel;
|
||||
this._currentPanel = null;
|
||||
},
|
||||
|
||||
_handleClick(event) {
|
||||
let target = event.target;
|
||||
let panelId = target.getAttribute("zen-sidebar-id");
|
||||
if (this._currentPanel === panelId) {
|
||||
return;
|
||||
}
|
||||
this._currentPanel = panelId;
|
||||
this._updateWebPanel();
|
||||
},
|
||||
|
||||
_updateButtons() {
|
||||
for (let button of this.sidebarElement.querySelectorAll(".zen-sidebar-panel-button")) {
|
||||
if (button.getAttribute("zen-sidebar-id") === this._currentPanel) {
|
||||
button.setAttribute("selected", "true");
|
||||
} else {
|
||||
button.removeAttribute("selected");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_hideAllWebPanels() {
|
||||
let sidebar = this._openAndGetWebPanelWrapper();
|
||||
for (let browser of sidebar.querySelectorAll("browser[zen-sidebar-id]")) {
|
||||
browser.setAttribute("hidden", "true");
|
||||
browser.docShellIsActive = false;
|
||||
}
|
||||
},
|
||||
|
||||
_updateWebPanel() {
|
||||
this._updateButtons();
|
||||
let sidebar = this._openAndGetWebPanelWrapper();
|
||||
this._hideAllWebPanels();
|
||||
if (!this._currentPanel) {
|
||||
sidebar.setAttribute("hidden", "true");
|
||||
return;
|
||||
}
|
||||
let existantWebview = this._getCurrentBrowser();
|
||||
if (existantWebview) {
|
||||
existantWebview.docShellIsActive = true;
|
||||
existantWebview.removeAttribute("hidden");
|
||||
document.getElementById("zen-sidebar-web-panel-title").textContent = existantWebview.contentTitle;
|
||||
return;
|
||||
}
|
||||
let data = this._getWebPanelData(this._currentPanel);
|
||||
let browser = this._createWebPanelBrowser(data);
|
||||
let browserContainers = document.getElementById("zen-sidebar-web-panel-browser-containers");
|
||||
browserContainers.appendChild(browser);
|
||||
if (data.ua) {
|
||||
browser.browsingContext.customUserAgent = this.DEFAULT_MOBILE_USER_AGENT;
|
||||
}
|
||||
browser.docShellIsActive = true;
|
||||
},
|
||||
|
||||
_getWebPanelData(id) {
|
||||
let data = this.sidebarData;
|
||||
let panel = data.data[id];
|
||||
if (!panel || !panel.url) {
|
||||
return {};
|
||||
}
|
||||
return {
|
||||
id: id,
|
||||
...panel,
|
||||
};
|
||||
},
|
||||
|
||||
_createWebPanelBrowser(data) {
|
||||
const titleContainer = document.getElementById("zen-sidebar-web-panel-title");
|
||||
titleContainer.textContent = "Loading...";
|
||||
let browser = gBrowser.createBrowser({});
|
||||
browser.setAttribute("disablefullscreen", "true");
|
||||
browser.setAttribute("src", data.url);
|
||||
browser.setAttribute("zen-sidebar-id", data.id);
|
||||
browser.setAttribute("disableglobalhistory", "true");
|
||||
browser.setAttribute("autoscroll", "false");
|
||||
browser.setAttribute("autocompletepopup", "PopupAutoComplete");
|
||||
browser.setAttribute("contextmenu", "contentAreaContextMenu");
|
||||
browser.setAttribute("disablesecurity", "true");
|
||||
browser.addEventListener("pagetitlechanged", (function(event) {
|
||||
let browser = event.target;
|
||||
let title = browser.contentTitle;
|
||||
if (!title) {
|
||||
return;
|
||||
}
|
||||
let id = browser.getAttribute("zen-sidebar-id");
|
||||
if (id === this._currentPanel) {
|
||||
titleContainer.textContent = title;
|
||||
}
|
||||
}).bind(this));
|
||||
return browser;
|
||||
},
|
||||
|
||||
_getWebPanelIcon(url, element) {
|
||||
let { preferredURI } = Services.uriFixup.getFixupURIInfo(url);
|
||||
element.setAttribute("image", `page-icon:${preferredURI.spec}`);
|
||||
fetch(`https://s2.googleusercontent.com/s2/favicons?domain_url=${preferredURI.spec}`).then(async response => {
|
||||
if (response.ok) {
|
||||
let blob = await response.blob();
|
||||
let reader = new FileReader();
|
||||
reader.onload = function() {
|
||||
element.setAttribute("image", reader.result);
|
||||
};
|
||||
reader.readAsDataURL(blob);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
_getBrowserById(id) {
|
||||
let sidebar = document.getElementById("zen-sidebar-web-panel");
|
||||
return sidebar.querySelector(`browser[zen-sidebar-id="${id}"]`);
|
||||
},
|
||||
|
||||
_getCurrentBrowser() {
|
||||
return this._getBrowserById(this._currentPanel);
|
||||
},
|
||||
|
||||
reload() {
|
||||
let browser = this._getCurrentBrowser();
|
||||
if (browser) {
|
||||
browser.reload();
|
||||
}
|
||||
},
|
||||
|
||||
forward() {
|
||||
let browser = this._getCurrentBrowser();
|
||||
if (browser) {
|
||||
browser.goForward();
|
||||
}
|
||||
},
|
||||
|
||||
back() {
|
||||
let browser = this._getCurrentBrowser();
|
||||
if (browser) {
|
||||
browser.goBack();
|
||||
}
|
||||
},
|
||||
|
||||
home() {
|
||||
let browser = this._getCurrentBrowser();
|
||||
if (browser) {
|
||||
browser.gotoIndex();
|
||||
}
|
||||
},
|
||||
|
||||
close() {
|
||||
this._hideAllWebPanels();
|
||||
this._closeSidebarPanel();
|
||||
this._updateSidebarButton();
|
||||
},
|
||||
|
||||
togglePinned(elem) {
|
||||
let sidebar = document.getElementById("zen-sidebar-web-panel");
|
||||
if (sidebar.hasAttribute("pinned")) {
|
||||
this._removePinnedFromElements();
|
||||
} else {
|
||||
this._setPinnedToElements();
|
||||
}
|
||||
Services.prefs.setBoolPref("zen.sidebar.floating", sidebar.hasAttribute("pinned"));
|
||||
this.update();
|
||||
},
|
||||
|
||||
get sidebarElement() {
|
||||
if (!this._sidebarElement) {
|
||||
this._sidebarElement = document.getElementById("zen-sidebar-panels-sites");
|
||||
}
|
||||
return this._sidebarElement;
|
||||
},
|
||||
|
||||
get splitterElement() {
|
||||
if (!this._splitterElement) {
|
||||
this._splitterElement = document.getElementById("zen-sidebar-web-panel-splitter");
|
||||
}
|
||||
return this._splitterElement;
|
||||
},
|
||||
|
||||
get hSplitterElement() {
|
||||
if (!this._hSplitterElement) {
|
||||
this._hSplitterElement = document.getElementById("zen-sidebar-web-panel-hsplitter");
|
||||
}
|
||||
return this._hSplitterElement;
|
||||
},
|
||||
|
||||
// Context menu
|
||||
|
||||
updateContextMenu(aPopupMenu) {
|
||||
let panel =
|
||||
aPopupMenu.triggerNode &&
|
||||
(aPopupMenu.triggerNode || aPopupMenu.triggerNode.closest("toolbarbutton[zen-sidebar-id]"));
|
||||
if (!panel) {
|
||||
return;
|
||||
}
|
||||
let id = panel.getAttribute("zen-sidebar-id");
|
||||
this.contextTab = id;
|
||||
let data = this._getWebPanelData(id);
|
||||
let browser = this._getBrowserById(id);
|
||||
let isMuted = browser && browser.audioMuted;
|
||||
let mutedContextItem = document.getElementById("context_zenToggleMuteWebPanel");
|
||||
document.l10n.setAttributes(mutedContextItem,
|
||||
!isMuted ? "zen-web-side-panel-context-mute-panel" : "zen-web-side-panel-context-unmute-panel");
|
||||
if (!isMuted) {
|
||||
mutedContextItem.setAttribute("muted", "true");
|
||||
} else {
|
||||
mutedContextItem.removeAttribute("muted");
|
||||
}
|
||||
document.l10n.setAttributes(document.getElementById("context_zenToogleUAWebPanel"),
|
||||
data.ua ? "zen-web-side-panel-context-disable-ua" : "zen-web-side-panel-context-enable-ua");
|
||||
if (!browser) {
|
||||
document.getElementById("context_zenUnloadWebPanel").setAttribute("disabled", "true");
|
||||
} else {
|
||||
document.getElementById("context_zenUnloadWebPanel").removeAttribute("disabled");
|
||||
}
|
||||
},
|
||||
|
||||
contextOpenNewTab() {
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
let data = this.sidebarData;
|
||||
let panel = data.data[this.contextTab];
|
||||
let url = (browser == null) ? panel.url : browser.currentURI.spec;
|
||||
let tab = gBrowser.addTrustedTab(url);
|
||||
gBrowser.selectedTab = tab;
|
||||
this.close();
|
||||
},
|
||||
|
||||
contextToggleMuteAudio() {
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
if (browser.audioMuted) {
|
||||
browser.unmute();
|
||||
} else {
|
||||
browser.mute();
|
||||
}
|
||||
},
|
||||
|
||||
contextToggleUserAgent() {
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
browser.browsingContext.customUserAgent = browser.browsingContext.customUserAgent ? null : this.DEFAULT_MOBILE_USER_AGENT;
|
||||
let data = this.sidebarData;
|
||||
data.data[this.contextTab].ua = !data.data[this.contextTab].ua;
|
||||
Services.prefs.setStringPref("zen.sidebar.data", JSON.stringify(data));
|
||||
browser.reload();
|
||||
},
|
||||
|
||||
contextDelete() {
|
||||
let data = this.sidebarData;
|
||||
delete data.data[this.contextTab];
|
||||
data.index = data.index.filter(id => id !== this.contextTab);
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
if (browser) {
|
||||
browser.remove();
|
||||
}
|
||||
this._closeSidebarPanel();
|
||||
Services.prefs.setStringPref("zen.sidebar.data", JSON.stringify(data));
|
||||
},
|
||||
|
||||
contextUnload() {
|
||||
let browser = this._getBrowserById(this.contextTab);
|
||||
browser.remove();
|
||||
this._closeSidebarPanel();
|
||||
},
|
||||
};
|
||||
|
||||
gZenBrowserManagerSidebar.init();
|
106
src/browser/base/content/ZenStartup.mjs
Normal file
@@ -0,0 +1,106 @@
|
||||
|
||||
var ZenStartup = {
|
||||
init() {
|
||||
this._changeSidebarLocation();
|
||||
this._zenInitBrowserLayout();
|
||||
},
|
||||
|
||||
_zenInitBrowserLayout() {
|
||||
if (this.__hasInitBrowserLayout) return;
|
||||
this.__hasInitBrowserLayout = true;
|
||||
this.openWatermark();
|
||||
console.info("ZenThemeModifier: init browser layout");
|
||||
const kNavbarItems = [
|
||||
"nav-bar",
|
||||
"PersonalToolbar"
|
||||
];
|
||||
const kNewContainerId = "zen-appcontent-navbar-container";
|
||||
let newContainer = document.getElementById(kNewContainerId);
|
||||
for (let id of kNavbarItems) {
|
||||
const node = document.getElementById(id);
|
||||
console.assert(node, "Could not find node with id: " + id);
|
||||
if (!node) continue;
|
||||
newContainer.appendChild(node);
|
||||
}
|
||||
|
||||
// Fix notification deck
|
||||
document.getElementById("zen-appcontent-navbar-container")
|
||||
.appendChild(document.getElementById("tab-notification-deck-template"));
|
||||
|
||||
gZenVerticalTabsManager.init();
|
||||
gZenCompactModeManager.init();
|
||||
gZenKeyboardShortcuts.init();
|
||||
|
||||
function throttle(f, delay) {
|
||||
let timer = 0;
|
||||
return function(...args) {
|
||||
clearTimeout(timer);
|
||||
timer = setTimeout(() => f.apply(this, args), delay);
|
||||
}
|
||||
}
|
||||
|
||||
new ResizeObserver(throttle(
|
||||
this._updateTabsToolbar.bind(this), 1000
|
||||
)).observe(document.getElementById("tabbrowser-tabs"));
|
||||
|
||||
this.closeWatermark();
|
||||
},
|
||||
|
||||
_updateTabsToolbar() {
|
||||
// Set tabs max-height to the "toolbar-items" height
|
||||
const toolbarItems = document.getElementById("tabbrowser-tabs");
|
||||
const tabs = document.getElementById("tabbrowser-arrowscrollbox");
|
||||
tabs.style.maxHeight = '0px'; // reset to 0
|
||||
const toolbarRect = toolbarItems.getBoundingClientRect();
|
||||
// -5 for the controls padding
|
||||
tabs.style.maxHeight = toolbarRect.height - 5 + "px";
|
||||
console.info("ZenThemeModifier: set tabs max-height to", toolbarRect.height + "px");
|
||||
},
|
||||
|
||||
openWatermark() {
|
||||
if (!Services.prefs.getBoolPref("zen.watermark.enabled", false)) {
|
||||
return;
|
||||
}
|
||||
const watermark = window.MozXULElement.parseXULToFragment(`
|
||||
<html:div id="zen-watermark">
|
||||
<image src="chrome://branding/content/about-logo.png" />
|
||||
</html:div>
|
||||
`);
|
||||
document.body.appendChild(watermark);
|
||||
},
|
||||
|
||||
closeWatermark() {
|
||||
const watermark = document.getElementById("zen-watermark");
|
||||
if (watermark) {
|
||||
watermark.setAttribute("hidden", "true");
|
||||
}
|
||||
},
|
||||
|
||||
_changeSidebarLocation() {
|
||||
const kElementsToAppend = [
|
||||
"sidebar-splitter",
|
||||
"sidebar-box",
|
||||
"navigator-toolbox",
|
||||
];
|
||||
const wrapper = document.getElementById("zen-tabbox-wrapper");
|
||||
const appWrapepr = document.getElementById("zen-sidebar-box-container");
|
||||
for (let id of kElementsToAppend) {
|
||||
const elem = document.getElementById(id);
|
||||
if (elem) {
|
||||
wrapper.prepend(elem);
|
||||
}
|
||||
}
|
||||
appWrapepr.setAttribute("hidden", "true");
|
||||
|
||||
// Set a splitter to navigator-toolbox
|
||||
const splitter = document.createXULElement("splitter");
|
||||
splitter.setAttribute("id", "zen-sidebar-splitter");
|
||||
splitter.setAttribute("orient", "horizontal");
|
||||
splitter.setAttribute("resizebefore", "sibling");
|
||||
splitter.setAttribute("resizeafter", "none");
|
||||
const titlebar = document.getElementById("navigator-toolbox");
|
||||
titlebar.insertAdjacentElement("afterend", splitter);
|
||||
},
|
||||
};
|
||||
|
||||
ZenStartup.init();
|
120
src/browser/base/content/ZenUIManager.mjs
Normal file
@@ -0,0 +1,120 @@
|
||||
|
||||
var gZenUIManager = {
|
||||
openAndChangeToTab(url, options) {
|
||||
if (window.ownerGlobal.parent) {
|
||||
let tab = window.ownerGlobal.parent.gBrowser.addTrustedTab(url, options);
|
||||
window.ownerGlobal.parent.gBrowser.selectedTab = tab;
|
||||
return tab;
|
||||
}
|
||||
let tab = window.gBrowser.addTrustedTab(url, options);
|
||||
window.gBrowser.selectedTab = tab;
|
||||
return tab;
|
||||
},
|
||||
|
||||
generateUuidv4() {
|
||||
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, c =>
|
||||
(+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16)
|
||||
);
|
||||
},
|
||||
|
||||
toogleBookmarksSidebar() {
|
||||
const button = document.getElementById('zen-bookmark-button');
|
||||
SidebarController.toggle('viewBookmarksSidebar', button);
|
||||
},
|
||||
};
|
||||
|
||||
var gZenVerticalTabsManager = {
|
||||
init() {
|
||||
//Services.prefs.addObserver('zen.view.compact', this._updateEvent.bind(this));
|
||||
Services.prefs.addObserver('zen.view.sidebar-expanded', this._updateEvent.bind(this));
|
||||
Services.prefs.addObserver('zen.view.sidebar-expanded.max-width', this._updateEvent.bind(this));
|
||||
this._updateMaxWidth();
|
||||
this.initRightSideOrderContextMenu();
|
||||
},
|
||||
|
||||
initRightSideOrderContextMenu() {
|
||||
const kConfigKey = 'zen.tabs.vertical.right-side';
|
||||
const fragment = window.MozXULElement.parseXULToFragment(`
|
||||
<menuitem id="zen-toolbar-context-tabs-right"
|
||||
type="checkbox"
|
||||
${Services.prefs.getBoolPref(kConfigKey) ? 'checked="true"' : ''}
|
||||
data-lazy-l10n-id="zen-toolbar-context-tabs-right"/>
|
||||
`);
|
||||
fragment.getElementById("zen-toolbar-context-tabs-right").addEventListener('click', () => {
|
||||
let rightSide = Services.prefs.getBoolPref(kConfigKey);
|
||||
Services.prefs.setBoolPref(kConfigKey, !rightSide);
|
||||
});
|
||||
document.getElementById('viewToolbarsMenuSeparator').before(fragment);
|
||||
},
|
||||
|
||||
_updateEvent() {
|
||||
this._updateMaxWidth();
|
||||
},
|
||||
|
||||
_updateMaxWidth() {
|
||||
let isCompactMode = Services.prefs.getBoolPref('zen.view.compact');
|
||||
let expanded = this.expanded;
|
||||
let maxWidth = Services.prefs.getIntPref('zen.view.sidebar-expanded.max-width');
|
||||
let toolbox = document.getElementById('navigator-toolbox');
|
||||
if (expanded && !isCompactMode) {
|
||||
toolbox.style.maxWidth = `${maxWidth}px`;
|
||||
} else {
|
||||
toolbox.style.removeProperty('maxWidth');
|
||||
}
|
||||
},
|
||||
|
||||
get expanded() {
|
||||
return Services.prefs.getBoolPref('zen.view.sidebar-expanded');
|
||||
},
|
||||
|
||||
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);
|
||||
},
|
||||
};
|
||||
|
||||
var gZenCompactModeManager = {
|
||||
init() {
|
||||
},
|
||||
|
||||
get prefefence() {
|
||||
return Services.prefs.getBoolPref('zen.view.compact');
|
||||
},
|
||||
|
||||
set preference(value) {
|
||||
Services.prefs.setBoolPref('zen.view.compact', value);
|
||||
},
|
||||
|
||||
toggle() {
|
||||
this.preference = !this.prefefence;
|
||||
},
|
||||
|
||||
toggleSidebar() {
|
||||
let sidebar = document.getElementById('navigator-toolbox');
|
||||
sidebar.toggleAttribute('zen-user-show');
|
||||
},
|
||||
|
||||
toggleToolbar() {
|
||||
let toolbar = document.getElementById('zen-appcontent-navbar-container');
|
||||
toolbar.toggleAttribute('zen-user-show');
|
||||
}
|
||||
};
|
@@ -1,272 +0,0 @@
|
||||
|
||||
var gZenViewSplitter = {
|
||||
/**
|
||||
* [
|
||||
* {
|
||||
* tabs: [
|
||||
* tab1,
|
||||
* tab2,
|
||||
* tab3,
|
||||
* ],
|
||||
* gridType: "vsep" | "hsep" | "grid",
|
||||
* }
|
||||
* ]
|
||||
*/
|
||||
_data: [],
|
||||
currentView: -1,
|
||||
|
||||
init() {
|
||||
Services.prefs.setBoolPref("zen.splitView.working", false);
|
||||
window.addEventListener("TabClose", this);
|
||||
console.log("ZenViewSplitter initialized");
|
||||
},
|
||||
|
||||
handleEvent(event) {
|
||||
switch (event.type) {
|
||||
case "TabClose":
|
||||
this.onTabClose(event);
|
||||
}
|
||||
},
|
||||
|
||||
get tabBrowserPanel() {
|
||||
if (!this._tabBrowserPanel) {
|
||||
this._tabBrowserPanel = document.getElementById("tabbrowser-tabpanels");
|
||||
}
|
||||
return this._tabBrowserPanel;
|
||||
},
|
||||
|
||||
onTabClose(event) {
|
||||
const tab = event.target;
|
||||
let index = this._data.findIndex((group) => group.tabs.includes(tab));
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
let dataTab = this._data[index].tabs;
|
||||
dataTab.splice(dataTab.indexOf(tab), 1);
|
||||
tab._zenSplitted = false;
|
||||
tab.linkedBrowser.zenModeActive = false;
|
||||
let container = tab.linkedBrowser.closest(".browserSidebarContainer");
|
||||
container.removeAttribute("zen-split");
|
||||
if (!event.forUnsplit) {
|
||||
tab.linkedBrowser.docShellIsActive = false;
|
||||
container.style.display = "none";
|
||||
} else {
|
||||
container.style.gridArea = "1 / 1";
|
||||
}
|
||||
if (dataTab.length < 2) {
|
||||
this._data.splice(index, 1);
|
||||
if (this.currentView == index) {
|
||||
console.assert(dataTab.length == 1, "Data tab length is not 1");
|
||||
this.currentView = -1;
|
||||
this.tabBrowserPanel.removeAttribute("zen-split-view");
|
||||
this.tabBrowserPanel.style.gridTemplateAreas = "";
|
||||
this.tabBrowserPanel.style.gridGap = "0px";
|
||||
Services.prefs.setBoolPref("zen.splitView.working", false);
|
||||
for (const tab of dataTab) {
|
||||
let container = tab.linkedBrowser.closest(".browserSidebarContainer");
|
||||
container.removeAttribute("zen-split");
|
||||
container.style.gridArea = "1 / 1";
|
||||
tab._zenSplitted = false;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
let lastTab = dataTab[dataTab.length - 1];
|
||||
this._showSplitView(lastTab);
|
||||
},
|
||||
|
||||
onLocationChange(browser) {
|
||||
let tab = gBrowser.getTabForBrowser(browser);
|
||||
this.updateSplitViewButton(!(tab && tab._zenSplitted));
|
||||
if (!tab) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._showSplitView(tab);
|
||||
},
|
||||
|
||||
splitTabs(tabs) {
|
||||
if (tabs.length < 2) {
|
||||
return;
|
||||
}
|
||||
this._data.push({
|
||||
tabs,
|
||||
gridType: "grid",
|
||||
});
|
||||
gBrowser.selectedTab = tabs[0];
|
||||
this._showSplitView(tabs[0]);
|
||||
},
|
||||
|
||||
_showSplitView(tab) {
|
||||
const splitData = this._data.find((group) => group.tabs.includes(tab));
|
||||
function modifyDecks(tabs, add) {
|
||||
for (const tab of tabs) {
|
||||
tab.linkedBrowser.zenModeActive = add;
|
||||
tab.linkedBrowser.docShellIsActive = add;
|
||||
let browser = tab.linkedBrowser.closest(".browserSidebarContainer");
|
||||
if (add) {
|
||||
browser.setAttribute("zen-split", "true");
|
||||
continue;
|
||||
}
|
||||
browser.removeAttribute("zen-split");
|
||||
}
|
||||
}
|
||||
const handleClick = (tab) => {
|
||||
return ((event) => {
|
||||
gBrowser.selectedTab = tab;
|
||||
})
|
||||
};
|
||||
if (!splitData || (this.currentView >= 0 && !this._data[this.currentView].tabs.includes(tab))) {
|
||||
this.updateSplitViewButton(true);
|
||||
if (this.currentView < 0) {
|
||||
return;
|
||||
}
|
||||
for (const tab of this._data[this.currentView].tabs) {
|
||||
//tab._zenSplitted = false;
|
||||
let container = tab.linkedBrowser.closest(".browserSidebarContainer");
|
||||
container.removeAttribute("zen-split-active");
|
||||
container.classList.remove("deck-selected");
|
||||
console.assert(container, "No container found for tab");
|
||||
container.removeEventListener("click", handleClick(tab));
|
||||
container.style.gridArea = "";
|
||||
}
|
||||
this.tabBrowserPanel.removeAttribute("zen-split-view");
|
||||
this.tabBrowserPanel.style.gridTemplateAreas = "";
|
||||
Services.prefs.setBoolPref("zen.splitView.working", false);
|
||||
modifyDecks(this._data[this.currentView].tabs, false);
|
||||
this.currentView = -1;
|
||||
if (!splitData) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.tabBrowserPanel.setAttribute("zen-split-view", "true");
|
||||
Services.prefs.setBoolPref("zen.splitView.working", true);
|
||||
this.currentView = this._data.indexOf(splitData);
|
||||
let gridType = splitData.gridType || "grid"; // TODO: let user decide the grid type
|
||||
let i = 0;
|
||||
// 2 rows, infinite columns
|
||||
let currentRowGridArea = ["", ""/* first row, second row */];
|
||||
let numberOfRows = 0;
|
||||
for (const _tab of splitData.tabs) {
|
||||
_tab._zenSplitted = true;
|
||||
let container = _tab.linkedBrowser.closest(".browserSidebarContainer");
|
||||
console.assert(container, "No container found for tab");
|
||||
container.removeAttribute("zen-split-active");
|
||||
if (_tab == tab) {
|
||||
container.setAttribute("zen-split-active", "true");
|
||||
}
|
||||
container.setAttribute("zen-split-anim", "true");
|
||||
container.addEventListener("click", handleClick(_tab));
|
||||
// Set the grid type for the container. If the grid type is not "grid", then set the grid type contain
|
||||
// each column or row. If it's "grid", then try to create
|
||||
if (gridType == "grid") {
|
||||
// Each 2 tabs, create a new row
|
||||
if (i % 2 == 0) {
|
||||
currentRowGridArea[0] += ` tab${i + 1}`;
|
||||
} else {
|
||||
currentRowGridArea[1] += ` tab${i + 1}`;
|
||||
numberOfRows++;
|
||||
}
|
||||
container.style.gridArea = `tab${i + 1}`;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (gridType == "grid") {
|
||||
if ((numberOfRows < splitData.tabs.length / 2) && (splitData.tabs.length != 2)) {
|
||||
// Make the last tab occupy the last row
|
||||
currentRowGridArea[1] += ` tab${i}`;
|
||||
}
|
||||
if (gridType == "grid" && (splitData.tabs.length === 2)) {
|
||||
currentRowGridArea[0] = `tab1 tab2`;
|
||||
currentRowGridArea[1] = "";
|
||||
}
|
||||
this.tabBrowserPanel.style.gridTemplateAreas = `'${currentRowGridArea[0]}'`;
|
||||
if (currentRowGridArea[1] != "") {
|
||||
this.tabBrowserPanel.style.gridTemplateAreas += ` '${currentRowGridArea[1]}'`;
|
||||
}
|
||||
} else if (gridType == "vsep") {
|
||||
this.tabBrowserPanel.style.gridTemplateAreas = `'${splitData.tabs.map((_, i) => `tab${i + 1}`).join(" ")}'`;
|
||||
} else if (gridType == "hsep") {
|
||||
this.tabBrowserPanel.style.gridTemplateAreas = `${splitData.tabs.map((_, i) => `'tab${i + 1}'`).join(" ")}`;
|
||||
}
|
||||
modifyDecks(splitData.tabs, true);
|
||||
this.updateSplitViewButton(false);
|
||||
},
|
||||
|
||||
contextSplitTabs() {
|
||||
let tabs = gBrowser.selectedTabs;
|
||||
this.splitTabs(tabs);
|
||||
},
|
||||
|
||||
contextCanSplitTabs() {
|
||||
if (gBrowser.selectedTabs.length < 2) {
|
||||
return false;
|
||||
}
|
||||
// Check if any tab is already split
|
||||
for (const tab of gBrowser.selectedTabs) {
|
||||
if (tab._zenSplitted) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
// Panel and url button
|
||||
|
||||
updateSplitViewButton(hidden) {
|
||||
let button = document.getElementById("zen-split-views-box");
|
||||
if (hidden) {
|
||||
button.setAttribute("hidden", "true");
|
||||
return;
|
||||
}
|
||||
button.removeAttribute("hidden");
|
||||
},
|
||||
|
||||
get _modifierElement() {
|
||||
if (!this.__modifierElement) {
|
||||
let wrapper = document.getElementById("template-zen-split-view-modifier");
|
||||
const panel = wrapper.content.firstElementChild;
|
||||
wrapper.replaceWith(wrapper.content);
|
||||
this.__modifierElement = panel;
|
||||
}
|
||||
return this.__modifierElement;
|
||||
},
|
||||
|
||||
async openSplitViewPanel(event) {
|
||||
let panel = this._modifierElement;
|
||||
let target = event.target.parentNode;
|
||||
for (const gridType of ["hsep", "vsep", "grid", "unsplit"]) {
|
||||
let selector = panel.querySelector(`.zen-split-view-modifier-preview.${gridType}`);
|
||||
selector.classList.remove("active");
|
||||
if (this.currentView >= 0 && this._data[this.currentView].gridType == gridType) {
|
||||
selector.classList.add("active");
|
||||
}
|
||||
if (this.__hasSetMenuListener) {
|
||||
continue;
|
||||
}
|
||||
selector.addEventListener("click", ((gridType) => {
|
||||
if (gridType === "unsplit") {
|
||||
let currentTab = gBrowser.selectedTab;
|
||||
let tabs = this._data[this.currentView].tabs;
|
||||
for (const tab of tabs) {
|
||||
this.onTabClose({ target: tab, forUnsplit: true });
|
||||
}
|
||||
gBrowser.selectedTab = currentTab;
|
||||
panel.hidePopup();
|
||||
this.updateSplitViewButton(true);
|
||||
return;
|
||||
}
|
||||
this._data[this.currentView].gridType = gridType;
|
||||
this._showSplitView(gBrowser.selectedTab);
|
||||
panel.hidePopup();
|
||||
}).bind(this, gridType));
|
||||
}
|
||||
this.__hasSetMenuListener = true;
|
||||
PanelMultiView.openPopup(panel, target, {
|
||||
position: "bottomright topright",
|
||||
triggerEvent: event,
|
||||
}).catch(console.error);
|
||||
},
|
||||
};
|
||||
|
||||
gZenViewSplitter.init();
|
@@ -1,63 +0,0 @@
|
||||
|
||||
var ZenWorkspaces = {
|
||||
async init() {
|
||||
await this.initializeWorkspaces();
|
||||
console.log("ZenWorkspaces initialized");
|
||||
},
|
||||
|
||||
get workspaceEnabled() {
|
||||
return Services.prefs.getBoolPref("zen.workspaces.enabled", false);
|
||||
},
|
||||
|
||||
// Wrorkspaces saving/loading
|
||||
get _storeFile() {
|
||||
return PathUtils.join(
|
||||
PathUtils.profileDir,
|
||||
"zen-workspaces",
|
||||
"Workspaces.json",
|
||||
);
|
||||
},
|
||||
|
||||
async initializeWorkspaces() {
|
||||
let file = new FileUtils.File(this._storeFile);
|
||||
if (!file.exists()) {
|
||||
await IOUtils.writeJSON(this._storeFile, {});
|
||||
}
|
||||
},
|
||||
|
||||
async saveWorkspace(workspaceData, windowID) {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
json[windowID] = workspaceData;
|
||||
await IOUtils.writeJSON(this._storeFile, json);
|
||||
},
|
||||
|
||||
async loadWorkspace(windowID) {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
return json[windowID];
|
||||
},
|
||||
|
||||
async removeWorkspace(windowID) {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
delete json[windowID];
|
||||
await IOUtils.writeJSON(this._storeFile, json);
|
||||
},
|
||||
|
||||
async getWorkspaces() {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
return json;
|
||||
},
|
||||
|
||||
async getWorkspace(windowID) {
|
||||
let json = await IOUtils.readJSON(this._storeFile);
|
||||
return json[windowID];
|
||||
},
|
||||
|
||||
// Workspaces management
|
||||
|
||||
async saveCurrentWorkspace(windowID) {
|
||||
let workspaceData = this._createWorkspaceData(windowID);
|
||||
await this.saveWorkspace(workspaceData, windowID);
|
||||
},
|
||||
};
|
||||
|
||||
ZenWorkspaces.init();
|
@@ -1,11 +0,0 @@
|
||||
diff --git a/browser/base/content/appmenu-viewcache.inc.xhtml b/browser/base/content/appmenu-viewcache.inc.xhtml
|
||||
index 07b1765f18236835363fb74c898d3a690659cc9b..7b58cbb5de147ed29fbc48c0093c731fe5cca90b 100644
|
||||
--- a/browser/base/content/appmenu-viewcache.inc.xhtml
|
||||
+++ b/browser/base/content/appmenu-viewcache.inc.xhtml
|
||||
@@ -765,5 +765,6 @@
|
||||
</vbox>
|
||||
</panelview>
|
||||
|
||||
+#include zen-panels-ui.inc.xhtml
|
||||
#include ../../components/reportbrokensite/content/reportBrokenSitePanel.inc.xhtml
|
||||
</html:template>
|
@@ -1,12 +1,10 @@
|
||||
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
|
||||
index b0308911446dd6fc549401371a85faa6341f8338..3942a0b45308b110685c34e8a9367d7c5d40d8c4 100644
|
||||
index 16559b2c0e3aef391b43e09281aee24007feb0bd..2579cea92a55fabb73fdd130c3706af08c3fd849 100644
|
||||
--- a/browser/base/content/browser-box.inc.xhtml
|
||||
+++ b/browser/base/content/browser-box.inc.xhtml
|
||||
@@ -18,12 +18,18 @@
|
||||
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
|
||||
@@ -21,11 +21,15 @@
|
||||
</vbox>
|
||||
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||
+ <vbox id="browser">
|
||||
<vbox id="appcontent" flex="1">
|
||||
+ <html:div id="zen-appcontent-navbar-container"></html:div>
|
||||
<!-- gNotificationBox will be added here lazily. -->
|
||||
@@ -18,6 +16,5 @@ index b0308911446dd6fc549401371a85faa6341f8338..3942a0b45308b110685c34e8a9367d7c
|
||||
flex="1" selectedIndex="0"/>
|
||||
</tabbox>
|
||||
+ </hbox>
|
||||
+ </vbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
@@ -1,97 +0,0 @@
|
||||
diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
|
||||
index 6e776a9ce7c525e510b6466065daf755b21567a4..8668b27ec2126ed772a11aa77809b6f22ceab7e2 100644
|
||||
--- a/browser/base/content/browser.css
|
||||
+++ b/browser/base/content/browser.css
|
||||
@@ -2,6 +2,8 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
+@import url("chrome://global/skin/zen-global-shared.css");
|
||||
+
|
||||
@namespace html url("http://www.w3.org/1999/xhtml");
|
||||
|
||||
:root,
|
||||
@@ -157,8 +159,6 @@ panelview:not([visible]) {
|
||||
flex: 100 100;
|
||||
max-width: 225px;
|
||||
min-width: var(--tab-min-width);
|
||||
- transition: min-width 100ms ease-out,
|
||||
- max-width 100ms ease-out;
|
||||
}
|
||||
|
||||
:root[uidensity=touch] .tabbrowser-tab:not([pinned]) {
|
||||
@@ -647,12 +647,12 @@ toolbar:not(#TabsToolbar) > #personal-bookmarks {
|
||||
margin-inline-start: 0;
|
||||
}
|
||||
|
||||
-#urlbar-input-container[pageproxystate=invalid] > #page-action-buttons > .urlbar-page-action,
|
||||
+#urlbar-input-container[pageproxystate=invalid] > #page-action-buttons > .urlbar-page-action:not(#zen-split-views-box),
|
||||
#identity-box.chromeUI ~ #page-action-buttons > .urlbar-page-action:not(#star-button-box),
|
||||
#urlbar[usertyping] > #urlbar-input-container > #page-action-buttons > #urlbar-zoom-button,
|
||||
#urlbar:not([usertyping]) > #urlbar-input-container > #urlbar-go-button,
|
||||
#urlbar:not([focused]) > #urlbar-input-container > #urlbar-go-button {
|
||||
- display: none;
|
||||
+ display: none !important;
|
||||
}
|
||||
|
||||
#nav-bar:not([keyNav=true]) #identity-box,
|
||||
@@ -1237,13 +1237,13 @@ printpreview-pagination:focus-within,
|
||||
|
||||
|
||||
#sidebar-box {
|
||||
- min-width: 14em;
|
||||
+ min-width: 323px;
|
||||
max-width: 36em;
|
||||
- width: 18em;
|
||||
+ width: 393px;
|
||||
}
|
||||
|
||||
/* WebExtension Sidebars */
|
||||
-#sidebar-box[sidebarcommand$="-sidebar-action"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon {
|
||||
+#sidebar-box[sidebarcommand$="-sidebar-action"] #sidebar-header > #sidebar-switcher-target > #sidebar-icon {
|
||||
list-style-image: var(--webextension-menuitem-image, inherit);
|
||||
-moz-context-properties: fill;
|
||||
fill: currentColor;
|
||||
@@ -1444,3 +1444,42 @@ toolbar[keyNav=true]:not([collapsed=true], [customizing=true]) toolbartabstop {
|
||||
/**
|
||||
* End Dialogs
|
||||
*/
|
||||
+
|
||||
+/**
|
||||
+ *
|
||||
+ * ZEN OVERRIDES
|
||||
+ */
|
||||
+
|
||||
+.content-prompt-dialog > .dialogOverlay {
|
||||
+ align-content: start;
|
||||
+}
|
||||
+
|
||||
+.dialogBox:not(.spotlightBox) {
|
||||
+ border: 1px solid var(--zen-dialog-border-color);
|
||||
+}
|
||||
+
|
||||
+#window-modal-dialog:not([zen-dialog-welcome-element="true"]) .dialogBox:not(.spotlightBox) {
|
||||
+ transform: translateY(-9px);
|
||||
+}
|
||||
+
|
||||
+#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogBox:not(.spotlightBox) {
|
||||
+ margin: 0 !important;
|
||||
+}
|
||||
+
|
||||
+#window-modal-dialog[zen-dialog-welcome-element="true"],
|
||||
+#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogOverlay,
|
||||
+#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogFrame,
|
||||
+#window-modal-dialog[zen-dialog-welcome-element="true"] .dialogBox {
|
||||
+ width: 100% !important;
|
||||
+ height: 100% !important;
|
||||
+ max-height: none !important;
|
||||
+ max-width: none !important;
|
||||
+}
|
||||
+
|
||||
+#window-modal-dialog[zen-dialog-welcome-element="true"] {
|
||||
+ --zen-welcome-dialog-space: 7px;
|
||||
+ margin: 0 auto !important;
|
||||
+ max-width: calc(100% - calc(var(--zen-welcome-dialog-space) * 2)) !important;
|
||||
+ max-height: calc(100% - calc(var(--zen-welcome-dialog-space) * 2)) !important;
|
||||
+ margin-top: var(--zen-welcome-dialog-space) !important;
|
||||
+}
|
@@ -1,33 +1,15 @@
|
||||
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
|
||||
index 0717ce21386b73fc3399c97b34c6892a674cca77..f20e8a43fdd1d885f917948a26f1c3a1bd917707 100644
|
||||
index f8d49ac2a3a62f389ea44b07a26fcb102abc0b24..c29415e10c776ebc435f33e55f8afb71f0dcf22a 100644
|
||||
--- a/browser/base/content/browser-init.js
|
||||
+++ b/browser/base/content/browser-init.js
|
||||
@@ -230,6 +230,12 @@ var gBrowserInit = {
|
||||
gURLBar.readOnly = true;
|
||||
@@ -237,6 +237,10 @@ var gBrowserInit = {
|
||||
gPrivateBrowsingUI.init();
|
||||
BrowserSearch.init();
|
||||
BrowserPageActions.init();
|
||||
+
|
||||
+ Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window);
|
||||
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
|
||||
+
|
||||
if (gToolbarKeyNavEnabled) {
|
||||
ToolbarKeyboardNavigator.init();
|
||||
}
|
||||
|
||||
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", this);
|
||||
+
|
||||
+ // ZEN: Propagate the current profile used to the browser UI, such as
|
||||
+ // showing the avatar and profile info to the side bar
|
||||
+ zenUpdateBrowserProfiles();
|
||||
+
|
||||
// Misc. inits.
|
||||
gUIDensity.init();
|
||||
TabletModeUpdater.init();
|
||||
@@ -1105,3 +1111,15 @@ var gBrowserInit = {
|
||||
};
|
||||
|
||||
gBrowserInit.idleTasksFinishedPromise = gBrowserInit.idleTasksFinished.promise;
|
||||
+
|
||||
+function zenUpdateBrowserProfiles() {
|
||||
+ const mainWindowEl = document.documentElement;
|
||||
+ // Dont override the sync avatar if it's already set
|
||||
+ if (mainWindowEl.style.hasOwnProperty("--avatar-image-url")) {
|
||||
+ return;
|
||||
+ }
|
||||
+ let profile = ProfileService.currentProfile;
|
||||
+ if (!profile || profile.zenAvatarPath == "") return;
|
||||
+ // TODO: actually use profile data to generate the avatar, instead of just using the name
|
||||
+ mainWindowEl.style.setProperty("--avatar-image-url", `url(${profile.zenAvatarPath})`);
|
||||
+}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
||||
index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cdb5315b70 100644
|
||||
index b18f371a47fec53882c3dfb68e34d1a474eaf446..2c183d7e7fc65e00403f5e40e7859b915a3ea700 100644
|
||||
--- a/browser/base/content/browser.js
|
||||
+++ b/browser/base/content/browser.js
|
||||
@@ -630,6 +630,15 @@ XPCOMUtils.defineLazyPreferenceGetter(
|
||||
@@ -18,16 +18,17 @@ index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cd
|
||||
customElements.setElementCreationCallback("screenshots-buttons", () => {
|
||||
Services.scriptloader.loadSubScript(
|
||||
"chrome://browser/content/screenshots/screenshots-buttons.js",
|
||||
@@ -3668,6 +3677,8 @@ var XULBrowserWindow = {
|
||||
@@ -3679,6 +3688,9 @@ var XULBrowserWindow = {
|
||||
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
|
||||
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
|
||||
|
||||
+ gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser);
|
||||
+ ZenWorkspaces.onLocationChange(gBrowser.selectedBrowser);
|
||||
+
|
||||
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
|
||||
|
||||
if (!gMultiProcessBrowser) {
|
||||
@@ -4982,7 +4993,7 @@ function setToolbarVisibility(
|
||||
@@ -5001,7 +5013,7 @@ function setToolbarVisibility(
|
||||
);
|
||||
}
|
||||
|
||||
@@ -36,7 +37,7 @@ index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cd
|
||||
switch (isVisible) {
|
||||
case true:
|
||||
case "always":
|
||||
@@ -7813,6 +7824,12 @@ var gDialogBox = {
|
||||
@@ -7832,6 +7844,12 @@ var gDialogBox = {
|
||||
parentElement.showModal();
|
||||
this._didOpenHTMLDialog = true;
|
||||
|
||||
|
@@ -1,32 +0,0 @@
|
||||
diff --git a/browser/base/content/browser-siteProtections.js b/browser/base/content/browser-siteProtections.js
|
||||
index 5364aa74cd938141e85e3a3333e8d1fa58ea3ae4..5cd1748a883b19caa2977c1047d51b9551686bf4 100644
|
||||
--- a/browser/base/content/browser-siteProtections.js
|
||||
+++ b/browser/base/content/browser-siteProtections.js
|
||||
@@ -1904,9 +1904,14 @@ var gProtectionsHandler = {
|
||||
// the information contained there would mostly be broken and/or
|
||||
// irrelevant anyway.
|
||||
this._trackingProtectionIconContainer.hidden = true;
|
||||
+ // ZEN: We make a clear distinction between native UI and websites for security reasons.
|
||||
+ // we can remove the separator for websites that dont need it, like "about:*" pages, where
|
||||
+ // they are safe to use.
|
||||
+ this._nativeSeparatorForWebsitesContainer.hidden = true;
|
||||
return;
|
||||
}
|
||||
this._trackingProtectionIconContainer.hidden = false;
|
||||
+ this._nativeSeparatorForWebsitesContainer.hidden = false;
|
||||
|
||||
// Check whether the user has added an exception for this site.
|
||||
this.hasException = ContentBlockingAllowList.includes(
|
||||
@@ -2882,4 +2887,12 @@ var gProtectionsHandler = {
|
||||
|
||||
return messageEl;
|
||||
},
|
||||
+
|
||||
+ get _nativeSeparatorForWebsitesContainer() {
|
||||
+ delete this._nativeSeparatorForWebsitesContainer;
|
||||
+ return (this._nativeSeparatorForWebsitesContainer = document.getElementById(
|
||||
+ "zen-website-and-native-separator"
|
||||
+ ));
|
||||
+ },
|
||||
+
|
||||
};
|
@@ -1,17 +1,17 @@
|
||||
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
|
||||
index aec0983a6704f09300da9a3a9ab76e627695b708..4228c96f59d6054c19c95686cafa979594e7da1f 100644
|
||||
index 481ebbee437250c71e9bd10c4fb6fc0c31314925..3bb046a4635fad831cc447e29516ee5ed407a3f2 100644
|
||||
--- a/browser/base/content/browser.xhtml
|
||||
+++ b/browser/base/content/browser.xhtml
|
||||
@@ -140,6 +140,8 @@
|
||||
@@ -138,6 +138,8 @@
|
||||
window.addEventListener("DOMContentLoaded",
|
||||
gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
|
||||
</script>
|
||||
+#include zen-locales.inc.xhtml
|
||||
+#include zen-scripts.inc.xhtml
|
||||
+#include zen-assets.inc.xhtml
|
||||
</head>
|
||||
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
# All sets except for popupsets (commands, keys, and stringbundles)
|
||||
@@ -161,9 +163,12 @@
|
||||
@@ -159,9 +161,12 @@
|
||||
</vbox>
|
||||
</html:template>
|
||||
|
||||
|
@@ -1,11 +0,0 @@
|
||||
diff --git a/browser/base/content/global-scripts.inc b/browser/base/content/global-scripts.inc
|
||||
index f5f43b8f9509c37bf217b3ed1c6c562be85430e0..c8ab55760f817aa14e3db15f6b5556118e65d218 100644
|
||||
--- a/browser/base/content/global-scripts.inc
|
||||
+++ b/browser/base/content/global-scripts.inc
|
||||
@@ -22,4 +22,6 @@ if (AppConstants.platform == "macosx") {
|
||||
Services.scriptloader.loadSubScript("chrome://global/content/macWindowMenu.js", this);
|
||||
}
|
||||
|
||||
+Services.scriptloader.loadSubScript("chrome://browser/content/zen-browser-places.js", this);
|
||||
+
|
||||
</script>
|
@@ -1,21 +1,8 @@
|
||||
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
|
||||
index ef8245938ea669227c255d85422a26b99cb2290b..48c061796072e976a45f7bd0ca1c8b3913728fc7 100644
|
||||
index 1fb595272a184f9a40f56f87d86232e3324f7750..8dd0f0ff856be524a5fa27fb8c6180c1fe058134 100644
|
||||
--- a/browser/base/content/main-popupset.inc.xhtml
|
||||
+++ b/browser/base/content/main-popupset.inc.xhtml
|
||||
@@ -80,6 +80,12 @@
|
||||
<menuitem id="context_closeDuplicateTabs"
|
||||
data-lazy-l10n-id="tab-context-close-duplicate-tabs"
|
||||
oncommand="gBrowser.removeDuplicateTabs(TabContextMenu.contextTab);"/>
|
||||
+ <menuseparator/>
|
||||
+ <menuitem id="context_zenSplitTabs"
|
||||
+ data-lazy-l10n-id="tab-zen-split-tabs"
|
||||
+ data-l10n-args='{"tabCount": 1}'
|
||||
+ oncommand="gZenViewSplitter.contextSplitTabs();"/>
|
||||
+ <menuseparator/>
|
||||
<menu id="context_closeTabOptions"
|
||||
data-lazy-l10n-id="tab-context-close-multiple-tabs">
|
||||
<menupopup id="closeTabOptions">
|
||||
@@ -169,6 +175,10 @@
|
||||
@@ -144,6 +144,10 @@
|
||||
hidden="true"
|
||||
tabspecific="true"
|
||||
aria-labelledby="editBookmarkPanelTitle">
|
||||
@@ -26,22 +13,15 @@ index ef8245938ea669227c255d85422a26b99cb2290b..48c061796072e976a45f7bd0ca1c8b39
|
||||
<box class="panel-header">
|
||||
<html:h1>
|
||||
<html:span id="editBookmarkPanelTitle"/>
|
||||
@@ -191,12 +201,14 @@
|
||||
class="footer-button"
|
||||
data-l10n-id="bookmark-panel-save-button"
|
||||
default="true"
|
||||
+ autofocus="true"
|
||||
oncommand="StarUI.panel.hidePopup();"/>
|
||||
<button id="editBookmarkPanelRemoveButton"
|
||||
class="footer-button"
|
||||
oncommand="StarUI.removeBookmarkButtonCommand();"/>
|
||||
@@ -169,6 +173,7 @@
|
||||
class="footer-button"/>
|
||||
</html:moz-button-group>
|
||||
</vbox>
|
||||
+ </vbox>
|
||||
</panel>
|
||||
</html:template>
|
||||
|
||||
@@ -514,6 +526,8 @@
|
||||
@@ -454,6 +459,8 @@
|
||||
|
||||
#include popup-notifications.inc
|
||||
|
||||
|
@@ -1,7 +1,16 @@
|
||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
index 0a67afa81ff5e10dcbfb53149f7ed9109de084ac..bdcce262b5fc18767efd1054fd724b97c42471e4 100644
|
||||
index 390a1300a1213af2b411ba09c67e3c25750ee6c3..a7ab07f8e8a0c5f91a6c12eb5d27c56edbd7405c 100644
|
||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
@@ -2,7 +2,7 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
-<toolbox id="navigator-toolbox">
|
||||
+<toolbox id="navigator-toolbox" persist="width style">
|
||||
|
||||
<vbox id="titlebar">
|
||||
<!-- Menu -->
|
||||
@@ -32,10 +32,11 @@
|
||||
|
||||
<hbox class="titlebar-spacer" type="pre-tabs"/>
|
||||
@@ -44,22 +53,7 @@ index 0a67afa81ff5e10dcbfb53149f7ed9109de084ac..bdcce262b5fc18767efd1054fd724b97
|
||||
</toolbar>
|
||||
|
||||
</vbox>
|
||||
@@ -409,6 +412,14 @@
|
||||
<image id="star-button"
|
||||
class="urlbar-icon"/>
|
||||
</hbox>
|
||||
+ <hbox id="zen-split-views-box"
|
||||
+ hidden="true"
|
||||
+ role="button"
|
||||
+ class="urlbar-page-action"
|
||||
+ onclick="gZenViewSplitter.openSplitViewPanel(event);">
|
||||
+ <image id="zen-split-views-button"
|
||||
+ class="urlbar-icon"/>
|
||||
+ </hbox>
|
||||
</hbox>
|
||||
</hbox>
|
||||
</hbox>
|
||||
@@ -450,6 +461,7 @@
|
||||
@@ -450,6 +453,7 @@
|
||||
|
||||
<toolbarbutton id="fxa-toolbar-menu-button" class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
|
||||
badged="true"
|
||||
@@ -67,7 +61,7 @@ index 0a67afa81ff5e10dcbfb53149f7ed9109de084ac..bdcce262b5fc18767efd1054fd724b97
|
||||
delegatesanchor="true"
|
||||
onmousedown="gSync.toggleAccountPanel(this, event)"
|
||||
onkeypress="gSync.toggleAccountPanel(this, event)"
|
||||
@@ -501,6 +513,8 @@
|
||||
@@ -501,6 +505,8 @@
|
||||
consumeanchor="PanelUI-button"
|
||||
data-l10n-id="appmenu-menu-button-closed2"/>
|
||||
</toolbaritem>
|
||||
|
18
src/browser/base/content/nsContextMenu-sys-mjs.patch
Normal file
@@ -0,0 +1,18 @@
|
||||
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
|
||||
index 6c2317b8036378c6b8e0ad9a4fe71388bcb385f5..4bf277b02d3c69efc0f2d46c8b0f9deb7d7fb45a 100644
|
||||
--- a/browser/base/content/nsContextMenu.sys.mjs
|
||||
+++ b/browser/base/content/nsContextMenu.sys.mjs
|
||||
@@ -1153,6 +1153,13 @@ export class nsContextMenu {
|
||||
!this.isSecureAboutPage()
|
||||
);
|
||||
|
||||
+ this.showItem(
|
||||
+ "context-zenAddToWebPanel",
|
||||
+ this.onLink && !this.onMailtoLink && !this.onTelLink
|
||||
+ );
|
||||
+
|
||||
+ this.showItem("context-zenSplitLink", this.onLink && !this.onMailtoLink && !this.onTelLink);
|
||||
+
|
||||
let copyLinkSeparator = this.document.getElementById(
|
||||
"context-sep-copylink"
|
||||
);
|
@@ -1,16 +0,0 @@
|
||||
diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js
|
||||
index 3bca0b6d30468dc3a755219723f673ec80dfce6e..200a609ea31a8c904e2d3e39a3a06ff67fb313ed 100644
|
||||
--- a/browser/base/content/tabbrowser.js
|
||||
+++ b/browser/base/content/tabbrowser.js
|
||||
@@ -7623,6 +7623,11 @@ var TabContextMenu = {
|
||||
this.contextTab.linkedBrowser,
|
||||
document.getElementById("context_sendTabToDevice")
|
||||
);
|
||||
+
|
||||
+ document
|
||||
+ .getElementById("context_zenSplitTabs")
|
||||
+ .setAttribute("data-l10n-args", tabCountInfo);
|
||||
+ document.getElementById("context_zenSplitTabs").disabled = !gZenViewSplitter.contextCanSplitTabs();
|
||||
},
|
||||
|
||||
handleEvent(aEvent) {
|
@@ -1,12 +0,0 @@
|
||||
diff --git a/browser/base/content/webext-panels.xhtml b/browser/base/content/webext-panels.xhtml
|
||||
index 902fa7e7b3edb3c9502a12e475ade016436b2490..5c6ad5f9d86cd29a12483d7cb71ce9979002f092 100644
|
||||
--- a/browser/base/content/webext-panels.xhtml
|
||||
+++ b/browser/base/content/webext-panels.xhtml
|
||||
@@ -16,6 +16,7 @@
|
||||
<script src="chrome://global/content/globalOverlay.js"/>
|
||||
<script src="chrome://browser/content/utilityOverlay.js"/>
|
||||
<script src="chrome://global/content/editMenuOverlay.js"/>
|
||||
+ <script src="chrome://browser/content/zen-browser-places.js"/>
|
||||
|
||||
<linkset>
|
||||
<html:link rel="stylesheet" href="chrome://global/skin/global.css" />
|
35
src/browser/base/content/zen-assets.inc.xhtml
Normal file
@@ -0,0 +1,35 @@
|
||||
<!-- Styles used all over the browser -->
|
||||
<linkset>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-theme.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-animations.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-sidebar.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-buttons.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-toolbar.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-tabs.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-browser-ui.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-panel-ui.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-single-components.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-browser-container.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-urlbar.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-workspaces.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-decks.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-profile-dialog.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-sidebar-panels.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-popup.css" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-compact-mode.css" />
|
||||
<link rel="stylesheet" type="text/css" href="chrome://browser/skin/zen-icons/icons.css" />
|
||||
|
||||
</linkset>
|
||||
|
||||
<!-- Scripts used all over the browser -->
|
||||
<script type="text/javascript">
|
||||
window.addEventListener("DOMContentLoaded", async () => {
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenSidebarManager.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspaces.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenViewSplitter.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenProfileDialogUI.mjs");
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs");
|
||||
}, { once: true });
|
||||
</script>
|
40
src/browser/base/content/zen-assets.jar.inc.mn
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
|
||||
content/browser/zenThemeModifier.js (content/zenThemeModifier.js)
|
||||
content/browser/ZenStartup.mjs (content/ZenStartup.mjs)
|
||||
content/browser/ZenUIManager.mjs (content/ZenUIManager.mjs)
|
||||
content/browser/zen-components/ZenViewSplitter.mjs (content/zen-components/src/ZenViewSplitter.mjs)
|
||||
content/browser/zen-components/ZenWorkspaces.mjs (content/zen-components/src/ZenWorkspaces.mjs)
|
||||
content/browser/zen-components/ZenSidebarManager.mjs (content/zen-components/src/ZenSidebarManager.mjs)
|
||||
content/browser/zen-components/ZenProfileDialogUI.mjs (content/zen-components/src/ZenProfileDialogUI.mjs)
|
||||
content/browser/zen-components/ZenKeyboardShortcuts.mjs (content/zen-components/src/ZenKeyboardShortcuts.mjs)
|
||||
content/browser/zen-components/ZenThemeBuilder.mjs (content/zen-components/src/ZenThemeBuilder.mjs)
|
||||
|
||||
content/browser/zen-styles/zen-theme.css (content/zen-styles/zen-theme.css)
|
||||
content/browser/zen-styles/zen-buttons.css (content/zen-styles/zen-buttons.css)
|
||||
content/browser/zen-styles/zen-tabs.css (content/zen-styles/zen-tabs.css)
|
||||
content/browser/zen-styles/zen-tabs/vertical-tabs.css (content/zen-styles/zen-tabs/vertical-tabs.css)
|
||||
content/browser/zen-styles/zen-browser-ui.css (content/zen-styles/zen-browser-ui.css)
|
||||
content/browser/zen-styles/zen-animations.css (content/zen-styles/zen-animations.css)
|
||||
content/browser/zen-styles/zen-panel-ui.css (content/zen-styles/zen-panel-ui.css)
|
||||
content/browser/zen-styles/zen-single-components.css (content/zen-styles/zen-single-components.css)
|
||||
content/browser/zen-styles/zen-sidebar.css (content/zen-styles/zen-sidebar.css)
|
||||
content/browser/zen-styles/zen-toolbar.css (content/zen-styles/zen-toolbar.css)
|
||||
content/browser/zen-styles/zen-decks.css (content/zen-styles/zen-decks.css)
|
||||
content/browser/zen-styles/zen-browser-container.css (content/zen-styles/zen-browser-container.css)
|
||||
content/browser/zen-styles/zen-workspaces.css (content/zen-styles/zen-workspaces.css)
|
||||
content/browser/zen-styles/zen-profile-dialog.css (content/zen-styles/zen-profile-dialog.css)
|
||||
content/browser/zen-styles/zen-urlbar.css (content/zen-styles/zen-urlbar.css)
|
||||
content/browser/zen-styles/zen-popup.css (content/zen-styles/zen-popup.css)
|
||||
content/browser/zen-styles/zen-sidebar-panels.css (content/zen-styles/zen-sidebar-panels.css)
|
||||
|
||||
content/browser/zen-styles/zen-panels/bookmarks.css (content/zen-styles/zen-panels/bookmarks.css)
|
||||
content/browser/zen-styles/zen-panels/extensions.css (content/zen-styles/zen-panels/extensions.css)
|
||||
content/browser/zen-styles/zen-panels/print.css (content/zen-styles/zen-panels/print.css)
|
||||
content/browser/zen-styles/zen-panels/welcome.css (content/zen-styles/zen-panels/welcome.css)
|
||||
|
||||
content/browser/zen-styles/zen-compact-mode.css (content/zen-styles/zen-compact-mode.css)
|
||||
|
||||
# Actors
|
||||
content/browser/zen-components/actors/ZenThemeMarketplaceParent.sys.mjs (content/zen-components/src/actors/ZenThemeMarketplaceParent.sys.mjs)
|
||||
content/browser/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs (content/zen-components/src/actors/ZenThemeMarketplaceChild.sys.mjs)
|
6
src/browser/base/content/zen-avatars/avatar-0-dark.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#253342"></rect><rect x="10" y="30" width="80" height="10" fill="#232226" transform="translate(6 -6) rotate(236 40 40)"></rect><circle cx="40" cy="40" fill="#DDDDDD" r="16" transform="translate(15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#5E9188" transform="translate(12 -12) rotate(112 40 40)"></line></g></svg>
|
After Width: | Height: | Size: 894 B |
6
src/browser/base/content/zen-avatars/avatar-0-light.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#FFF6C7"></rect><rect x="10" y="30" width="80" height="10" fill="#DCD7C2" transform="translate(6 -6) rotate(236 40 40)"></rect><circle cx="40" cy="40" fill="#9D9382" r="16" transform="translate(15 15)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#FFC1B2" transform="translate(12 -12) rotate(112 40 40)"></line></g></svg>
|
After Width: | Height: | Size: 894 B |
@@ -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 |
6
src/browser/base/content/zen-avatars/avatar-1-dark.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#5E9188"></rect><rect x="10" y="30" width="80" height="80" fill="#3E5954" transform="translate(-8 -8) rotate(222 40 40)"></rect><circle cx="40" cy="40" fill="#253342" r="16" transform="translate(9 -9)"></circle><line x1="0" y1="40" x2="80" y2="40" stroke-width="2" stroke="#232226" transform="translate(-4 4) rotate(84 40 40)"></line></g></svg>
|
After Width: | Height: | Size: 891 B |
6
src/browser/base/content/zen-avatars/avatar-1-light.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#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: 891 B |
@@ -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 |
6
src/browser/base/content/zen-avatars/avatar-10-dark.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#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: 895 B |
6
src/browser/base/content/zen-avatars/avatar-10-light.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#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: 895 B |
@@ -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 |
6
src/browser/base/content/zen-avatars/avatar-11-dark.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#253342"></rect><rect x="10" y="30" width="80" height="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: 892 B |
6
src/browser/base/content/zen-avatars/avatar-11-light.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#FFF6C7"></rect><rect x="10" y="30" width="80" height="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: 892 B |
@@ -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 |
6
src/browser/base/content/zen-avatars/avatar-12-dark.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg viewBox="0 0 80 80" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="120" height="120"><mask id="mask__bauhaus" maskUnits="userSpaceOnUse" x="0" y="0" width="80" height="80"><rect width="80" height="80" rx="160" fill="#FFFFFF"></rect></mask><g mask="url(#mask__bauhaus)"><rect width="80" height="80" fill="#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: 893 B |