Compare commits
1341 Commits
1.0.0-a.13
...
1.0.1-a.14
Author | SHA1 | Date | |
---|---|---|---|
![]() |
315180816d | ||
![]() |
fc94c9602b | ||
![]() |
25c8796888 | ||
![]() |
ea871aaa7b | ||
![]() |
be376ef2ac | ||
![]() |
0b77b93801 | ||
![]() |
9d5ee6291d | ||
![]() |
0476f0d367 | ||
![]() |
4a98a0da86 | ||
![]() |
9cb5e7809a | ||
![]() |
3a22456032 | ||
![]() |
0d609d9e2c | ||
![]() |
555313fc4c | ||
![]() |
8a609505f1 | ||
![]() |
cc0f792e60 | ||
![]() |
9f3e69dbf1 | ||
![]() |
7d42a41df4 | ||
![]() |
f7593002d1 | ||
![]() |
262a7797e7 | ||
![]() |
6364767d5a | ||
![]() |
4d285fe4b6 | ||
![]() |
cde46b77de | ||
![]() |
722ddfb736 | ||
![]() |
155c026e99 | ||
![]() |
44cb7e148b | ||
![]() |
3a517317a3 | ||
![]() |
b32cbe1651 | ||
![]() |
18b0a44ae3 | ||
![]() |
dd68943ae8 | ||
![]() |
f019490989 | ||
![]() |
4ee7fa2af7 | ||
![]() |
032a3f562f | ||
![]() |
9d438035cb | ||
![]() |
7f5d792ff4 | ||
![]() |
5d0c22c374 | ||
![]() |
e7a52289c8 | ||
![]() |
4997786b9f | ||
![]() |
5b51aa2b78 | ||
![]() |
5c565def63 | ||
![]() |
c4502c2762 | ||
![]() |
2ea79db343 | ||
![]() |
c92924db15 | ||
![]() |
45ce804ee9 | ||
![]() |
2e9c147c44 | ||
![]() |
24d09cc134 | ||
![]() |
e7109a0855 | ||
![]() |
b7964f7f12 | ||
![]() |
31bb92c398 | ||
![]() |
d95731e87b | ||
![]() |
bff3c47dc2 | ||
![]() |
94b32c38e4 | ||
![]() |
2214ab3a17 | ||
![]() |
8631adaaec | ||
![]() |
2cfada1fc8 | ||
![]() |
065e82534e | ||
![]() |
a6cbda63b1 | ||
![]() |
15ddd0f680 | ||
![]() |
841261a36e | ||
![]() |
f30a2dc43c | ||
![]() |
37132e8d3e | ||
![]() |
b9dd88e30f | ||
![]() |
e3ec2c22a2 | ||
![]() |
e36dbdead3 | ||
![]() |
4358574889 | ||
![]() |
bbdd6684fe | ||
![]() |
07cd774619 | ||
![]() |
83b077d5f3 | ||
![]() |
36104652cd | ||
![]() |
d75c797553 | ||
![]() |
3fa9e6d5b2 | ||
![]() |
bbb532b5aa | ||
![]() |
15621d76b9 | ||
![]() |
73eb4e3389 | ||
![]() |
3be0eb2ac6 | ||
![]() |
c195b1ecb9 | ||
![]() |
4c265a674e | ||
![]() |
634b4f392a | ||
![]() |
2cca7a8308 | ||
![]() |
ffc584e5e6 | ||
![]() |
9a73aba7fc | ||
![]() |
22adb293f7 | ||
![]() |
e8534e61cd | ||
![]() |
6168e4668c | ||
![]() |
aa0d1c27c8 | ||
![]() |
35859f566b | ||
![]() |
1ad7055fbe | ||
![]() |
2287aa9a06 | ||
![]() |
28d358aa43 | ||
![]() |
8744d1a9ec | ||
![]() |
68f9a32629 | ||
![]() |
2f5062b33e | ||
![]() |
57b624d2da | ||
![]() |
69539728ec | ||
![]() |
92b014a706 | ||
![]() |
a5ace90bd6 | ||
![]() |
8212ca3aee | ||
![]() |
0b9b0a39d8 | ||
![]() |
bcf6dad5de | ||
![]() |
3f0347bc18 | ||
![]() |
b401c225dd | ||
![]() |
721e6ba935 | ||
![]() |
fa342c42fb | ||
![]() |
c31e0d72b3 | ||
![]() |
f672b1b810 | ||
![]() |
4f324c7fd7 | ||
![]() |
0137664296 | ||
![]() |
69313054a2 | ||
![]() |
d6c4c3c66a | ||
![]() |
6d0753c5e9 | ||
![]() |
019efd6db7 | ||
![]() |
4b3d739774 | ||
![]() |
c345b1aa19 | ||
![]() |
d6d4d4a8a3 | ||
![]() |
85017433db | ||
![]() |
d03248c10f | ||
![]() |
b86cf5ac80 | ||
![]() |
abc36b6f9b | ||
![]() |
88fcce18f9 | ||
![]() |
7137481251 | ||
![]() |
842b4929e4 | ||
![]() |
c9a923bb34 | ||
![]() |
d68429b49b | ||
![]() |
38abd9e756 | ||
![]() |
0e35750741 | ||
![]() |
e3ef019995 | ||
![]() |
4486cdc14f | ||
![]() |
c7c453404b | ||
![]() |
546cac2b09 | ||
![]() |
86f537971c | ||
![]() |
4dd5e7c4b9 | ||
![]() |
3b850ae3b9 | ||
![]() |
361932cf7f | ||
![]() |
73f8225669 | ||
![]() |
f6d7170537 | ||
![]() |
35c1139293 | ||
![]() |
590ff474c7 | ||
![]() |
b384e2ee1d | ||
![]() |
6e7a2e4c9e | ||
![]() |
19e07f6785 | ||
![]() |
097f7c846e | ||
![]() |
01d6fdf080 | ||
![]() |
7023e0a800 | ||
![]() |
3ca94633cd | ||
![]() |
ac3e035af7 | ||
![]() |
538fd146fb | ||
![]() |
f1d438f3fd | ||
![]() |
49bb9cd398 | ||
![]() |
7d00a254da | ||
![]() |
ad9ad07cbd | ||
![]() |
598d60ab7e | ||
![]() |
d3f61027c7 | ||
![]() |
8ecbbd0719 | ||
![]() |
17943dcf1a | ||
![]() |
0150e6d689 | ||
![]() |
b5260051a0 | ||
![]() |
b1f17ff508 | ||
![]() |
f4b3f62a46 | ||
![]() |
519cbdd872 | ||
![]() |
28cc158a3f | ||
![]() |
c99bf518b3 | ||
![]() |
86d3244a22 | ||
![]() |
618859788c | ||
![]() |
8008633c02 | ||
![]() |
e840184e7f | ||
![]() |
5aa17208a5 | ||
![]() |
bd7d46f446 | ||
![]() |
013d14d723 | ||
![]() |
b87b9d3e26 | ||
![]() |
bdbce8a7da | ||
![]() |
f661ba7c40 | ||
![]() |
a87dc0346d | ||
![]() |
7470ff5437 | ||
![]() |
fe10ffc7d7 | ||
![]() |
1628b4ca3e | ||
![]() |
74bed8b30a | ||
![]() |
e4287ee7fb | ||
![]() |
71a2646c5b | ||
![]() |
39fbe69847 | ||
![]() |
aa8ef338c5 | ||
![]() |
b9f392da94 | ||
![]() |
40223ee48a | ||
![]() |
0d2ae948e8 | ||
![]() |
7a04307c32 | ||
![]() |
da5ae971e1 | ||
![]() |
d8bbb62081 | ||
![]() |
f5215c1f29 | ||
![]() |
54706e51af | ||
![]() |
2ee66b0b22 | ||
![]() |
2082079c7e | ||
![]() |
0c30803fdd | ||
![]() |
3745de490f | ||
![]() |
cf0e6b8f86 | ||
![]() |
e184e9a97c | ||
![]() |
4cd304b4c6 | ||
![]() |
8bcffb59e6 | ||
![]() |
f2058851d0 | ||
![]() |
3a2ad6e578 | ||
![]() |
45e751a8be | ||
![]() |
6d9e54043c | ||
![]() |
2b68cc481e | ||
![]() |
49f7a457cd | ||
![]() |
c18b3db621 | ||
![]() |
cf450d6d4a | ||
![]() |
93774f17c8 | ||
![]() |
349e8a9203 | ||
![]() |
150f092e9a | ||
![]() |
69020cc516 | ||
![]() |
a01a6d0f43 | ||
![]() |
52a15da966 | ||
![]() |
322d3dcab1 | ||
![]() |
234d05d044 | ||
![]() |
8b7953280a | ||
![]() |
0ba9eb2eeb | ||
![]() |
508a0c7815 | ||
![]() |
264eaa5cbf | ||
![]() |
b4901cb113 | ||
![]() |
4380370ae4 | ||
![]() |
d043ea25d8 | ||
![]() |
dadc13a2df | ||
![]() |
34e47d79dd | ||
![]() |
945ee1245e | ||
![]() |
7f263b4c5e | ||
![]() |
569d93af9a | ||
![]() |
9440716951 | ||
![]() |
cc4e676bb7 | ||
![]() |
9d0eaad314 | ||
![]() |
1d22650d89 | ||
![]() |
ce519530bc | ||
![]() |
3e02f0d39f | ||
![]() |
89b97338e4 | ||
![]() |
2345563879 | ||
![]() |
692cb9223c | ||
![]() |
e8ff848518 | ||
![]() |
256dadbaf7 | ||
![]() |
3e92111847 | ||
![]() |
2e4958bc25 | ||
![]() |
8c04cda18b | ||
![]() |
515b4d50ab | ||
![]() |
414308f277 | ||
![]() |
ffe822819c | ||
![]() |
948cfc4034 | ||
![]() |
fdd99cb8d6 | ||
![]() |
9df773dde2 | ||
![]() |
8c42614427 | ||
![]() |
6dcff571d2 | ||
![]() |
43834e57f0 | ||
![]() |
b185773daf | ||
![]() |
593a9244a4 | ||
![]() |
165ee8a3f8 | ||
![]() |
66fc824bb5 | ||
![]() |
a556454ced | ||
![]() |
d248880890 | ||
![]() |
c9a8177351 | ||
![]() |
5e85f1025a | ||
![]() |
eebcb0cb6e | ||
![]() |
cf3f788218 | ||
![]() |
31f939ba96 | ||
![]() |
b707aabee4 | ||
![]() |
b3e3fdbad7 | ||
![]() |
41897f06ed | ||
![]() |
4758656211 | ||
![]() |
5e1a5fc498 | ||
![]() |
174fafcb45 | ||
![]() |
19fff2bd89 | ||
![]() |
4b1ef1222b | ||
![]() |
46cca21a72 | ||
![]() |
81c2f08e62 | ||
![]() |
2a764eaf7a | ||
![]() |
a1cccb1ca4 | ||
![]() |
d7bff00046 | ||
![]() |
22ef403bd4 | ||
![]() |
e466fb95b5 | ||
![]() |
c5ab69f38d | ||
![]() |
09f673d94c | ||
![]() |
b323a92dbf | ||
![]() |
57f697975e | ||
![]() |
9a9171055c | ||
![]() |
90683aa637 | ||
![]() |
480bcccbf4 | ||
![]() |
015c27ecad | ||
![]() |
1ec4c2ba9d | ||
![]() |
69653bb402 | ||
![]() |
988d5a2535 | ||
![]() |
8de8f190ff | ||
![]() |
ac58a0da0e | ||
![]() |
eb19d2a1c4 | ||
![]() |
36656fd0f4 | ||
![]() |
eb5d10c24a | ||
![]() |
da6101a355 | ||
![]() |
20f6dfafa1 | ||
![]() |
5488980bd9 | ||
![]() |
de92af20f0 | ||
![]() |
f22646a905 | ||
![]() |
44a8bc3f1d | ||
![]() |
a870d7eb42 | ||
![]() |
e429d0317d | ||
![]() |
c8391950cf | ||
![]() |
7cf789ad5f | ||
![]() |
d28062cc93 | ||
![]() |
5d0ea6a2c3 | ||
![]() |
4adde6ba85 | ||
![]() |
e2792eecb5 | ||
![]() |
57bf881779 | ||
![]() |
da8db0f223 | ||
![]() |
e96a40a545 | ||
![]() |
3105024de4 | ||
![]() |
656a47f7c2 | ||
![]() |
742bb67cde | ||
![]() |
88fb4d5e04 | ||
![]() |
28745667b8 | ||
![]() |
bffaa1a94d | ||
![]() |
f5863391fe | ||
![]() |
33531e973b | ||
![]() |
44c784f4a5 | ||
![]() |
7e112746bc | ||
![]() |
f29750da65 | ||
![]() |
3e2157782f | ||
![]() |
6a9aaf1c58 | ||
![]() |
516a388aa3 | ||
![]() |
c968478c3d | ||
![]() |
c14bdf8d26 | ||
![]() |
8bce4eb5f8 | ||
![]() |
2c2c6c6cc2 | ||
![]() |
c41a0ba129 | ||
![]() |
6cb335fe32 | ||
![]() |
605815aa76 | ||
![]() |
cf2734f5e2 | ||
![]() |
1624f05c06 | ||
![]() |
39caaf5caa | ||
![]() |
4310143e79 | ||
![]() |
93159e4514 | ||
![]() |
980dae52d4 | ||
![]() |
bd8501fd77 | ||
![]() |
f8306742e9 | ||
![]() |
aa7b007db7 | ||
![]() |
bf041bd1d6 | ||
![]() |
698b1eab76 | ||
![]() |
81db0458a9 | ||
![]() |
87f76f1cc2 | ||
![]() |
751a0c987d | ||
![]() |
e11688d2a3 | ||
![]() |
73d447eeee | ||
![]() |
3012c0ad1f | ||
![]() |
59f356001a | ||
![]() |
1cfb33afcd | ||
![]() |
3f4f611a61 | ||
![]() |
1bd694514b | ||
![]() |
e3f0ab43bb | ||
![]() |
6469cfa6f4 | ||
![]() |
88f9fc5816 | ||
![]() |
933e192e0c | ||
![]() |
7662707c84 | ||
![]() |
7e894eb4b5 | ||
![]() |
20cef9aabb | ||
![]() |
49de0de5ca | ||
![]() |
84f0a478b4 | ||
![]() |
58fcbd9dfa | ||
![]() |
69093204b9 | ||
![]() |
021e654202 | ||
![]() |
f7ebf48e49 | ||
![]() |
7369490478 | ||
![]() |
6117c4a877 | ||
![]() |
03fe76b14a | ||
![]() |
4eaf8ddaa2 | ||
![]() |
bc03bc06c4 | ||
![]() |
576541c4f1 | ||
![]() |
c9df1d8b99 | ||
![]() |
99569e4588 | ||
![]() |
dcd4dc5d44 | ||
![]() |
40890470fe | ||
![]() |
08c7a397bc | ||
![]() |
469260905c | ||
![]() |
c29a81d710 | ||
![]() |
d0b6f9489c | ||
![]() |
4d019067ef | ||
![]() |
ffcf2a040c | ||
![]() |
a222e866fb | ||
![]() |
f4b77e602f | ||
![]() |
b0f5eb0f47 | ||
![]() |
922e893bbf | ||
![]() |
48a1ac71a3 | ||
![]() |
5c564faf6b | ||
![]() |
6c4af9bc71 | ||
![]() |
fc46e4ae79 | ||
![]() |
78f60b866e | ||
![]() |
cb0d9b8633 | ||
![]() |
cbd3a5bff6 | ||
![]() |
0310187c8e | ||
![]() |
ba66550c2c | ||
![]() |
5ff141ded3 | ||
![]() |
de5619e580 | ||
![]() |
8dfb6e7667 | ||
![]() |
e722fc6cca | ||
![]() |
c9bbc14ee2 | ||
![]() |
54e787a6c5 | ||
![]() |
92f7d5d9f5 | ||
![]() |
fed3f8623c | ||
![]() |
bd9f68e0c0 | ||
![]() |
c32c16d932 | ||
![]() |
d8797fceb2 | ||
![]() |
996c292916 | ||
![]() |
ac7bf6a007 | ||
![]() |
aaee7c44ea | ||
![]() |
71c20bdf98 | ||
![]() |
e9f938fb4b | ||
![]() |
e180e3dbd0 | ||
![]() |
a5f6e689fa | ||
![]() |
10711097a6 | ||
![]() |
c458363d5b | ||
![]() |
bbff11bc71 | ||
![]() |
ff67caa61d | ||
![]() |
c785d4c59c | ||
![]() |
43c86ea74c | ||
![]() |
ed4ab842a5 | ||
![]() |
cc498fad22 | ||
![]() |
614be445a4 | ||
![]() |
bdb1e65dfd | ||
![]() |
9d85ddafaa | ||
![]() |
b1c90ceed2 | ||
![]() |
863abd3a70 | ||
![]() |
45e3b9e22b | ||
![]() |
779fd3fa3a | ||
![]() |
d9c825a7de | ||
![]() |
a0244dc60d | ||
![]() |
5ca57e292c | ||
![]() |
c494973e16 | ||
![]() |
a9e0fca099 | ||
![]() |
dd8299d10a | ||
![]() |
68cfdedc45 | ||
![]() |
5f64f9e651 | ||
![]() |
c17620ce54 | ||
![]() |
aadb3be0ea | ||
![]() |
554a976649 | ||
![]() |
72ec61c302 | ||
![]() |
5b391fe52e | ||
![]() |
e133a7746d | ||
![]() |
96d3393437 | ||
![]() |
14b520a498 | ||
![]() |
22eb216a3d | ||
![]() |
7e35a5cfb5 | ||
![]() |
2d573da55e | ||
![]() |
6c77a913ff | ||
![]() |
445b21c03d | ||
![]() |
9ebe42d9af | ||
![]() |
a5587120e0 | ||
![]() |
a22ebf0731 | ||
![]() |
f42a635555 | ||
![]() |
232fa448ca | ||
![]() |
3b6bf10f6a | ||
![]() |
6f42c30abe | ||
![]() |
52d5a389bf | ||
![]() |
5ee55ba672 | ||
![]() |
4332bf3b95 | ||
![]() |
818ebd1d85 | ||
![]() |
e03d6dd3fd | ||
![]() |
bcfc6c43a2 | ||
![]() |
11ff76d15b | ||
![]() |
a94bcdf40c | ||
![]() |
c29fdc99ea | ||
![]() |
430aa1c6fd | ||
![]() |
b9406728d3 | ||
![]() |
08cbf24b38 | ||
![]() |
c3cae9e960 | ||
![]() |
1bbc73343c | ||
![]() |
dfcabbe9b4 | ||
![]() |
b0755d3834 | ||
![]() |
4cb7f3a105 | ||
![]() |
960d733c76 | ||
![]() |
051439abde | ||
![]() |
4b8c22d88b | ||
![]() |
35ecb5ef31 | ||
![]() |
f5132f33fb | ||
![]() |
e5edc96919 | ||
![]() |
189ff89fd3 | ||
![]() |
95cd749e3b | ||
![]() |
bf4a9a7509 | ||
![]() |
7c047319d2 | ||
![]() |
059f4e5116 | ||
![]() |
59c8598b94 | ||
![]() |
c02505fe13 | ||
![]() |
5d718c4ce4 | ||
![]() |
af5212e2c6 | ||
![]() |
76c749d31a | ||
![]() |
3461dd1481 | ||
![]() |
994fbf8d97 | ||
![]() |
2e40d34e01 | ||
![]() |
bc64f3874f | ||
![]() |
a4edeb5b49 | ||
![]() |
4510bc64d6 | ||
![]() |
e4aa905440 | ||
![]() |
faa9b2f763 | ||
![]() |
76512840e3 | ||
![]() |
aef6c2ac48 | ||
![]() |
14f4dfc12a | ||
![]() |
b06edc0dd9 | ||
![]() |
863d087ae8 | ||
![]() |
413c2819fb | ||
![]() |
cde7e77aea | ||
![]() |
fa0a65f2e7 | ||
![]() |
5649faf085 | ||
![]() |
dbe0124266 | ||
![]() |
3ebf3fdb67 | ||
![]() |
3b426fa0cf | ||
![]() |
37e8ee66bd | ||
![]() |
1d220623ff | ||
![]() |
3219722c64 | ||
![]() |
42c04ca3da | ||
![]() |
e7110d3dbe | ||
![]() |
4ef3ecf0d9 | ||
![]() |
7bdf52eab6 | ||
![]() |
0bdd8dce6c | ||
![]() |
4a7403e929 | ||
![]() |
bd7108e7df | ||
![]() |
ed82f7d459 | ||
![]() |
b5323b00ad | ||
![]() |
4d4c2fd676 | ||
![]() |
787ea8c20d | ||
![]() |
d69d56850f | ||
![]() |
b769fbb8fe | ||
![]() |
7bf77d1d57 | ||
![]() |
2d8f8be70b | ||
![]() |
afb22905f9 | ||
![]() |
15f733cd81 | ||
![]() |
2912e7c833 | ||
![]() |
4f88923d10 | ||
![]() |
7eaa083c61 | ||
![]() |
f3a5ecd76b | ||
![]() |
438b232ede | ||
![]() |
9d76fc8761 | ||
![]() |
1cd57e08c0 | ||
![]() |
87b0ff952c | ||
![]() |
22043a0bf0 | ||
![]() |
fe880279c9 | ||
![]() |
9c26c5aba8 | ||
![]() |
21b2ffb49a | ||
![]() |
1b8e850f03 | ||
![]() |
bf52a194c8 | ||
![]() |
ab2e0c03b8 | ||
![]() |
800a46caca | ||
![]() |
e4dcbccce7 | ||
![]() |
ede39f37e6 | ||
![]() |
7211024602 | ||
![]() |
04599adfcc | ||
![]() |
01a63d0c70 | ||
![]() |
fafde6562a | ||
![]() |
843a383078 | ||
![]() |
379b1ca292 | ||
![]() |
36063ebdcd | ||
![]() |
05969ffeb6 | ||
![]() |
7ade6ec0e0 | ||
![]() |
f355828240 | ||
![]() |
3159536fb5 | ||
![]() |
2e3aa4865e | ||
![]() |
630d1a89c8 | ||
![]() |
9f3a14a673 | ||
![]() |
fbc088225c | ||
![]() |
dcd9e0b94f | ||
![]() |
617a2c89cd | ||
![]() |
de8a049e93 | ||
![]() |
4f6e6e0e39 | ||
![]() |
f790e13f14 | ||
![]() |
f1a18bb112 | ||
![]() |
4725b936c0 | ||
![]() |
fe631c21d5 | ||
![]() |
1647dc78a2 | ||
![]() |
b05dd8f8a0 | ||
![]() |
b7db0edf41 | ||
![]() |
c49769a678 | ||
![]() |
359af36098 | ||
![]() |
3cad9e9629 | ||
![]() |
dcaf5a1636 | ||
![]() |
d9a95b9a8f | ||
![]() |
d502555428 | ||
![]() |
37ee485140 | ||
![]() |
4cf7827df9 | ||
![]() |
bd25205ad5 | ||
![]() |
85c6de8d2a | ||
![]() |
1dc3122bd3 | ||
![]() |
424bcd8161 | ||
![]() |
d38174483f | ||
![]() |
eefb7220d1 | ||
![]() |
035568d81f | ||
![]() |
14c5425276 | ||
![]() |
564e3b5b82 | ||
![]() |
d7cd0ab2c4 | ||
![]() |
71d542f62b | ||
![]() |
473776c0f7 | ||
![]() |
193e1598b0 | ||
![]() |
6846b83985 | ||
![]() |
7eebce2fde | ||
![]() |
a5787a77f3 | ||
![]() |
a60816ee2a | ||
![]() |
8f7b8506a6 | ||
![]() |
41dd9b684e | ||
![]() |
b9d343962f | ||
![]() |
329becfff6 | ||
![]() |
0ff30f0a58 | ||
![]() |
10721816f3 | ||
![]() |
c7e22d5d84 | ||
![]() |
2681955405 | ||
![]() |
81930a0e9c | ||
![]() |
9c202c84c1 | ||
![]() |
2e8daaf9c2 | ||
![]() |
bafd5bb012 | ||
![]() |
2246cb1c91 | ||
![]() |
6df8a4b5bc | ||
![]() |
c35494cbcf | ||
![]() |
53570aba42 | ||
![]() |
0c10aebe3e | ||
![]() |
520f4a1598 | ||
![]() |
b4df509523 | ||
![]() |
bd5bb1282f | ||
![]() |
d9980d1c9f | ||
![]() |
9e02951276 | ||
![]() |
3ea87ba79e | ||
![]() |
795edae41e | ||
![]() |
a9e86c84e4 | ||
![]() |
644aab3ed0 | ||
![]() |
5ae2cc8989 | ||
![]() |
0992236bb6 | ||
![]() |
0c916dc3b9 | ||
![]() |
26a15abfd4 | ||
![]() |
b73f16f09a | ||
![]() |
6508c86dca | ||
![]() |
02e51fc828 | ||
![]() |
d4791df40b | ||
![]() |
9de1e518d8 | ||
![]() |
8c539fa4f4 | ||
![]() |
41829a1bd9 | ||
![]() |
503a7531ef | ||
![]() |
87cd7da948 | ||
![]() |
fa72ba1719 | ||
![]() |
a140fa19e9 | ||
![]() |
dadbab9708 | ||
![]() |
6681e0d39b | ||
![]() |
6ae26931b0 | ||
![]() |
dbf14a5071 | ||
![]() |
50a06d19d4 | ||
![]() |
f8f9d55a53 | ||
![]() |
5e23e8a8b4 | ||
![]() |
cf6c72df08 | ||
![]() |
5da6922894 | ||
![]() |
cf0d35f7c9 | ||
![]() |
f1c1169d42 | ||
![]() |
00ee15236f | ||
![]() |
873bcbc24d | ||
![]() |
ad4f43d46d | ||
![]() |
3a2b027019 | ||
![]() |
313c1161ff | ||
![]() |
cb6e77ac51 | ||
![]() |
a1453aebbd | ||
![]() |
a546d053ae | ||
![]() |
160a449086 | ||
![]() |
bb56066857 | ||
![]() |
65b178e594 | ||
![]() |
73e05b6582 | ||
![]() |
019c676182 | ||
![]() |
2357ea5027 | ||
![]() |
e29c70edd2 | ||
![]() |
016d8eb806 | ||
![]() |
84aed3a780 | ||
![]() |
44c31582da | ||
![]() |
54145170c9 | ||
![]() |
45d0dac197 | ||
![]() |
6a983664fb | ||
![]() |
c6fd3c9c0b | ||
![]() |
26705f20e0 | ||
![]() |
06602ffaa2 | ||
![]() |
c6050a2246 | ||
![]() |
2961aeed08 | ||
![]() |
8023190d4d | ||
![]() |
65f6bf862b | ||
![]() |
6d3b20062e | ||
![]() |
af98bb7758 | ||
![]() |
2ea30c98aa | ||
![]() |
096d1f305c | ||
![]() |
bf723e0251 | ||
![]() |
0d8bede377 | ||
![]() |
6a19315350 | ||
![]() |
9f50343a8f | ||
![]() |
66ffbf1c9a | ||
![]() |
490a6822d4 | ||
![]() |
3565b77557 | ||
![]() |
667321e728 | ||
![]() |
0e57c961c8 | ||
![]() |
da36c5e375 | ||
![]() |
9e251af4a7 | ||
![]() |
1bbac89727 | ||
![]() |
6b20c47f06 | ||
![]() |
22ffac163d | ||
![]() |
8b4bed667c | ||
![]() |
83f71e446e | ||
![]() |
100223ae56 | ||
![]() |
08fe9a5cc7 | ||
![]() |
14ff60b6ad | ||
![]() |
c08c235be3 | ||
![]() |
06638a06f7 | ||
![]() |
264496925f | ||
![]() |
a840822c78 | ||
![]() |
ba71697278 | ||
![]() |
811d925400 | ||
![]() |
76fa8435cf | ||
![]() |
24a1c3e1c2 | ||
![]() |
0e63b1705e | ||
![]() |
80136189b1 | ||
![]() |
b0e7e8cb0d | ||
![]() |
68cbdd9465 | ||
![]() |
84d82c7c4e | ||
![]() |
69e6e4fccd | ||
![]() |
40949076d6 | ||
![]() |
34b54b38d3 | ||
![]() |
00d74ae459 | ||
![]() |
6c335507a5 | ||
![]() |
ef5ef77cbd | ||
![]() |
1c580faab8 | ||
![]() |
9d3fd17c18 | ||
![]() |
d4bbe0fa7b | ||
![]() |
977a2a81dd | ||
![]() |
3350a64a44 | ||
![]() |
7c68779e98 | ||
![]() |
a5e7bd6212 | ||
![]() |
79c0402c70 | ||
![]() |
8ec5473b97 | ||
![]() |
daf4bd48b2 | ||
![]() |
7b75bc8748 | ||
![]() |
150f2fe685 | ||
![]() |
10805c9abb | ||
![]() |
2609cfa754 | ||
![]() |
1be24abb4b | ||
![]() |
8fa89ae960 | ||
![]() |
b8682d9612 | ||
![]() |
06b51725b0 | ||
![]() |
54b34d86b7 | ||
![]() |
b098cff025 | ||
![]() |
e1ef0e4771 | ||
![]() |
a478f7f989 | ||
![]() |
849754a78f | ||
![]() |
af263d931b | ||
![]() |
1eca3d893f | ||
![]() |
7bfe75b859 | ||
![]() |
163668d031 | ||
![]() |
822cafbaad | ||
![]() |
76f264c7c2 | ||
![]() |
04381ea1b0 | ||
![]() |
044bef2266 | ||
![]() |
5e2075e901 | ||
![]() |
380f9f4a7b | ||
![]() |
6b601a7be6 | ||
![]() |
08df5e69ac | ||
![]() |
866b90a884 | ||
![]() |
46fdd7dcc1 | ||
![]() |
41020b7565 | ||
![]() |
1f6e24c192 | ||
![]() |
faecb40361 | ||
![]() |
0c925aef25 | ||
![]() |
195148c1c9 | ||
![]() |
c468c8ba96 | ||
![]() |
831a75a774 | ||
![]() |
d9313efa3e | ||
![]() |
ad95eed29f | ||
![]() |
15a79848af | ||
![]() |
985133748e | ||
![]() |
c6a78fe978 | ||
![]() |
028bd529cf | ||
![]() |
7d10943d84 | ||
![]() |
5b8041a62a | ||
![]() |
306839e274 | ||
![]() |
a7cf75980f | ||
![]() |
7cab991702 | ||
![]() |
374b0f7e2e | ||
![]() |
851de67432 | ||
![]() |
0ff12624ea | ||
![]() |
ff93f63630 | ||
![]() |
cb83aca94a | ||
![]() |
c1c616e431 | ||
![]() |
8f893d0cf5 | ||
![]() |
6605249b2a | ||
![]() |
aab319623c | ||
![]() |
00b8d3443d | ||
![]() |
700d1e9357 | ||
![]() |
f7612bd61a | ||
![]() |
f1134c50c1 | ||
![]() |
9873e66430 | ||
![]() |
fa871a586b | ||
![]() |
165bed9101 | ||
![]() |
2ec8175a3e | ||
![]() |
6e6aef15cb | ||
![]() |
7609e718af | ||
![]() |
34acabd43c | ||
![]() |
0a3ee66633 | ||
![]() |
00fb5c24f9 | ||
![]() |
4752eae590 | ||
![]() |
a44d6c129f | ||
![]() |
abefe733a6 | ||
![]() |
a1b2406c27 | ||
![]() |
31797a564e | ||
![]() |
0949b9f25d | ||
![]() |
0b408f4001 | ||
![]() |
02ddf51b4e | ||
![]() |
cf2ef5528d | ||
![]() |
d206509c19 | ||
![]() |
629813bce2 | ||
![]() |
17be7d83ed | ||
![]() |
e461dd9927 | ||
![]() |
d0a0c822ca | ||
![]() |
8c69add93f | ||
![]() |
2bf2bc10b0 | ||
![]() |
040db36477 | ||
![]() |
a8178bb16f | ||
![]() |
b199007543 | ||
![]() |
faeec9bc32 | ||
![]() |
cc276bd3c6 | ||
![]() |
9e88f80d13 | ||
![]() |
b1d88a1ffb | ||
![]() |
2fbc627fbb | ||
![]() |
c2ed555ec3 | ||
![]() |
7728fc6cda | ||
![]() |
bf3511467e | ||
![]() |
e9fe95dacd | ||
![]() |
7dab354bc1 | ||
![]() |
7636a1f015 | ||
![]() |
e302828f17 | ||
![]() |
6ada0bb2aa | ||
![]() |
37adddc0ed | ||
![]() |
7ef180fe7e | ||
![]() |
80e99b649d | ||
![]() |
762b18ff1e | ||
![]() |
9f3b50d84a | ||
![]() |
a132748dc2 | ||
![]() |
69d2696666 | ||
![]() |
4d6c2c3650 | ||
![]() |
3ce32d6516 | ||
![]() |
1590ea7944 | ||
![]() |
acf057acc5 | ||
![]() |
54395acd2a | ||
![]() |
0fe51f1a73 | ||
![]() |
379e74b8b1 | ||
![]() |
18baa341fc | ||
![]() |
dd86acde88 | ||
![]() |
cda31c11e9 | ||
![]() |
753a34eebf | ||
![]() |
13b78a8fc1 | ||
![]() |
a374ab186a | ||
![]() |
74e3407a42 | ||
![]() |
3e5742be0d | ||
![]() |
881f556534 | ||
![]() |
5ce28c0136 | ||
![]() |
74f304ef18 | ||
![]() |
467b444535 | ||
![]() |
0fc27c755e | ||
![]() |
cf9b266bca | ||
![]() |
ced7d3c4a6 | ||
![]() |
e78fa3f544 | ||
![]() |
dfa316831f | ||
![]() |
668124e1d0 | ||
![]() |
9eb70c3b79 | ||
![]() |
94463e9fa5 | ||
![]() |
1522afd6ca | ||
![]() |
01e8d7f495 | ||
![]() |
d8db68a92d | ||
![]() |
2dc6b1109e | ||
![]() |
200d74d14c | ||
![]() |
fa601a6aaa | ||
![]() |
1cf4458cd9 | ||
![]() |
385a275337 | ||
![]() |
b1be94a29d | ||
![]() |
7ca9ba00b5 | ||
![]() |
8f909cf418 | ||
![]() |
76c84c605d | ||
![]() |
2195a9804e | ||
![]() |
ba289ca71f | ||
![]() |
604ac5dd49 | ||
![]() |
98b2c582f2 | ||
![]() |
2ab5f5f9d9 | ||
![]() |
85b97d790a | ||
![]() |
b07f2ebbd6 | ||
![]() |
2cbf882258 | ||
![]() |
27d0d6805f | ||
![]() |
649bc32b1f | ||
![]() |
504737f4ea | ||
![]() |
10eae96486 | ||
![]() |
dd9124a99a | ||
![]() |
7b836d1232 | ||
![]() |
00e0892c31 | ||
![]() |
c44b844770 | ||
![]() |
2cdb14c184 | ||
![]() |
912aeba7b4 | ||
![]() |
10aad8c6ed | ||
![]() |
296cb9c44f | ||
![]() |
619d54ddc6 | ||
![]() |
c0923fbe0a | ||
![]() |
689789f2e9 | ||
![]() |
2eaf348eda | ||
![]() |
1f25a3c502 | ||
![]() |
4d9d8be4a4 | ||
![]() |
7bf5aa2015 | ||
![]() |
c2762c4eb9 | ||
![]() |
f5f3792165 | ||
![]() |
212e6e4bf8 | ||
![]() |
ca6f7c0b3a | ||
![]() |
70df8829fb | ||
![]() |
b586880d44 | ||
![]() |
758a5cc44a | ||
![]() |
985a3f433c | ||
![]() |
95545dcec9 | ||
![]() |
541d2f7baa | ||
![]() |
b5566038e2 | ||
![]() |
bcf8b190d7 | ||
![]() |
3ad9874ded | ||
![]() |
32ef547349 | ||
![]() |
9ad90e7298 | ||
![]() |
f2a8c3665d | ||
![]() |
98e97585e1 | ||
![]() |
fcb95175de | ||
![]() |
63bf09bc3c | ||
![]() |
b39570d9e5 | ||
![]() |
d83908bcff | ||
![]() |
a7f6a1ef4f | ||
![]() |
f849bc0a1a | ||
![]() |
dd5d8dce77 | ||
![]() |
82f933af93 | ||
![]() |
52485459a9 | ||
![]() |
6a4e81d1a1 | ||
![]() |
9b3afb58cd | ||
![]() |
802a7300e0 | ||
![]() |
87ca7d2d73 | ||
![]() |
1cdb0404fd | ||
![]() |
09b3197aa4 | ||
![]() |
4fe83e8f25 | ||
![]() |
b8361cc8ea | ||
![]() |
ac37939c6e | ||
![]() |
81a2b5b874 | ||
![]() |
094295ba93 | ||
![]() |
7bea297965 | ||
![]() |
378ea1cab1 | ||
![]() |
f22e1f6503 | ||
![]() |
0345322c06 | ||
![]() |
61cf75f84c | ||
![]() |
866b9d74ef | ||
![]() |
d5bbcd0617 | ||
![]() |
78fa236bec | ||
![]() |
35fb5f510e | ||
![]() |
cc340432ba | ||
![]() |
d87315da49 | ||
![]() |
bf4e47f8fb | ||
![]() |
162a98fd1b | ||
![]() |
a6aeafa668 | ||
![]() |
31bd7b14dd | ||
![]() |
ab793ff424 | ||
![]() |
043755c1a0 | ||
![]() |
42a0140d8d | ||
![]() |
ed923b73cc | ||
![]() |
06adcdbcb6 | ||
![]() |
7f4265dfe4 | ||
![]() |
cd3a09d26b | ||
![]() |
09585654ee | ||
![]() |
67bc214cc9 | ||
![]() |
4cef2dd304 | ||
![]() |
c313c95c81 | ||
![]() |
7427fa0017 | ||
![]() |
10c10523f1 | ||
![]() |
21c537f000 | ||
![]() |
4920433736 | ||
![]() |
57e2c4af0a | ||
![]() |
9652725e84 | ||
![]() |
21635d9d63 | ||
![]() |
c7845a8e8f | ||
![]() |
c0aa1664cb | ||
![]() |
f72e38fd54 | ||
![]() |
d39ae862d6 | ||
![]() |
00d0eb8fc8 | ||
![]() |
80866de5fe | ||
![]() |
3dbb8a9bc2 | ||
![]() |
a47edaefaa | ||
![]() |
0c7dbbc2c6 | ||
![]() |
45515149e0 | ||
![]() |
b8da76745d | ||
![]() |
7d55d670ee | ||
![]() |
a74ec9650c | ||
![]() |
fdb5627da6 | ||
![]() |
60687d6b03 | ||
![]() |
dd68add538 | ||
![]() |
ea34bec55a | ||
![]() |
3def55d48b | ||
![]() |
5c4c3e6fb2 | ||
![]() |
c0d101aef0 | ||
![]() |
cc022ddd2f | ||
![]() |
511ca88aec | ||
![]() |
9217e32439 | ||
![]() |
2444bb04fc | ||
![]() |
c502719bd7 | ||
![]() |
d3a9ec4b3c | ||
![]() |
8a646bcc95 | ||
![]() |
92959769df | ||
![]() |
e4d56fd7d9 | ||
![]() |
b77f864668 | ||
![]() |
e02a44b20b | ||
![]() |
eb2d91256f | ||
![]() |
ff9876ebac | ||
![]() |
d6ddb542e9 | ||
![]() |
8ba6ba14e8 | ||
![]() |
6c58c9d61c | ||
![]() |
6f0609dd8c | ||
![]() |
ebba41c735 | ||
![]() |
65e040d987 | ||
![]() |
29a85db998 | ||
![]() |
d50a745e95 | ||
![]() |
a5854174c7 | ||
![]() |
5ef37aa079 | ||
![]() |
4c622d1429 | ||
![]() |
5593e7c437 | ||
![]() |
940bbae367 | ||
![]() |
4d8558929c | ||
![]() |
c05547248f | ||
![]() |
1a5e788476 | ||
![]() |
0af7b8b5b6 | ||
![]() |
95e444c31c | ||
![]() |
b011ad3de9 | ||
![]() |
ff188e0e1c | ||
![]() |
5ef88531d2 | ||
![]() |
410c875151 | ||
![]() |
bbad093d64 | ||
![]() |
e7103f1d87 | ||
![]() |
d9c3973b9d | ||
![]() |
d65681505d | ||
![]() |
739eff84f2 | ||
![]() |
d5e7d0c36f | ||
![]() |
90ca6ea99a | ||
![]() |
fdb4696066 | ||
![]() |
22a5dcddf3 | ||
![]() |
47ba86f211 | ||
![]() |
e2e7756649 | ||
![]() |
85b605db14 | ||
![]() |
cf48a52949 | ||
![]() |
dfde0f4baa | ||
![]() |
31b41329f2 | ||
![]() |
f856d9db6d | ||
![]() |
4187e20fbc | ||
![]() |
54b4f6e932 | ||
![]() |
bcabada80e | ||
![]() |
5c1decc77b | ||
![]() |
04af43909e | ||
![]() |
e808443631 | ||
![]() |
a47023e0f3 | ||
![]() |
ae9c99c7bc | ||
![]() |
187688e6ea | ||
![]() |
7854e26823 | ||
![]() |
d38eb962de | ||
![]() |
b2c2a134b0 | ||
![]() |
4874b4a1cd | ||
![]() |
983e85033f | ||
![]() |
38e6f075f4 | ||
![]() |
4146ad0936 | ||
![]() |
cf2435081a | ||
![]() |
e6f8eede34 | ||
![]() |
72f76608b6 | ||
![]() |
4eb07c762a | ||
![]() |
bbb4b64940 | ||
![]() |
cac80a2985 | ||
![]() |
ca1a63dbf1 | ||
![]() |
31fb9296c7 | ||
![]() |
7dd3e08409 | ||
![]() |
b537e5566a | ||
![]() |
5dd2a90f46 | ||
![]() |
034f351ac6 | ||
![]() |
195b215f5b | ||
![]() |
74d1385566 | ||
![]() |
957fe60a3d | ||
![]() |
5ac6cf4465 | ||
![]() |
29d9c85923 | ||
![]() |
78729d44de | ||
![]() |
483bee452e | ||
![]() |
8a87e3a0af | ||
![]() |
07283e1050 | ||
![]() |
1eaf6e49ef | ||
![]() |
c40d56b3b8 | ||
![]() |
ed7ad501b7 | ||
![]() |
964e0733b1 | ||
![]() |
c319a83d58 | ||
![]() |
4589c543da | ||
![]() |
0c3930425a | ||
![]() |
2f790586b2 | ||
![]() |
7d3b47f4f6 | ||
![]() |
69a1e0f1b9 | ||
![]() |
f78ad97710 | ||
![]() |
984e29f4cd | ||
![]() |
72c535b039 | ||
![]() |
000c41038d | ||
![]() |
776c9f69d5 | ||
![]() |
b38acdd8be | ||
![]() |
c8ad6cb70e | ||
![]() |
bb6113f221 | ||
![]() |
83d91ea38c | ||
![]() |
481687bdab | ||
![]() |
47f91322f6 | ||
![]() |
4549ac3671 | ||
![]() |
7ec8523c95 | ||
![]() |
1bd8f37381 | ||
![]() |
fa7a0ac661 | ||
![]() |
8f800f5134 | ||
![]() |
9cdfc864b3 | ||
![]() |
b2b3fb0b07 | ||
![]() |
c92931e005 | ||
![]() |
7c82ce5c23 | ||
![]() |
f36613e7e8 | ||
![]() |
71c131032b | ||
![]() |
81a8715b7b | ||
![]() |
5599000d33 | ||
![]() |
8cdf09daa0 | ||
![]() |
fc6a70162b | ||
![]() |
bc109d33c8 | ||
![]() |
9f10b74af5 | ||
![]() |
a65753d9a0 | ||
![]() |
234f116964 | ||
![]() |
6b34aa9d3d | ||
![]() |
3939aa8809 | ||
![]() |
de5f73a9e6 | ||
![]() |
26a9e255c1 | ||
![]() |
b50ed3a2d5 | ||
![]() |
0900c27d2b | ||
![]() |
ae723290d7 | ||
![]() |
1834fe2177 | ||
![]() |
3d6707fe21 | ||
![]() |
7e3eba280b | ||
![]() |
cba262e090 | ||
![]() |
b187c9383b | ||
![]() |
e7013c4db4 | ||
![]() |
1b5881c0fb | ||
![]() |
66d8d4bd71 | ||
![]() |
552a3c3cac | ||
![]() |
fb58c42938 | ||
![]() |
7a4a7681b9 | ||
![]() |
5a3a383cde | ||
![]() |
5943be1b39 | ||
![]() |
136993f203 | ||
![]() |
afc3eb7ee6 | ||
![]() |
c073febc29 | ||
![]() |
85842227aa | ||
![]() |
66ac0b9812 | ||
![]() |
3c2d617771 | ||
![]() |
03c0e70173 | ||
![]() |
f65888f5f4 | ||
![]() |
0f0cc0e03a | ||
![]() |
d7fe28886c | ||
![]() |
1d017d1dea | ||
![]() |
1479679cb6 | ||
![]() |
8c6b26b6f9 | ||
![]() |
3783625818 | ||
![]() |
0a5e803550 | ||
![]() |
a8980ae3ef | ||
![]() |
02fe8a0d0b | ||
![]() |
5700c61b17 | ||
![]() |
21930a9bf9 | ||
![]() |
e044f7d547 | ||
![]() |
1e4dea86bb | ||
![]() |
e737c55c74 | ||
![]() |
2c4cb2edd5 | ||
![]() |
ca6f3d882c | ||
![]() |
eea7e43ff8 | ||
![]() |
dec1fdd369 | ||
![]() |
01ec0092a2 | ||
![]() |
8af7418f3f | ||
![]() |
4589a22790 | ||
![]() |
15ecc5b8d4 | ||
![]() |
6c25279107 | ||
![]() |
979760a841 | ||
![]() |
c52853251d | ||
![]() |
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 |
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.patch linguist-language=C++
|
2
.github/FUNDING.yml
vendored
@@ -1,2 +1,2 @@
|
|||||||
|
|
||||||
patreon: zen_browser
|
patreon: zen_browser
|
||||||
|
ko_fi: zen_browser
|
||||||
|
31
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,10 +1,24 @@
|
|||||||
name: Bug Report Or Feature Request
|
name: Bug Report
|
||||||
description: File a bug report
|
description: File a bug report
|
||||||
body:
|
body:
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
Thank you for filing a bug report.
|
Thank you for filing a bug report.
|
||||||
|
|
||||||
|
## Important
|
||||||
|
- Please search existing issues to avoid creating duplicates.
|
||||||
|
- For enhancement requests, please use GitHub Discussions.
|
||||||
|
- Please fill out the template below to the best of your ability.
|
||||||
|
- type: checkboxes
|
||||||
|
id: captchas
|
||||||
|
attributes:
|
||||||
|
label: Captchas
|
||||||
|
description: Just making sure you did actually read the instructions.
|
||||||
|
options:
|
||||||
|
- label: I have read the instructions.
|
||||||
|
- label: I have searched existing issues and avoided creating duplicates.
|
||||||
|
- label: I am not filing an enhancement request.
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: what-happened
|
id: what-happened
|
||||||
attributes:
|
attributes:
|
||||||
@@ -28,21 +42,6 @@ body:
|
|||||||
placeholder: 1.0.0
|
placeholder: 1.0.0
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
|
||||||
id: severity
|
|
||||||
attributes:
|
|
||||||
label: Severity impact
|
|
||||||
description: See label descriptions for more information.
|
|
||||||
options:
|
|
||||||
- Low
|
|
||||||
- Medium
|
|
||||||
- High
|
|
||||||
- Critical
|
|
||||||
- Enhancement
|
|
||||||
multiple: true
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: platform
|
id: platform
|
||||||
attributes:
|
attributes:
|
||||||
|
32
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -1,32 +0,0 @@
|
|||||||
name: Feature Request
|
|
||||||
description: File a feature request
|
|
||||||
labels:
|
|
||||||
- "kind: enhancement"
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Thank you for filing a feature request.
|
|
||||||
- type: textarea
|
|
||||||
id: what-happened
|
|
||||||
attributes:
|
|
||||||
label: What feature would you like to see?
|
|
||||||
description: Please describe the feature you would like to see.
|
|
||||||
placeholder: Tell us what you would like to see!
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: dropdown
|
|
||||||
id: platform
|
|
||||||
attributes:
|
|
||||||
label: What platform are you seeing the problem on?
|
|
||||||
options:
|
|
||||||
- Linux
|
|
||||||
- macOS
|
|
||||||
- Windows
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: logs
|
|
||||||
attributes:
|
|
||||||
label: Additional context
|
|
||||||
description: Add any other context about the feature request here.
|
|
18
.github/advanced-issue-labeler.yml
vendored
@@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
# Keep up to date with workflows/issue-create.yml !!!
|
|
||||||
|
|
||||||
policy:
|
|
||||||
- section:
|
|
||||||
- id: [severity]
|
|
||||||
label:
|
|
||||||
- name: 'kind: low severity'
|
|
||||||
keys: ['Low']
|
|
||||||
- name: 'kind: medium severity'
|
|
||||||
keys: ['Medium']
|
|
||||||
- name: 'kind: high severity'
|
|
||||||
keys: ['High']
|
|
||||||
- name: 'kind: critical severity'
|
|
||||||
keys: ['Critical']
|
|
||||||
- name: 'kind: enhancement'
|
|
||||||
keys: ['Enhancement']
|
|
||||||
|
|
437
.github/workflows/alpha.yml
vendored
@@ -1,437 +0,0 @@
|
|||||||
name: Zen Alpha builds
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
create_release:
|
|
||||||
description: 'Create a new release for this build'
|
|
||||||
required: false
|
|
||||||
default: false
|
|
||||||
type: 'boolean'
|
|
||||||
update_version:
|
|
||||||
description: 'Update the version number'
|
|
||||||
required: false
|
|
||||||
default: true
|
|
||||||
type: 'boolean'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
build-data:
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
name: Generate build data
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
build_date: ${{ steps.data.outputs.builddate }}
|
|
||||||
version: ${{ steps.data.outputs.version }}
|
|
||||||
steps:
|
|
||||||
- name: Install Node.js
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- 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: Setup Surfer
|
|
||||||
run: |
|
|
||||||
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
|
|
||||||
surfer get version | xargs
|
|
||||||
echo "$(surfer get version | xargs)"
|
|
||||||
|
|
||||||
- name: Export release date
|
|
||||||
id: data
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo "builddate=$(date +"%Y-%m-%d")" >> $GITHUB_OUTPUT
|
|
||||||
echo "version=$(surfer get version | xargs)" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
|
||||||
if: ${{ github.event.inputs.update_version == 'true' }}
|
|
||||||
with:
|
|
||||||
commit_message: 🔖 Update version to ${{ steps.data.outputs.version }}
|
|
||||||
commit_user_name: Zen Browser Robot
|
|
||||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
|
||||||
|
|
||||||
check-release:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [build-data]
|
|
||||||
steps:
|
|
||||||
- name: Install Node.js
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- 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: Setup surfer
|
|
||||||
run: |
|
|
||||||
npm i -g @zen-browser/surfer
|
|
||||||
|
|
||||||
- name: Activate surfer CLI
|
|
||||||
run: |
|
|
||||||
echo "There's a bug in the surfer CLI, we run this so that surfer sets everything up correctly"
|
|
||||||
pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
|
||||||
|
|
||||||
- name: Check version
|
|
||||||
run: |
|
|
||||||
echo "$(pwd)"
|
|
||||||
ls .
|
|
||||||
echo "version=$(pnpm surfer get version | xargs)" >> $GITHUB_OUTPUT
|
|
||||||
if [[ $(pnpm surfer get version | xargs) == ${{ needs.build-data.outputs.version }} ]]; then
|
|
||||||
echo ">>> Version matches"
|
|
||||||
else
|
|
||||||
echo ">>> Version mismatch"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
source:
|
|
||||||
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
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- 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: Get pnpm store directory
|
|
||||||
id: pnpm-cache
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: pnpm install
|
|
||||||
|
|
||||||
- name: Load surfer CI setup
|
|
||||||
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }}
|
|
||||||
|
|
||||||
- name: Download firefox source and dependancies
|
|
||||||
run: pnpm surfer download --verbose
|
|
||||||
|
|
||||||
- name: Import
|
|
||||||
run: pnpm surfer import --verbose
|
|
||||||
|
|
||||||
- name: Compress
|
|
||||||
run: |
|
|
||||||
cd engine
|
|
||||||
# -h is used to dereference symlinks
|
|
||||||
tar --use-compress-program=zstd -hcf ../zen.source.tar.gz *
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: zen.source.tar.gz
|
|
||||||
path: ./zen.source.tar.gz
|
|
||||||
|
|
||||||
#windows-step-1:
|
|
||||||
# name: Windows build step 1 (PGO build)
|
|
||||||
# uses: ./.github/workflows/windows-alpha-build.yml
|
|
||||||
# needs: [build-data]
|
|
||||||
# permissions:
|
|
||||||
# contents: write
|
|
||||||
# with:
|
|
||||||
# build-version: ${{ needs.build-data.outputs.version }}
|
|
||||||
# generate-gpo: true
|
|
||||||
# profile-data-path-archive: zen-windows-x86_64-profile-data-and-jarlog.zip
|
|
||||||
|
|
||||||
#windows-step-2:
|
|
||||||
# name: Windows build step 2 (Generate profile data)
|
|
||||||
# uses: ./.github/workflows/windows-profile-build.yml
|
|
||||||
# permissions:
|
|
||||||
# contents: write
|
|
||||||
# needs: [windows-step-1, build-data]
|
|
||||||
# with:
|
|
||||||
# build-version: ${{ needs.build-data.outputs.version }}
|
|
||||||
# profile-data-path-archive: zen.win64-pgo-stage-1.zip
|
|
||||||
|
|
||||||
windows-step-3:
|
|
||||||
name: Windows build step 3 (build with profile data)
|
|
||||||
uses: ./.github/workflows/windows-alpha-build.yml
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
needs: [build-data]
|
|
||||||
with:
|
|
||||||
build-version: ${{ needs.build-data.outputs.version }}
|
|
||||||
generate-gpo: false
|
|
||||||
|
|
||||||
linux:
|
|
||||||
name: Linux build
|
|
||||||
uses: ./.github/workflows/linux-alpha-build.yml
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
needs: [build-data]
|
|
||||||
with:
|
|
||||||
build-version: ${{ needs.build-data.outputs.version }}
|
|
||||||
|
|
||||||
mac:
|
|
||||||
name: macOS build
|
|
||||||
uses: ./.github/workflows/macos-alpha-build.yml
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
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/checkout@v4
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
npm install -g pnpm
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get -y install libfuse2
|
|
||||||
|
|
||||||
- name: Download linux build
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
|
||||||
|
|
||||||
- name: Execute AppImage build
|
|
||||||
run: |
|
|
||||||
set -eux
|
|
||||||
rm AppDir/.DirIcon || true
|
|
||||||
cp configs/branding/alpha/logo128.png AppDir/usr/share/icons/hicolor/128x128/apps/zen.png
|
|
||||||
cp configs/branding/alpha/logo128.png AppDir/zen.png && ln -s zen.png AppDir/.DirIcon
|
|
||||||
|
|
||||||
APPDIR=AppDir
|
|
||||||
tar -xvf *.tar.* && rm -rf *.tar.*
|
|
||||||
mv zen/* $APPDIR/
|
|
||||||
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
|
|
||||||
chmod +x *.AppImage
|
|
||||||
chmod +x ./AppDir/AppRun
|
|
||||||
echo "AppDir: $APPDIR"
|
|
||||||
ls -al
|
|
||||||
find .
|
|
||||||
ls -al "$APPDIR"
|
|
||||||
ARCH=x86_64 ./appimagetool-x86_64.AppImage --comp gzip "$APPDIR" zen.AppImage
|
|
||||||
mkdir dist
|
|
||||||
mv zen.AppImage* dist/.
|
|
||||||
mv ./dist/zen.AppImage ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
|
||||||
|
|
||||||
- name: Upload artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
|
||||||
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
|
||||||
|
|
||||||
release:
|
|
||||||
if: ${{ github.event.inputs.create_release == 'true' }}
|
|
||||||
permissions: write-all
|
|
||||||
name: Release
|
|
||||||
needs: [build-data, linux, source, windows-step-3, check-release, mac, appimage]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Update repo
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Git Pull
|
|
||||||
run: git pull
|
|
||||||
|
|
||||||
- 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.source.tar.gz
|
|
||||||
zen.linux-generic.tar.bz2
|
|
||||||
zen.linux-specific.tar.bz2
|
|
||||||
zen-generic.AppImage
|
|
||||||
zen-specific.AppImage
|
|
||||||
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
|
|
||||||
|
|
||||||
release-flatpak:
|
|
||||||
if: ${{ github.event.inputs.create_release == 'true' }}
|
|
||||||
permissions: write-all
|
|
||||||
name: Release Flatpak
|
|
||||||
needs: [release, linux, build-data]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Clone flatpak repo
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: flathub/io.github.zen_browser.zen
|
|
||||||
token: ${{ secrets.DEPLOY_KEY }}
|
|
||||||
|
|
||||||
- name: Download linux generic build
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: zen.linux-generic.tar.bz2
|
|
||||||
|
|
||||||
- name: Update repo
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
path: zen-browser
|
|
||||||
token: ${{ secrets.DEPLOY_KEY }}
|
|
||||||
|
|
||||||
- name: Download flatpak archive
|
|
||||||
run: |
|
|
||||||
wget https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar -O archive.tar
|
|
||||||
|
|
||||||
- name: Setup git
|
|
||||||
run: |
|
|
||||||
git config --global user.name "github-actions[bot]"
|
|
||||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
||||||
|
|
||||||
- name: Prepare flatpak manifest
|
|
||||||
run: |
|
|
||||||
python3 ./zen-browser/scripts/prepare-flatpak-release.py \
|
|
||||||
--flatpak-archive archive.tar \
|
|
||||||
--version ${{ needs.build-data.outputs.version }} \
|
|
||||||
--linux-archive zen.linux-generic.tar.bz2 \
|
|
||||||
--output io.github.zen_browser.zen.yml \
|
|
||||||
--template-root ./zen-browser/flatpak
|
|
||||||
|
|
||||||
- name: Commit changes
|
|
||||||
run: |
|
|
||||||
git add io.github.zen_browser.zen.yml
|
|
||||||
git commit -m "Update to version ${{ needs.build-data.outputs.version }}"
|
|
||||||
|
|
||||||
- name: Clean up
|
|
||||||
run: |
|
|
||||||
rm -rf zen-browser
|
|
||||||
rm -rf archive.tar
|
|
||||||
rm -rf zen.linux-generic.tar.bz2
|
|
||||||
|
|
||||||
- name: Upload flatpak manifest
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: io.github.zen_browser.zen.yml
|
|
||||||
path: ./io.github.zen_browser.zen.yml
|
|
||||||
|
|
||||||
- name: Create pull request
|
|
||||||
uses: peter-evans/create-pull-request@v6
|
|
||||||
env:
|
|
||||||
GIT_TRACE: 1
|
|
||||||
GIT_CURL_VERBOSE: 1
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.DEPLOY_KEY }}
|
|
||||||
commit-message: 🚀 Update to version ${{ needs.build-data.outputs.version }}
|
|
||||||
title: 🚀 Update to version ${{ needs.build-data.outputs.version }}
|
|
||||||
body: |
|
|
||||||
This PR updates the Zen Browser Flatpak package to version ${{ needs.build-data.outputs.version }}.
|
|
||||||
|
|
||||||
@mauro-balades
|
|
||||||
branch: update-to-${{ needs.build-data.outputs.version }}
|
|
||||||
base: master
|
|
||||||
git-token: ${{ secrets.DEPLOY_KEY }}
|
|
||||||
delete-branch: true
|
|
||||||
|
|
||||||
|
|
670
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,670 @@
|
|||||||
|
name: Zen Release builds
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
create_release:
|
||||||
|
description: 'Create a new release for this build'
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: 'boolean'
|
||||||
|
update_version:
|
||||||
|
description: 'Update the version number'
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: 'boolean'
|
||||||
|
update_branch:
|
||||||
|
description: 'Update branch with new version'
|
||||||
|
required: true
|
||||||
|
default: 'alpha'
|
||||||
|
type: 'choice'
|
||||||
|
options:
|
||||||
|
- 'alpha'
|
||||||
|
- 'twilight'
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
create_release:
|
||||||
|
description: 'Create a new release for this build'
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: 'boolean'
|
||||||
|
update_version:
|
||||||
|
description: 'Update the version number'
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: 'boolean'
|
||||||
|
update_branch:
|
||||||
|
description: 'Update branch with new version'
|
||||||
|
required: true
|
||||||
|
default: 'alpha'
|
||||||
|
type: 'string'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
debug-inputs:
|
||||||
|
name: Debug inputs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Debug
|
||||||
|
run: |
|
||||||
|
echo "create_release: ${{ inputs.create_release }}"
|
||||||
|
echo "update_version: ${{ inputs.update_version }}"
|
||||||
|
echo "update_branch: ${{ inputs.update_branch }}"
|
||||||
|
echo "GITHUB_REPOSITORY: ${{ github.repository }}"
|
||||||
|
echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}"
|
||||||
|
echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}"
|
||||||
|
echo "GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
|
check-build-is-correct:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [debug-inputs]
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Check if correct branch
|
||||||
|
run: |
|
||||||
|
echo "Checking if we are on the correct branch"
|
||||||
|
git branch
|
||||||
|
git status
|
||||||
|
git branch --show-current
|
||||||
|
branch="${{ inputs.update_branch }}"
|
||||||
|
if [[ $branch == "alpha" ]]; then
|
||||||
|
branch="stable"
|
||||||
|
elif [[ $branch == "twilight" ]]; then
|
||||||
|
branch="dev"
|
||||||
|
fi
|
||||||
|
if [[ $(git branch --show-current) != $branch ]]; then
|
||||||
|
echo ">>> Branch mismatch"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo ">>> Branch matches"
|
||||||
|
fi
|
||||||
|
|
||||||
|
build-data:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
name: Generate build data
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: check-build-is-correct
|
||||||
|
outputs:
|
||||||
|
build_date: ${{ steps.data.outputs.builddate }}
|
||||||
|
version: ${{ steps.data.outputs.version }}
|
||||||
|
build_time: ${{ steps.data.outputs.buildtime }}
|
||||||
|
steps:
|
||||||
|
- 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: 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: Setup Surfer
|
||||||
|
run: |
|
||||||
|
npm i -g @zen-browser/surfer
|
||||||
|
|
||||||
|
- name: Bump version
|
||||||
|
if: ${{ inputs.update_version && inputs.update_branch == 'alpha' }}
|
||||||
|
run: |
|
||||||
|
pnpm surfer ci --brand ${{ inputs.update_branch }} --bump prerelease
|
||||||
|
|
||||||
|
- name: Bump version without new version
|
||||||
|
if: ${{ !inputs.update_version || inputs.update_branch == 'twilight' }}
|
||||||
|
run: |
|
||||||
|
pnpm surfer ci --brand ${{ inputs.update_branch }}
|
||||||
|
|
||||||
|
- name: Debug
|
||||||
|
run: |
|
||||||
|
surfer get version
|
||||||
|
surfer get version | xargs
|
||||||
|
echo "$(surfer get version | xargs)"
|
||||||
|
|
||||||
|
- name: Export release date
|
||||||
|
id: data
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "builddate=$(date +"%Y-%m-%d")" >> $GITHUB_OUTPUT
|
||||||
|
echo "version=$(surfer get version | xargs)" >> $GITHUB_OUTPUT
|
||||||
|
echo "buildtime=$(date +"%H:%M:%S")" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
if: ${{ inputs.update_version }}
|
||||||
|
with:
|
||||||
|
commit_message: 🔖 Update version to ${{ steps.data.outputs.version }}
|
||||||
|
commit_user_name: Zen Browser Robot
|
||||||
|
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||||
|
|
||||||
|
check-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [build-data]
|
||||||
|
steps:
|
||||||
|
- 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: 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: Setup surfer
|
||||||
|
run: |
|
||||||
|
npm i -g @zen-browser/surfer
|
||||||
|
|
||||||
|
- name: Activate surfer CLI
|
||||||
|
run: |
|
||||||
|
echo "There's a bug in the surfer CLI, we run this so that surfer sets everything up correctly"
|
||||||
|
pnpm surfer ci --brand ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }}
|
||||||
|
|
||||||
|
- name: Check version
|
||||||
|
run: |
|
||||||
|
echo "$(pwd)"
|
||||||
|
ls .
|
||||||
|
echo "version=$(pnpm surfer get version | xargs)" >> $GITHUB_OUTPUT
|
||||||
|
if [[ $(pnpm surfer get version | xargs) == ${{ needs.build-data.outputs.version }} ]]; then
|
||||||
|
echo ">>> Version matches"
|
||||||
|
else
|
||||||
|
echo ">>> Version mismatch"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source:
|
||||||
|
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@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 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 ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }}
|
||||||
|
|
||||||
|
- name: Download firefox source and dependancies
|
||||||
|
run: pnpm surfer download --verbose
|
||||||
|
|
||||||
|
- name: Import
|
||||||
|
run: pnpm surfer import --verbose
|
||||||
|
|
||||||
|
- name: Compress
|
||||||
|
run: |
|
||||||
|
cd engine
|
||||||
|
# -h is used to dereference symlinks
|
||||||
|
tar --use-compress-program=zstd -hcf ../zen.source.tar.gz *
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: zen.source.tar.gz
|
||||||
|
path: ./zen.source.tar.gz
|
||||||
|
|
||||||
|
windows-step-1:
|
||||||
|
name: Windows build step 1 (PGO build)
|
||||||
|
uses: ./.github/workflows/windows-release-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
|
||||||
|
release-branch: ${{ inputs.update_branch }}
|
||||||
|
|
||||||
|
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
|
||||||
|
release-branch: ${{ inputs.update_branch }}
|
||||||
|
|
||||||
|
windows-step-3:
|
||||||
|
name: Windows build step 3 (build with profile data)
|
||||||
|
uses: ./.github/workflows/windows-release-build.yml
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
secrets: inherit
|
||||||
|
needs: [build-data, windows-step-2]
|
||||||
|
with:
|
||||||
|
build-version: ${{ needs.build-data.outputs.version }}
|
||||||
|
generate-gpo: false
|
||||||
|
release-branch: ${{ inputs.update_branch }}
|
||||||
|
|
||||||
|
linux:
|
||||||
|
name: Linux build
|
||||||
|
uses: ./.github/workflows/linux-release-build.yml
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
secrets: inherit
|
||||||
|
needs: [build-data]
|
||||||
|
with:
|
||||||
|
build-version: ${{ needs.build-data.outputs.version }}
|
||||||
|
release-branch: ${{ inputs.update_branch }}
|
||||||
|
|
||||||
|
mac:
|
||||||
|
name: macOS build
|
||||||
|
uses: ./.github/workflows/macos-release-build.yml
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
secrets: inherit
|
||||||
|
needs: [build-data]
|
||||||
|
with:
|
||||||
|
build-version: ${{ needs.build-data.outputs.version }}
|
||||||
|
release-branch: ${{ inputs.update_branch }}
|
||||||
|
|
||||||
|
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/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
npm install -g pnpm
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get -y install libfuse2 desktop-file-utils appstream
|
||||||
|
|
||||||
|
- name: Download linux build
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
||||||
|
|
||||||
|
- name: Execute AppImage build
|
||||||
|
run: |
|
||||||
|
set -eux
|
||||||
|
rm AppDir/.DirIcon || true
|
||||||
|
cp configs/branding/${{ inputs.update_branch }}/logo128.png AppDir/usr/share/icons/hicolor/128x128/apps/zen.png
|
||||||
|
cp configs/branding/${{ inputs.update_branch }}/logo128.png AppDir/zen.png && ln -s zen.png AppDir/.DirIcon
|
||||||
|
|
||||||
|
if [ "${{ inputs.update_branch }}" = "twilight" ]; then
|
||||||
|
sed -i -e 's/Name=Zen Browser/Name=Zen Twilight/g' AppDir/zen.desktop
|
||||||
|
sed -i -e 's/StartupWMClass=zen-alpha/StartupWMClass=zen-twilight/g' AppDir/zen.desktop
|
||||||
|
fi
|
||||||
|
|
||||||
|
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@v4
|
||||||
|
with:
|
||||||
|
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
||||||
|
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
||||||
|
|
||||||
|
- name: Upload artifact (ZSync)
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
|
||||||
|
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
|
||||||
|
|
||||||
|
release:
|
||||||
|
if: ${{ inputs.create_release || inputs.update_branch == 'twilight' }}
|
||||||
|
permissions: write-all
|
||||||
|
name: Release
|
||||||
|
needs: [build-data, linux, windows-step-3, check-release, mac, appimage, source]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment:
|
||||||
|
name: ${{ inputs.update_branch == 'alpha' && 'Deploy-Release' || 'Deploy-Twilight' }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
|
- name: Git Pull
|
||||||
|
run: |
|
||||||
|
git pull
|
||||||
|
|
||||||
|
- 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: Download object files
|
||||||
|
run: |
|
||||||
|
git clone https://github.com/zen-browser/windows-binaries.git .github/workflows/object
|
||||||
|
|
||||||
|
- name: Copy update manifests
|
||||||
|
env:
|
||||||
|
RELEASE_BRANCH: ${{ inputs.update_branch }}
|
||||||
|
run: |
|
||||||
|
cd updates-server
|
||||||
|
mkdir -p updates
|
||||||
|
cp -a ../linux_update_manifest_generic/. updates/
|
||||||
|
cp -a ../linux_update_manifest_specific/. updates/
|
||||||
|
|
||||||
|
if [[ $RELEASE_BRANCH == 'alpha' ]]; then
|
||||||
|
cp -a ../.github/workflows/object/windows-x64-signed-generic/update_manifest/. updates/
|
||||||
|
cp -a ../.github/workflows/object/windows-x64-signed-specific/update_manifest/. updates/
|
||||||
|
else
|
||||||
|
cp -a ../windows_update_manifest_generic/. updates/
|
||||||
|
cp -a ../windows_update_manifest_specific/. updates/
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
# If we are on twilight, we want to just update the twilight tag's release
|
||||||
|
- name: Update twilight tag
|
||||||
|
if: ${{ inputs.update_branch == 'twilight' }}
|
||||||
|
uses: 'marvinpinto/action-automatic-releases@latest'
|
||||||
|
with:
|
||||||
|
files: |
|
||||||
|
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-generic.mar
|
||||||
|
windows.mar
|
||||||
|
macos-x64.mar
|
||||||
|
macos-aarch64.mar
|
||||||
|
zen.installer.exe
|
||||||
|
zen.installer-generic.exe
|
||||||
|
zen.macos-x64.dmg
|
||||||
|
zen.macos-aarch64.dmg
|
||||||
|
automatic_release_tag: 'twilight'
|
||||||
|
title: 'Twilight build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }} at ${{ needs.build-data.outputs.build_time }})'
|
||||||
|
draft: false
|
||||||
|
prerelease: true
|
||||||
|
repo_token: ${{ github.token }}
|
||||||
|
env:
|
||||||
|
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||||
|
|
||||||
|
- name: release-github
|
||||||
|
uses: 'marvinpinto/action-automatic-releases@latest'
|
||||||
|
if: ${{ inputs.update_branch == 'alpha' }}
|
||||||
|
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.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
|
||||||
|
.github/workflows/object/windows-x64-signed-generic/zen.win-generic.zip
|
||||||
|
.github/workflows/object/windows-x64-signed-specific/zen.win-specific.zip
|
||||||
|
linux.mar
|
||||||
|
linux-generic.mar
|
||||||
|
.github/workflows/object/windows-x64-signed-generic/windows-generic.mar
|
||||||
|
.github/workflows/object/windows-x64-signed-specific/windows.mar
|
||||||
|
macos-x64.mar
|
||||||
|
macos-aarch64.mar
|
||||||
|
.github/workflows/object/windows-x64-signed-specific/zen.installer.exe
|
||||||
|
.github/workflows/object/windows-x64-signed-generic/zen.installer-generic.exe
|
||||||
|
zen.macos-x64.dmg
|
||||||
|
zen.macos-aarch64.dmg
|
||||||
|
|
||||||
|
prepare-flatpak:
|
||||||
|
if: ${{ inputs.create_release && inputs.update_branch == 'alpha' }}
|
||||||
|
permissions: write-all
|
||||||
|
name: Prepare Flatpak
|
||||||
|
needs: [release, linux, build-data]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Clone flatpak repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: zen-browser/release-utils
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
git pull
|
||||||
|
sudo apt-get update
|
||||||
|
npm install
|
||||||
|
|
||||||
|
- name: Generate new flatpak release
|
||||||
|
run: |
|
||||||
|
npm run build-flatpak -- \
|
||||||
|
--version ${{ needs.build-data.outputs.version }}
|
||||||
|
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: 🚀 Update releases for flatpak
|
||||||
|
commit_user_name: Zen Browser Robot
|
||||||
|
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||||
|
|
||||||
|
- name: Clone flatpak repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: zen-browser/flatpak
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
path: flatpak
|
||||||
|
|
||||||
|
- name: Move releases.xml
|
||||||
|
run: |
|
||||||
|
pwd
|
||||||
|
ls .
|
||||||
|
ls ..
|
||||||
|
mv releases.xml ./flatpak/io.github.zen_browser.zen.metainfo.xml
|
||||||
|
# output the version to the file
|
||||||
|
echo -n ${{ needs.build-data.outputs.version }} > ./flatpak/version
|
||||||
|
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: '[release]: Update flatpak manifest'
|
||||||
|
commit_user_name: Zen Browser Robot
|
||||||
|
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||||
|
repository: ./flatpak
|
||||||
|
|
||||||
|
- name: Wait 4 minutes for the flatpak repo to update
|
||||||
|
run: sleep 240
|
||||||
|
|
||||||
|
release-flatpak:
|
||||||
|
if: ${{ inputs.create_release && inputs.update_branch == 'alpha' }}
|
||||||
|
permissions: write-all
|
||||||
|
name: Release Flatpak
|
||||||
|
needs: [prepare-flatpak, build-data]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Clone flatpak repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: flathub/io.github.zen_browser.zen
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
|
- name: Download linux generic build
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: zen.linux-generic.tar.bz2
|
||||||
|
|
||||||
|
- name: Update repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: zen-browser
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
|
- name: Download flatpak archive
|
||||||
|
run: |
|
||||||
|
wget https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar -O archive.tar
|
||||||
|
|
||||||
|
- name: Setup git
|
||||||
|
run: |
|
||||||
|
git config --global user.name "github-actions[bot]"
|
||||||
|
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
|
||||||
|
- name: Prepare flatpak manifest
|
||||||
|
run: |
|
||||||
|
python3 ./zen-browser/scripts/prepare-flatpak-release.py \
|
||||||
|
--flatpak-archive archive.tar \
|
||||||
|
--version ${{ needs.build-data.outputs.version }} \
|
||||||
|
--linux-archive zen.linux-generic.tar.bz2 \
|
||||||
|
--output io.github.zen_browser.zen.yml \
|
||||||
|
--template-root ./zen-browser/flatpak
|
||||||
|
|
||||||
|
- name: Commit changes
|
||||||
|
run: |
|
||||||
|
git add io.github.zen_browser.zen.yml
|
||||||
|
git commit -m "Update to version ${{ needs.build-data.outputs.version }}"
|
||||||
|
|
||||||
|
- name: Clean up
|
||||||
|
run: |
|
||||||
|
rm -rf zen-browser
|
||||||
|
rm -rf archive.tar
|
||||||
|
rm -rf zen.linux-generic.tar.bz2
|
||||||
|
|
||||||
|
- name: Upload flatpak manifest
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: io.github.zen_browser.zen.yml
|
||||||
|
path: ./io.github.zen_browser.zen.yml
|
||||||
|
|
||||||
|
- name: Create pull request
|
||||||
|
uses: peter-evans/create-pull-request@v6
|
||||||
|
env:
|
||||||
|
GIT_TRACE: 1
|
||||||
|
GIT_CURL_VERBOSE: 1
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
commit-message: 🚀 Update to version ${{ needs.build-data.outputs.version }}
|
||||||
|
title: 🚀 Update to version ${{ needs.build-data.outputs.version }}
|
||||||
|
body: |
|
||||||
|
This PR updates the Zen Browser Flatpak package to version ${{ needs.build-data.outputs.version }}.
|
||||||
|
|
||||||
|
@${{ github.actor }} please review and merge this PR.
|
||||||
|
branch: update-to-${{ needs.build-data.outputs.version }}
|
||||||
|
base: master
|
||||||
|
git-token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
delete-branch: true
|
||||||
|
|
||||||
|
release-homebrew:
|
||||||
|
if: ${{ inputs.create_release && inputs.update_branch == 'alpha' }}
|
||||||
|
permissions: write-all
|
||||||
|
name: Homebrew release
|
||||||
|
needs: [release, mac, build-data]
|
||||||
|
runs-on: macos-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Set up Homebrew
|
||||||
|
uses: Homebrew/actions/setup-homebrew@master
|
||||||
|
with:
|
||||||
|
cask: true
|
||||||
|
test-bot: false
|
||||||
|
|
||||||
|
- name: Setup git
|
||||||
|
uses: Homebrew/actions/git-user-config@master
|
||||||
|
with:
|
||||||
|
username: zen-browser-bot
|
||||||
|
|
||||||
|
- name: Bump zen-browser
|
||||||
|
uses: Homebrew/actions/bump-packages@master
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
casks: zen-browser
|
35
.github/workflows/issue-create.yml
vendored
@@ -1,35 +0,0 @@
|
|||||||
name: Issue labeler
|
|
||||||
on:
|
|
||||||
issues:
|
|
||||||
types: [ opened ]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
label-component:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
# required for all workflows
|
|
||||||
issues: write
|
|
||||||
|
|
||||||
# only required for workflows in private repositories
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Parse issue form
|
|
||||||
uses: stefanbuck/github-issue-parser@v3
|
|
||||||
id: issue-parser
|
|
||||||
with:
|
|
||||||
template-path: .github/ISSUE_TEMPLATE/bug_report.yml
|
|
||||||
|
|
||||||
- name: Set labels based on severity field
|
|
||||||
uses: redhat-plumbers-in-action/advanced-issue-labeler@v3
|
|
||||||
with:
|
|
||||||
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
section: severity
|
|
@@ -1,4 +1,4 @@
|
|||||||
|
name: Linux Release Build
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_call:
|
||||||
inputs:
|
inputs:
|
||||||
@@ -6,9 +6,14 @@ on:
|
|||||||
description: 'The version to build'
|
description: 'The version to build'
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
release-branch:
|
||||||
|
description: 'The branch to build'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-linux:
|
build-linux:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -19,18 +24,22 @@ jobs:
|
|||||||
name: Build Linux - ${{ matrix.generic == true && 'Generic' || 'Specific' }}
|
name: Build Linux - ${{ matrix.generic == true && 'Generic' || 'Specific' }}
|
||||||
|
|
||||||
steps:
|
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
|
- name: Install Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
|
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
# Give the runner some swap space in an attempt to stop gkrust from crashing the build
|
|
||||||
- name: Set Swap Space
|
|
||||||
uses: pierotofy/set-swap-space@v1.0
|
|
||||||
with:
|
with:
|
||||||
swap-size-gb: 6
|
submodules: recursive
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
- name: Setup git
|
- name: Setup git
|
||||||
run: |
|
run: |
|
||||||
@@ -39,13 +48,10 @@ jobs:
|
|||||||
|
|
||||||
- name: Install system dependencies
|
- name: Install system dependencies
|
||||||
run: |
|
run: |
|
||||||
|
set -x
|
||||||
sudo apt-get update --fix-missing
|
sudo apt-get update --fix-missing
|
||||||
sudo apt-get update
|
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
|
sudo apt-get install dos2unix yasm nasm build-essential libgtk2.0-dev libpython3-dev m4 uuid libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdrm-dev libdbus-glib-1-dev libdbus-glib-1-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb lld llvm
|
||||||
pip install pycairo testresources
|
|
||||||
|
|
||||||
- name: Free up space
|
|
||||||
run: sh .github/workflows/src/disk-setup-and-swap.sh
|
|
||||||
|
|
||||||
- name: Configure sccache
|
- name: Configure sccache
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
@@ -85,16 +91,25 @@ jobs:
|
|||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|
||||||
- name: Load surfer CI setup
|
- name: Load surfer CI setup
|
||||||
run: pnpm surfer ci --brand alpha --display-version ${{ inputs.build-version }}
|
run: pnpm surfer ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||||
|
|
||||||
- name: Download firefox source and dependencies
|
- name: Download firefox source and dependencies
|
||||||
run: pnpm surfer download
|
run: pnpm surfer download
|
||||||
|
|
||||||
|
- name: Fix rust version
|
||||||
|
run: |
|
||||||
|
# Install a rust version compatible with LLVM 18
|
||||||
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79
|
||||||
|
source $HOME/.cargo/env
|
||||||
|
|
||||||
- name: Import
|
- name: Import
|
||||||
env:
|
env:
|
||||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||||
run: pnpm surfer import
|
run: pnpm surfer import
|
||||||
|
|
||||||
|
- name: Build language packs
|
||||||
|
run: sh scripts/download-language-packs.sh
|
||||||
|
|
||||||
- name: Bootstrap
|
- name: Bootstrap
|
||||||
run: |
|
run: |
|
||||||
cd engine
|
cd engine
|
||||||
@@ -105,13 +120,13 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
run: sh .github/workflows/src/alpha-build.sh
|
run: sh .github/workflows/src/release-build.sh
|
||||||
|
|
||||||
- name: Build again if it failed
|
- name: Build again if it failed
|
||||||
if: failure()
|
if: failure()
|
||||||
env:
|
env:
|
||||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||||
run: sh .github/workflows/src/alpha-build.sh
|
run: sh .github/workflows/src/release-build.sh
|
||||||
|
|
||||||
- name: Package
|
- name: Package
|
||||||
env:
|
env:
|
||||||
@@ -126,7 +141,6 @@ jobs:
|
|||||||
- name: Upload binary
|
- name: Upload binary
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
|
||||||
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
||||||
path: ./zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
path: ./zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
||||||
|
|
122
.github/workflows/macos-alpha-build.yml
vendored
@@ -1,122 +0,0 @@
|
|||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
build-version:
|
|
||||||
description: 'The version to build'
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
mac-build:
|
|
||||||
name: Build macOS - ${{ matrix.arch }}
|
|
||||||
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
|
|
||||||
|
|
||||||
- name: Setup git
|
|
||||||
run: |
|
|
||||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
|
||||||
git config --global user.name "mauro-balades"
|
|
||||||
|
|
||||||
- name: Install system dependencies
|
|
||||||
run: |
|
|
||||||
brew install cairo sccache gnu-tar mercurial
|
|
||||||
sudo pip install setuptools
|
|
||||||
|
|
||||||
- name: Free up space
|
|
||||||
run: sh .github/workflows/src/disk-setup-and-swap.sh
|
|
||||||
|
|
||||||
- name: Force usage fo gnu-tar
|
|
||||||
run: |
|
|
||||||
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bash_profile
|
|
||||||
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zsh
|
|
||||||
source ~/.bash_profile
|
|
||||||
|
|
||||||
- name: Install pnpm
|
|
||||||
run: npm install -g pnpm
|
|
||||||
|
|
||||||
- name: Get pnpm store directory
|
|
||||||
id: pnpm-cache
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: pnpm install
|
|
||||||
- name: Load surfer CI setup
|
|
||||||
run: pnpm surfer ci --brand alpha --display-version ${{ inputs.build-version }}
|
|
||||||
|
|
||||||
- name: Download firefox source and dependancies
|
|
||||||
run: pnpm surfer download
|
|
||||||
|
|
||||||
- name: Import
|
|
||||||
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
|
|
179
.github/workflows/macos-release-build.yml
vendored
Normal file
@@ -0,0 +1,179 @@
|
|||||||
|
name: macOS Release Build
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
build-version:
|
||||||
|
description: 'The version to build'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
release-branch:
|
||||||
|
description: 'The branch to build'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
mac-build:
|
||||||
|
name: Build macOS - ${{ matrix.arch }}
|
||||||
|
|
||||||
|
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 update
|
||||||
|
|
||||||
|
brew install cairo sccache gnu-tar mercurial
|
||||||
|
sudo pip install setuptools
|
||||||
|
|
||||||
|
# completly uninstall python3 and python3.12
|
||||||
|
brew uninstall --ignore-dependencies python3.12 -f
|
||||||
|
|
||||||
|
export PATH="$(python3 -m site --user-base)/bin":$PATH
|
||||||
|
python3 -m pip install --user mercurial
|
||||||
|
|
||||||
|
rm '/usr/local/bin/2to3-3.11' # fix Could not symlink bin/2to3-3.11
|
||||||
|
rm '/usr/local/bin/2to3-3.12' # fix Could not symlink bin/2to3-3.12
|
||||||
|
rm /usr/local/bin/2to3 # fix Could not symlink bin/2to3
|
||||||
|
rm '/usr/local/bin/idle3.11' #fix Could not symlink bin/idle3.11
|
||||||
|
rm '/usr/local/bin/idle3.12' # fix Could not symlink bin/idle3.12
|
||||||
|
rm '/usr/local/bin/idle3' # fix Could not symlink bin/idle3
|
||||||
|
rm '/usr/local/bin/pydoc3.11' # fix Could not symlink bin/pydoc3.11
|
||||||
|
rm '/usr/local/bin/pydoc3.12' # fix Could not symlink bin/pydoc3.12
|
||||||
|
rm '/usr/local/bin/pydoc3' # fix Could not symlink bin/pydoc3
|
||||||
|
rm '/usr/local/bin/python3.11' # fix Could not symlink bin/python3.11
|
||||||
|
rm '/usr/local/bin/python3.12' # fix Could not symlink bin/python3.12
|
||||||
|
rm '/usr/local/bin/python3' # fix Could not symlink bin/python3
|
||||||
|
rm '/usr/local/bin/python3.11-config' # fix Could not symlink bin/python3.11-config
|
||||||
|
rm '/usr/local/bin/python3.12-config' # fix Could not symlink bin/python3.12-config
|
||||||
|
rm '/usr/local/bin/python3-config' # fix Could not symlink bin/python3-config
|
||||||
|
|
||||||
|
brew install watchman
|
||||||
|
|
||||||
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79
|
||||||
|
|
||||||
|
- 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 ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||||
|
|
||||||
|
- name: Download firefox source and dependancies
|
||||||
|
run: pnpm surfer download
|
||||||
|
|
||||||
|
- name: Bootstrap
|
||||||
|
run: |
|
||||||
|
cd engine
|
||||||
|
export PATH="$(python3 -m site --user-base)/bin":$PATH
|
||||||
|
./mach --no-interactive bootstrap --application-choice browser --no-system-changes
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Import
|
||||||
|
env:
|
||||||
|
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||||
|
run: |
|
||||||
|
pnpm surfer import --verbose
|
||||||
|
|
||||||
|
- name: Build language packs
|
||||||
|
run: sh scripts/download-language-packs.sh
|
||||||
|
|
||||||
|
- name: build Zen
|
||||||
|
env:
|
||||||
|
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||||
|
run: |
|
||||||
|
if test "${{ matrix.arch }}" = "x64"; then
|
||||||
|
export ZEN_DISABLE_LTO=1
|
||||||
|
fi
|
||||||
|
sh .github/workflows/src/release-build.sh
|
||||||
|
|
||||||
|
- name: Rebuild Zen if failed
|
||||||
|
if: failure()
|
||||||
|
run: sh .github/workflows/src/release-build.sh
|
||||||
|
|
||||||
|
- name: import APPLE DEVELOPER ID CERTIFICATE for .app
|
||||||
|
uses: apple-actions/import-codesign-certs@v3
|
||||||
|
with:
|
||||||
|
p12-file-base64: ${{ secrets.macOS_CERTIFICATES_P12_For_App_BASE64 }}
|
||||||
|
p12-password: ${{ secrets.macOS_CERTIFICATES_P12_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Package
|
||||||
|
env:
|
||||||
|
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||||
|
run: |
|
||||||
|
export MACOS_APPLE_DEVELOPER_ID="${{ secrets.macOS_AppleDeveloperId }}"
|
||||||
|
pnpm package
|
||||||
|
|
||||||
|
- name: Rename artifacts
|
||||||
|
run: |
|
||||||
|
mv ./dist/output.mar macos-${{ matrix.arch }}.mar
|
||||||
|
|
||||||
|
- name: Sign to .dmg
|
||||||
|
run: |
|
||||||
|
set -ex
|
||||||
|
hdiutil convert ./dist/*.dmg -format UDZO -imagekey zlib-level=9 -o zen.macos-${{ matrix.arch }}.dmg
|
||||||
|
xattr -cr zen.macos-${{ matrix.arch }}.dmg
|
||||||
|
codesign -s "${{ secrets.macOS_AppleDeveloperId }}" zen.macos-${{ matrix.arch }}.dmg
|
||||||
|
xcrun notarytool submit "zen.macos-${{ matrix.arch }}.dmg" \
|
||||||
|
--apple-id "${{ secrets.macOS_AppleAccountId }}" \
|
||||||
|
--team-id "${{ secrets.macOS_AppleDeveloperIdTeamId }}" \
|
||||||
|
--password "${{ secrets.macOS_AppleDeveloperIdPassword }}" \
|
||||||
|
--wait
|
||||||
|
xcrun stapler staple "zen.macos-${{ matrix.arch }}.dmg"
|
||||||
|
|
||||||
|
- 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
|
36
.github/workflows/pr-test.yml
vendored
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
name: Pull request test
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
pr-test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
|
||||||
|
- name: Install Node.js and pnpm
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
|
||||||
|
- name: Install pnpm
|
||||||
|
run: npm install -g pnpm
|
||||||
|
|
||||||
|
- name: Install Surfer
|
||||||
|
run: |
|
||||||
|
npm i -g @zen-browser/surfer
|
||||||
|
|
||||||
|
- name: Download firefox
|
||||||
|
run: |
|
||||||
|
surfer download
|
||||||
|
|
||||||
|
- name: Import patches
|
||||||
|
run: |
|
||||||
|
surfer i
|
50
.github/workflows/src/disk-setup-and-swap.sh
vendored
@@ -1,50 +0,0 @@
|
|||||||
|
|
||||||
echo Before:
|
|
||||||
if [ command -v free ]; then
|
|
||||||
free -h
|
|
||||||
fi
|
|
||||||
if [ command -v df ]; then
|
|
||||||
df -h
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
|
|
||||||
sudo swapoff /mnt/swapfile
|
|
||||||
sudo rm /mnt/swapfile
|
|
||||||
sudo fallocate -l 10G /mnt/swapfile
|
|
||||||
sudo chmod 600 /mnt/swapfile
|
|
||||||
sudo mkswap /mnt/swapfile
|
|
||||||
sudo swapon /mnt/swapfile
|
|
||||||
sudo apt remove -y '^dotnet-.*' '^llvm-.*' '^php.*' '^mongodb-.*' '^mysql-.*' clang azure-cli google-cloud-sdk google-chrome-stable microsoft-edge firefox powershell mono-devel libgl1-mesa-dri acl aria2 autoconf automake binutils bison brotli bzip2 coreutils
|
|
||||||
sudo apt autoremove -y
|
|
||||||
sudo apt clean
|
|
||||||
sudo rm -rf ./git
|
|
||||||
sudo rm -rf /home/linuxbrew
|
|
||||||
sudo rm -rf /usr/share/dotnet
|
|
||||||
sudo rm -rf /usr/local/lib/android
|
|
||||||
sudo rm -rf /usr/local/graalvm
|
|
||||||
sudo rm -rf /usr/local/share/powershell
|
|
||||||
sudo rm -rf /usr/local/share/chromium
|
|
||||||
sudo rm -rf /opt/ghc
|
|
||||||
sudo rm -rf /usr/local/share/boost
|
|
||||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
||||||
sudo rm -rf /etc/apache2
|
|
||||||
sudo rm -rf /etc/nginx
|
|
||||||
sudo rm -rf /usr/local/share/chrome_driver
|
|
||||||
sudo rm -rf /usr/local/share/edge_driver
|
|
||||||
sudo rm -rf /usr/local/share/gecko_driver
|
|
||||||
sudo rm -rf /usr/share/java
|
|
||||||
sudo rm -rf /usr/share/miniconda
|
|
||||||
sudo rm -rf /usr/local/share/vcpkg
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
|
|
||||||
echo After:
|
|
||||||
if [ command -v free ]; then
|
|
||||||
free -h
|
|
||||||
fi
|
|
||||||
if [ command -v df ]; then
|
|
||||||
df -h
|
|
||||||
fi
|
|
31
.github/workflows/twilight-release-schedule.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: Zen Twilight Scheduled Releases
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
twilight-release-schedule:
|
||||||
|
name: Twilight Release Schedule
|
||||||
|
permissions: write-all
|
||||||
|
secrets: inherit
|
||||||
|
uses: ./.github/workflows/build.yml
|
||||||
|
with:
|
||||||
|
create_release: true
|
||||||
|
update_branch: twilight
|
||||||
|
update_version: false
|
||||||
|
|
||||||
|
post-build:
|
||||||
|
name: Post Build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: twilight-release-schedule
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Node.js and pnpm
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
|
||||||
|
# TODO:
|
30
.github/workflows/update-submodules.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
name: Update Components Submodules
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
workflow_dispatch:
|
||||||
|
workflow_call: # This is a custom event that we will trigger manually
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-submodules:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
|
- name: Update submodules
|
||||||
|
run: |
|
||||||
|
git submodule update --remote --merge
|
||||||
|
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: "[skip ci] 📦 Update Submodules!"
|
||||||
|
commit_user_name: Zen Browser Robot
|
||||||
|
commit_user_email: zen-browser-bot@users.noreply.github.com
|
43
.github/workflows/windows-profile-build.yml
vendored
@@ -1,4 +1,4 @@
|
|||||||
|
name: Windows PGO Builds
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_call:
|
||||||
inputs:
|
inputs:
|
||||||
@@ -10,6 +10,10 @@ on:
|
|||||||
description: 'The path to the zip archive containing the profile data'
|
description: 'The path to the zip archive containing the profile data'
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
release-branch:
|
||||||
|
description: 'The branch to build'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
windows-profile-build:
|
windows-profile-build:
|
||||||
@@ -33,46 +37,45 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||||
git config --global user.name "mauro-balades"
|
git config --global user.name "mauro-balades"
|
||||||
|
|
||||||
- name: Install pnpm
|
- name: Install pnpm
|
||||||
run: npm install -g pnpm
|
run: npm install -g pnpm
|
||||||
|
|
||||||
- name: Install Surfer
|
- name: Install Surfer
|
||||||
run: |
|
run: |
|
||||||
npm i -g @zen-browser/surfer
|
npm i -g @zen-browser/surfer
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
name: Download artifact
|
name: Download artifact
|
||||||
with:
|
with:
|
||||||
path: C:\artifact
|
path: C:\artifact
|
||||||
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-zen-windows-x86_64-profile-data-and-jarlog.zip
|
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-zen-windows-x86_64-profile-data-and-jarlog.zip
|
||||||
|
|
||||||
- name: Unpack artifact
|
- name: Unpack artifact
|
||||||
run: |
|
run: |
|
||||||
cd C:\artifact
|
cd C:\artifact
|
||||||
ls
|
ls
|
||||||
zstd -d ${{ inputs.profile-data-path-archive }}
|
Expand-Archive -Path .\${{ inputs.profile-data-path-archive }} -DestinationPath C:\artifact
|
||||||
7z x zen-*.tar
|
ls
|
||||||
|
|
||||||
- name: Setup
|
- name: Setup
|
||||||
run: |
|
run: |
|
||||||
(New-Object System.Net.WebClient).DownloadFile("https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe","C:\MozillaBuildSetup-Latest.exe")
|
(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
|
C:\MozillaBuildSetup-Latest.exe /S | out-null
|
||||||
|
|
||||||
- name: Download firefox
|
- name: Download firefox
|
||||||
run: |
|
run: |
|
||||||
git config --global core.safecrlf false
|
git config --global core.safecrlf false
|
||||||
pnpm surfer download
|
pnpm surfer download
|
||||||
|
|
||||||
|
- name: Import patches
|
||||||
|
env:
|
||||||
|
SURFER_NO_BRANDING_PATCH: true
|
||||||
|
run: pnpm surfer import
|
||||||
|
|
||||||
- name: Generate
|
- name: Generate
|
||||||
run: |
|
run: |
|
||||||
ls
|
ls
|
||||||
$Env:USE_MINTTY = "0"
|
$Env:USE_MINTTY = "0"
|
||||||
|
|
||||||
$workspace_dir_current = [regex]::replace($env:GITHUB_WORKSPACE, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\","/"
|
$workspace_dir_current = [regex]::replace($env:GITHUB_WORKSPACE, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\","/"
|
||||||
$workspace_dir = $workspace_dir_current + "/engine"
|
$workspace_dir = $workspace_dir_current + "/engine"
|
||||||
echo $workspace_dir
|
echo $workspace_dir
|
||||||
|
|
||||||
echo "cd $workspace_dir" '' >> mozilla-build-run.sh
|
echo "cd $workspace_dir" '' >> mozilla-build-run.sh
|
||||||
echo 'export PATH=/c/mozilla-build/msys2/usr/bin:$PATH' '' >> 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 './mach --no-interactive bootstrap --application-choice browser' '' >> mozilla-build-run.sh
|
||||||
@@ -85,13 +88,17 @@ jobs:
|
|||||||
uses: Warpbuilds/gha-debug@v1.3
|
uses: Warpbuilds/gha-debug@v1.3
|
||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
|
|
||||||
- name: Publish merged.profdata
|
- name: Move profile data
|
||||||
|
run: |
|
||||||
|
dir
|
||||||
|
dir engine
|
||||||
|
mv engine/merged.profdata merged.profdata
|
||||||
|
mv engine/en-US.log en-US.log
|
||||||
|
|
||||||
|
- name: Publish artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
path: merged-${{ matrix.generic == true && 'generic' || 'specific' }}.profdata
|
path: |
|
||||||
|
merged.profdata
|
||||||
- name: Publish en-US.log
|
en-US.log
|
||||||
uses: actions/upload-artifact@v4
|
name: windows-profdata-${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||||
with:
|
|
||||||
path: en-US-${{ matrix.generic == true && 'generic' || 'specific' }}.log
|
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
|
name: Windows Release Build
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_call:
|
||||||
inputs:
|
inputs:
|
||||||
@@ -13,6 +13,10 @@ on:
|
|||||||
profile-data-path-archive:
|
profile-data-path-archive:
|
||||||
description: 'The path to the zip archive containing the profile data'
|
description: 'The path to the zip archive containing the profile data'
|
||||||
type: string
|
type: string
|
||||||
|
release-branch:
|
||||||
|
description: 'The branch to build'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
windows-build:
|
windows-build:
|
||||||
@@ -24,18 +28,22 @@ jobs:
|
|||||||
generic: [true, false]
|
generic: [true, false]
|
||||||
|
|
||||||
steps:
|
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
|
- name: Install Node.js and pnpm
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
# Give the runner some swap space in an attempt to stop gkrust from crashing the build
|
|
||||||
- name: Set Swap Space
|
|
||||||
uses: pierotofy/set-swap-space@v1.0
|
|
||||||
with:
|
with:
|
||||||
swap-size-gb: 6
|
submodules: recursive
|
||||||
|
token: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
|
||||||
- name: Install pnpm
|
- name: Install pnpm
|
||||||
run: npm install -g pnpm
|
run: npm install -g pnpm
|
||||||
@@ -50,15 +58,12 @@ jobs:
|
|||||||
pnpm i
|
pnpm i
|
||||||
|
|
||||||
- name: Load surfer CI setup
|
- name: Load surfer CI setup
|
||||||
run: pnpm surfer ci --brand alpha --display-version ${{ inputs.build-version }}
|
run: pnpm surfer ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||||
|
|
||||||
- name: Download
|
- name: Download
|
||||||
run: pnpm surfer download
|
run: pnpm surfer download
|
||||||
|
|
||||||
- name: Free up space
|
- name: 'win-cross Cache'
|
||||||
run: sh .github/workflows/src/disk-setup-and-swap.sh
|
|
||||||
|
|
||||||
- name: "win-cross Cache"
|
|
||||||
env:
|
env:
|
||||||
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5
|
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5
|
||||||
id: cache-win-cross
|
id: cache-win-cross
|
||||||
@@ -117,28 +122,42 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cd engine/
|
cd engine/
|
||||||
# Install a rust version compatible with 17
|
# Install a rust version compatible with 17
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.76
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79
|
||||||
source $HOME/.cargo/env
|
source $HOME/.cargo/env
|
||||||
|
|
||||||
rustup target add x86_64-pc-windows-msvc
|
rustup target add x86_64-pc-windows-msvc
|
||||||
cargo install cargo-download
|
cargo install cargo-download
|
||||||
cargo download -x windows=0.52.0
|
cargo download -x windows=0.58.0
|
||||||
#? https://github.com/mozilla/sccache#known-caveats
|
#? https://github.com/mozilla/sccache#known-caveats
|
||||||
export CARGO_INCREMENTAL=0
|
export CARGO_INCREMENTAL=0
|
||||||
|
|
||||||
echo "" >> ../configs/common/mozconfig
|
echo "" >> ../configs/common/mozconfig
|
||||||
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.52.0" >> ../configs/common/mozconfig
|
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.58.0" >> ../configs/common/mozconfig
|
||||||
|
|
||||||
|
- name: Import
|
||||||
|
env:
|
||||||
|
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||||
|
run: pnpm surfer import --verbose
|
||||||
|
|
||||||
|
- name: Build language packs
|
||||||
|
run: sh scripts/download-language-packs.sh
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
name: Download artifact if use profdata
|
name: Download artifact if use profdata
|
||||||
if: ${{ !inputs.generate-gpo }}
|
if: ${{ !inputs.generate-gpo }}
|
||||||
with:
|
with:
|
||||||
path: ~/artifact
|
path: ~/artifact
|
||||||
|
name: windows-profdata-${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||||
|
|
||||||
- name: Import
|
- name: Show artifact info
|
||||||
env:
|
if: ${{ !inputs.generate-gpo }}
|
||||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
run: |
|
||||||
run: pnpm surfer import --verbose
|
ls ~/artifact
|
||||||
|
ls ~/artifact/en-US.log
|
||||||
|
ls ~/artifact/merged.profdata
|
||||||
|
|
||||||
|
chmod +x ~/artifact/en-US.log
|
||||||
|
chmod +x ~/artifact/merged.profdata
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
env:
|
env:
|
||||||
@@ -151,7 +170,7 @@ jobs:
|
|||||||
if test ${{ inputs.generate-gpo }} = true; then
|
if test ${{ inputs.generate-gpo }} = true; then
|
||||||
export ZEN_GA_GENERATE_PROFILE=1
|
export ZEN_GA_GENERATE_PROFILE=1
|
||||||
fi
|
fi
|
||||||
sh .github/workflows/src/alpha-build.sh
|
sh .github/workflows/src/release-build.sh
|
||||||
|
|
||||||
- name: Package
|
- name: Package
|
||||||
env:
|
env:
|
||||||
@@ -164,6 +183,11 @@ jobs:
|
|||||||
ls ./dist
|
ls ./dist
|
||||||
ls .
|
ls .
|
||||||
|
|
||||||
|
- name: 🐛 Debug Session
|
||||||
|
if: ${{ failure() }}
|
||||||
|
uses: Warpbuilds/gha-debug@v1.3
|
||||||
|
timeout-minutes: 15
|
||||||
|
|
||||||
- name: Move package for PGO upload
|
- name: Move package for PGO upload
|
||||||
if: ${{ inputs.generate-gpo }}
|
if: ${{ inputs.generate-gpo }}
|
||||||
run: |
|
run: |
|
||||||
@@ -177,13 +201,6 @@ jobs:
|
|||||||
mv ./dist/output.mar windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
mv ./dist/output.mar windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||||
mv ./dist/zen.installer.exe ./zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
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
|
- name: Upload PGO build
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
if: ${{ inputs.generate-gpo }}
|
if: ${{ inputs.generate-gpo }}
|
||||||
@@ -191,30 +208,44 @@ jobs:
|
|||||||
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-${{ inputs.profile-data-path-archive }}
|
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-${{ inputs.profile-data-path-archive }}
|
||||||
path: ./zen.win64-pgo-stage-1.zip
|
path: ./zen.win64-pgo-stage-1.zip
|
||||||
|
|
||||||
- name: Upload mar
|
- name: Remove unnecessary files from obj
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: ${{ !inputs.generate-gpo }}
|
if: ${{ !inputs.generate-gpo }}
|
||||||
with:
|
run: |
|
||||||
name: windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
set -x
|
||||||
path: ./windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
find engine/obj-x86_64-pc-windows-msvc/ -mindepth 1 -maxdepth 1 -type d -not -name 'dist' -exec rm -rf {} \;
|
||||||
|
find engine/obj-x86_64-pc-windows-msvc/ -mindepth 1 -maxdepth 1 -type f -not -name 'dist' -exec rm -f {} \;
|
||||||
|
|
||||||
- name: Upload installer
|
- name: Upload dist object
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: ${{ !inputs.generate-gpo }}
|
if: ${{ !inputs.generate-gpo }}
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: windows-x64-obj-${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||||
|
path: engine/obj-x86_64-pc-windows-msvc/
|
||||||
|
|
||||||
|
- name: Upload zip file if twilight branch
|
||||||
|
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
|
||||||
|
path: ./zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
|
||||||
|
|
||||||
|
- name: Upload installer if twilight branch
|
||||||
|
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
name: zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
||||||
path: ./zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
path: ./zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
||||||
|
|
||||||
- name: Upload installer stub
|
- name: Upload mar if twilight branch
|
||||||
|
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
if: ${{ !inputs.generate-gpo && false }}
|
|
||||||
with:
|
with:
|
||||||
name: zen.installer.pretty.exe
|
name: windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||||
path: ./dist/zen.installer.pretty.exe
|
path: ./windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||||
|
|
||||||
- name: Upload update manifests
|
- name: Upload update manifests if twilight branch
|
||||||
|
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
if: ${{ !inputs.generate-gpo }}
|
|
||||||
with:
|
with:
|
||||||
name: windows_update_manifest_${{ matrix.generic == true && 'generic' || 'specific' }}
|
name: windows_update_manifest_${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||||
path: ./dist/update
|
path: ./dist/update
|
2
.gitignore
vendored
@@ -7,3 +7,5 @@ node_modules/
|
|||||||
|
|
||||||
__pycache__/
|
__pycache__/
|
||||||
dist/
|
dist/
|
||||||
|
|
||||||
|
windsign-temp/
|
6
.gitmodules
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[submodule "src/browser/base/content/zen-components"]
|
||||||
|
path = src/browser/base/content/zen-components
|
||||||
|
url = https://github.com/zen-browser/components
|
||||||
|
[submodule "l10n"]
|
||||||
|
path = l10n
|
||||||
|
url = https://github.com/zen-browser/l10n-packs
|
1
.husky/pre-commit
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# npx lint-staged
|
12
.prettierignore
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
engine/
|
||||||
|
|
||||||
|
**/*.html
|
||||||
|
**/*.xhtml
|
||||||
|
**/*.inc.xhtml
|
||||||
|
|
||||||
|
**/*.svg
|
||||||
|
|
||||||
|
src/browser/app/profile/*.js
|
||||||
|
pnpm-lock.yaml
|
||||||
|
|
||||||
|
**/engine/
|
12
.prettierrc.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"bracketSameLine": true,
|
||||||
|
"endOfLine": "lf",
|
||||||
|
"trailingComma": "es5",
|
||||||
|
"singleQuote": true,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"useTabs": false,
|
||||||
|
"jsxSingleQuote": false,
|
||||||
|
"semi": true,
|
||||||
|
"printWidth": 128,
|
||||||
|
"plugins": []
|
||||||
|
}
|
14
.vscode/settings.json
vendored
@@ -13,6 +13,18 @@
|
|||||||
"utility": "cpp",
|
"utility": "cpp",
|
||||||
"variant": "cpp",
|
"variant": "cpp",
|
||||||
"compare": "cpp",
|
"compare": "cpp",
|
||||||
"thread": "cpp"
|
"thread": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"span": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"charconv": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"format": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"regex": "cpp",
|
||||||
|
"type_traits": "cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"policies": {
|
"policies": {
|
||||||
"DisableAppUpdate": true,
|
"DisableAppUpdate": true,
|
||||||
"AppAutoUpdate": false,
|
"AppAutoUpdate": false,
|
||||||
"ManualAppUpdateOnly": true,
|
"ManualAppUpdateOnly": true,
|
||||||
"BackgroundAppUpdate": false
|
"BackgroundAppUpdate": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Zen Browser
|
Name=Zen Browser
|
||||||
|
Comment=Experience tranquillity while browsing the web without people tracking you!
|
||||||
Exec=zen %u
|
Exec=zen %u
|
||||||
Icon=zen
|
Icon=zen
|
||||||
Type=Application
|
Type=Application
|
||||||
|
128
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
|
nationality, personal appearance, race, religion, or sexual identity
|
||||||
|
and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to a positive environment for our
|
||||||
|
community include:
|
||||||
|
|
||||||
|
* Demonstrating empathy and kindness toward other people
|
||||||
|
* Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
* Giving and gracefully accepting constructive feedback
|
||||||
|
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
|
and learning from the experience
|
||||||
|
* Focusing on what is best not just for us as individuals, but for the
|
||||||
|
overall community
|
||||||
|
|
||||||
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery, and sexual attention or
|
||||||
|
advances of any kind
|
||||||
|
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or email
|
||||||
|
address, without their explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
|
acceptable behavior and will take appropriate and fair corrective action in
|
||||||
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||||
|
or harmful.
|
||||||
|
|
||||||
|
Community leaders have the right and responsibility to remove, edit, or reject
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
|
decisions when appropriate.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
an individual is officially representing the community in public spaces.
|
||||||
|
Examples of representing our community include using an official e-mail address,
|
||||||
|
posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported to the community leaders responsible for enforcement at
|
||||||
|
hello@zen-browser.app.
|
||||||
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
|
reporter of any incident.
|
||||||
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||||
|
unprofessional or unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing
|
||||||
|
clarity around the nature of the violation and an explanation of why the
|
||||||
|
behavior was inappropriate. A public apology may be requested.
|
||||||
|
|
||||||
|
### 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series
|
||||||
|
of actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
|
interaction with the people involved, including unsolicited interaction with
|
||||||
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
|
like social media. Violating these terms may lead to a temporary or
|
||||||
|
permanent ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
sustained inappropriate behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public
|
||||||
|
communication with the community for a specified period of time. No public or
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
### 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within
|
||||||
|
the community.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
|
version 2.0, available at
|
||||||
|
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||||
|
enforcement ladder](https://github.com/mozilla/diversity).
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
|
https://www.contributor-covenant.org/faq. Translations are available at
|
||||||
|
https://www.contributor-covenant.org/translations.
|
191
README.md
@@ -1,71 +1,132 @@
|
|||||||
|
<img src="./docs/assets/zen-black.svg" width="100px" align="left">
|
||||||
|
|
||||||
# 🌀 Zen Browser
|
### `Zen Browser`
|
||||||
|
|
||||||
Experience tranquillity while browsing the web without people tracking you!
|
[](https://github.com/zen-browser/desktop/releases)
|
||||||
|
[](https://crowdin.com/project/zen-browser)
|
||||||
|
|
||||||
<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'/>
|
✨ Experience tranquillity while browsing the web without people tracking you! Zen is a privacy-focused browser that blocks trackers, ads, and other unwanted content while offering the best browsing experience!
|
||||||
|
|
||||||
|
<div flex="true">
|
||||||
|
<a href="https://zen-browser.app/download">
|
||||||
|
Download
|
||||||
|
</a>
|
||||||
|
•
|
||||||
|
<a href="https://zen-browser.app">
|
||||||
|
Website
|
||||||
|
</a>
|
||||||
|
•
|
||||||
|
<a href="https://docs.zen-browser.app">
|
||||||
|
Documentation
|
||||||
|
</a>
|
||||||
|
•
|
||||||
|
<a href="https//zen-browser.app/release-notes/latest">
|
||||||
|
Release Notes
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 🖥️ Compatibility
|
||||||
|
|
||||||
|
Zen is currently built using firefox version `131.0.3`! 🚀
|
||||||
|
|
||||||
|
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
|
||||||
|
- Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates!
|
||||||
|
|
||||||
|
## 🤝 Contribution
|
||||||
|
|
||||||
|
Zen is an open-source project, and we welcome contributions from the community! Please take a look at the [contribution guidelines](./docs/contribute.md) before getting started!
|
||||||
|
|
||||||
|
## ⚡ Performance
|
||||||
|
|
||||||
|
Zen is built with performance in mind, and we have optimized the browser to be as fast as possible! Checkout the latest [performance benchmarks](https://docs.zen-browser.app/benchmarks)!
|
||||||
|
|
||||||
|
## 📥 Installation
|
||||||
|
|
||||||
|
### Supported Operating Systems
|
||||||
|
|
||||||
|
Zen is available for Linux, macOS, and Windows. You can download the latest version from the official website at [zen-browser.app](https://zen-browser.app/download), or from the [GitHub Releases](https://github.com/zen-browser/desktop/releases) page.
|
||||||
|
|
||||||
|
If you dont see your OS listed below, that's because we already have it in our [downloads page](https://zen-browser.app/download)! Make sure to check it out!
|
||||||
|
|
||||||
|
#### Windows
|
||||||
|
|
||||||
|
##### Winget
|
||||||
|
|
||||||
|
```ps
|
||||||
|
# Generic version
|
||||||
|
winget install --id Zen-Team.Zen-Browser
|
||||||
|
|
||||||
|
# Optimized version
|
||||||
|
winget install --id Zen-Team.Zen-Browser.Optimized
|
||||||
|
```
|
||||||
|
|
||||||
|
#### macOS
|
||||||
|
|
||||||
|
- Requires macOS 10.15 or later
|
||||||
|
- Available for ARM and Intel architectures
|
||||||
|
|
||||||
|
You can also install Zen using Homebrew:
|
||||||
|
|
||||||
|
```
|
||||||
|
brew install --cask zen-browser
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Linux
|
||||||
|
|
||||||
|
##### Arch-based distributions
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# For generic version
|
||||||
|
yay -S zen-browser-bin
|
||||||
|
|
||||||
|
# For optimized version
|
||||||
|
yay -S zen-browser-avx2-bin
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Other Linux distributions (AppImage with automated system integration)
|
||||||
|
|
||||||
|
- `zsync` is required for the Update feature of the script below
|
||||||
|
|
||||||
|
```sh
|
||||||
|
bash <(curl https://updates.zen-browser.app/appimage.sh)
|
||||||
|
```
|
||||||
|
|
||||||
|
* Again, if you don't see your OS listed above, that's because we already have it in our [downloads page](https://zen-browser.app/download)! 🔄
|
||||||
|
|
||||||
|
To upgrade the browser to a newer version, use the embedded update functionality in `About Zen`.
|
||||||
|
|
||||||
|
## 👨💻 Development and Contributing
|
||||||
|
|
||||||
|
Some components used by @zen-browser as an attempt to make firefox forks a better place, and for other to enjoy the beauty of OSS. You can find them [here](https://github.com/zen-browser/components).
|
||||||
|
|
||||||
|
#### `Run Locally`
|
||||||
|
|
||||||
|
In order to download and run zen locally, please follow [these instructions](https://docs.zen-browser.app/contribute/desktop).
|
||||||
|
|
||||||
|
#### `Special Thanks`
|
||||||
|
|
||||||
|
Special thanks to... EVERYONE 🎉! Checkout the team and contributors page [here](https://zen-browser.app/about)
|
||||||
|
|
||||||
|
#### `Third Party Code`
|
||||||
|
|
||||||
|
Zen couldn't be in its current state without the help of these amazing projects! 🙏
|
||||||
|
|
||||||
|
- Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox)
|
||||||
|
- Gradient image extracted from [Arc Palette](https://github.com/neurokitti/Arc_Palette)
|
||||||
|
|
||||||
|
### 🖥️ Comparison with other browsers
|
||||||
|
|
||||||
|
As you can see, chromium based browsers are the most popular browsers, help us change that by starring the project and spreading the word! 🌟
|
||||||
|
|
||||||
|
<a href="https://star-history.com/#zen-browser/desktop&Date">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zen-browser/desktop,chromium/chromium,brave/brave-browser&type=Date&theme=dark" />
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zen-browser/desktop,chromium/chromium,brave/brave-browser&type=Date" />
|
||||||
|
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=chromium/chromium,zen-browser/desktop,brave/brave-browser&type=Date" />
|
||||||
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
# Compatibility
|
## 📄 License
|
||||||
|
|
||||||
Zen is currently built using firefox version `128.0.3`!
|
|
||||||
|
|
||||||
* Checkout the latest [releases notes](https://get-zen.vercel.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
|
|
||||||
|
|
||||||
Clone the project
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/zen-browser/desktop.git
|
|
||||||
cd desktop
|
|
||||||
```
|
|
||||||
|
|
||||||
Install dependencies
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm i
|
|
||||||
```
|
|
||||||
|
|
||||||
Download and bootstrap the browser
|
|
||||||
|
|
||||||
```
|
|
||||||
npm run init
|
|
||||||
```
|
|
||||||
|
|
||||||
Start building the browser
|
|
||||||
|
|
||||||
```
|
|
||||||
npm run build
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, run the browser!
|
|
||||||
|
|
||||||
```
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Contributions are always welcome!
|
|
||||||
|
|
||||||
See `contributing.md` for ways to get started.
|
|
||||||
|
|
||||||
Please adhere to this project's `code of conduct`.
|
|
||||||
|
|
||||||
## Special Thanks
|
|
||||||
|
|
||||||
- [Erlend](https://havn.blog) (For making the logo)
|
|
||||||
- [ptr1337](https://github.com/ptr1337) (AUR Packages and optimization flags)
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
[MPL LICENSE](/LICENSE)
|
|
||||||
|
|
||||||
|
Zen browser is under the [MPL LICENSE](./LICENSE). All the code is open-source and free to use! Attributions are appreciated but not required.
|
||||||
|
32
build/codesign/browser.developer.entitlements.xml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<!--
|
||||||
|
Entitlements to apply to the main browser process executable during
|
||||||
|
codesigning of production channel builds.
|
||||||
|
-->
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<!-- Firefox needs to create executable pages (without MAP_JIT) -->
|
||||||
|
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to create executable pages with MAP_JIT on aarch64 -->
|
||||||
|
<key>com.apple.security.cs.allow-jit</key><true/>
|
||||||
|
|
||||||
|
<!-- Allow loading third party libraries. Needed for Flash and CDMs -->
|
||||||
|
<key>com.apple.security.cs.disable-library-validation</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the microphone on sites the user allows -->
|
||||||
|
<key>com.apple.security.device.audio-input</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the camera on sites the user allows -->
|
||||||
|
<key>com.apple.security.device.camera</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the location on sites the user allows -->
|
||||||
|
<key>com.apple.security.personal-information.location</key><true/>
|
||||||
|
|
||||||
|
<!-- Allow Firefox to send Apple events to other applications. Needed
|
||||||
|
for native messaging webextension helper applications launched by
|
||||||
|
Firefox which rely on Apple Events to signal other processes. -->
|
||||||
|
<key>com.apple.security.automation.apple-events</key><true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
169
build/codesign/codesign.bash
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
#
|
||||||
|
# Runs codesign commands to codesign a Firefox .app bundle and enable macOS
|
||||||
|
# Hardened Runtime. Intended to be manually run by developers working on macOS
|
||||||
|
# 10.14+ who want to enable Hardened Runtime for manual testing. This is
|
||||||
|
# provided as a stop-gap until automated build tooling is available that signs
|
||||||
|
# binaries with a certificate generated during builds (bug 1522409). This
|
||||||
|
# script requires macOS 10.14 because Hardened Runtime is only available for
|
||||||
|
# applications running on 10.14 despite support for the codesign "-o runtime"
|
||||||
|
# option being available in 10.13.6 and newer.
|
||||||
|
#
|
||||||
|
# The script requires an identity string (-i option) from an Apple Developer
|
||||||
|
# ID certificate. This can be found in the macOS KeyChain after configuring an
|
||||||
|
# Apple Developer ID certificate.
|
||||||
|
#
|
||||||
|
# Example usage on macOS 10.14:
|
||||||
|
#
|
||||||
|
# $ ./mach build
|
||||||
|
# $ ./mach build package
|
||||||
|
# $ open </PATH/TO/DMG/FILE.dmg>
|
||||||
|
# <Drag Nightly.app to ~>
|
||||||
|
# $ ./security/mac/hardenedruntime/codesign.bash \
|
||||||
|
# -a ~/Nightly.app \
|
||||||
|
# -i <MY-IDENTITY-STRING> \
|
||||||
|
# -b security/mac/hardenedruntime/browser.developer.entitlements.xml
|
||||||
|
# -p security/mac/hardenedruntime/plugin-container.developer.entitlements.xml
|
||||||
|
# $ open ~/Nightly.app
|
||||||
|
#
|
||||||
|
|
||||||
|
usage ()
|
||||||
|
{
|
||||||
|
echo "Usage: $0 "
|
||||||
|
echo " -a <PATH-TO-BROWSER.app>"
|
||||||
|
echo " -i <IDENTITY>"
|
||||||
|
echo " -b <ENTITLEMENTS-FILE>"
|
||||||
|
echo " -p <CHILD-ENTITLEMENTS-FILE>"
|
||||||
|
echo " [-o <OUTPUT-DMG-FILE>]"
|
||||||
|
exit -1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make sure we are running on macOS with the sw_vers command available.
|
||||||
|
SWVERS=/usr/bin/sw_vers
|
||||||
|
if [ ! -x ${SWVERS} ]; then
|
||||||
|
echo "ERROR: macOS 10.14 or later is required"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Require macOS 10.14 or newer.
|
||||||
|
#OSVERSION=`${SWVERS} -productVersion|sed -En 's/[0-9]+\.([0-9]+)\.[0-9]+/\1/p'`;
|
||||||
|
#if [ ${OSVERSION} \< 14 ]; then
|
||||||
|
# echo "ERROR: macOS 10.14 or later is required"
|
||||||
|
# exit -1
|
||||||
|
#fi
|
||||||
|
|
||||||
|
while getopts "a:i:b:o:p:" opt; do
|
||||||
|
case ${opt} in
|
||||||
|
a ) BUNDLE=$OPTARG ;;
|
||||||
|
i ) IDENTITY=$OPTARG ;;
|
||||||
|
b ) BROWSER_ENTITLEMENTS_FILE=$OPTARG ;;
|
||||||
|
p ) PLUGINCONTAINER_ENTITLEMENTS_FILE=$OPTARG ;;
|
||||||
|
o ) OUTPUT_DMG_FILE=$OPTARG ;;
|
||||||
|
\? ) usage; exit -1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${BUNDLE}" ] ||
|
||||||
|
[ -z "${IDENTITY}" ] ||
|
||||||
|
[ -z "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ] ||
|
||||||
|
[ -z "${BROWSER_ENTITLEMENTS_FILE}" ]; then
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "${BUNDLE}" ]; then
|
||||||
|
echo "Invalid bundle. Bundle should be a .app directory"
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ]; then
|
||||||
|
echo "Invalid entitlements file"
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e "${BROWSER_ENTITLEMENTS_FILE}" ]; then
|
||||||
|
echo "Invalid entitlements file"
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DMG file output flag is optional
|
||||||
|
if [ ! -z "${OUTPUT_DMG_FILE}" ] &&
|
||||||
|
[ -e "${OUTPUT_DMG_FILE}" ]; then
|
||||||
|
echo "Output dmg file ${OUTPUT_DMG_FILE} exists. Please delete it first."
|
||||||
|
usage
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "-------------------------------------------------------------------------"
|
||||||
|
echo "bundle: $BUNDLE"
|
||||||
|
echo "identity: $IDENTITY"
|
||||||
|
echo "browser entitlements file: $BROWSER_ENTITLEMENTS_FILE"
|
||||||
|
echo "plugin-container entitlements file: $PLUGINCONTAINER_ENTITLEMENTS_FILE"
|
||||||
|
echo "output dmg file (optional): $OUTPUT_DMG_FILE"
|
||||||
|
echo "-------------------------------------------------------------------------"
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# Clear extended attributes which cause codesign to fail
|
||||||
|
xattr -cr "${BUNDLE}"
|
||||||
|
|
||||||
|
# Sign these binaries first. Signing of some binaries has an ordering
|
||||||
|
# requirement where other binaries must be signed first.
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" \
|
||||||
|
"${BUNDLE}/Contents/Library/LaunchServices/org.mozilla.updater" \
|
||||||
|
"${BUNDLE}/Contents/MacOS/XUL" \
|
||||||
|
"${BUNDLE}/Contents/MacOS/pingsender" \
|
||||||
|
"${BUNDLE}/Contents/MacOS/*.dylib" \
|
||||||
|
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||||
|
"${BUNDLE}"/Contents/MacOS/updater.app
|
||||||
|
|
||||||
|
# Sign zen main executable
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||||
|
--entitlements ${BROWSER_ENTITLEMENTS_FILE} \
|
||||||
|
"${BUNDLE}"/Contents/MacOS/zen
|
||||||
|
|
||||||
|
# Sign Library/LaunchServices
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||||
|
"${BUNDLE}"/Contents/Library/LaunchServices/org.mozilla.updater
|
||||||
|
|
||||||
|
# Sign gmp-clearkey files
|
||||||
|
find "${BUNDLE}"/Contents/Resources/gmp-clearkey -type f -exec \
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" {} \;
|
||||||
|
|
||||||
|
# Sign the main bundle
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" \
|
||||||
|
--entitlements ${BROWSER_ENTITLEMENTS_FILE} "${BUNDLE}"
|
||||||
|
|
||||||
|
# Sign the plugin-container bundle with deep
|
||||||
|
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||||
|
--entitlements ${PLUGINCONTAINER_ENTITLEMENTS_FILE} \
|
||||||
|
"${BUNDLE}"/Contents/MacOS/plugin-container.app
|
||||||
|
|
||||||
|
# Validate
|
||||||
|
codesign -vvv --deep --strict "${BUNDLE}"
|
||||||
|
|
||||||
|
# Create a DMG
|
||||||
|
if [ ! -z "${OUTPUT_DMG_FILE}" ]; then
|
||||||
|
DISK_IMAGE_DIR=`mktemp -d`
|
||||||
|
TEMP_FILE=`mktemp`
|
||||||
|
TEMP_DMG=${TEMP_FILE}.dmg
|
||||||
|
NAME=`basename "${BUNDLE}"`
|
||||||
|
|
||||||
|
ditto "${BUNDLE}" "${DISK_IMAGE_DIR}/${NAME}"
|
||||||
|
hdiutil create -size 400m -fs HFS+ \
|
||||||
|
-volname Firefox -srcfolder "${DISK_IMAGE_DIR}" "${TEMP_DMG}"
|
||||||
|
hdiutil convert -format UDZO \
|
||||||
|
-o "${OUTPUT_DMG_FILE}" "${TEMP_DMG}"
|
||||||
|
|
||||||
|
rm ${TEMP_FILE}
|
||||||
|
rm ${TEMP_DMG}
|
||||||
|
rm -rf "${DISK_IMAGE_DIR}"
|
||||||
|
fi
|
32
build/codesign/plugin-container.developer.entitlements.xml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<!--
|
||||||
|
Entitlements to apply to the plugin-container.app bundle during
|
||||||
|
codesigning of production channel builds.
|
||||||
|
-->
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<!-- Firefox needs to create executable pages (without MAP_JIT) -->
|
||||||
|
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to create executable pages with MAP_JIT on aarch64 -->
|
||||||
|
<key>com.apple.security.cs.allow-jit</key><true/>
|
||||||
|
|
||||||
|
<!-- Allow loading third party libraries. Needed for Flash and CDMs -->
|
||||||
|
<key>com.apple.security.cs.disable-library-validation</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the microphone on sites the user allows -->
|
||||||
|
<key>com.apple.security.device.audio-input</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the camera on sites the user allows -->
|
||||||
|
<key>com.apple.security.device.camera</key><true/>
|
||||||
|
|
||||||
|
<!-- Firefox needs to access the location on sites the user allows -->
|
||||||
|
<key>com.apple.security.personal-information.location</key><true/>
|
||||||
|
|
||||||
|
<!-- Allow Firefox to send Apple events to other applications. Needed
|
||||||
|
for native messaging webextension helper applications launched by
|
||||||
|
Firefox which rely on Apple Events to signal other processes. -->
|
||||||
|
<key>com.apple.security.automation.apple-events</key><true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
BIN
build/winsign/mar.exe
Normal file
127
build/winsign/sign.ps1
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
param(
|
||||||
|
[string][Parameter(Mandatory=$true)]$SignIdentity,
|
||||||
|
[string][Parameter(Mandatory=$true)]$GithubRunId
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
echo "Preparing environment"
|
||||||
|
git pull --recurse-submodules
|
||||||
|
mkdir windsign-temp -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
# Download in parallel
|
||||||
|
|
||||||
|
#show output too
|
||||||
|
Start-Job -Name "DownloadGitObjectsRepo" -ScriptBlock {
|
||||||
|
param($PWD)
|
||||||
|
echo "Downloading git objects repo to $PWD\windsign-temp\windows-binaries"
|
||||||
|
git clone https://github.com/zen-browser/windows-binaries.git $PWD\windsign-temp\windows-binaries
|
||||||
|
echo "Downloaded git objects repo to"
|
||||||
|
} -Verbose -ArgumentList $PWD -Debug
|
||||||
|
|
||||||
|
gh run download $GithubRunId --name windows-x64-obj-specific -D windsign-temp\windows-x64-obj-specific
|
||||||
|
echo "Downloaded specific artifacts"
|
||||||
|
gh run download $GithubRunId --name windows-x64-obj-generic -D windsign-temp\windows-x64-obj-generic
|
||||||
|
echo "Downloaded generic artifacts"
|
||||||
|
|
||||||
|
Wait-Job -Name "DownloadGitObjectsRepo"
|
||||||
|
|
||||||
|
mkdir engine\obj-x86_64-pc-windows-msvc\ -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
pnpm surfer ci --brand alpha
|
||||||
|
|
||||||
|
function SignAndPackage($name) {
|
||||||
|
echo "Executing on $name"
|
||||||
|
rmdir .\dist -Recurse -ErrorAction SilentlyContinue
|
||||||
|
rmdir engine\obj-x86_64-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
|
||||||
|
cp windsign-temp\windows-x64-obj-$name engine\obj-x86_64-pc-windows-msvc\ -Recurse
|
||||||
|
echo "Signing $name"
|
||||||
|
|
||||||
|
# Collect all .exe and .dll files into a list
|
||||||
|
$files = Get-ChildItem engine\obj-x86_64-pc-windows-msvc\ -Recurse -Include *.exe
|
||||||
|
$files += Get-ChildItem engine\obj-x86_64-pc-windows-msvc\ -Recurse -Include *.dll
|
||||||
|
|
||||||
|
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files
|
||||||
|
echo "Packaging $name"
|
||||||
|
$env:SURFER_SIGNING_MODE="sign"
|
||||||
|
$env:MAR="$PWD\\build\\winsign\\mar.exe"
|
||||||
|
if ($name -eq "generic") {
|
||||||
|
$env:SURFER_COMPAT="true"
|
||||||
|
} else {
|
||||||
|
rm env:SURFER_COMPAT -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Compat Mode? $env:SURFER_COMPAT"
|
||||||
|
pnpm surfer package --verbose
|
||||||
|
|
||||||
|
# In the release script, we do the following:
|
||||||
|
# tar -xvf .github/workflows/object/windows-x64-signed-generic.tar.gz -C windows-x64-signed-generic
|
||||||
|
# We need to create a tar with the same structure and no top-level directory
|
||||||
|
# Inside, we need:
|
||||||
|
# - update_manifest/*
|
||||||
|
# - windows.mar or windows-generic.mar
|
||||||
|
# - zen.installer.exe or zen.installer-generic.exe
|
||||||
|
# - zen.win-generic.zip or zen.win-specific.zip
|
||||||
|
echo "Creating tar for $name"
|
||||||
|
rm .\windsign-temp\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
|
||||||
|
mkdir windsign-temp\windows-x64-signed-$name
|
||||||
|
|
||||||
|
# Move the MAR, add the `-generic` suffix if needed
|
||||||
|
if ($name -eq "generic") {
|
||||||
|
mv .\dist\output.mar windsign-temp\windows-x64-signed-$name\windows-generic.mar
|
||||||
|
} else {
|
||||||
|
mv .\dist\output.mar windsign-temp\windows-x64-signed-$name\windows.mar
|
||||||
|
}
|
||||||
|
|
||||||
|
# Move the installer
|
||||||
|
if ($name -eq "generic") {
|
||||||
|
mv .\dist\zen.installer.exe windsign-temp\windows-x64-signed-$name\zen.installer-generic.exe
|
||||||
|
} else {
|
||||||
|
mv .\dist\zen.installer.exe windsign-temp\windows-x64-signed-$name\zen.installer.exe
|
||||||
|
}
|
||||||
|
|
||||||
|
# Move the zip
|
||||||
|
mv (Get-Item .\dist\*.en-US.win64.zip) windsign-temp\windows-x64-signed-$name\zen.win-$name.zip
|
||||||
|
|
||||||
|
# Extract the zip, sign everything inside, and repackage it
|
||||||
|
Expand-Archive -Path windsign-temp\windows-x64-signed-$name\zen.win-$name.zip -DestinationPath windsign-temp\windows-x64-signed-$name\zen.win-$name
|
||||||
|
rm windsign-temp\windows-x64-signed-$name\zen.win-$name.zip
|
||||||
|
$files = Get-ChildItem windsign-temp\windows-x64-signed-$name\zen.win-$name -Recurse -Include *.exe
|
||||||
|
$files += Get-ChildItem windsign-temp\windows-x64-signed-$name\zen.win-$name -Recurse -Include *.dll
|
||||||
|
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files
|
||||||
|
Compress-Archive -Path windsign-temp\windows-x64-signed-$name\zen.win-$name -DestinationPath windsign-temp\windows-x64-signed-$name\zen.win-$name.zip
|
||||||
|
rmdir windsign-temp\windows-x64-signed-$name\zen.win-$name -Recurse -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
# Move the manifest
|
||||||
|
mv .\dist\update\. windsign-temp\windows-x64-signed-$name\update_manifest
|
||||||
|
|
||||||
|
echo "Invoking tar for $name"
|
||||||
|
# note: We need to sign it into a parent folder, called windows-x64-signed-$name
|
||||||
|
rmdir .\windsign-temp\windows-binaries\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
|
||||||
|
mv windsign-temp\windows-x64-signed-$name .\windsign-temp\windows-binaries -Force
|
||||||
|
|
||||||
|
echo "Finished $name"
|
||||||
|
}
|
||||||
|
|
||||||
|
SignAndPackage specific
|
||||||
|
SignAndPackage generic
|
||||||
|
|
||||||
|
echo "All artifacts signed and packaged, ready for release!"
|
||||||
|
echo "Commiting the changes to the repository"
|
||||||
|
cd windsign-temp\windows-binaries
|
||||||
|
git add .
|
||||||
|
git commit -m "Sign and package windows artifacts"
|
||||||
|
git push
|
||||||
|
cd ..\..
|
||||||
|
|
||||||
|
# Cleaning up
|
||||||
|
|
||||||
|
echo "All done!"
|
||||||
|
echo "All the artifacts (Generic and Specific) are signed and packaged, get a rest now!"
|
||||||
|
Read-Host "Press Enter to continue"
|
||||||
|
|
||||||
|
echo "Cleaning up"
|
||||||
|
rmdir windsign-temp -Recurse -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
echo "Opening visual studio code"
|
||||||
|
code .
|
@@ -1,4 +1 @@
|
|||||||
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg">
|
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg"><rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />Sorry, your browser does not support inline SVG.</svg>
|
||||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
|
||||||
Sorry, your browser does not support inline SVG.
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 219 B |
BIN
configs/branding/alpha/PrivateBrowsing_150.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
configs/branding/alpha/PrivateBrowsing_70.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
configs/branding/alpha/VisualElements_150.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
configs/branding/alpha/VisualElements_70.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
configs/branding/alpha/content/about-logo-private.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
1
configs/branding/alpha/content/about-logo-private.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256"><defs><style>.g{fill:#000;}.g,.h,.i{stroke-width:0px;}.h{fill:url(#e);}.i{fill:#fff;}</style><linearGradient id="e" x1="128" y1="256" x2="128" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity=".02"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><g id="c"><rect class="g" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="d"><rect class="h" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="f"><path class="i" d="M165.9156,146.3156c-15.6016,0-28.6656,11.0055-31.8813,25.6562h-12.0687c-3.2156-14.6508-16.2797-25.6562-31.8813-25.6562-18.0063,0-32.6562,14.65-32.6562,32.6562s14.65,32.6562,32.6562,32.6562c15.6016,0,28.6656-11.0055,31.8813-25.6562h12.0687c3.2156,14.6508,16.2797,25.6562,31.8813,25.6562,18.0063,0,32.6562-14.65,32.6562-32.6562s-14.65-32.6562-32.6562-32.6562ZM90.0844,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562ZM165.9156,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562Z"/><path class="i" d="M214.4,115.6812h-21.8391l-9.2422-65.2906c-.3031-2.1406-1.5813-4.0219-3.4594-5.0969-1.8781-1.0719-4.1469-1.2188-6.1469-.3906l-45.7125,18.8906-45.7125-18.8906c-2-.8281-4.2688-.6813-6.1469.3906-1.8781,1.075-3.1562,2.9562-3.4594,5.0969l-9.2422,65.2906h-21.8391c-3.8656,0-7,3.1344-7,7s3.1344,7,7,7h172.8c3.8656,0,7-3.1344,7-7s-3.1344-7-7-7ZM85.2781,61.2875l40.0469,16.55c1.7125.7063,3.6375.7063,5.35,0l40.0469-16.55,7.6984,54.3937h-100.8406l7.6984-54.3937Z"/></g></svg>
|
After Width: | Height: | Size: 1.8 KiB |
BIN
configs/branding/alpha/content/about-logo-private@2x.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
configs/branding/alpha/content/about-logo.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
1
configs/branding/alpha/content/about-logo.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 80 80"><defs><style>.g{fill:#000;}.g,.h,.i{stroke-width:0px;}.h{fill:url(#e);}.i{fill:#fef9fe;}</style><linearGradient id="e" x1="40" y1="80" x2="40" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity=".02"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><g id="c"><rect class="g" width="80" height="80" rx="18.25" ry="18.25"/></g><g id="d"><rect class="h" width="80" height="80" rx="18.25" ry="18.25"/></g><g id="f"><path class="i" d="M63.4352,57.677c-.0536,3.2125-2.7416,5.7589-5.9546,5.7589h-22.0762c-1.1221,0-1.8295-1.2103-1.2751-2.1859,1.4628-2.5738,4.3202-6.7829,8.5529-9.1539.4406-.2468.9366-.3783,1.4416-.3783h13.4532c3.2692,0,5.9129,2.6774,5.8582,5.9591Z"/><path class="i" d="M45.8707,18.7498c-1.4628,2.5738-4.3202,6.7829-8.5529,9.1539-.4406.2468-.9366.3783-1.4416.3783h-13.3567c-3.213,0-5.901-2.5464-5.9546-5.7589-.0547-3.2817,2.589-5.9591,5.8582-5.9591h22.1726c1.1221,0,1.8295,1.2103,1.2751,2.1859Z"/><path class="i" d="M22.4207,63.4375c-.7473,0-1.5065-.1438-2.2398-.4475-2.9896-1.2383-4.4093-4.6657-3.171-7.6551,1.9045-4.5977,4.6342-8.7196,8.1136-12.2511,3.6044-3.6585,7.8551-6.5172,12.6343-8.4968,6.5691-2.7211,11.6853-7.8373,14.4061-14.4061,1.2383-2.9896,4.6658-4.409,7.6551-3.171,2.9896,1.2383,4.4093,4.6657,3.171,7.6551-1.9045,4.5977-4.6342,8.7196-8.1136,12.2511-3.6044,3.6585-7.8551,6.5172-12.6343,8.4968-6.5691,2.7211-11.6853,7.8373-14.4061,14.4061-.9345,2.2562-3.1164,3.6185-5.4153,3.6185Z"/></g></svg>
|
After Width: | Height: | Size: 1.6 KiB |
BIN
configs/branding/alpha/content/about-logo@2x.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
1
configs/branding/alpha/content/about-wordmark.svg
Normal file
After Width: | Height: | Size: 6.4 KiB |
1
configs/branding/alpha/content/firefox-wordmark.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 56"><defs><style>.b{fill:context-fill #20123a;}</style></defs><path class="b" d="M11.2896,37.6632h15.1928v5.2919H3.2415v-3.8076l15.1487-21.2557H3.2126v-5.2919h23.2393v3.811l-15.1622,21.2523ZM50.8649,26.3765c.5434,1.4469.8151,3.1418.8151,5.0778v1.7322h-15.5019v.017c0,1.1243.2089,2.0991.6301,2.9176.4195.822,1.0139,1.4537,1.7849,1.8987s1.6847.6657,2.7427.6657c.7014,0,1.3433-.0984,1.9258-.2955.5842-.197,1.0818-.4925,1.4979-.8899.4144-.394.7303-.8797.9476-1.4503l5.8404.3838c-.2972,1.4028-.9018,2.6255-1.8154,3.6683-.9137,1.0428-2.0906,1.8511-3.5273,2.4319-1.4385.5774-3.0959.8661-4.9726.8661-2.3419,0-4.3561-.4755-6.0408-1.43-1.6847-.9544-2.9805-2.3063-3.8907-4.0623-.9086-1.7526-1.362-3.8314-1.362-6.2327,0-2.3402.4534-4.3951,1.362-6.1647.9103-1.7696,2.1925-3.1486,3.8466-4.1336,1.6558-.9884,3.5986-1.4843,5.8318-1.4843,1.503,0,2.9024.2411,4.2032.7201,1.2992.4789,2.4354,1.199,3.4084,2.1568.9731.9578,1.7306,2.1602,2.274,3.6072ZM45.7378,29.2737c0-.9069-.1987-1.7119-.5927-2.4149-.3957-.6997-.9409-1.2534-1.6388-1.6508-.6964-.4008-1.503-.6012-2.4235-.6012-.9578,0-1.8053.2208-2.5406.6589-.7371.4382-1.3127,1.0292-1.7271,1.7628-.3818.679-.5853,1.4304-.6228,2.2451h9.5455ZM73.0682,20.9318c-1.1769-.6929-2.5543-1.0394-4.1353-1.0394-1.6898,0-3.1265.3872-4.3137,1.165-1.1854.7744-2.0294,1.824-2.5338,3.1486h-.2667v-4.0181h-6.017v22.7672h6.3125v-13.1617c.0102-.9782.1953-1.8138.557-2.5135.36-.6963.8644-1.2261,1.5115-1.593.647-.3635,1.396-.5469,2.2451-.5469,1.2653,0,2.257.394,2.9788,1.1786.7217.7846,1.0767,1.8749,1.0682,3.2675v13.3689h6.3125v-14.4965c0-1.7662-.326-3.2913-.9782-4.5718-.6521-1.2805-1.5658-2.2655-2.741-2.955Z"/></svg>
|
After Width: | Height: | Size: 1.7 KiB |
BIN
configs/branding/alpha/document.ico
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
configs/branding/alpha/document_pdf.ico
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
configs/branding/alpha/firefox.ico
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
configs/branding/alpha/firefox64.ico
Normal file
After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 483 KiB After Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 889 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 890 B After Width: | Height: | Size: 500 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 682 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 748 B |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 946 B |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 1.6 KiB |
BIN
configs/branding/alpha/pbmode.ico
Normal file
After Width: | Height: | Size: 103 KiB |
@@ -1,4 +0,0 @@
|
|||||||
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />
|
|
||||||
Sorry, your browser does not support inline SVG.
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 225 B |
Before Width: | Height: | Size: 483 KiB |
Before Width: | Height: | Size: 889 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 890 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 156 KiB |
Before Width: | Height: | Size: 5.1 KiB |
1
configs/branding/twilight/MacOSInstaller.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg width="320" height="130" xmlns="http://www.w3.org/2000/svg"><rect width="300" height="100" x="10" y="10" style="fill:rgb(0,0,255);stroke-width:3;stroke:red" />Sorry, your browser does not support inline SVG.</svg>
|
After Width: | Height: | Size: 219 B |
BIN
configs/branding/twilight/PrivateBrowsing_150.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
configs/branding/twilight/PrivateBrowsing_70.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
configs/branding/twilight/VisualElements_150.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
configs/branding/twilight/VisualElements_70.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
configs/branding/twilight/content/about-logo-private.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
1
configs/branding/twilight/content/about-logo-private.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256"><defs><style>.g{fill:#000;}.g,.h,.i{stroke-width:0px;}.h{fill:url(#e);}.i{fill:#fff;}</style><linearGradient id="e" x1="128" y1="256" x2="128" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity=".02"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><g id="c"><rect class="g" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="d"><rect class="h" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="f"><path class="i" d="M165.9156,146.3156c-15.6016,0-28.6656,11.0055-31.8813,25.6562h-12.0687c-3.2156-14.6508-16.2797-25.6562-31.8813-25.6562-18.0063,0-32.6562,14.65-32.6562,32.6562s14.65,32.6562,32.6562,32.6562c15.6016,0,28.6656-11.0055,31.8813-25.6562h12.0687c3.2156,14.6508,16.2797,25.6562,31.8813,25.6562,18.0063,0,32.6562-14.65,32.6562-32.6562s-14.65-32.6562-32.6562-32.6562ZM90.0844,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562ZM165.9156,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562Z"/><path class="i" d="M214.4,115.6812h-21.8391l-9.2422-65.2906c-.3031-2.1406-1.5813-4.0219-3.4594-5.0969-1.8781-1.0719-4.1469-1.2188-6.1469-.3906l-45.7125,18.8906-45.7125-18.8906c-2-.8281-4.2688-.6813-6.1469.3906-1.8781,1.075-3.1562,2.9562-3.4594,5.0969l-9.2422,65.2906h-21.8391c-3.8656,0-7,3.1344-7,7s3.1344,7,7,7h172.8c3.8656,0,7-3.1344,7-7s-3.1344-7-7-7ZM85.2781,61.2875l40.0469,16.55c1.7125.7063,3.6375.7063,5.35,0l40.0469-16.55,7.6984,54.3937h-100.8406l7.6984-54.3937Z"/></g></svg>
|
After Width: | Height: | Size: 1.8 KiB |
BIN
configs/branding/twilight/content/about-logo-private@2x.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
configs/branding/twilight/content/about-logo.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
1
configs/branding/twilight/content/about-logo.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 80 80"><defs><style>.g{fill:url(#e);}.g,.h,.i{stroke-width:0px;}.h{fill:#a570ff;}.i{fill:#fef9fe;}</style><linearGradient id="e" x1="40" y1="80" x2="40" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity="0"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><g id="c"><rect class="h" width="80" height="80" rx="18.25" ry="18.25"/></g><g id="d"><rect class="g" width="80" height="80" rx="18.25" ry="18.25"/></g><g id="f"><path class="i" d="M63.4352,57.677c-.0536,3.2125-2.7416,5.7589-5.9546,5.7589h-22.0762c-1.1221,0-1.8295-1.2103-1.2751-2.1859,1.4628-2.5738,4.3202-6.7829,8.5529-9.1539.4406-.2468.9366-.3783,1.4416-.3783h13.4532c3.2692,0,5.9129,2.6774,5.8582,5.9591Z"/><path class="i" d="M45.8707,18.7498c-1.4628,2.5738-4.3202,6.7829-8.5529,9.1539-.4406.2468-.9366.3783-1.4416.3783h-13.3567c-3.213,0-5.901-2.5464-5.9546-5.7589-.0547-3.2817,2.589-5.9591,5.8582-5.9591h22.1726c1.1221,0,1.8295,1.2103,1.2751,2.1859Z"/><path class="i" d="M22.4207,63.4375c-.7473,0-1.5065-.1438-2.2398-.4475-2.9896-1.2383-4.4093-4.6657-3.171-7.6551,1.9045-4.5977,4.6342-8.7196,8.1136-12.2511,3.6044-3.6585,7.8551-6.5172,12.6343-8.4968,6.5691-2.7211,11.6853-7.8373,14.4061-14.4061,1.2383-2.9896,4.6658-4.409,7.6551-3.171,2.9896,1.2383,4.4093,4.6657,3.171,7.6551-1.9045,4.5977-4.6342,8.7196-8.1136,12.2511-3.6044,3.6585-7.8551,6.5172-12.6343,8.4968-6.5691,2.7211-11.6853,7.8373-14.4061,14.4061-.9345,2.2562-3.1164,3.6185-5.4153,3.6185Z"/></g></svg>
|
After Width: | Height: | Size: 1.6 KiB |
BIN
configs/branding/twilight/content/about-logo@2x.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
1
configs/branding/twilight/content/about-wordmark.svg
Normal file
After Width: | Height: | Size: 6.4 KiB |
1
configs/branding/twilight/content/firefox-wordmark.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 56"><defs><style>.b{fill:context-fill #20123a;}</style></defs><path class="b" d="M11.2896,37.6632h15.1928v5.2919H3.2415v-3.8076l15.1487-21.2557H3.2126v-5.2919h23.2393v3.811l-15.1622,21.2523ZM50.8649,26.3765c.5434,1.4469.8151,3.1418.8151,5.0778v1.7322h-15.5019v.017c0,1.1243.2089,2.0991.6301,2.9176.4195.822,1.0139,1.4537,1.7849,1.8987s1.6847.6657,2.7427.6657c.7014,0,1.3433-.0984,1.9258-.2955.5842-.197,1.0818-.4925,1.4979-.8899.4144-.394.7303-.8797.9476-1.4503l5.8404.3838c-.2972,1.4028-.9018,2.6255-1.8154,3.6683-.9137,1.0428-2.0906,1.8511-3.5273,2.4319-1.4385.5774-3.0959.8661-4.9726.8661-2.3419,0-4.3561-.4755-6.0408-1.43-1.6847-.9544-2.9805-2.3063-3.8907-4.0623-.9086-1.7526-1.362-3.8314-1.362-6.2327,0-2.3402.4534-4.3951,1.362-6.1647.9103-1.7696,2.1925-3.1486,3.8466-4.1336,1.6558-.9884,3.5986-1.4843,5.8318-1.4843,1.503,0,2.9024.2411,4.2032.7201,1.2992.4789,2.4354,1.199,3.4084,2.1568.9731.9578,1.7306,2.1602,2.274,3.6072ZM45.7378,29.2737c0-.9069-.1987-1.7119-.5927-2.4149-.3957-.6997-.9409-1.2534-1.6388-1.6508-.6964-.4008-1.503-.6012-2.4235-.6012-.9578,0-1.8053.2208-2.5406.6589-.7371.4382-1.3127,1.0292-1.7271,1.7628-.3818.679-.5853,1.4304-.6228,2.2451h9.5455ZM73.0682,20.9318c-1.1769-.6929-2.5543-1.0394-4.1353-1.0394-1.6898,0-3.1265.3872-4.3137,1.165-1.1854.7744-2.0294,1.824-2.5338,3.1486h-.2667v-4.0181h-6.017v22.7672h6.3125v-13.1617c.0102-.9782.1953-1.8138.557-2.5135.36-.6963.8644-1.2261,1.5115-1.593.647-.3635,1.396-.5469,2.2451-.5469,1.2653,0,2.257.394,2.9788,1.1786.7217.7846,1.0767,1.8749,1.0682,3.2675v13.3689h6.3125v-14.4965c0-1.7662-.326-3.2913-.9782-4.5718-.6521-1.2805-1.5658-2.2655-2.741-2.955Z"/></svg>
|
After Width: | Height: | Size: 1.7 KiB |
BIN
configs/branding/twilight/document.ico
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
configs/branding/twilight/document_pdf.ico
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
configs/branding/twilight/firefox.ico
Normal file
After Width: | Height: | Size: 103 KiB |
BIN
configs/branding/twilight/firefox64.ico
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
configs/branding/twilight/logo-mac.png
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
configs/branding/twilight/logo.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
configs/branding/twilight/logo128.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
configs/branding/twilight/logo16.png
Normal file
After Width: | Height: | Size: 459 B |
BIN
configs/branding/twilight/logo22.png
Normal file
After Width: | Height: | Size: 606 B |
BIN
configs/branding/twilight/logo24.png
Normal file
After Width: | Height: | Size: 647 B |
BIN
configs/branding/twilight/logo256.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
configs/branding/twilight/logo32.png
Normal file
After Width: | Height: | Size: 812 B |
BIN
configs/branding/twilight/logo48.png
Normal file
After Width: | Height: | Size: 1.1 KiB |