Compare commits
873 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
31448ad1de
|
|||
|
88f1894219
|
|||
|
757a274ac3
|
|||
|
ac616498e3
|
|||
|
db87170137
|
|||
|
abf140ce8e
|
|||
|
5a6d219c29
|
|||
|
c2bc69e29f
|
|||
|
5a05d0023d
|
|||
|
33455cf719
|
|||
|
96b28f0bc2
|
|||
|
fef1ed372f
|
|||
|
9f4ce43578
|
|||
|
32cf8b95ea
|
|||
|
3dd0363cca
|
|||
|
caed4eb4b6
|
|||
|
2e0ad0fc9d
|
|||
|
f3549225a9
|
|||
|
778aac398a
|
|||
|
acbd347563
|
|||
|
bc33f5190e
|
|||
|
e93466dc4d
|
|||
|
adb124c488
|
|||
|
2a2aabe9dc
|
|||
|
6057ce2121
|
|||
|
7667e22b89
|
|||
|
d2fb81e7a6
|
|||
|
a6b0f9ef81
|
|||
|
614e50b47e
|
|||
|
ba11d11766
|
|||
|
49767bc72a
|
|||
|
f021c53765
|
|||
|
4d881bf3f8
|
|||
|
6d1b944627
|
|||
|
343c0be453
|
|||
|
6a9b8796ab
|
|||
|
cf73ac982e
|
|||
| 1981a36a83 | |||
| 01ca1449f0 | |||
| 441cac840b | |||
| 945cf8c254 | |||
| cfd7216d48 | |||
| 0f4a89fe39 | |||
| 45d7263305 | |||
|
2fb1f684a4
|
|||
|
6a954c6c0d
|
|||
| 23b37858ab | |||
| f631efa5a8 | |||
|
13bb6dba63
|
|||
| 48892749cc | |||
|
4fc69e1dca
|
|||
|
b949185f00
|
|||
|
ce17fa6ff4
|
|||
| f261bc7b9d | |||
| 7b7f7b0ef7 | |||
| e40cb300ad | |||
| a54659075e | |||
| 5d16e24bbf | |||
|
8f7014158e
|
|||
| d5910f17ca | |||
| 0f920c47e3 | |||
| 40f3814402 | |||
| 4d4cb82345 | |||
| ef23d72ede | |||
| cb2ea5e18c | |||
| 6fe04d10e7 | |||
| 5dc4a15c2f | |||
| da3a3b59f6 | |||
| 49d627d740 | |||
| 0cc8ce0beb | |||
| 100db6c823 | |||
| f0cc351c6b | |||
| 330ec3a4e1 | |||
| fff721a748 | |||
| 441c4155ba | |||
| 23f873ac33 | |||
|
be042fe060
|
|||
| 6c40408f36 | |||
| 0596b57099 | |||
| 60e2e901d3 | |||
| eda031ee4a | |||
| 5ad16d7aea | |||
|
d4f8d68610
|
|||
| d2dccb6481 | |||
| 4198b8d3a5 | |||
| 5dedaa7a13 | |||
|
ab2199e9ca
|
|||
| 78726b4c4a | |||
| f45720b1be | |||
|
a20561f516
|
|||
|
8dd1bade3d
|
|||
| 14aac5dbdd | |||
| a7a05a8dd4 | |||
| 373bb1920d | |||
|
7d3d849474
|
|||
| 16b3e5e16f | |||
| 2dd653b12f | |||
| 8089e6483e | |||
|
2f95961b9e
|
|||
| 008d01db23 | |||
|
ee51ff205b
|
|||
|
f616c94bd6
|
|||
| c2a904f2c2 | |||
| c718483844 | |||
| 9b47e749d5 | |||
| 999c805c4d | |||
| 047ef27590 | |||
| 47f4ca1979 | |||
| dc6f326f96 | |||
|
b55f1cdb44
|
|||
|
0f6ee45157
|
|||
| 0f10d3b35a | |||
|
c738b4a446
|
|||
| 81632962a7 | |||
| 9b9bb71005 | |||
| f9bd8204f2 | |||
| 6503cfa9db | |||
| 2a6330f774 | |||
| 0eee5798b8 | |||
|
30f05ff291
|
|||
| 7e5ec73759 | |||
| 32d84e9a42 | |||
|
19947442a6
|
|||
| e55eb0986b | |||
|
e5500a11da
|
|||
| 0c4f98e7fb | |||
|
ac96552200
|
|||
|
1a7eb59fee
|
|||
| 575818a637 | |||
| 071943afa5 | |||
| d14d9616bf | |||
| f3fee22717 | |||
| f3fb0aaba8 | |||
| 45778ce564 | |||
| 77beced95f | |||
|
ca89bd940a
|
|||
|
76bfc61e93
|
|||
| f0146e01b6 | |||
| 7dd1a46ea3 | |||
|
d510f523e3
|
|||
|
fc724fbfeb
|
|||
|
62ef6ec3e4
|
|||
|
80336a2d99
|
|||
|
3a19832e3c
|
|||
|
d3931f91f4
|
|||
|
05b47c4e2d
|
|||
|
6477578fc1
|
|||
|
dd93ad6738
|
|||
| 3345c43b34 | |||
| 7664edbf9a | |||
| e504efe7e4 | |||
| 140a79c1f6 | |||
|
69e86e8b1e
|
|||
|
1d85530f6b
|
|||
| c8487e688e | |||
|
95ecfc228e
|
|||
| 85b36b5f00 | |||
|
fd0d995cf8
|
|||
| 1c3f22015c | |||
|
db11e5b0ae
|
|||
| 15c65ef1f6 | |||
| 854e5ae048 | |||
| 9ee0a1a822 | |||
| 38e68295ac | |||
| 5489626a51 | |||
| bb9e7b7e2f | |||
|
a5b29e747a
|
|||
| 75ba4fe003 | |||
| fb3b662136 | |||
| c99e405b6f | |||
| 8a4f6851f4 | |||
| 57119907f3 | |||
| 06d2f0e3e1 | |||
| 353d1fed48 | |||
|
bd5986f265
|
|||
| 6dad012d9a | |||
| e95e3e2707 | |||
| c6244fcad0 | |||
|
18639ab8a4
|
|||
|
0208c61b20
|
|||
| b2251c7b67 | |||
|
f7593c47ce
|
|||
|
4cedf03332
|
|||
|
2784cbfd5d
|
|||
|
c88f242150
|
|||
|
4e6d00a5e9
|
|||
| 1118b23ad3 | |||
|
a5d03467d5
|
|||
| 0d0c210ff3 | |||
|
50190e749c
|
|||
|
41f9d8d8a5
|
|||
| 6372f472b1 | |||
| e47c4c4feb | |||
| 6d448436ea | |||
| 55f65575de | |||
| 1292b0be18 | |||
| db8d212880 | |||
| 621ab08b7d | |||
| f65e8cb4a6 | |||
| 1ada093092 | |||
| c201035a3a | |||
|
b9d6d5be84
|
|||
| 7b3cafcb93 | |||
| 74fcbd6469 | |||
| 7276848802 | |||
|
a99d1671d1
|
|||
| ebf12a0672 | |||
| 683e12f948 | |||
|
0c64bbd008
|
|||
| 8c1d2b2a35 | |||
| 2f0f054c04 | |||
| d4c9418a5a | |||
| 339b9dd83d | |||
|
88f35cba28
|
|||
|
4010d97dec
|
|||
| e210416b4a | |||
| f3735db80f | |||
| 4dc2fa274b | |||
| 2997b49a8c | |||
| d3a2839e36 | |||
|
7cd2a723e3
|
|||
|
0192972782
|
|||
| 10dc1ed594 | |||
| de2b529f8f | |||
| a876fbd158 | |||
|
2703d46614
|
|||
|
2016d95125
|
|||
|
0866b9375a
|
|||
| 9938788358 | |||
| accdff374c | |||
| ae7109a6e0 | |||
| f955b52990 | |||
|
1097207a8a
|
|||
|
aaa17f0ebf
|
|||
|
426c5a2402
|
|||
|
450221bd5d
|
|||
| 913d3276e2 | |||
| 0c3c374084 | |||
| 8ac5170c78 | |||
|
cc54a3bc47
|
|||
|
3c80495db0
|
|||
|
e4506a3583
|
|||
|
1c1e0b8bb8
|
|||
|
1c8afe6a15
|
|||
|
c2cfb0fce6
|
|||
|
4d01c48293
|
|||
|
9274ce188f
|
|||
| 5fd34aaaa6 | |||
| 32b8785ed8 | |||
| 2cbf9c7062 | |||
| 36c9fb3e7a | |||
| 762f0b647d | |||
| f6e2f00429 | |||
| 19f74dc230 | |||
|
134ccf8f21
|
|||
| 5b9b7d9eab | |||
| b6e2559306 | |||
|
567c184389
|
|||
|
45d2dae89a
|
|||
|
e15cef973d
|
|||
| 6eed9f4ed3 | |||
|
d000e6d116
|
|||
|
57307498ca
|
|||
| 1a088d105e | |||
| 7b5044d407 | |||
| e294b190b4 | |||
|
97a00353b7
|
|||
| 6731674f81 | |||
| 0276629ebe | |||
|
cb91421204
|
|||
|
5f93339323
|
|||
|
f0308a3886
|
|||
| dd9c32835f | |||
|
666f7be6ce
|
|||
|
adc9de513b
|
|||
| c11661c0be | |||
|
2998a56f46
|
|||
|
272004c2a9
|
|||
|
8baf09e913
|
|||
|
87eb01d344
|
|||
|
d6d8332165
|
|||
|
f913f99747
|
|||
|
6e47043503
|
|||
| e380bf672f | |||
|
f6767eaab7
|
|||
| 1e132c3b72 | |||
| 7e5f6ffd8c | |||
| 14712bd8cb | |||
| 3a6d18e861 | |||
|
b4c8aa592e
|
|||
|
111ac3be00
|
|||
| 8be1fa93c6 | |||
|
5ce317abcc
|
|||
|
546283662f
|
|||
|
bee2651c68
|
|||
|
f44a55b03d
|
|||
|
172f68e2f0
|
|||
|
6f38136498
|
|||
| 28dc13eeb1 | |||
| 58580b39c9 | |||
|
ee9b344fb2
|
|||
|
b0c9e3b55f
|
|||
|
9335fd264f
|
|||
|
853bb5bb1b
|
|||
|
3bbfa97f26
|
|||
|
22c77cc6b0
|
|||
|
c3e2dc65d8
|
|||
|
d904114f81
|
|||
|
4af33a239b
|
|||
|
d5147160d6
|
|||
|
c2cdb83438
|
|||
| 6c3ea08ab1 | |||
| 2e24a6dff7 | |||
| 463d73f044 | |||
|
a093b053c2
|
|||
|
c8dfb160cb
|
|||
|
17a0706a88
|
|||
|
d9d35c5f87
|
|||
| 317a2ee7d3 | |||
| 9851037608 | |||
| 4273a1880b | |||
| 1d437287b8 | |||
| b0830edb4a | |||
|
091a64fbe9
|
|||
|
4d7c331984
|
|||
|
31b89aa9b0
|
|||
|
72a2ef5fc9
|
|||
| c1fd596841 | |||
| 3743a55e0d | |||
|
b04fe6a16d
|
|||
|
455f18be13
|
|||
| ca0b544251 | |||
|
09cb746b93
|
|||
|
31446987ea
|
|||
|
10ecb680cd
|
|||
|
055c6b6a2b
|
|||
|
2d44ecf8a6
|
|||
|
bba6ffe74f
|
|||
|
7025dfccc6
|
|||
|
37a938be33
|
|||
|
7c3424f001
|
|||
|
155691f94b
|
|||
|
a5ec96a56f
|
|||
|
e6bedf136d
|
|||
|
fa64257fcd
|
|||
|
82fb92114b
|
|||
| f76be45a40 | |||
|
7c66d26061
|
|||
|
12c58d567c
|
|||
|
d62e221615
|
|||
|
0b78517a9d
|
|||
| 9d05fe7cb2 | |||
| d4f8370fc3 | |||
| 54094cc1f8 | |||
| 1c30ca8cbc | |||
| 3573915166 | |||
| d98db5bb3b | |||
| 03776a36cc | |||
| 1c34054d36 | |||
| 8e6b047b93 | |||
| 4b445b6267 | |||
| 87efd23aa3 | |||
|
31bbc01b1c
|
|||
|
d0a72cb8d5
|
|||
|
98b64720f6
|
|||
|
8f7de57114
|
|||
|
0c0ae8f988
|
|||
|
671e45fdbf
|
|||
|
d7230c03f2
|
|||
|
b4410c0cfb
|
|||
| 6bc376fb63 | |||
| a15754a9ef | |||
| 321d14b66d | |||
| 3bcbd63120 | |||
| 78e3f5e599 | |||
| ea3ea1a5c6 | |||
| 905ace5334 | |||
| 756daeec8b | |||
| 2eb8f609dd | |||
| fbc5e7937a | |||
| 7e9f13ec33 | |||
| 6f65512707 | |||
| 91c2d660c6 | |||
| 71bd6bf7f0 | |||
|
31ba6da98d
|
|||
|
7191a6d548
|
|||
| 4bd9c6ca20 | |||
|
ec0701bfa8
|
|||
|
f80027ec43
|
|||
|
76e1ceb95c
|
|||
|
bbf7e6953e
|
|||
|
f09b310bde
|
|||
|
4bc6403633
|
|||
| b1c63004f2 | |||
| 102693168a | |||
|
4f505086f8
|
|||
|
8dcc58b110
|
|||
|
a2528d9d2c
|
|||
| a334e449cb | |||
| 574eedb875 | |||
| ae68a612ef | |||
| 9eebf17660 | |||
| 845839b486 | |||
| c656c175f5 | |||
| 64087d6749 | |||
| 7b3e6ab536 | |||
| 672953b035 | |||
| 3fefe84f17 | |||
| 12be85b9d2 | |||
| 508534e2ba | |||
| 09985fa173 | |||
|
4332470e91
|
|||
|
0d332e72b5
|
|||
|
f34ac66e7a
|
|||
| 4c33224d5f | |||
| b6529e4a58 | |||
| 1bdbf3bfa3 | |||
| 986da833ad | |||
| ac0b8580b6 | |||
| 989393d3d9 | |||
| 367b9e548d | |||
| 5591ac8697 | |||
| d3163a1e53 | |||
|
53eaa1eee9
|
|||
|
938ea2535f
|
|||
| 19e7c1451f | |||
| f30b5d8183 | |||
| bd5afa3a9a | |||
|
1496586617
|
|||
| 95d6ec9fd4 | |||
| 4de78f3c58 | |||
| 116e31b45d | |||
| 4ab64e727d | |||
| 2deb9e3d6f | |||
| 75282d0a3a | |||
|
17286cfeaf
|
|||
|
bab8f88a13
|
|||
| e49d2df4b7 | |||
|
1b8f5eb531
|
|||
| d7c0f0d495 | |||
|
c0481d65d0
|
|||
| 42b75c9265 | |||
| 9ad1c6450a | |||
| 9d13fafa89 | |||
|
11f3f8ac13
|
|||
|
7c41b2ae77
|
|||
|
687c5afb20
|
|||
|
e64f6aab7d
|
|||
| de0fff5801 | |||
| 6a62210f15 | |||
| 6410f2d953 | |||
| c88caedad8 | |||
| 6eec31b9f3 | |||
| 04e6f2a2c6 | |||
| a58f090e79 | |||
| a7662a1b55 | |||
| 8850bcd6cc | |||
|
d28db8262a
|
|||
| ff191d6661 | |||
| 265998f86f | |||
| 2dde416f50 | |||
| e92210a88f | |||
| 84d33ed944 | |||
| 87377a4e8a | |||
| 00b3ddd217 | |||
| 84fe22fc7d | |||
| a81e0f3371 | |||
| f16ed5024b | |||
| f399643dff | |||
| 70f2ae7405 | |||
| 8158e73aed | |||
| ad14bf5574 | |||
| 1b99537a5f | |||
| 0d3f4681e0 | |||
| cbee839671 | |||
| 67cdae5585 | |||
| 503a240d01 | |||
| 200bf71906 | |||
| 530901d99b | |||
| abc00c3a96 | |||
| 1bb06b7db1 | |||
| 34ae172d92 | |||
|
7e0218b082
|
|||
|
0a9a24d390
|
|||
| 291fb49af2 | |||
| 6d51572142 | |||
| 5facb997ee | |||
| f96e9bf7dc | |||
| b0106bfd6b | |||
| a366327b79 | |||
| 6047727d0f | |||
| 90831803d0 | |||
| 4d859ea13a | |||
| 9a489cd130 | |||
| b9ef360d25 | |||
| 99822dae1e | |||
| 28d9794686 | |||
| a5a2ed0fdd | |||
| 6493cc2076 | |||
| 3d569ae40c | |||
| 1ae83dc7ae | |||
| 66edb72826 | |||
| df3583efab | |||
|
44f35581a9
|
|||
|
0a0e8b605d
|
|||
| 0bc8336b6a | |||
| 3ace34099b | |||
| e4ee74ea29 | |||
| 9aee2381f7 | |||
|
0ea286bf8e
|
|||
| 13f1bd19a4 | |||
| 2b97f64f3b | |||
|
c19f554b77
|
|||
| 66847abdaf | |||
| 32e65cf3e8 | |||
| 87aa1586f3 | |||
| 9ed7abb972 | |||
|
4221863aff
|
|||
| 26f3300424 | |||
| 2356a3a49b | |||
| 4f26072136 | |||
| 3d8eda7bff | |||
| e0b1995d20 | |||
| 560a46ff03 | |||
| f1a0679bd3 | |||
| c64d446d52 | |||
| 25a6a5a937 | |||
| 8e51dcb5aa | |||
| 1ce9941018 | |||
|
5b0f3a6832
|
|||
|
ece4a76711
|
|||
| 33474d79e2 | |||
| f82cd36298 | |||
| c830c0cf30 | |||
| 61ade2c055 | |||
| 0d1e4d88f6 | |||
| 266f92811c | |||
|
1633232fd5
|
|||
|
03a35288ec
|
|||
|
7346c4d3ac
|
|||
|
e46cb94c86
|
|||
| c0139de0e1 | |||
| 1df7bd988f | |||
| f762b5c3f5 | |||
|
a8a4adee73
|
|||
|
93136f2a0b
|
|||
|
5d405830df
|
|||
|
d80af3968f
|
|||
| 09d3669fcf | |||
| c4c68f7f7e | |||
| a80653968e | |||
|
775ff52b14
|
|||
| 1acdf1748f | |||
| e88ee1a80e | |||
| 662a3dfeb5 | |||
| 6458a05355 | |||
| a57dc2cd78 | |||
| e8f12c1bdf | |||
|
2c623ce775
|
|||
|
65bc92af88
|
|||
|
5b41dec8b0
|
|||
| bad1370181 | |||
|
a1b01b8b8c
|
|||
| 9626aabea8 | |||
| a7a8817c21 | |||
| d17adf0299 | |||
| dec6fbb64c | |||
| f35e64a4f4 | |||
|
af45bcc642
|
|||
| 66225f2eff | |||
| c2fce11a64 | |||
| cf43545f57 | |||
| cca4759612 | |||
| 492facf194 | |||
| 472a3a5416 | |||
| 3a8c0a9e66 | |||
| 0f17a9dce9 | |||
| 464d7ec3c6 | |||
| b6d2c6f113 | |||
| 895a83b841 | |||
| ce7896c07f | |||
| 04c37b9cdf | |||
| b12887310f | |||
| ff0a5339a8 | |||
| 632761cae1 | |||
| b536928661 | |||
| 1372587017 | |||
|
82ab189d36
|
|||
|
139a206367
|
|||
|
4b92316774
|
|||
|
fc19f44c18
|
|||
| 0b43cb1fc7 | |||
| 9a56bd46b1 | |||
| 9169afa79a | |||
| 6aa14e8eb1 | |||
| f37e72084c | |||
| d050d27767 | |||
| e5d9d1d055 | |||
|
a31dcb6df8
|
|||
|
525a2c1137
|
|||
| c5bdbbcdcb | |||
| 48abc1d42a | |||
| f77fbc6a45 | |||
| 01b3a7d48f | |||
| 792fc00b06 | |||
| d022f53e6b | |||
| 3b69c565a3 | |||
| 2b8869882c | |||
| bfa4b0f422 | |||
| 3ad66a447f | |||
| aaa843d272 | |||
| d8627a1ad2 | |||
| ae0800e8ec | |||
| df824ee0e3 | |||
| 298c3cde2b | |||
| dd492b272a | |||
| 67614c3e17 | |||
| 05e5832161 | |||
| 0140f0ab7e | |||
| b477409747 | |||
| f60fcf4b2f | |||
| 5b09c59a7c | |||
| 6b7f2bca03 | |||
|
5d76e2ae0b
|
|||
| df13d33a09 | |||
| c64814d41a | |||
| 63270a3e8c | |||
| e388e84dc5 | |||
| b0aa86f8dc | |||
| 46b462ad72 | |||
| 7011b007a0 | |||
|
a890fc47af
|
|||
| 3f0ba17dcc | |||
| f6f800d49f | |||
| 97996b9397 | |||
| 0d0c272a5d | |||
| 546e728188 | |||
| 8e3bd2589e | |||
| cd4181a7fc | |||
| 3f26dd3b27 | |||
| 8a25c48f57 | |||
| f098042357 | |||
| f12573d40b | |||
| 2043e644c3 | |||
| ede201f76d | |||
| 96d857da21 | |||
| 73188e1a21 | |||
| 8ea30ebd7f | |||
| fe121cf0d5 | |||
| 7c0ff5824a | |||
| a650d015fc | |||
| 33aecf011a | |||
| e756ae4b37 | |||
| f1e6db05b5 | |||
| 1634bea9d2 | |||
| 01c19281f7 | |||
| f1864a4062 | |||
| a1523e3f81 | |||
| c89d1ed25f | |||
| 667a207010 | |||
| b856a51785 | |||
| 9d0a2de9a1 | |||
| e9cde5c75d | |||
| 93081f84c7 | |||
| e182583a17 | |||
| 8167166eb9 | |||
| 772cd517cf | |||
| 2a4885ed39 | |||
|
7ebe767518
|
|||
| 9e40a3ece5 | |||
| 084a0f9427 | |||
| fe127bed0f | |||
| fce4ad5a6b | |||
| ee4ff2d41b | |||
| 54f37e7f53 | |||
| 9e247fcbe6 | |||
| 019c9d46f9 | |||
| 9d877250f9 | |||
| ee1c13db4c | |||
| bb04a71b59 | |||
| 60db942814 | |||
| 6c771e2ea8 | |||
| 8b7a0e3233 | |||
| b7f20342f2 | |||
| efcd5159c8 | |||
| aca6b565a7 | |||
| 5808953199 | |||
| dc054d91e0 | |||
| 2fbc674986 | |||
| 239ac0d9e9 | |||
| 55dd7465d2 | |||
| cf96d55027 | |||
| a896a1a306 | |||
| b7f0b672a2 | |||
| 7004d344ac | |||
| 461ac8f224 | |||
| c8dc59c134 | |||
| f8570a4c6a | |||
| 9d285e3094 | |||
| abc22993cb | |||
|
e56081202d
|
|||
| 6da9b15464 | |||
| d5a31c88bb | |||
| d9ff08381f | |||
| e6149a97d9 | |||
|
b69edfefd6
|
|||
| d419ac9432 | |||
| 708b1917a7 | |||
| 741fb9d904 | |||
| 05228b4db3 | |||
| aa9fed4eac | |||
| 3db638b937 | |||
| 43b346a5ff | |||
| de216b9cde | |||
| add980a655 | |||
| 58d6e4e044 | |||
| 366e44a940 | |||
| b3a26717cd | |||
|
b0b6434f28
|
|||
|
42bce85c7f
|
|||
|
aa54b66a03
|
|||
| 122646d0f8 | |||
| 9bd5e84d32 | |||
| 025a07e658 | |||
| 4621a11016 | |||
| 46d2d50842 | |||
| 3dbc2f0083 | |||
|
06fc5e9f1d
|
|||
|
880bfd3cb2
|
|||
| f37cd9e7f2 | |||
| 78eb8f8eac | |||
|
0a83385de0
|
|||
| a85690b306 | |||
| 38dcfbb3e1 | |||
| 95516f6344 | |||
| edae556a2a | |||
| d52e533fa2 | |||
| e7686c1cc1 | |||
| d94da5094f | |||
| 4caef8ef1e | |||
| 42de2565ba | |||
| 5d6992bf76 | |||
| 4867ca9b79 | |||
| 19119a4c03 | |||
| e619ccaf28 | |||
| e44e24d77f | |||
| 465e499db1 | |||
| e277417ab2 | |||
|
659a03be58
|
|||
| f69e1ad6af | |||
| 94599e568d | |||
| d653735a3b | |||
| ddc800d6e4 | |||
|
83ea0d0774
|
|||
|
b6d8df1239
|
|||
| 821f35eb37 | |||
| 2d0c5ea9a7 | |||
| abaca70f2f | |||
| 4eae08712d | |||
|
af3f279d29
|
|||
|
e40f3979b9
|
|||
|
3f48629ed3
|
|||
| 9fa7184a24 | |||
| 8c8c4e1009 | |||
| 6f9cf58da1 | |||
| 51230eb68f | |||
| 3a52e6986b | |||
| 966626d9e2 | |||
| 5a04889a9e | |||
| 813936b51b | |||
|
cf0d62ef7c
|
|||
|
1c9a1a805d
|
|||
| 1502f1b36c | |||
| a5327ff4d1 | |||
| 911c0b5f24 | |||
|
e90fd2377d
|
|||
| 1fe5320bbe | |||
| 45ff07147d | |||
| 509397d6e7 | |||
| 8809550e58 | |||
| 61ad5103fb | |||
| 7429f0b8b1 | |||
| dcd5cc05dd | |||
| de75a19b2c | |||
| e3beac9e01 | |||
| 794591bbd5 | |||
| 2029ecbb8d | |||
| f55467fc01 | |||
| e9a7b27cf2 | |||
|
278c462466
|
|||
|
96da882689
|
|||
| 1487ad6dca | |||
| 522c5e92ef | |||
| 6849228388 | |||
| 472ab56d50 | |||
| d8c8a631ee | |||
| c23c06c11b | |||
| 2ddb046a4b | |||
| 1a8fda242e | |||
| 92d5d9d1ac | |||
| e356ae9212 | |||
| ef7bd365cc | |||
| 8c69fa78d0 | |||
| 87b1377e85 | |||
| 94da846afc | |||
| 42c1611420 | |||
| caae79bea2 | |||
| fde6019469 | |||
|
cc077e63c8
|
|||
|
ff60d624fc
|
|||
|
f3144efeb2
|
|||
|
0faf548111
|
|||
| 60c7a0970f | |||
| 3daeea597d | |||
| 972df273e1 | |||
| b8b62c18df | |||
|
e09e35dfdf
|
|||
| 90a96896a7 | |||
|
8b09671052
|
|||
|
f439e0be46
|
|||
| 7220531861 | |||
| 72166bb3f1 | |||
| 2998c52d7c | |||
| c19c1599cb | |||
| d47c737a73 | |||
| 5f45dd9147 | |||
| 57056566b4 | |||
| 42fe93a194 | |||
| b42e62e822 | |||
| 6cdd3ed34b | |||
|
93462d6ea7
|
|||
| 3016dc4bc8 | |||
| ef990bf0f2 | |||
| ad94d0ebe9 | |||
| 186e7a2b47 | |||
| fa2ed271ef | |||
| 97ed4c7279 | |||
| 65a4e306eb | |||
| 7de8b90cb0 | |||
| c5d14debd1 | |||
| a2b1f8adf9 | |||
|
ca6236da58
|
|||
|
a5c761c237
|
|||
| 86f8fda8a5 | |||
|
fe0f0d1ce3
|
|||
|
18f76a9068
|
|||
|
e41d5eae11
|
|||
|
d03114fd33
|
|||
|
b1fcc23d0f
|
|||
|
3d2d6fb726
|
|||
| 32969c9fc5 | |||
|
31f3319951
|
|||
| 70366045d5 | |||
| 8c438b8183 | |||
|
2df3405598
|
|||
|
ebfb448ed2
|
|||
| fc12732e93 | |||
| 0e457065a0 | |||
|
b074ed9401
|
|||
| b4804752e1 | |||
|
4c805daa7e
|
|||
| 416f468a20 | |||
| 1f6dfc4e6f | |||
| 4847c25066 | |||
|
6582156917
|
|||
|
e29ed5de35
|
|||
|
09b4799dbf
|
|||
| d1c4abcd4f | |||
| 77c073c602 | |||
|
d25b4021d5
|
|||
| 37632d93ec | |||
|
321eccb7d6
|
|||
|
aefa3e75c4
|
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/hugo:1": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "ghcr.io/devcontainers/features/hugo@sha256:15465c956810aa164c9644b6df5ca36f6cac3e7a86b7dcc474a1fb830b21c509",
|
||||
"integrity": "sha256:15465c956810aa164c9644b6df5ca36f6cac3e7a86b7dcc474a1fb830b21c509"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/node:1": {
|
||||
"version": "1.7.1",
|
||||
"resolved": "ghcr.io/devcontainers/features/node@sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6",
|
||||
"integrity": "sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"image": "mcr.microsoft.com/devcontainers/go",
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/hugo:1": {
|
||||
"extended": true,
|
||||
"version": "0.156.0"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/node:1": {}
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"mhutchie.git-graph",
|
||||
"esbenp.prettier-vscode",
|
||||
"tamasfe.even-better-toml",
|
||||
"budparr.language-hugo-vscode"
|
||||
]
|
||||
}
|
||||
},
|
||||
"forwardPorts": [
|
||||
1313
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[{*.caddy,*.example-caddy,Caddyfile}]
|
||||
charset = utf-8
|
||||
indent_style = tab
|
||||
tab_width = 4
|
||||
@@ -1,38 +1,71 @@
|
||||
# Copyright (c) 2019-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
# Additional Co-Owners are added to the TOP of this file
|
||||
|
||||
# High-traffic pages
|
||||
/docs/index.en.md @jonaharagon @dngray
|
||||
/theme/overrides/ @jonaharagon
|
||||
|
||||
# Org
|
||||
|
||||
/docs/about/ @jonaharagon
|
||||
CODE_OF_CONDUCT.md @jonaharagon
|
||||
CITATION.cff
|
||||
LICENSE @jonaharagon
|
||||
CITATION.cff @jonaharagon
|
||||
LICENSE @jonaharagon @dngray
|
||||
LICENSE-CODE @jonaharagon
|
||||
README.md @jonaharagon @dngray
|
||||
|
||||
# Config
|
||||
|
||||
/mkdocs.yml @jonaharagon
|
||||
/mkdocs.blog.yml @jonaharagon
|
||||
/crowdin.yml @jonaharagon
|
||||
/includes/ @jonaharagon
|
||||
|
||||
# Ops
|
||||
|
||||
Dockerfile @jonaharagon
|
||||
/Pipfile @jonaharagon
|
||||
/Pipfile.lock @jonaharagon
|
||||
/.github/ @jonaharagon
|
||||
/.well-known/ @jonaharagon
|
||||
/run.sh @jonaharagon
|
||||
/modules/ @jonaharagon
|
||||
|
||||
# High-traffic pages
|
||||
|
||||
/blog/index.md @jonaharagon @freddy-m
|
||||
/docs/index.md @jonaharagon @dngray
|
||||
/theme/home.html @jonaharagon @dngray
|
||||
/theme/main.html @jonaharagon
|
||||
/theme/blog-post.html @jonaharagon
|
||||
/theme/partials/ @jonaharagon
|
||||
/theme/layouts/ @jonaharagon
|
||||
|
||||
# Financial-Related
|
||||
|
||||
/docs/about/donate.md @jonaharagon @SamsungGalaxyPlayer
|
||||
/docs/cryptocurrency.md @jonaharagon @SamsungGalaxyPlayer
|
||||
/docs/financial-services.md @jonaharagon @SamsungGalaxyPlayer
|
||||
/docs/advanced/payments.md @jonaharagon @SamsungGalaxyPlayer
|
||||
|
||||
# Activism
|
||||
|
||||
/docs/activism.md @EmAtPrivacyGuides
|
||||
/docs/activism/ @EmAtPrivacyGuides
|
||||
|
||||
# Blog authors
|
||||
|
||||
/blog/.authors.yml @jonaharagon @dngray @freddy-m
|
||||
/blog/author/ @jonaharagon @dngray @freddy-m
|
||||
/blog/author/dngray.md @dngray
|
||||
/blog/author/freddy.md @freddy-m
|
||||
/blog/author/jonah.md @jonaharagon
|
||||
/blog/author/niek-de-wilde.md @blacklight447
|
||||
|
||||
# Blog posts
|
||||
|
||||
/blog/posts/ @jonaharagon
|
||||
/blog/posts/firefox-privacy-2021-update.md @dngray
|
||||
/blog/posts/firefox-privacy.md @jonaharagon
|
||||
/blog/posts/hide-nothing.md @freddy-m
|
||||
/blog/posts/macos-ventura-privacy-security-updates.md @jonaharagon
|
||||
/blog/posts/move-fast-and-break-things.md @freddy-m
|
||||
/blog/posts/mozilla-disappoints-us-yet-again-2.md @jonaharagon
|
||||
/blog/posts/privacy-guides-partners-with-magic-grants-501-c-3.md @jonaharagon
|
||||
/blog/posts/proton-wallet-review.md @jonaharagon
|
||||
/blog/posts/restrict-act.md @jonaharagon
|
||||
/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md @jonaharagon
|
||||
/blog/posts/virtual-insanity.md @freddy-m
|
||||
/blog/posts/welcome-to-privacy-guides.md @jonaharagon
|
||||
|
||||
@@ -22,18 +22,17 @@ name: "Content Correction"
|
||||
description: Report any inaccurate, incorrect, or outdated information on the website.
|
||||
labels: ["t:correction"]
|
||||
body:
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
This form is for reporting verifiable issues with our website.
|
||||
If you simply disagree with an opinion on the website, please open a discussion [on our forum](https://discuss.privacyguides.net/) instead.
|
||||
|
||||
This form is for reporting verifiable issues with our website.
|
||||
If you simply disagree with an opinion on the website, please open a discussion [on our forum](https://discuss.privacyguides.net) instead.
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Affected page
|
||||
description: Please let us know which page the incorrect information can be found on.
|
||||
placeholder: "https://www.privacyguides.org/en/data-redaction/"
|
||||
placeholder: "https://www.privacyguides.org/en/data-redaction"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -62,5 +61,5 @@ body:
|
||||
options:
|
||||
- label: I am reporting something that is verifiably incorrect, not a suggestion or opinion.
|
||||
required: true
|
||||
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/en/code_of_conduct/).
|
||||
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/coc).
|
||||
required: true
|
||||
|
||||
@@ -24,7 +24,6 @@ labels: ["t:bug"]
|
||||
assignees:
|
||||
- jonaharagon
|
||||
body:
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
@@ -32,15 +31,15 @@ body:
|
||||
This is not the place to report an issue with Matrix, Discourse, or our other hosted services.
|
||||
|
||||
If you want us to fix inaccurate information on the website, go back and use the content correction form.
|
||||
If you want to make another suggestion, please [use our discussion forum](https://discuss.privacyguides.net/) instead.
|
||||
|
||||
If you want to make another suggestion, please [use our discussion forum](https://discuss.privacyguides.net) instead.
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Bug description
|
||||
description: |
|
||||
Please give a detailed description of the bug.
|
||||
Explain how the website does not behave as you would expect it to, and be as specific as possible.
|
||||
Please give a detailed description of the bug.
|
||||
Explain how the website does not behave as you would expect it to, and be as specific as possible.
|
||||
If you have found a workaround or a fix for the problem too, please let us know.
|
||||
validations:
|
||||
required: true
|
||||
@@ -53,7 +52,7 @@ body:
|
||||
Please list all pages where you've noticed this issue, or let us know if it affects every page on the site.
|
||||
value: |
|
||||
-
|
||||
|
||||
|
||||
- type: dropdown
|
||||
id: browser
|
||||
attributes:
|
||||
@@ -69,7 +68,7 @@ body:
|
||||
- Safari
|
||||
- Edge
|
||||
- Other
|
||||
|
||||
|
||||
- type: dropdown
|
||||
id: os
|
||||
attributes:
|
||||
@@ -93,7 +92,7 @@ body:
|
||||
options:
|
||||
- label: I am reporting something that is broken on the website, not making a suggestion.
|
||||
required: true
|
||||
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/en/code_of_conduct/).
|
||||
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/coc).
|
||||
required: true
|
||||
|
||||
- type: markdown
|
||||
|
||||
@@ -1,24 +1,14 @@
|
||||
Changes proposed in this PR:
|
||||
List of changes proposed in this PR:
|
||||
|
||||
-
|
||||
-
|
||||
|
||||
<!-- SCROLL TO BOTTOM TO AGREE!:
|
||||
<!--
|
||||
Please use a descriptive title for your PR, it will be included in our changelog!
|
||||
|
||||
If you are making changes that you have a conflict of interest with, please
|
||||
If you are making changes that you have a conflict of interest with, you MUST
|
||||
disclose this as well (this does not disqualify your PR by any means):
|
||||
|
||||
Conflict of interest contributions involve contributing about yourself,
|
||||
family, friends, clients, employers, or your financial and other relationships.
|
||||
Any external relationship can trigger a conflict of interest.
|
||||
ANY external relationship can trigger a conflict of interest.
|
||||
-->
|
||||
|
||||
<!-- Place an x in the boxes below, like: [x] -->
|
||||
- [ ] I have disclosed any relevant conflicts of interest in my post.
|
||||
- [ ] I agree to grant Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform, relicense, and distribute my contribution as part of this project.
|
||||
- [ ] I am the sole author of this work. <!-- Do not check this box if you are not -->
|
||||
- [ ] I agree to the [Community Code of Conduct](https://www.privacyguides.org/en/code_of_conduct/).
|
||||
|
||||
<!-- What's this? When you submit a PR, you keep the Copyright for the work you
|
||||
are contributing. We need you to agree to the above terms in order for us to
|
||||
publish this contribution to our website. -->
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
# Copyright (c) 2021-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
version: 2
|
||||
|
||||
registries:
|
||||
|
||||
github-privacyguides:
|
||||
type: git
|
||||
url: https://github.com
|
||||
username: x-access-token
|
||||
password: ${{secrets.REPO_PAT}}
|
||||
|
||||
updates:
|
||||
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
assignees:
|
||||
- "jonaharagon"
|
||||
reviewers:
|
||||
- "jonaharagon"
|
||||
labels:
|
||||
- "fix:github_actions"
|
||||
|
||||
# Maintain submodules
|
||||
- package-ecosystem: "gitsubmodule"
|
||||
directory: "/"
|
||||
registries:
|
||||
- github-privacyguides
|
||||
schedule:
|
||||
interval: "daily"
|
||||
labels:
|
||||
- "fix:submodules"
|
||||
|
||||
# Maintain dependencies for pipenv
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/"
|
||||
insecure-external-code-execution: allow
|
||||
registries:
|
||||
- github-privacyguides
|
||||
schedule:
|
||||
interval: "daily"
|
||||
assignees:
|
||||
- "jonaharagon"
|
||||
reviewers:
|
||||
- "jonaharagon"
|
||||
labels:
|
||||
- "fix:python"
|
||||
@@ -0,0 +1,117 @@
|
||||
name: 🛠️ Build Blog
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
ref:
|
||||
required: true
|
||||
type: string
|
||||
repo:
|
||||
required: true
|
||||
type: string
|
||||
context:
|
||||
type: string
|
||||
default: deploy-preview
|
||||
continue-on-error:
|
||||
type: boolean
|
||||
default: true
|
||||
privileged:
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: ${{ inputs.continue-on-error }}
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
if: inputs.privileged
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python (no pipenv)
|
||||
if: ${{ !inputs.privileged }}
|
||||
uses: actions/setup-python@v5
|
||||
|
||||
- name: Install Python Dependencies
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Install Python Dependencies (Unprivileged)
|
||||
if: ${{ !inputs.privileged }}
|
||||
run: |
|
||||
pip install mkdocs-material mkdocs-rss-plugin mkdocs-glightbox mkdocs-macros-plugin
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Set base navigation URLs for production build
|
||||
if: inputs.context == 'production'
|
||||
run: |
|
||||
{
|
||||
echo "MAIN_SITE_BASE_URL=https://www.privacyguides.org/en/"
|
||||
echo "MAIN_SITE_ABOUT_URL=https://www.privacyguides.org/en/about/"
|
||||
echo "MAIN_SITE_RECOMMENDATIONS_URL=https://www.privacyguides.org/en/tools/"
|
||||
echo "MAIN_SITE_KNOWLEDGE_BASE_URL=https://www.privacyguides.org/en/basics/why-privacy-matters/"
|
||||
echo "ARTICLES_SITE_BASE_URL=https://www.privacyguides.org/posts/tag/articles/"
|
||||
echo "VIDEOS_SITE_BASE_URL=https://www.privacyguides.org/videos/"
|
||||
echo "NEWS_SITE_BASE_URL=https://www.privacyguides.org/news/"
|
||||
} >> "$GITHUB_ENV"
|
||||
|
||||
- name: Build Website (Privileged)
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file mkdocs.blog.yml
|
||||
|
||||
- name: Build Website (Unprivileged)
|
||||
if: ${{ !inputs.privileged }}
|
||||
run: |
|
||||
BUILD_INSIDERS=false mkdocs build --config-file mkdocs.blog.yml
|
||||
|
||||
- name: Package Website
|
||||
run: |
|
||||
tar -czf site-build-blog.tar.gz site
|
||||
|
||||
- name: Upload Site
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-build-blog.tar.gz
|
||||
path: site-build-blog.tar.gz
|
||||
retention-days: 1
|
||||
@@ -0,0 +1,99 @@
|
||||
name: ☁️ Build Container
|
||||
|
||||
# Configures this workflow to run every release.
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: container-build
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
|
||||
# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
|
||||
jobs:
|
||||
submodule:
|
||||
strategy:
|
||||
matrix:
|
||||
repo: [mkdocs-material-insiders, brand]
|
||||
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||
with:
|
||||
repo: ${{ matrix.repo }}
|
||||
secrets:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
|
||||
build-and-push-image:
|
||||
needs: submodule
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- run: |
|
||||
rm -rf modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
rm -rf theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@v3.3.0
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5.5.1
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=tag
|
||||
type=ref,event=pr
|
||||
type=sha
|
||||
flavor: |
|
||||
latest=${{ github.event_name == 'release' }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
|
||||
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
|
||||
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v6.9.0
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
platforms: linux/amd64,linux/arm64
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: build-and-push-image
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||
@@ -0,0 +1,143 @@
|
||||
name: 🛠️ Build PR Preview
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
concurrency:
|
||||
group: ${{github.event.pull_request.head.ref}}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
metadata:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
submodules: ${{ steps.submodules-fork.outputs.submodules || steps.submodules-main.outputs.submodules }}
|
||||
privileged: ${{ steps.submodules-fork.outputs.privileged || steps.submodules-main.outputs.privileged }}
|
||||
env:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
steps:
|
||||
- name: Save PR metadata
|
||||
run: |
|
||||
mkdir -p ./metadata
|
||||
echo ${{ github.event.number }} > ./metadata/NR
|
||||
echo ${{ github.event.pull_request.head.sha }} > ./metadata/SHA
|
||||
|
||||
- name: Set submodules for fork
|
||||
if: env.ACTIONS_SSH_KEY == ''
|
||||
id: submodules-fork
|
||||
run: |
|
||||
echo 'submodules={"repo":["brand","i18n"]}' >> "$GITHUB_OUTPUT"
|
||||
echo "privileged=false" >> "$GITHUB_OUTPUT"
|
||||
echo "false" > ./metadata/PRIVILEGED
|
||||
|
||||
- name: Set submodules for main repo
|
||||
if: env.ACTIONS_SSH_KEY != ''
|
||||
id: submodules-main
|
||||
run: |
|
||||
echo 'submodules={"repo":["brand","i18n","mkdocs-material-insiders"]}' >> "$GITHUB_OUTPUT"
|
||||
echo "privileged=true" >> "$GITHUB_OUTPUT"
|
||||
echo "true" > ./metadata/PRIVILEGED
|
||||
|
||||
- name: Upload metadata as artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: metadata
|
||||
path: metadata
|
||||
|
||||
submodule:
|
||||
needs: metadata
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.metadata.outputs.submodules) }}
|
||||
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||
with:
|
||||
repo: ${{ matrix.repo }}
|
||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||
secrets:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
|
||||
build_english:
|
||||
needs: [submodule, metadata]
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [en]
|
||||
fail-fast: true
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
ref: ${{github.event.pull_request.head.ref}}
|
||||
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||
lang: en
|
||||
continue-on-error: false
|
||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||
strict: true
|
||||
secrets:
|
||||
MEMBERS_API_URL: ${{ secrets.MEMBERS_API_URL }}
|
||||
|
||||
build_i18n:
|
||||
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build i18n') }}
|
||||
needs: [submodule, metadata]
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [es, fr, he, it, nl, ru, zh-Hant, zh-TW]
|
||||
fail-fast: false
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
ref: ${{github.event.pull_request.head.ref}}
|
||||
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||
lang: ${{ matrix.lang }}
|
||||
continue-on-error: true
|
||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||
strict: true
|
||||
secrets:
|
||||
MEMBERS_API_URL: ${{ secrets.MEMBERS_API_URL }}
|
||||
|
||||
build_blog:
|
||||
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build blog') }}
|
||||
needs: [submodule, metadata]
|
||||
uses: ./.github/workflows/build-blog.yml
|
||||
with:
|
||||
ref: ${{github.event.pull_request.head.ref}}
|
||||
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||
continue-on-error: true
|
||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||
|
||||
build_zimfile:
|
||||
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build zimfile') }}
|
||||
needs: [submodule, metadata]
|
||||
uses: ./.github/workflows/build-zimfile.yml
|
||||
with:
|
||||
ref: ${{github.event.pull_request.head.ref}}
|
||||
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||
|
||||
combine_build:
|
||||
needs: [build_english, build_i18n, build_blog]
|
||||
if: |
|
||||
(always() && !cancelled() && !failure()) &&
|
||||
needs.build_english.result == 'success' &&
|
||||
(needs.build_i18n.result == 'success' || needs.build_i18n.result == 'skipped') &&
|
||||
(needs.build_blog.result == 'success' || needs.build_blog.result == 'skipped')
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: site-build-*
|
||||
merge-multiple: true
|
||||
|
||||
- run: |
|
||||
for file in *.tar.gz; do tar -zxf "$file"; done
|
||||
ls -la site/
|
||||
|
||||
- name: Upload Site
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-build-combined
|
||||
path: site
|
||||
retention-days: 5
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: [build_english, build_i18n, build_blog, build_zimfile]
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||
@@ -0,0 +1,609 @@
|
||||
name: 🥝 Build Zimfile
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
ref:
|
||||
required: true
|
||||
type: string
|
||||
repo:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
VIDEOS_SITE_BASE_URL: https://www.privacyguides.org/videos/
|
||||
NEWS_SITE_BASE_URL: https://www.privacyguides.org/news/
|
||||
HOMEPAGE_CTA_ABOUT_LINK: about.html
|
||||
HOMEPAGE_CTA_DONATE_LINK: about/donate.html
|
||||
BUILD_OFFLINE: true
|
||||
PRODUCTION: true
|
||||
CARDS: false
|
||||
GITREVISIONDATE: false
|
||||
GITAUTHORS: false
|
||||
|
||||
jobs:
|
||||
package_eng:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
LANGUAGE_SWITCHER: false
|
||||
MAIN_SITE_BASE_URL: /en/index.html
|
||||
MAIN_SITE_ABOUT_URL: /en/about.html
|
||||
MAIN_SITE_RECOMMENDATIONS_URL: /en/tools.html
|
||||
MAIN_SITE_KNOWLEDGE_BASE_URL: /en/basics/why-privacy-matters.html
|
||||
ARTICLES_SITE_BASE_URL: /articles/index.html
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Generate Donating Members List
|
||||
env:
|
||||
MEMBERS_API_URL: ${{ secrets.MEMBERS_API_URL }}
|
||||
continue-on-error: true
|
||||
run: |
|
||||
pip install requests
|
||||
python tools/generate-members.py > includes/members.md
|
||||
|
||||
- name: Build English
|
||||
run: |
|
||||
./run.sh --build --production --insiders --offline --lang=en
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/en/assets
|
||||
SEARCH_DIR: site/en
|
||||
|
||||
- name: Run generate-topics.sh for top posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=3
|
||||
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=12
|
||||
|
||||
- name: Build Articles
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file mkdocs.blog.yml
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/articles/assets
|
||||
SEARCH_DIR: site/articles
|
||||
|
||||
- name: Remove Duplicate Files
|
||||
run: |
|
||||
cd site && bash ../tools/symlink-duplicates.sh
|
||||
ln -s en/index.html index.html
|
||||
ln -s en/about/notices.html license
|
||||
cd ..
|
||||
|
||||
- name: Set zimfile name
|
||||
run: |
|
||||
echo "ZIMFILE_NAME=privacyguides.org_en_all_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: kohlerdominik/docker-run-action@44bd2138ca4f85c36b2fdc3966ef03518879f7f3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.6.0
|
||||
volumes: ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs \
|
||||
-w index.html \
|
||||
-I en/assets/brand/logos/png/square/pg-yellow.png \
|
||||
-l eng \
|
||||
-t "Privacy Guides" \
|
||||
-d "Your central privacy and security resource to protect yourself online." \
|
||||
-c "Privacy Guides" \
|
||||
-p "Privacy Guides" \
|
||||
-e "https://www.privacyguides.org" \
|
||||
-n "privacyguides.org_en_all" \
|
||||
/data/site/ /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
- name: Upload ZIM File
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: ${{ env.ZIMFILE_NAME }}
|
||||
name: ${{ env.ZIMFILE_NAME }}
|
||||
compression-level: 0
|
||||
|
||||
- name: Run zimcheck
|
||||
uses: kohlerdominik/docker-run-action@44bd2138ca4f85c36b2fdc3966ef03518879f7f3
|
||||
continue-on-error: true
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.6.0
|
||||
volumes: ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimcheck /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
package_eng_kb:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
LANGUAGE_SWITCHER: false
|
||||
ARTICLES_SITE_BASE_URL: https://www.privacyguides.org/posts/tag/articles/
|
||||
NEWS_SITE_BASE_URL: https://www.privacyguides.org/news/
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Generate Donating Members List
|
||||
env:
|
||||
MEMBERS_API_URL: ${{ secrets.MEMBERS_API_URL }}
|
||||
continue-on-error: true
|
||||
run: |
|
||||
pip install requests
|
||||
python tools/generate-members.py > includes/members.md
|
||||
|
||||
- name: Build English
|
||||
run: |
|
||||
./run.sh --build --production --insiders --offline --lang=en
|
||||
|
||||
- name: Run generate-topics.sh for top posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=3
|
||||
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=12
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/en/assets
|
||||
SEARCH_DIR: site/en
|
||||
|
||||
- name: Remove Duplicate Files
|
||||
run: |
|
||||
cd site && bash ../tools/symlink-duplicates.sh
|
||||
ln -s en/index.html index.html
|
||||
ln -s en/about/notices.html license
|
||||
cd ..
|
||||
|
||||
- name: Set zimfile name
|
||||
run: |
|
||||
echo "ZIMFILE_NAME=privacyguides.org_en_kb_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
|
||||
|
||||
- name: List Files (for debugging)
|
||||
run: |
|
||||
ls -la site/
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: kohlerdominik/docker-run-action@44bd2138ca4f85c36b2fdc3966ef03518879f7f3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.6.0
|
||||
volumes: ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs \
|
||||
-w index.html \
|
||||
-I en/assets/brand/logos/png/square/pg-yellow.png \
|
||||
-l eng \
|
||||
-t "Privacy Guides" \
|
||||
-d "Knowledge base articles and recommendations from Privacy Guides." \
|
||||
-c "Privacy Guides" \
|
||||
-p "Privacy Guides" \
|
||||
-e "https://www.privacyguides.org" \
|
||||
-n "privacyguides.org_en_kb" \
|
||||
/data/site/ /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
- name: Upload ZIM File
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: ${{ env.ZIMFILE_NAME }}
|
||||
name: ${{ env.ZIMFILE_NAME }}
|
||||
compression-level: 0
|
||||
|
||||
- name: Run zimcheck
|
||||
uses: kohlerdominik/docker-run-action@44bd2138ca4f85c36b2fdc3966ef03518879f7f3
|
||||
continue-on-error: true
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.6.0
|
||||
volumes: ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimcheck /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
package_eng_articles:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
MAIN_SITE_BASE_URL: https://www.privacyguides.org/en/
|
||||
MAIN_SITE_ABOUT_URL: https://www.privacyguides.org/en/about/
|
||||
MAIN_SITE_RECOMMENDATIONS_URL: https://www.privacyguides.org/en/tools/
|
||||
MAIN_SITE_KNOWLEDGE_BASE_URL: https://www.privacyguides.org/en/basics/
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Build Articles
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file mkdocs.blog.yml
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/articles/assets
|
||||
SEARCH_DIR: site/articles
|
||||
|
||||
- name: Remove Duplicate Files
|
||||
run: |
|
||||
cd site && bash ../tools/symlink-duplicates.sh
|
||||
ln -s articles/index.html index.html
|
||||
cd ..
|
||||
|
||||
- name: Set zimfile name
|
||||
run: |
|
||||
echo "ZIMFILE_NAME=privacyguides.org_en_articles_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: kohlerdominik/docker-run-action@44bd2138ca4f85c36b2fdc3966ef03518879f7f3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.6.0
|
||||
volumes: ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs \
|
||||
-w index.html \
|
||||
-I articles/assets/brand/logos/png/square/pg-yellow.png \
|
||||
-l eng \
|
||||
-t "Privacy Guides" \
|
||||
-d "Long-form articles from the Privacy Guides team and other contributors." \
|
||||
-c "Privacy Guides" \
|
||||
-p "Privacy Guides" \
|
||||
-e "https://www.privacyguides.org" \
|
||||
-n "privacyguides.org_en_articles" \
|
||||
/data/site/ /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
- name: Upload ZIM File
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: ${{ env.ZIMFILE_NAME }}
|
||||
name: ${{ env.ZIMFILE_NAME }}
|
||||
compression-level: 0
|
||||
|
||||
- name: Run zimcheck
|
||||
uses: kohlerdominik/docker-run-action@44bd2138ca4f85c36b2fdc3966ef03518879f7f3
|
||||
continue-on-error: true
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.6.0
|
||||
volumes: ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimcheck /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
build_mul:
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
MAIN_SITE_BASE_URL: /en/index.html
|
||||
MAIN_SITE_ABOUT_URL: /en/about.html
|
||||
MAIN_SITE_RECOMMENDATIONS_URL: /en/tools.html
|
||||
MAIN_SITE_KNOWLEDGE_BASE_URL: /en/basics/why-privacy-matters.html
|
||||
ARTICLES_SITE_BASE_URL: /articles/index.html
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [en, es, fr, he, it, nl, ru, zh-Hant]
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Copy Translation Files
|
||||
if: matrix.lang != 'en'
|
||||
run: |
|
||||
cp -rl modules/repo-i18n/i18n .
|
||||
cp -rl modules/repo-i18n/includes .
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Generate Donating Members List
|
||||
env:
|
||||
MEMBERS_API_URL: ${{ secrets.MEMBERS_API_URL }}
|
||||
continue-on-error: true
|
||||
run: |
|
||||
pip install requests
|
||||
python tools/generate-members.py > includes/members.md
|
||||
|
||||
- name: Build Website
|
||||
run: |
|
||||
./run.sh --build --production --insiders --offline --lang=${{ matrix.lang }}
|
||||
|
||||
- name: Run generate-topics.sh for top posts
|
||||
if: matrix.lang == 'en'
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=3
|
||||
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
if: matrix.lang == 'en'
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=12
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/${{ matrix.lang }}/assets
|
||||
SEARCH_DIR: site/${{ matrix.lang }}
|
||||
|
||||
- name: Build Articles
|
||||
if: matrix.lang == 'en'
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file mkdocs.blog.yml
|
||||
|
||||
- name: Delete Unreferenced Assets
|
||||
if: matrix.lang == 'en'
|
||||
run: |
|
||||
bash tools/delete-unreferenced.sh
|
||||
env:
|
||||
ASSETS_DIR: site/articles/assets
|
||||
SEARCH_DIR: site/articles
|
||||
|
||||
- name: Package Website
|
||||
run: |
|
||||
tar -czf site-zimready-${{ matrix.lang }}.tar.gz site
|
||||
|
||||
- name: Upload Site
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-zimready-${{ matrix.lang }}.tar.gz
|
||||
path: site-zimready-${{ matrix.lang }}.tar.gz
|
||||
retention-days: 1
|
||||
compression-level: 0
|
||||
|
||||
package_mul:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build_mul]
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download All Sites
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: site-zimready-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Extract Sites
|
||||
run: |
|
||||
for file in *.tar.gz; do tar -zxf "$file"; done
|
||||
|
||||
- name: Remove Duplicate Files
|
||||
run: |
|
||||
cd site && bash ../tools/symlink-duplicates.sh
|
||||
ln -s en/index.html index.html
|
||||
ln -s en/about/notices.html license
|
||||
cd ..
|
||||
|
||||
- name: Set zimfile name
|
||||
run: |
|
||||
echo "ZIMFILE_NAME=privacyguides.org_mul_all_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
|
||||
|
||||
- name: List Files (for debugging)
|
||||
run: |
|
||||
ls -la site/
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: kohlerdominik/docker-run-action@44bd2138ca4f85c36b2fdc3966ef03518879f7f3
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.6.0
|
||||
volumes: ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs \
|
||||
-w index.html \
|
||||
-I en/assets/brand/logos/png/square/pg-yellow.png \
|
||||
-l mul \
|
||||
-t "Privacy Guides" \
|
||||
-d "Your central privacy and security resource to protect yourself online." \
|
||||
-c "Privacy Guides" \
|
||||
-p "Privacy Guides" \
|
||||
-e "https://www.privacyguides.org" \
|
||||
-n "privacyguides.org_mul_all" \
|
||||
/data/site/ /data/${{ env.ZIMFILE_NAME }}
|
||||
|
||||
- name: Upload ZIM File
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: ${{ env.ZIMFILE_NAME }}
|
||||
name: ${{ env.ZIMFILE_NAME }}
|
||||
compression-level: 0
|
||||
|
||||
- name: Run zimcheck
|
||||
uses: kohlerdominik/docker-run-action@44bd2138ca4f85c36b2fdc3966ef03518879f7f3
|
||||
continue-on-error: true
|
||||
with:
|
||||
image: ghcr.io/openzim/zim-tools:3.6.0
|
||||
volumes: ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimcheck /data/${{ env.ZIMFILE_NAME }}
|
||||
@@ -0,0 +1,262 @@
|
||||
name: 🛠️ Build Website
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
config:
|
||||
type: string
|
||||
default: build
|
||||
ref:
|
||||
required: true
|
||||
type: string
|
||||
repo:
|
||||
required: true
|
||||
type: string
|
||||
lang:
|
||||
type: string
|
||||
default: en
|
||||
context:
|
||||
type: string
|
||||
default: deploy-preview
|
||||
continue-on-error:
|
||||
type: boolean
|
||||
default: true
|
||||
privileged:
|
||||
type: boolean
|
||||
default: true
|
||||
strict:
|
||||
type: boolean
|
||||
default: false
|
||||
cache:
|
||||
type: boolean
|
||||
default: true
|
||||
secrets:
|
||||
MEMBERS_API_URL:
|
||||
required: false
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: ${{ inputs.continue-on-error }}
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Add GitHub Token to Environment
|
||||
run: |
|
||||
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set Metadata
|
||||
if: inputs.config == 'build'
|
||||
run: |
|
||||
{
|
||||
echo "BUILD_CONTEXT=${{ inputs.context }}"
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --production""
|
||||
} >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set base navigation URLs for production build
|
||||
if: inputs.context == 'production'
|
||||
run: |
|
||||
{
|
||||
echo "MAIN_SITE_BASE_URL=https://www.privacyguides.org/en/"
|
||||
echo "MAIN_SITE_ABOUT_URL=https://www.privacyguides.org/en/about/"
|
||||
echo "MAIN_SITE_RECOMMENDATIONS_URL=https://www.privacyguides.org/en/tools/"
|
||||
echo "MAIN_SITE_KNOWLEDGE_BASE_URL=https://www.privacyguides.org/en/basics/why-privacy-matters/"
|
||||
echo "ARTICLES_SITE_BASE_URL=https://www.privacyguides.org/posts/tag/articles/"
|
||||
echo "VIDEOS_SITE_BASE_URL=https://www.privacyguides.org/videos/"
|
||||
echo "NEWS_SITE_BASE_URL=https://www.privacyguides.org/news/"
|
||||
} >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set Metadata for Privileged Builds
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
echo "BUILD_INSIDERS=true" >> "$GITHUB_ENV"
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --insiders"" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set Metadata for International Builds
|
||||
if: inputs.lang != 'en'
|
||||
run: |
|
||||
echo "GITREVISIONDATE=false" >> "$GITHUB_ENV"
|
||||
echo "GITAUTHORS=false" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set Metadata for Offline Mode
|
||||
if: inputs.config == 'offline'
|
||||
run: |
|
||||
{
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --offline""
|
||||
} >> "$GITHUB_ENV"
|
||||
|
||||
- name: Set Metadata for Strict Mode
|
||||
if: inputs.strict
|
||||
run: |
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --cmd_flags=--strict"" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Download Repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ inputs.repo }}
|
||||
ref: ${{ inputs.ref }}
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Submodules
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: repo-*
|
||||
path: modules
|
||||
|
||||
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
rmdir modules/mkdocs-material
|
||||
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||
|
||||
- name: Move brand submodule to theme/assets/brand
|
||||
run: |
|
||||
rmdir theme/assets/brand
|
||||
mv modules/repo-brand theme/assets/brand
|
||||
|
||||
- name: Copy Translation Files
|
||||
if: inputs.lang != 'en'
|
||||
run: |
|
||||
cp -rl modules/repo-i18n/i18n .
|
||||
cp -rl modules/repo-i18n/includes .
|
||||
|
||||
- name: Install Python (pipenv)
|
||||
if: inputs.privileged
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python (no pipenv)
|
||||
if: ${{ !inputs.privileged }}
|
||||
uses: actions/setup-python@v5
|
||||
|
||||
- name: Restore Privacy Plugin Cache
|
||||
uses: actions/cache/restore@v4
|
||||
id: privacy_cache_restore
|
||||
if: inputs.cache
|
||||
with:
|
||||
key: privacy-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/privacy/**') }}
|
||||
path: |
|
||||
.cache/plugin/privacy
|
||||
restore-keys: |
|
||||
privacy-cache-${{ inputs.repo }}-
|
||||
privacy-cache-privacyguides/privacyguides.org-
|
||||
privacy-cache-
|
||||
|
||||
- name: Restore Social Plugin Cache
|
||||
uses: actions/cache/restore@v4
|
||||
id: social_cache_restore
|
||||
if: inputs.cache
|
||||
with:
|
||||
key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }}
|
||||
path: |
|
||||
.cache/plugin/social/manifest.json
|
||||
.cache/plugin/social/assets
|
||||
restore-keys: |
|
||||
social-cache-${{ inputs.repo }}-${{ inputs.lang }}-
|
||||
social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}-
|
||||
|
||||
- name: Install Python Dependencies
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Install Python Dependencies (Unprivileged)
|
||||
if: ${{ !inputs.privileged }}
|
||||
run: |
|
||||
pip install mkdocs-material
|
||||
sudo apt install pngquant
|
||||
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --cmd=mkdocs"" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Generate Donating Members List
|
||||
env:
|
||||
MEMBERS_API_URL: ${{ secrets.MEMBERS_API_URL }}
|
||||
continue-on-error: true
|
||||
run: |
|
||||
pip install requests
|
||||
python tools/generate-members.py > includes/members.md
|
||||
|
||||
- name: Build Website
|
||||
run: |
|
||||
eval ./run.sh --build --lang=${{ inputs.lang }} "$EXTRA_FLAGS"
|
||||
|
||||
- name: Run generate-topics.sh for top posts
|
||||
if: inputs.lang == 'en'
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=3
|
||||
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
if: inputs.lang == 'en'
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=12
|
||||
|
||||
- name: Package Website
|
||||
run: |
|
||||
tar -czf site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz site
|
||||
|
||||
- name: Find Privacy Plugin Cache
|
||||
uses: actions/cache/restore@v4
|
||||
if: steps.privacy_cache_restore.outputs.cache-hit != 'true' && inputs.cache
|
||||
id: privacy_cache_test
|
||||
with:
|
||||
key: privacy-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/privacy/**') }}
|
||||
lookup-only: true
|
||||
path: |
|
||||
.cache/plugin/privacy
|
||||
|
||||
- name: Find Social Plugin Cache
|
||||
uses: actions/cache/restore@v4
|
||||
if: steps.social_cache_restore.outputs.cache-hit != 'true' && inputs.cache
|
||||
id: social_cache_test
|
||||
with:
|
||||
key: social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }}
|
||||
lookup-only: true
|
||||
path: |
|
||||
.cache/plugin/social/manifest.json
|
||||
.cache/plugin/social/assets
|
||||
|
||||
- name: Save Privacy Plugin Cache
|
||||
uses: actions/cache/save@v4
|
||||
if: steps.privacy_cache_test.outputs.cache-hit != 'true' && inputs.cache
|
||||
with:
|
||||
key: privacy-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/privacy/**') }}
|
||||
path: .cache/plugin/privacy
|
||||
|
||||
- name: Save Social Plugin Cache
|
||||
uses: actions/cache/save@v4
|
||||
if: steps.social_cache_test.outputs.cache-hit != 'true' && inputs.cache
|
||||
with:
|
||||
key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }}
|
||||
path: |
|
||||
.cache/plugin/social/manifest.json
|
||||
.cache/plugin/social/assets
|
||||
|
||||
- name: Upload Site
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz
|
||||
path: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz
|
||||
retention-days: 1
|
||||
|
||||
- name: Upload members list
|
||||
uses: actions/upload-artifact@v4
|
||||
if: inputs.config == 'build' && inputs.lang == 'en'
|
||||
with:
|
||||
name: members.md
|
||||
path: includes/members.md
|
||||
retention-days: 1
|
||||
@@ -1,54 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 💬 Crowdin Download
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
release:
|
||||
types: [ published ]
|
||||
|
||||
permissions: write-all
|
||||
|
||||
jobs:
|
||||
synchronize-with-crowdin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: crowdin action
|
||||
uses: crowdin/github-action@v1.7.1
|
||||
with:
|
||||
upload_sources: false
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
localization_branch_name: crowdin/l10n_translations
|
||||
create_pull_request: true
|
||||
pull_request_title: 'New Crowdin Translations'
|
||||
pull_request_body: 'New Crowdin translations by [Crowdin GitHub Action](https://github.com/crowdin/github-action)'
|
||||
pull_request_base_branch_name: 'main'
|
||||
config: crowdin.yml
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
@@ -1,51 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 💬 Crowdin Upload
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [ main ]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
synchronize-with-crowdin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: crowdin action
|
||||
uses: crowdin/github-action@v1.7.1
|
||||
with:
|
||||
upload_sources: true
|
||||
upload_sources_args: '--auto-update --delete-obsolete'
|
||||
download_translations: false
|
||||
config: crowdin.yml
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
@@ -1,61 +0,0 @@
|
||||
# Copyright (c) 2022 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 🪞 Push to Mirrors
|
||||
|
||||
on: [ push, delete, create ]
|
||||
|
||||
# Ensures that only one mirror task will run at a time.
|
||||
concurrency:
|
||||
group: git-mirror
|
||||
|
||||
jobs:
|
||||
gitlab:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mirror to GitLab
|
||||
uses: wearerequired/git-mirror-action@v1
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
with:
|
||||
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
|
||||
destination-repo: "git@gitlab.com:privacyguides/privacyguides.org.git"
|
||||
|
||||
codeberg:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mirror to Codeberg
|
||||
uses: wearerequired/git-mirror-action@v1
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
with:
|
||||
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
|
||||
destination-repo: "git@codeberg.org:privacyguides/privacyguides.org.git"
|
||||
|
||||
sourcehut:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mirror to SourceHut
|
||||
uses: wearerequired/git-mirror-action@v1
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
with:
|
||||
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
|
||||
destination-repo: "git@git.sr.ht:~jonaharagon/privacyguides.org"
|
||||
@@ -1,101 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 🛠️ Deploy to GitHub Pages
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
# Allow one concurrent deployment
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
PYTHON_VERSION: 3.8
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
ssh-key: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
submodules: 'true'
|
||||
|
||||
- name: Pages setup
|
||||
uses: actions/configure-pages@v3
|
||||
|
||||
- name: Python setup
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.8'
|
||||
|
||||
- name: Cache files
|
||||
uses: actions/cache@v3.3.1
|
||||
with:
|
||||
key: ${{ github.ref }}
|
||||
path: .cache
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
|
||||
- name: Build website
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CARDS: true
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file config/mkdocs.en.yml
|
||||
pipenv run mkdocs build --config-file config/mkdocs.fr.yml
|
||||
pipenv run mkdocs build --config-file config/mkdocs.he.yml
|
||||
pipenv run mkdocs build --config-file config/mkdocs.nl.yml
|
||||
pipenv run mkdocs --version
|
||||
|
||||
- name: Package website
|
||||
uses: actions/upload-pages-artifact@v1
|
||||
with:
|
||||
path: site
|
||||
|
||||
deploy:
|
||||
name: Deploy
|
||||
needs: build
|
||||
|
||||
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
|
||||
permissions:
|
||||
pages: write # to deploy to Pages
|
||||
id-token: write # to verify the deployment originates from an appropriate source
|
||||
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@main
|
||||
@@ -0,0 +1,75 @@
|
||||
# Copyright (c) 2021-2025 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 📦 Immediate Releases
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
paths:
|
||||
- "blog/**"
|
||||
|
||||
concurrency:
|
||||
group: release-deployment
|
||||
cancel-in-progress: false
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pages: write
|
||||
id-token: write
|
||||
deployments: write
|
||||
|
||||
jobs:
|
||||
submodule:
|
||||
strategy:
|
||||
matrix:
|
||||
repo: [mkdocs-material-insiders, brand]
|
||||
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||
with:
|
||||
repo: ${{ matrix.repo }}
|
||||
secrets:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
|
||||
build_blog:
|
||||
needs: submodule
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build-blog.yml
|
||||
with:
|
||||
repo: ${{ github.repository }}
|
||||
ref: ${{ github.ref }}
|
||||
continue-on-error: false
|
||||
context: production
|
||||
|
||||
deploy:
|
||||
needs: [build_blog]
|
||||
uses: privacyguides/webserver/.github/workflows/deploy-garage.yml@main
|
||||
with:
|
||||
environment: production
|
||||
secrets:
|
||||
PROD_GARAGE_KEY_ID: ${{ secrets.PROD_GARAGE_KEY_ID }}
|
||||
PROD_GARAGE_SECRET_KEY: ${{ secrets.PROD_GARAGE_SECRET_KEY }}
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: [build_blog]
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||
@@ -0,0 +1,53 @@
|
||||
# Copyright (c) 2022 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 🪞 Push to Mirrors
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on: [push, delete, create]
|
||||
|
||||
# Ensures that only one mirror task will run at a time.
|
||||
concurrency:
|
||||
group: git-mirror
|
||||
|
||||
jobs:
|
||||
gitlab:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mirror to GitLab
|
||||
uses: wearerequired/git-mirror-action@v1
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
with:
|
||||
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
|
||||
destination-repo: "git@gitlab.com:privacyguides/privacyguides.org.git"
|
||||
|
||||
codeberg:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mirror to Codeberg
|
||||
uses: wearerequired/git-mirror-action@v1
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
with:
|
||||
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
|
||||
destination-repo: "git@codeberg.org:privacyguides/privacyguides.org.git"
|
||||
@@ -0,0 +1,140 @@
|
||||
name: 📦 PR Preview
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: [🛠️ Build PR Preview]
|
||||
types:
|
||||
- completed
|
||||
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
metadata:
|
||||
if: >
|
||||
github.event.workflow_run.event == 'pull_request' &&
|
||||
github.event.workflow_run.conclusion == 'success'
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
pr_number: ${{ steps.metadata.outputs.pr_number }}
|
||||
sha: ${{ steps.metadata.outputs.sha }}
|
||||
privileged: ${{ steps.metadata.outputs.privileged }}
|
||||
|
||||
steps:
|
||||
- name: Download Website Build Artifact
|
||||
uses: actions/github-script@v7.0.1
|
||||
with:
|
||||
script: |
|
||||
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: ${{github.event.workflow_run.id }},
|
||||
});
|
||||
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
||||
return artifact.name == "site-build-combined"
|
||||
})[0];
|
||||
var download = await github.rest.actions.downloadArtifact({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
artifact_id: matchArtifact.id,
|
||||
archive_format: 'zip',
|
||||
});
|
||||
var fs = require('fs');
|
||||
fs.writeFileSync('${{github.workspace}}/site-build-combined.zip', Buffer.from(download.data));
|
||||
|
||||
- name: Unpack Website
|
||||
run: |
|
||||
mkdir -p site
|
||||
unzip site-build-combined.zip -d site
|
||||
tar -czvf site-build-combined.tar.gz site
|
||||
|
||||
- name: Upload Combined Build Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-build-combined.tar.gz
|
||||
path: site-build-combined.tar.gz
|
||||
retention-days: 5
|
||||
|
||||
- name: Download Metadata Artifact
|
||||
uses: actions/github-script@v7.0.1
|
||||
with:
|
||||
script: |
|
||||
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: ${{github.event.workflow_run.id }},
|
||||
});
|
||||
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
||||
return artifact.name == "metadata"
|
||||
})[0];
|
||||
var download = await github.rest.actions.downloadArtifact({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
artifact_id: matchArtifact.id,
|
||||
archive_format: 'zip',
|
||||
});
|
||||
var fs = require('fs');
|
||||
fs.writeFileSync('${{github.workspace}}/metadata.zip', Buffer.from(download.data));
|
||||
|
||||
- name: Set Metadata
|
||||
id: metadata
|
||||
run: |
|
||||
mkdir -p metadata
|
||||
unzip metadata.zip -d metadata
|
||||
echo "pr_number=$(cat metadata/NR)" >> "$GITHUB_OUTPUT"
|
||||
echo "sha=$(cat metadata/SHA)" >> "$GITHUB_OUTPUT"
|
||||
echo "privileged=$(cat metadata/PRIVILEGED)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
deploy_garage:
|
||||
needs: metadata
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
uses: privacyguides/webserver/.github/workflows/deploy-garage-preview.yml@main
|
||||
with:
|
||||
alias: ${{ needs.metadata.outputs.pr_number }}
|
||||
bucket: ${{ vars.PREVIEW_GARAGE_BUCKET }}
|
||||
hostname: ${{ vars.PREVIEW_GARAGE_HOSTNAME }}
|
||||
secrets:
|
||||
PREVIEW_GARAGE_KEY_ID: ${{ secrets.PREVIEW_GARAGE_KEY_ID }}
|
||||
PREVIEW_GARAGE_SECRET_KEY: ${{ secrets.PREVIEW_GARAGE_SECRET_KEY }}
|
||||
|
||||
comment:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
needs: [deploy_garage, metadata]
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
address: ${{ needs.deploy_garage.outputs.address }}
|
||||
steps:
|
||||
- uses: thollander/actions-comment-pull-request@v2.5.0
|
||||
if: ${{ needs.metadata.outputs.privileged == 'true' }}
|
||||
with:
|
||||
pr_number: ${{ needs.metadata.outputs.pr_number }}
|
||||
message: |
|
||||
### <span aria-hidden="true">✅</span> Your preview is ready!
|
||||
|
||||
| Name | Link |
|
||||
| :---: | ---- |
|
||||
| <span aria-hidden="true">🔨</span> Latest commit | ${{ needs.metadata.outputs.sha }} |
|
||||
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
|
||||
comment_tag: deployment
|
||||
|
||||
- uses: thollander/actions-comment-pull-request@v2.5.0
|
||||
if: ${{ needs.metadata.outputs.privileged == 'false' }}
|
||||
with:
|
||||
pr_number: ${{ needs.metadata.outputs.pr_number }}
|
||||
message: |
|
||||
### <span aria-hidden="true">✅</span> Your preview is ready!
|
||||
|
||||
| Name | Link |
|
||||
| :---: | ---- |
|
||||
| <span aria-hidden="true">🔨</span> Latest commit | ${{ needs.metadata.outputs.sha }} |
|
||||
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
|
||||
|
||||
Please note that this preview was built from an untrusted source, so it was not granted access to all mkdocs-material features. Maintainers should ensure this PR has been reviewed locally with a full build before merging.
|
||||
comment_tag: deployment
|
||||
@@ -0,0 +1,127 @@
|
||||
# Copyright (c) 2021-2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 📦 Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "*"
|
||||
|
||||
concurrency:
|
||||
group: release-deployment
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pages: write
|
||||
id-token: write
|
||||
deployments: write
|
||||
|
||||
jobs:
|
||||
submodule:
|
||||
strategy:
|
||||
matrix:
|
||||
repo: [mkdocs-material-insiders, brand, i18n]
|
||||
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||
with:
|
||||
repo: ${{ matrix.repo }}
|
||||
secrets:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
|
||||
build:
|
||||
needs: submodule
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [en, es, fr, he, it, nl, ru, zh-Hant, zh-TW]
|
||||
build: [build]
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
config: ${{ matrix.build }}
|
||||
ref: ${{ github.ref }}
|
||||
repo: ${{ github.repository }}
|
||||
lang: ${{ matrix.lang }}
|
||||
context: production
|
||||
continue-on-error: false
|
||||
cache: false
|
||||
secrets:
|
||||
MEMBERS_API_URL: ${{ secrets.MEMBERS_API_URL }}
|
||||
|
||||
build_blog:
|
||||
needs: submodule
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build-blog.yml
|
||||
with:
|
||||
repo: ${{ github.repository }}
|
||||
ref: ${{ github.ref }}
|
||||
continue-on-error: false
|
||||
context: production
|
||||
|
||||
build_zimfile:
|
||||
needs: submodule
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build-zimfile.yml
|
||||
with:
|
||||
repo: ${{ github.repository }}
|
||||
ref: ${{ github.ref }}
|
||||
|
||||
release:
|
||||
name: Create release notes
|
||||
needs: [build, build_zimfile]
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: "*.zim"
|
||||
merge-multiple: true
|
||||
|
||||
- name: Create release notes
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
generateReleaseNotes: true
|
||||
artifacts: "*.zim"
|
||||
makeLatest: true
|
||||
|
||||
deploy:
|
||||
needs: [build, build_blog]
|
||||
uses: privacyguides/webserver/.github/workflows/deploy-all.yml@main
|
||||
secrets:
|
||||
PROD_MINIO_KEY_ID: ${{ secrets.PROD_MINIO_KEY_ID }}
|
||||
PROD_MINIO_SECRET_KEY: ${{ secrets.PROD_MINIO_SECRET_KEY }}
|
||||
PROD_GARAGE_KEY_ID: ${{ secrets.PROD_GARAGE_KEY_ID }}
|
||||
PROD_GARAGE_SECRET_KEY: ${{ secrets.PROD_GARAGE_SECRET_KEY }}
|
||||
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
|
||||
CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
|
||||
CLUSTER_USERNAME: ${{ secrets.CLUSTER_USERNAME }}
|
||||
CLUSTER_PASSWORD: ${{ secrets.CLUSTER_PASSWORD }}
|
||||
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
|
||||
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: [build, build_blog, build_zimfile]
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||
@@ -1,106 +0,0 @@
|
||||
# Copyright (c) 2021-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 📦 Releases
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Create Release
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
ssh-key: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
submodules: 'true'
|
||||
|
||||
- name: Pages setup
|
||||
uses: actions/configure-pages@v3
|
||||
|
||||
- name: Python setup
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.8'
|
||||
|
||||
- name: Cache files
|
||||
uses: actions/cache@v3.3.1
|
||||
with:
|
||||
key: ${{ github.ref }}
|
||||
path: .cache
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
pip install pipenv
|
||||
pipenv install
|
||||
|
||||
- name: Build website
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CARDS: true
|
||||
run: |
|
||||
pipenv run mkdocs build --config-file config/mkdocs.offline.yml
|
||||
pipenv run mkdocs --version
|
||||
|
||||
- name: Package website
|
||||
run: |
|
||||
tar -czvf offline.tar.gz site
|
||||
zip -r -q offline.zip site
|
||||
|
||||
- name: Upload tar.gz file
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: offline.tar.gz
|
||||
path: offline.tar.gz
|
||||
|
||||
- name: Upload zip file
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: offline.zip
|
||||
path: offline.zip
|
||||
|
||||
- name: Create ZIM File
|
||||
uses: addnab/docker-run-action@v3
|
||||
with:
|
||||
image: openzim/zim-tools:latest
|
||||
options: -v ${{ github.workspace }}:/data
|
||||
run: |
|
||||
zimwriterfs -w index.html -I assets/brand/PNG/Square/pg-yellow.png -l eng -t "Privacy Guides" -d "Your central privacy and security resource to protect yourself online." -c "Privacy Guides" -p "Jonah Aragon" -n "Privacy Guides" -e "https://github.com/privacyguides/privacyguides.org" /data/site /data/privacy_guides.zim
|
||||
|
||||
- name: Upload ZIM file
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: privacy_guides.zim
|
||||
path: privacy_guides.zim
|
||||
|
||||
- name: Create release notes
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
generateReleaseNotes: true
|
||||
token: ${{ secrets.REPO_TOKEN }}
|
||||
artifacts: "offline.zip,offline.tar.gz,privacy_guides.zim"
|
||||
@@ -0,0 +1,62 @@
|
||||
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 📦 Manual Test Build
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
submodule:
|
||||
strategy:
|
||||
matrix:
|
||||
repo: [mkdocs-material-insiders, brand, i18n]
|
||||
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||
with:
|
||||
repo: ${{ matrix.repo }}
|
||||
secrets:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
|
||||
build:
|
||||
needs: submodule
|
||||
strategy:
|
||||
matrix:
|
||||
lang: [en, fr, he]
|
||||
build: [build, offline]
|
||||
fail-fast: false
|
||||
permissions:
|
||||
contents: read
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
config: ${{ matrix.build }}
|
||||
ref: ${{ github.ref }}
|
||||
repo: ${{ github.repository }}
|
||||
lang: ${{ matrix.lang }}
|
||||
continue-on-error: true
|
||||
secrets:
|
||||
MEMBERS_API_URL: ${{ secrets.MEMBERS_API_URL }}
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: build
|
||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||
@@ -0,0 +1,131 @@
|
||||
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 🤖 Linting
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
push:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.ref }}-${{ github.workflow }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
MAIN_BRANCH: ${{ github.event_name == 'push' }}
|
||||
|
||||
jobs:
|
||||
megalinter:
|
||||
name: MegaLinter
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- if: ${{ env.MAIN_BRANCH }}
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- if: ${{ env.MAIN_BRANCH == 0 }}
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Configure markdown-link-check
|
||||
run: |
|
||||
cat <<EOT >> .markdown-link-check.json
|
||||
{
|
||||
"ignorePatterns": [
|
||||
{
|
||||
"pattern": "^https://twitter.com"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://reddit.com"
|
||||
},
|
||||
{
|
||||
"pattern": "^#_"
|
||||
},
|
||||
{
|
||||
"pattern": ".onion"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://en.opensuse.org"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://quad9.net"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://dnscrypt.info"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://pipewire.org"
|
||||
}
|
||||
],
|
||||
"replacementPatterns": [
|
||||
{
|
||||
"pattern": "^assets/",
|
||||
"replacement": "https://www.privacyguides.org/en/assets/"
|
||||
},
|
||||
{
|
||||
"pattern": "^(../)*assets/",
|
||||
"replacement": "https://www.privacyguides.org/en/assets/"
|
||||
},
|
||||
{
|
||||
"pattern": "^/",
|
||||
"replacement": "https://www.privacyguides.org/"
|
||||
}
|
||||
],
|
||||
"retryOn429": true,
|
||||
"retryCount": 5,
|
||||
"aliveStatusCodes": [200, 206, 403]
|
||||
}
|
||||
EOT
|
||||
|
||||
- id: ml
|
||||
# You can override MegaLinter flavor used to have faster performances
|
||||
# More info at https://megalinter.io/flavors/
|
||||
uses: oxsecurity/megalinter/flavors/documentation@v8.0.0
|
||||
env:
|
||||
# All available variables are described in documentation
|
||||
# https://megalinter.io/configuration/
|
||||
# Validates all source when push on main, else just the git diff with main.
|
||||
VALIDATE_ALL_CODEBASE: ${{ env.MAIN_BRANCH }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# ADD YOUR CUSTOM ENV VARIABLES HERE OR DEFINE THEM IN A FILE .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
|
||||
DISABLE: COPYPASTE,SPELL,HTML
|
||||
DISABLE_LINTERS: JSON_JSONLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER
|
||||
DISABLE_ERRORS_LINTERS: CSS_STYLELINT,MARKDOWN_MARKDOWN_LINK_CHECK,YAML_YAMLLINT,DOCKERFILE_HADOLINT,REPOSITORY_TRIVY,REPOSITORY_CHECKOV,REPOSITORY_GITLEAKS
|
||||
EDITORCONFIG_EDITORCONFIG_CHECKER_ARGUMENTS: -disable-indentation
|
||||
ENV_DOTENV_LINTER_ARGUMENTS: "--skip QuoteCharacter"
|
||||
MARKDOWN_MARKDOWN_LINK_CHECK_FILTER_REGEX_INCLUDE: (docs)
|
||||
MARKDOWN_MARKDOWNLINT_CONFIG_FILE: .markdownlint.yml
|
||||
MARKDOWN_MARKDOWNLINT_FILTER_REGEX_EXCLUDE: (PULL_REQUEST_TEMPLATE\.md)
|
||||
|
||||
# Upload MegaLinter artifacts
|
||||
- name: Archive production artifacts
|
||||
if: success() || failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: MegaLinter reports
|
||||
path: |
|
||||
megalinter-reports
|
||||
mega-linter.log
|
||||
@@ -0,0 +1,82 @@
|
||||
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 🔄 Update Discussions
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "*/30 * * * *"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
generate:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
environment:
|
||||
name: production
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: "false"
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Create site/en directory
|
||||
run: mkdir -p site/en
|
||||
|
||||
- name: Update Discussions
|
||||
uses: yakubique/minio-download@v1.1.1
|
||||
with:
|
||||
endpoint: https://${{ vars.PROD_GARAGE_HOSTNAME }}
|
||||
access_key: ${{ secrets.PROD_GARAGE_KEY_ID }}
|
||||
secret_key: ${{ secrets.PROD_GARAGE_SECRET_KEY }}
|
||||
bucket: ${{ vars.PROD_GARAGE_BUCKET }}
|
||||
source: /en/index.html
|
||||
target: ./site/en/
|
||||
|
||||
- name: Run generate-topics.sh for top posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||
--tag="top posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=3
|
||||
|
||||
- name: Run generate-topics.sh for latest posts
|
||||
run: |
|
||||
bash tools/generate-topics.sh \
|
||||
--source='https://discuss.privacyguides.net/latest.json' \
|
||||
--tag="latest posts" \
|
||||
--destination="./site/en/index.html" \
|
||||
--count=12
|
||||
|
||||
- name: Upload modified index
|
||||
uses: yakubique/minio-upload@v1.1.3
|
||||
with:
|
||||
endpoint: https://${{ vars.PROD_GARAGE_HOSTNAME }}
|
||||
access_key: ${{ secrets.PROD_GARAGE_KEY_ID }}
|
||||
secret_key: ${{ secrets.PROD_GARAGE_SECRET_KEY }}
|
||||
bucket: ${{ vars.PROD_GARAGE_BUCKET }}
|
||||
source: ./site/en/index.html
|
||||
target: /en/index.html
|
||||
@@ -0,0 +1,53 @@
|
||||
# Copyright (c) 2022-2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
name: 💬 Crowdin Upload
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
synchronize-with-crowdin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: crowdin action
|
||||
uses: crowdin/github-action@v2.2.0
|
||||
with:
|
||||
upload_sources: true
|
||||
upload_sources_args: "--auto-update --delete-obsolete"
|
||||
download_translations: false
|
||||
config: crowdin.yml
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
@@ -1,2 +1,5 @@
|
||||
site
|
||||
.cache
|
||||
# Hugo output
|
||||
public/
|
||||
resources/
|
||||
.hugo_build.lock
|
||||
/scripts
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
[submodule "theme/assets/brand"]
|
||||
path = theme/assets/brand
|
||||
url = https://github.com/privacyguides/brand.git
|
||||
[submodule "modules/mkdocs-material"]
|
||||
path = modules/mkdocs-material
|
||||
url = https://github.com/privacyguides/mkdocs-material-insiders.git
|
||||
[submodule "static/brand"]
|
||||
path = static/brand
|
||||
url = https://github.com/privacyguides/brand
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Please use this file to correct information in our git log.
|
||||
# Format: Proper Name <Proper Email> <Incorrect Email>
|
||||
#
|
||||
# Privacy Guides Team Members
|
||||
# ===========================
|
||||
Daniel Gray <dngray@privacyguides.org> <dng@disroot.org>
|
||||
Daniel Gray <dngray@privacyguides.org> <48640805+dngray@users.noreply.github.com>
|
||||
Daniel Gray <dngray@privacyguides.org> <dngray@privacytools.io>
|
||||
Daniel Gray <dngray@privacyguides.org>
|
||||
Em <em@privacyguides.org> <194856901+EmAtPrivacyGuides@users.noreply.github.com>
|
||||
Freddy <freddy@privacyguides.org> <freddy@decypher.pw>
|
||||
Freddy <freddy@privacyguides.org> <freddy@privacytools.io>
|
||||
fria <fria@privacyguides.org> <138676274+friadev@users.noreply.github.com>
|
||||
Jonah Aragon <jonah@privacyguides.org> <jonah@triplebit.net>
|
||||
Jonah Aragon <jonah@privacyguides.org> <jonah@privacytools.io>
|
||||
Jonah Aragon <jonah@privacyguides.org> <github@aragon.science>
|
||||
Jordan Warne <jordan@privacyguides.org> <jw@omg.lol>
|
||||
Jordan Warne <jordan@privacyguides.org> <contact@jordanwarne.net>
|
||||
Justin Ehrenhofer <justin.ehrenhofer@gmail.com> <12520755+SamsungGalaxyPlayer@users.noreply.github.com>
|
||||
Mare Polaris <ph00lt0@privacyguides.org> <15004290+ph00lt0@users.noreply.github.com>
|
||||
Niek de Wilde <niek@privacyguides.org> <github.ef27z@simplelogin.com>
|
||||
Niek de Wilde <niek@privacyguides.org> <blacklight447@privacytools.io>
|
||||
redoomed1 <redoomed1@privacyguides.org> <161974310+redoomed1@users.noreply.github.com>
|
||||
@@ -24,8 +24,9 @@ ul-indent:
|
||||
indent: 4
|
||||
no-inline-html: false
|
||||
code-block-style: false
|
||||
no-hard-tabs:
|
||||
spaces-per-tab: 4
|
||||
no-hard-tabs: true
|
||||
emphasis-style:
|
||||
style: "asterisk"
|
||||
no-duplicate-header: false
|
||||
no-trailing-punctuation: false
|
||||
no-duplicate-heading:
|
||||
siblings_only: true
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
|
||||
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
|
||||
|
||||
// List of extensions which should be recommended for users of this workspace.
|
||||
"recommendations": [
|
||||
"mhutchie.git-graph",
|
||||
"esbenp.prettier-vscode",
|
||||
"tamasfe.even-better-toml",
|
||||
"budparr.language-hugo-vscode"
|
||||
]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
brew "pngquant"
|
||||
@@ -1,67 +0,0 @@
|
||||
# Copyright (c) 2022 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
cff-version: 1.2.0
|
||||
title: Privacy Guides
|
||||
message: 'If you reference this website, please cite it in your work.'
|
||||
type: software
|
||||
authors:
|
||||
- email: jonah@privacyguides.org
|
||||
given-names: Jonah
|
||||
family-names: Aragon
|
||||
orcid: 'https://orcid.org/0000-0001-6996-4965'
|
||||
- name: The Privacy Guides team
|
||||
website: 'https://github.com/orgs/privacyguides/people'
|
||||
repository-code: 'https://github.com/privacyguides/privacyguides.org'
|
||||
references:
|
||||
- authors:
|
||||
- family-names: Donath
|
||||
given-names: Martin
|
||||
title: 'mkdocs-material'
|
||||
type: software
|
||||
repository-code: 'https://github.com/squidfunk/mkdocs-material'
|
||||
preferred-citation:
|
||||
type: website
|
||||
title: Privacy Guides
|
||||
authors:
|
||||
- email: jonah@privacyguides.org
|
||||
given-names: Jonah
|
||||
family-names: Aragon
|
||||
orcid: 'https://orcid.org/0000-0001-6996-4965'
|
||||
- given-names: Daniel
|
||||
family-names: Gray
|
||||
email: dngray@privacyguides.org
|
||||
- name: The Privacy Guides team
|
||||
website: 'https://github.com/orgs/privacyguides/people'
|
||||
- name: Various project contributors
|
||||
url: 'https://www.privacyguides.org'
|
||||
abstract: >-
|
||||
Privacy Guides is a socially motivated website that
|
||||
provides information for protecting your data
|
||||
security and privacy. We are a non-profit
|
||||
collective operated entirely by volunteer team
|
||||
members and contributors.
|
||||
keywords:
|
||||
- privacy
|
||||
- surveillance
|
||||
- encryption
|
||||
- website
|
||||
- markdown
|
||||
license: "CC-BY-ND-4.0"
|
||||
@@ -1,4 +1,4 @@
|
||||
Attribution-NoDerivatives 4.0 International
|
||||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
@@ -33,7 +33,7 @@ exhaustive, and do not form part of our licenses.
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
@@ -50,17 +50,16 @@ exhaustive, and do not form part of our licenses.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-NoDerivatives 4.0 International Public
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-NoDerivatives 4.0 International Public License ("Public
|
||||
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
@@ -81,7 +80,15 @@ Section 1 -- Definitions.
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Copyright and Similar Rights means copyright and/or similar rights
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
@@ -89,29 +96,33 @@ Section 1 -- Definitions.
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
c. Effective Technological Measures means those measures that, in the
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
d. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
e. Licensed Material means the artistic or literary work, database,
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
f. Licensed Rights means the rights granted to You subject to the
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
g. Licensor means the individual(s) or entity(ies) granting rights
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
h. Share means to provide material to the public by any means or
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
@@ -119,13 +130,13 @@ Section 1 -- Definitions.
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
i. Sui Generis Database Rights means rights other than copyright
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
j. You means the individual or entity exercising the Licensed Rights
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
@@ -141,7 +152,7 @@ Section 2 -- Scope.
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce and reproduce, but not Share, Adapted Material.
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
@@ -171,7 +182,13 @@ Section 2 -- Scope.
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. No downstream restrictions. You may not offer or impose
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
@@ -213,7 +230,8 @@ following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material, You must:
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
@@ -241,9 +259,6 @@ following conditions.
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
For the avoidance of doubt, You do not have permission under
|
||||
this Public License to Share Adapted Material.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
@@ -255,6 +270,25 @@ following conditions.
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
@@ -263,13 +297,13 @@ apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database, provided You do not Share
|
||||
Adapted Material;
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material; and
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
@@ -370,23 +404,24 @@ Section 8 -- Interpretation.
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
Creative Commons is not a party to its public licenses.
|
||||
Notwithstanding, Creative Commons may elect to apply one of its public
|
||||
licenses to material it publishes and in those instances will be
|
||||
considered the “Licensor.” The text of the Creative Commons public
|
||||
licenses is dedicated to the public domain under the CC0 Public Domain
|
||||
Dedication. Except for the limited purpose of indicating that material
|
||||
is shared under a Creative Commons public license or as otherwise
|
||||
permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
the avoidance of doubt, this paragraph does not form part of the public
|
||||
licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 - 2023 Jonah Aragon <jonah@triplebit.net>
|
||||
Copyright (c) 2020 - 2023 Privacy Guides contributors
|
||||
Copyright (c) 2019 - 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
Copyright (c) 2020 - 2024 Privacy Guides contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
# Copyright (c) 2022 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
[[source]]
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
mkdocs-material = {path = "./modules/mkdocs-material"}
|
||||
mkdocs-git-revision-date-localized-plugin = "~=1.2"
|
||||
mkdocs-git-committers-plugin-2 = "~=1.1"
|
||||
mkdocs-macros-plugin = "~=0.7"
|
||||
pillow = "~=9.4"
|
||||
cairosvg = "~=2.7"
|
||||
|
||||
[dev-packages]
|
||||
scour = "~=0.38"
|
||||
|
||||
[requires]
|
||||
python_version = "3.8"
|
||||
@@ -1,929 +0,0 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "277944f03f8186276babbd120f5236037510ab2a6a7c61b36ab1ac71c8f00156"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.8"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"babel": {
|
||||
"hashes": [
|
||||
"sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610",
|
||||
"sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.12.1"
|
||||
},
|
||||
"beautifulsoup4": {
|
||||
"hashes": [
|
||||
"sha256:2130a5ad7f513200fae61a17abb5e338ca980fa28c439c0571014bc0217e9591",
|
||||
"sha256:c5fceeaec29d09c84970e47c65f2f0efe57872f7cff494c9691a26ec0ff13234"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==4.12.0"
|
||||
},
|
||||
"cairocffi": {
|
||||
"hashes": [
|
||||
"sha256:d105b49009d9b4970a459e38ff030cb5dfc8c8ee231e867d28f77ee9df44495e"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.5.0"
|
||||
},
|
||||
"cairosvg": {
|
||||
"hashes": [
|
||||
"sha256:17cb96423a896258848322a95c80160e714a58f1af3dd73b8e1750994519b9f9",
|
||||
"sha256:ac4dc7c1d38b3a15717db2633a3a383012e0be664c727c911637e6af6a49293c"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.7.0"
|
||||
},
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
"sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3",
|
||||
"sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2022.12.7"
|
||||
},
|
||||
"cffi": {
|
||||
"hashes": [
|
||||
"sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5",
|
||||
"sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef",
|
||||
"sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104",
|
||||
"sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426",
|
||||
"sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405",
|
||||
"sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375",
|
||||
"sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a",
|
||||
"sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e",
|
||||
"sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc",
|
||||
"sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf",
|
||||
"sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185",
|
||||
"sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497",
|
||||
"sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3",
|
||||
"sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35",
|
||||
"sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c",
|
||||
"sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83",
|
||||
"sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21",
|
||||
"sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca",
|
||||
"sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984",
|
||||
"sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac",
|
||||
"sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd",
|
||||
"sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee",
|
||||
"sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a",
|
||||
"sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2",
|
||||
"sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192",
|
||||
"sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7",
|
||||
"sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585",
|
||||
"sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f",
|
||||
"sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e",
|
||||
"sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27",
|
||||
"sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b",
|
||||
"sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e",
|
||||
"sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e",
|
||||
"sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d",
|
||||
"sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c",
|
||||
"sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415",
|
||||
"sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82",
|
||||
"sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02",
|
||||
"sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314",
|
||||
"sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325",
|
||||
"sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c",
|
||||
"sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3",
|
||||
"sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914",
|
||||
"sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045",
|
||||
"sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d",
|
||||
"sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9",
|
||||
"sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5",
|
||||
"sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2",
|
||||
"sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c",
|
||||
"sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3",
|
||||
"sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2",
|
||||
"sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8",
|
||||
"sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d",
|
||||
"sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d",
|
||||
"sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9",
|
||||
"sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162",
|
||||
"sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76",
|
||||
"sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4",
|
||||
"sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e",
|
||||
"sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9",
|
||||
"sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6",
|
||||
"sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b",
|
||||
"sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01",
|
||||
"sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"
|
||||
],
|
||||
"version": "==1.15.1"
|
||||
},
|
||||
"charset-normalizer": {
|
||||
"hashes": [
|
||||
"sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6",
|
||||
"sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1",
|
||||
"sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e",
|
||||
"sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373",
|
||||
"sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62",
|
||||
"sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230",
|
||||
"sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be",
|
||||
"sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c",
|
||||
"sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0",
|
||||
"sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448",
|
||||
"sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f",
|
||||
"sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649",
|
||||
"sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d",
|
||||
"sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0",
|
||||
"sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706",
|
||||
"sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a",
|
||||
"sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59",
|
||||
"sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23",
|
||||
"sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5",
|
||||
"sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb",
|
||||
"sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e",
|
||||
"sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e",
|
||||
"sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c",
|
||||
"sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28",
|
||||
"sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d",
|
||||
"sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41",
|
||||
"sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974",
|
||||
"sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce",
|
||||
"sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f",
|
||||
"sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1",
|
||||
"sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d",
|
||||
"sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8",
|
||||
"sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017",
|
||||
"sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31",
|
||||
"sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7",
|
||||
"sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8",
|
||||
"sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e",
|
||||
"sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14",
|
||||
"sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd",
|
||||
"sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d",
|
||||
"sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795",
|
||||
"sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b",
|
||||
"sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b",
|
||||
"sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b",
|
||||
"sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203",
|
||||
"sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f",
|
||||
"sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19",
|
||||
"sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1",
|
||||
"sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a",
|
||||
"sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac",
|
||||
"sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9",
|
||||
"sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0",
|
||||
"sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137",
|
||||
"sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f",
|
||||
"sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6",
|
||||
"sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5",
|
||||
"sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909",
|
||||
"sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f",
|
||||
"sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0",
|
||||
"sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324",
|
||||
"sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755",
|
||||
"sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb",
|
||||
"sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854",
|
||||
"sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c",
|
||||
"sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60",
|
||||
"sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84",
|
||||
"sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0",
|
||||
"sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b",
|
||||
"sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1",
|
||||
"sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531",
|
||||
"sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1",
|
||||
"sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11",
|
||||
"sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326",
|
||||
"sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df",
|
||||
"sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.1.0"
|
||||
},
|
||||
"click": {
|
||||
"hashes": [
|
||||
"sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e",
|
||||
"sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==8.1.3"
|
||||
},
|
||||
"colorama": {
|
||||
"hashes": [
|
||||
"sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44",
|
||||
"sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'",
|
||||
"version": "==0.4.6"
|
||||
},
|
||||
"cssselect": {
|
||||
"hashes": [
|
||||
"sha256:666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc",
|
||||
"sha256:da1885f0c10b60c03ed5eccbb6b68d6eff248d91976fcde348f395d54c9fd35e"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.2.0"
|
||||
},
|
||||
"cssselect2": {
|
||||
"hashes": [
|
||||
"sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a",
|
||||
"sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==0.7.0"
|
||||
},
|
||||
"defusedxml": {
|
||||
"hashes": [
|
||||
"sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69",
|
||||
"sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==0.7.1"
|
||||
},
|
||||
"ghp-import": {
|
||||
"hashes": [
|
||||
"sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619",
|
||||
"sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"
|
||||
],
|
||||
"version": "==2.1.0"
|
||||
},
|
||||
"gitdb": {
|
||||
"hashes": [
|
||||
"sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a",
|
||||
"sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==4.0.10"
|
||||
},
|
||||
"gitpython": {
|
||||
"hashes": [
|
||||
"sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573",
|
||||
"sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.1.31"
|
||||
},
|
||||
"idna": {
|
||||
"hashes": [
|
||||
"sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4",
|
||||
"sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==3.4"
|
||||
},
|
||||
"importlib-metadata": {
|
||||
"hashes": [
|
||||
"sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20",
|
||||
"sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09"
|
||||
],
|
||||
"markers": "python_version < '3.10'",
|
||||
"version": "==6.1.0"
|
||||
},
|
||||
"jinja2": {
|
||||
"hashes": [
|
||||
"sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852",
|
||||
"sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.1.2"
|
||||
},
|
||||
"lxml": {
|
||||
"hashes": [
|
||||
"sha256:01d36c05f4afb8f7c20fd9ed5badca32a2029b93b1750f571ccc0b142531caf7",
|
||||
"sha256:04876580c050a8c5341d706dd464ff04fd597095cc8c023252566a8826505726",
|
||||
"sha256:05ca3f6abf5cf78fe053da9b1166e062ade3fa5d4f92b4ed688127ea7d7b1d03",
|
||||
"sha256:090c6543d3696cbe15b4ac6e175e576bcc3f1ccfbba970061b7300b0c15a2140",
|
||||
"sha256:0dc313ef231edf866912e9d8f5a042ddab56c752619e92dfd3a2c277e6a7299a",
|
||||
"sha256:0f2b1e0d79180f344ff9f321327b005ca043a50ece8713de61d1cb383fb8ac05",
|
||||
"sha256:13598ecfbd2e86ea7ae45ec28a2a54fb87ee9b9fdb0f6d343297d8e548392c03",
|
||||
"sha256:16efd54337136e8cd72fb9485c368d91d77a47ee2d42b057564aae201257d419",
|
||||
"sha256:1ab8f1f932e8f82355e75dda5413a57612c6ea448069d4fb2e217e9a4bed13d4",
|
||||
"sha256:223f4232855ade399bd409331e6ca70fb5578efef22cf4069a6090acc0f53c0e",
|
||||
"sha256:2455cfaeb7ac70338b3257f41e21f0724f4b5b0c0e7702da67ee6c3640835b67",
|
||||
"sha256:2899456259589aa38bfb018c364d6ae7b53c5c22d8e27d0ec7609c2a1ff78b50",
|
||||
"sha256:2a29ba94d065945944016b6b74e538bdb1751a1db6ffb80c9d3c2e40d6fa9894",
|
||||
"sha256:2a87fa548561d2f4643c99cd13131acb607ddabb70682dcf1dff5f71f781a4bf",
|
||||
"sha256:2e430cd2824f05f2d4f687701144556646bae8f249fd60aa1e4c768ba7018947",
|
||||
"sha256:36c3c175d34652a35475a73762b545f4527aec044910a651d2bf50de9c3352b1",
|
||||
"sha256:3818b8e2c4b5148567e1b09ce739006acfaa44ce3156f8cbbc11062994b8e8dd",
|
||||
"sha256:3ab9fa9d6dc2a7f29d7affdf3edebf6ece6fb28a6d80b14c3b2fb9d39b9322c3",
|
||||
"sha256:3efea981d956a6f7173b4659849f55081867cf897e719f57383698af6f618a92",
|
||||
"sha256:4c8f293f14abc8fd3e8e01c5bd86e6ed0b6ef71936ded5bf10fe7a5efefbaca3",
|
||||
"sha256:5344a43228767f53a9df6e5b253f8cdca7dfc7b7aeae52551958192f56d98457",
|
||||
"sha256:58bfa3aa19ca4c0f28c5dde0ff56c520fbac6f0daf4fac66ed4c8d2fb7f22e74",
|
||||
"sha256:5b4545b8a40478183ac06c073e81a5ce4cf01bf1734962577cf2bb569a5b3bbf",
|
||||
"sha256:5f50a1c177e2fa3ee0667a5ab79fdc6b23086bc8b589d90b93b4bd17eb0e64d1",
|
||||
"sha256:63da2ccc0857c311d764e7d3d90f429c252e83b52d1f8f1d1fe55be26827d1f4",
|
||||
"sha256:6749649eecd6a9871cae297bffa4ee76f90b4504a2a2ab528d9ebe912b101975",
|
||||
"sha256:6804daeb7ef69e7b36f76caddb85cccd63d0c56dedb47555d2fc969e2af6a1a5",
|
||||
"sha256:689bb688a1db722485e4610a503e3e9210dcc20c520b45ac8f7533c837be76fe",
|
||||
"sha256:699a9af7dffaf67deeae27b2112aa06b41c370d5e7633e0ee0aea2e0b6c211f7",
|
||||
"sha256:6b418afe5df18233fc6b6093deb82a32895b6bb0b1155c2cdb05203f583053f1",
|
||||
"sha256:76cf573e5a365e790396a5cc2b909812633409306c6531a6877c59061e42c4f2",
|
||||
"sha256:7b515674acfdcadb0eb5d00d8a709868173acece5cb0be3dd165950cbfdf5409",
|
||||
"sha256:7b770ed79542ed52c519119473898198761d78beb24b107acf3ad65deae61f1f",
|
||||
"sha256:7d2278d59425777cfcb19735018d897ca8303abe67cc735f9f97177ceff8027f",
|
||||
"sha256:7e91ee82f4199af8c43d8158024cbdff3d931df350252288f0d4ce656df7f3b5",
|
||||
"sha256:821b7f59b99551c69c85a6039c65b75f5683bdc63270fec660f75da67469ca24",
|
||||
"sha256:822068f85e12a6e292803e112ab876bc03ed1f03dddb80154c395f891ca6b31e",
|
||||
"sha256:8340225bd5e7a701c0fa98284c849c9b9fc9238abf53a0ebd90900f25d39a4e4",
|
||||
"sha256:85cabf64adec449132e55616e7ca3e1000ab449d1d0f9d7f83146ed5bdcb6d8a",
|
||||
"sha256:880bbbcbe2fca64e2f4d8e04db47bcdf504936fa2b33933efd945e1b429bea8c",
|
||||
"sha256:8d0b4612b66ff5d62d03bcaa043bb018f74dfea51184e53f067e6fdcba4bd8de",
|
||||
"sha256:8e20cb5a47247e383cf4ff523205060991021233ebd6f924bca927fcf25cf86f",
|
||||
"sha256:925073b2fe14ab9b87e73f9a5fde6ce6392da430f3004d8b72cc86f746f5163b",
|
||||
"sha256:998c7c41910666d2976928c38ea96a70d1aa43be6fe502f21a651e17483a43c5",
|
||||
"sha256:9b22c5c66f67ae00c0199f6055705bc3eb3fcb08d03d2ec4059a2b1b25ed48d7",
|
||||
"sha256:9f102706d0ca011de571de32c3247c6476b55bb6bc65a20f682f000b07a4852a",
|
||||
"sha256:a08cff61517ee26cb56f1e949cca38caabe9ea9fbb4b1e10a805dc39844b7d5c",
|
||||
"sha256:a0a336d6d3e8b234a3aae3c674873d8f0e720b76bc1d9416866c41cd9500ffb9",
|
||||
"sha256:a35f8b7fa99f90dd2f5dc5a9fa12332642f087a7641289ca6c40d6e1a2637d8e",
|
||||
"sha256:a38486985ca49cfa574a507e7a2215c0c780fd1778bb6290c21193b7211702ab",
|
||||
"sha256:a5da296eb617d18e497bcf0a5c528f5d3b18dadb3619fbdadf4ed2356ef8d941",
|
||||
"sha256:a6e441a86553c310258aca15d1c05903aaf4965b23f3bc2d55f200804e005ee5",
|
||||
"sha256:a82d05da00a58b8e4c0008edbc8a4b6ec5a4bc1e2ee0fb6ed157cf634ed7fa45",
|
||||
"sha256:ab323679b8b3030000f2be63e22cdeea5b47ee0abd2d6a1dc0c8103ddaa56cd7",
|
||||
"sha256:b1f42b6921d0e81b1bcb5e395bc091a70f41c4d4e55ba99c6da2b31626c44892",
|
||||
"sha256:b23e19989c355ca854276178a0463951a653309fb8e57ce674497f2d9f208746",
|
||||
"sha256:b264171e3143d842ded311b7dccd46ff9ef34247129ff5bf5066123c55c2431c",
|
||||
"sha256:b26a29f0b7fc6f0897f043ca366142d2b609dc60756ee6e4e90b5f762c6adc53",
|
||||
"sha256:b64d891da92e232c36976c80ed7ebb383e3f148489796d8d31a5b6a677825efe",
|
||||
"sha256:b9cc34af337a97d470040f99ba4282f6e6bac88407d021688a5d585e44a23184",
|
||||
"sha256:bc718cd47b765e790eecb74d044cc8d37d58562f6c314ee9484df26276d36a38",
|
||||
"sha256:be7292c55101e22f2a3d4d8913944cbea71eea90792bf914add27454a13905df",
|
||||
"sha256:c83203addf554215463b59f6399835201999b5e48019dc17f182ed5ad87205c9",
|
||||
"sha256:c9ec3eaf616d67db0764b3bb983962b4f385a1f08304fd30c7283954e6a7869b",
|
||||
"sha256:ca34efc80a29351897e18888c71c6aca4a359247c87e0b1c7ada14f0ab0c0fb2",
|
||||
"sha256:ca989b91cf3a3ba28930a9fc1e9aeafc2a395448641df1f387a2d394638943b0",
|
||||
"sha256:d02a5399126a53492415d4906ab0ad0375a5456cc05c3fc0fc4ca11771745cda",
|
||||
"sha256:d17bc7c2ccf49c478c5bdd447594e82692c74222698cfc9b5daae7ae7e90743b",
|
||||
"sha256:d5bf6545cd27aaa8a13033ce56354ed9e25ab0e4ac3b5392b763d8d04b08e0c5",
|
||||
"sha256:d6b430a9938a5a5d85fc107d852262ddcd48602c120e3dbb02137c83d212b380",
|
||||
"sha256:da248f93f0418a9e9d94b0080d7ebc407a9a5e6d0b57bb30db9b5cc28de1ad33",
|
||||
"sha256:da4dd7c9c50c059aba52b3524f84d7de956f7fef88f0bafcf4ad7dde94a064e8",
|
||||
"sha256:df0623dcf9668ad0445e0558a21211d4e9a149ea8f5666917c8eeec515f0a6d1",
|
||||
"sha256:e5168986b90a8d1f2f9dc1b841467c74221bd752537b99761a93d2d981e04889",
|
||||
"sha256:efa29c2fe6b4fdd32e8ef81c1528506895eca86e1d8c4657fda04c9b3786ddf9",
|
||||
"sha256:f1496ea22ca2c830cbcbd473de8f114a320da308438ae65abad6bab7867fe38f",
|
||||
"sha256:f49e52d174375a7def9915c9f06ec4e569d235ad428f70751765f48d5926678c"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==4.9.2"
|
||||
},
|
||||
"markdown": {
|
||||
"hashes": [
|
||||
"sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874",
|
||||
"sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==3.3.7"
|
||||
},
|
||||
"markdown2": {
|
||||
"hashes": [
|
||||
"sha256:7d49ca871d3e0e412c65d7d21fcbc13ae897f7876f3e5f14dd4db3b7fbf27f10",
|
||||
"sha256:90475aca3d9c8e7df6d70c51de5bbbe9edf7fcf6a380bd1044d321500f5445da"
|
||||
],
|
||||
"markers": "python_version >= '3.5' and python_version < '4'",
|
||||
"version": "==2.4.8"
|
||||
},
|
||||
"markupsafe": {
|
||||
"hashes": [
|
||||
"sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed",
|
||||
"sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc",
|
||||
"sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2",
|
||||
"sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460",
|
||||
"sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7",
|
||||
"sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0",
|
||||
"sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1",
|
||||
"sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa",
|
||||
"sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03",
|
||||
"sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323",
|
||||
"sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65",
|
||||
"sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013",
|
||||
"sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036",
|
||||
"sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f",
|
||||
"sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4",
|
||||
"sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419",
|
||||
"sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2",
|
||||
"sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619",
|
||||
"sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a",
|
||||
"sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a",
|
||||
"sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd",
|
||||
"sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7",
|
||||
"sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666",
|
||||
"sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65",
|
||||
"sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859",
|
||||
"sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625",
|
||||
"sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff",
|
||||
"sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156",
|
||||
"sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd",
|
||||
"sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba",
|
||||
"sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f",
|
||||
"sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1",
|
||||
"sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094",
|
||||
"sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a",
|
||||
"sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513",
|
||||
"sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed",
|
||||
"sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d",
|
||||
"sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3",
|
||||
"sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147",
|
||||
"sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c",
|
||||
"sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603",
|
||||
"sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601",
|
||||
"sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a",
|
||||
"sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1",
|
||||
"sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d",
|
||||
"sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3",
|
||||
"sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54",
|
||||
"sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2",
|
||||
"sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6",
|
||||
"sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.1.2"
|
||||
},
|
||||
"mergedeep": {
|
||||
"hashes": [
|
||||
"sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8",
|
||||
"sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==1.3.4"
|
||||
},
|
||||
"mkdocs": {
|
||||
"hashes": [
|
||||
"sha256:8947af423a6d0facf41ea1195b8e1e8c85ad94ac95ae307fe11232e0424b11c5",
|
||||
"sha256:c8856a832c1e56702577023cd64cc5f84948280c1c0fcc6af4cd39006ea6aa8c"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.4.2"
|
||||
},
|
||||
"mkdocs-git-committers-plugin-2": {
|
||||
"hashes": [
|
||||
"sha256:14d4a89bf8965ab62ca9b8b0cd90f6c9b421bb89bfedca0d91c5119f18791360",
|
||||
"sha256:4f6eb6137f35967dfa444703b6ea293f05bf2fd183506bc51db8fb21b061d5a3"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.1.1"
|
||||
},
|
||||
"mkdocs-git-revision-date-localized-plugin": {
|
||||
"hashes": [
|
||||
"sha256:540b9c930d8d48630c090b72ac2c3900ac2ed0799b23738a33b88e31f5198fe7",
|
||||
"sha256:7752edd7c4dcaa9383e9a5b6a4f729831a62d604b0c43b319331127720c6a2bf"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.2.0"
|
||||
},
|
||||
"mkdocs-macros-plugin": {
|
||||
"hashes": [
|
||||
"sha256:96bdabeb98b96139544f0048ea2f5cb80c7befde6b21e94c6d4596c22774cbcf",
|
||||
"sha256:9e64e1cabcf6925359de29fe54f62d5847fb455c2528c440b87f8f1240650608"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.7.0"
|
||||
},
|
||||
"mkdocs-material": {
|
||||
"path": "./modules/mkdocs-material",
|
||||
"version": "==9.1.3+insiders.4.32.3"
|
||||
},
|
||||
"mkdocs-material-extensions": {
|
||||
"hashes": [
|
||||
"sha256:9c003da71e2cc2493d910237448c672e00cefc800d3d6ae93d2fc69979e3bd93",
|
||||
"sha256:e41d9f38e4798b6617ad98ca8f7f1157b1e4385ac1459ca1e4ea219b556df945"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.1.1"
|
||||
},
|
||||
"packaging": {
|
||||
"hashes": [
|
||||
"sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2",
|
||||
"sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==23.0"
|
||||
},
|
||||
"paginate": {
|
||||
"hashes": [
|
||||
"sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"
|
||||
],
|
||||
"version": "==0.5.6"
|
||||
},
|
||||
"pillow": {
|
||||
"hashes": [
|
||||
"sha256:013016af6b3a12a2f40b704677f8b51f72cb007dac785a9933d5c86a72a7fe33",
|
||||
"sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b",
|
||||
"sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e",
|
||||
"sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35",
|
||||
"sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153",
|
||||
"sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9",
|
||||
"sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569",
|
||||
"sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57",
|
||||
"sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8",
|
||||
"sha256:1b4b4e9dda4f4e4c4e6896f93e84a8f0bcca3b059de9ddf67dac3c334b1195e1",
|
||||
"sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264",
|
||||
"sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157",
|
||||
"sha256:3f4cc516e0b264c8d4ccd6b6cbc69a07c6d582d8337df79be1e15a5056b258c9",
|
||||
"sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133",
|
||||
"sha256:43521ce2c4b865d385e78579a082b6ad1166ebed2b1a2293c3be1d68dd7ca3b9",
|
||||
"sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab",
|
||||
"sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6",
|
||||
"sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5",
|
||||
"sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df",
|
||||
"sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503",
|
||||
"sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b",
|
||||
"sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa",
|
||||
"sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327",
|
||||
"sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493",
|
||||
"sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d",
|
||||
"sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4",
|
||||
"sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4",
|
||||
"sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35",
|
||||
"sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2",
|
||||
"sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c",
|
||||
"sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011",
|
||||
"sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a",
|
||||
"sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e",
|
||||
"sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f",
|
||||
"sha256:83125753a60cfc8c412de5896d10a0a405e0bd88d0470ad82e0869ddf0cb3848",
|
||||
"sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57",
|
||||
"sha256:87708d78a14d56a990fbf4f9cb350b7d89ee8988705e58e39bdf4d82c149210f",
|
||||
"sha256:8a2b5874d17e72dfb80d917213abd55d7e1ed2479f38f001f264f7ce7bae757c",
|
||||
"sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9",
|
||||
"sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5",
|
||||
"sha256:99d92d148dd03fd19d16175b6d355cc1b01faf80dae93c6c3eb4163709edc0a9",
|
||||
"sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d",
|
||||
"sha256:9d9a62576b68cd90f7075876f4e8444487db5eeea0e4df3ba298ee38a8d067b0",
|
||||
"sha256:9e5f94742033898bfe84c93c831a6f552bb629448d4072dd312306bab3bd96f1",
|
||||
"sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e",
|
||||
"sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815",
|
||||
"sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0",
|
||||
"sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b",
|
||||
"sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd",
|
||||
"sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c",
|
||||
"sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3",
|
||||
"sha256:b70756ec9417c34e097f987b4d8c510975216ad26ba6e57ccb53bc758f490dab",
|
||||
"sha256:b8c2f6eb0df979ee99433d8b3f6d193d9590f735cf12274c108bd954e30ca858",
|
||||
"sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5",
|
||||
"sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee",
|
||||
"sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343",
|
||||
"sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb",
|
||||
"sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47",
|
||||
"sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed",
|
||||
"sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837",
|
||||
"sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286",
|
||||
"sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28",
|
||||
"sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628",
|
||||
"sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df",
|
||||
"sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d",
|
||||
"sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d",
|
||||
"sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a",
|
||||
"sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6",
|
||||
"sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336",
|
||||
"sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132",
|
||||
"sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070",
|
||||
"sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe",
|
||||
"sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a",
|
||||
"sha256:f0caf4a5dcf610d96c3bd32932bfac8aee61c96e60481c2a0ea58da435e25acd",
|
||||
"sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391",
|
||||
"sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a",
|
||||
"sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==9.4.0"
|
||||
},
|
||||
"pipdeptree": {
|
||||
"hashes": [
|
||||
"sha256:058b53373ee5bb8a97b36a966af59029378165dc93829c977538efa4e20ba524",
|
||||
"sha256:b0ed2685230c71ca28d35e96b09685406f6f9cc03b81b393264d2c6b14c5cf23"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.6.0"
|
||||
},
|
||||
"pycparser": {
|
||||
"hashes": [
|
||||
"sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9",
|
||||
"sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"
|
||||
],
|
||||
"version": "==2.21"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
"sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297",
|
||||
"sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2.14.0"
|
||||
},
|
||||
"pymdown-extensions": {
|
||||
"hashes": [
|
||||
"sha256:31eaa76ce6f96aabfcea98787c2fff2c5c0611b20a53a94213970cfbf05f02b8",
|
||||
"sha256:562c38eee4ce3f101ce631b804bfc2177a8a76c7e4dc908871fb6741a90257a7"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==9.10"
|
||||
},
|
||||
"pyquery": {
|
||||
"hashes": [
|
||||
"sha256:8dfc9b4b7c5f877d619bbae74b1898d5743f6ca248cfd5d72b504dd614da312f",
|
||||
"sha256:963e8d4e90262ff6d8dec072ea97285dc374a2f69cad7776f4082abcf6a1d8ae"
|
||||
],
|
||||
"version": "==2.0.0"
|
||||
},
|
||||
"python-dateutil": {
|
||||
"hashes": [
|
||||
"sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
|
||||
"sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==2.8.2"
|
||||
},
|
||||
"pytz": {
|
||||
"hashes": [
|
||||
"sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0",
|
||||
"sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"
|
||||
],
|
||||
"version": "==2022.7.1"
|
||||
},
|
||||
"pyyaml": {
|
||||
"hashes": [
|
||||
"sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf",
|
||||
"sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293",
|
||||
"sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b",
|
||||
"sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57",
|
||||
"sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b",
|
||||
"sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4",
|
||||
"sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07",
|
||||
"sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba",
|
||||
"sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9",
|
||||
"sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287",
|
||||
"sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513",
|
||||
"sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0",
|
||||
"sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782",
|
||||
"sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0",
|
||||
"sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92",
|
||||
"sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f",
|
||||
"sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2",
|
||||
"sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc",
|
||||
"sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1",
|
||||
"sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c",
|
||||
"sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86",
|
||||
"sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4",
|
||||
"sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c",
|
||||
"sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34",
|
||||
"sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b",
|
||||
"sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d",
|
||||
"sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c",
|
||||
"sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb",
|
||||
"sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7",
|
||||
"sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737",
|
||||
"sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3",
|
||||
"sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d",
|
||||
"sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358",
|
||||
"sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53",
|
||||
"sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78",
|
||||
"sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803",
|
||||
"sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a",
|
||||
"sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f",
|
||||
"sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174",
|
||||
"sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==6.0"
|
||||
},
|
||||
"pyyaml-env-tag": {
|
||||
"hashes": [
|
||||
"sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb",
|
||||
"sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==0.1"
|
||||
},
|
||||
"readtime": {
|
||||
"hashes": [
|
||||
"sha256:0a67e29adfcfb25488b1edd6f08e158de5f832e84fe8e35cf83e639208ce0b97",
|
||||
"sha256:ddf221ed5b004c97ee350bc782dda1139ea6dfb817a404cdcc251ac33c11aa28"
|
||||
],
|
||||
"version": "==2.0.0"
|
||||
},
|
||||
"regex": {
|
||||
"hashes": [
|
||||
"sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad",
|
||||
"sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4",
|
||||
"sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd",
|
||||
"sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc",
|
||||
"sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d",
|
||||
"sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066",
|
||||
"sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec",
|
||||
"sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9",
|
||||
"sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e",
|
||||
"sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8",
|
||||
"sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e",
|
||||
"sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783",
|
||||
"sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6",
|
||||
"sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1",
|
||||
"sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c",
|
||||
"sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4",
|
||||
"sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1",
|
||||
"sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1",
|
||||
"sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7",
|
||||
"sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8",
|
||||
"sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe",
|
||||
"sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d",
|
||||
"sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b",
|
||||
"sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8",
|
||||
"sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c",
|
||||
"sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af",
|
||||
"sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49",
|
||||
"sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714",
|
||||
"sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542",
|
||||
"sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318",
|
||||
"sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e",
|
||||
"sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5",
|
||||
"sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc",
|
||||
"sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144",
|
||||
"sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453",
|
||||
"sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5",
|
||||
"sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61",
|
||||
"sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11",
|
||||
"sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a",
|
||||
"sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54",
|
||||
"sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73",
|
||||
"sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc",
|
||||
"sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347",
|
||||
"sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c",
|
||||
"sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66",
|
||||
"sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c",
|
||||
"sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93",
|
||||
"sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443",
|
||||
"sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc",
|
||||
"sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1",
|
||||
"sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892",
|
||||
"sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8",
|
||||
"sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001",
|
||||
"sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa",
|
||||
"sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90",
|
||||
"sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c",
|
||||
"sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0",
|
||||
"sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692",
|
||||
"sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4",
|
||||
"sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5",
|
||||
"sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690",
|
||||
"sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83",
|
||||
"sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66",
|
||||
"sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f",
|
||||
"sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f",
|
||||
"sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4",
|
||||
"sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee",
|
||||
"sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81",
|
||||
"sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95",
|
||||
"sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9",
|
||||
"sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff",
|
||||
"sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e",
|
||||
"sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5",
|
||||
"sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6",
|
||||
"sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7",
|
||||
"sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1",
|
||||
"sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394",
|
||||
"sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6",
|
||||
"sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742",
|
||||
"sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57",
|
||||
"sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b",
|
||||
"sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7",
|
||||
"sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b",
|
||||
"sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244",
|
||||
"sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af",
|
||||
"sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185",
|
||||
"sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8",
|
||||
"sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2022.10.31"
|
||||
},
|
||||
"requests": {
|
||||
"hashes": [
|
||||
"sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa",
|
||||
"sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"
|
||||
],
|
||||
"markers": "python_version >= '3.7' and python_version < '4'",
|
||||
"version": "==2.28.2"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==1.16.0"
|
||||
},
|
||||
"smmap": {
|
||||
"hashes": [
|
||||
"sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94",
|
||||
"sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==5.0.0"
|
||||
},
|
||||
"soupsieve": {
|
||||
"hashes": [
|
||||
"sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955",
|
||||
"sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.4"
|
||||
},
|
||||
"termcolor": {
|
||||
"hashes": [
|
||||
"sha256:91ddd848e7251200eac969846cbae2dacd7d71c2871e92733289e7e3666f48e7",
|
||||
"sha256:dfc8ac3f350788f23b2947b3e6cfa5a53b630b612e6cd8965a015a776020b99a"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.2.0"
|
||||
},
|
||||
"tinycss2": {
|
||||
"hashes": [
|
||||
"sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847",
|
||||
"sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.2.1"
|
||||
},
|
||||
"urllib3": {
|
||||
"hashes": [
|
||||
"sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305",
|
||||
"sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
|
||||
"version": "==1.26.15"
|
||||
},
|
||||
"watchdog": {
|
||||
"hashes": [
|
||||
"sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a",
|
||||
"sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100",
|
||||
"sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8",
|
||||
"sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc",
|
||||
"sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae",
|
||||
"sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41",
|
||||
"sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0",
|
||||
"sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f",
|
||||
"sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c",
|
||||
"sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9",
|
||||
"sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3",
|
||||
"sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709",
|
||||
"sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83",
|
||||
"sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759",
|
||||
"sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9",
|
||||
"sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3",
|
||||
"sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7",
|
||||
"sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f",
|
||||
"sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346",
|
||||
"sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674",
|
||||
"sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397",
|
||||
"sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96",
|
||||
"sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d",
|
||||
"sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a",
|
||||
"sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64",
|
||||
"sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44",
|
||||
"sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.0.0"
|
||||
},
|
||||
"webencodings": {
|
||||
"hashes": [
|
||||
"sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78",
|
||||
"sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"
|
||||
],
|
||||
"version": "==0.5.1"
|
||||
},
|
||||
"zipp": {
|
||||
"hashes": [
|
||||
"sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b",
|
||||
"sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.15.0"
|
||||
}
|
||||
},
|
||||
"develop": {
|
||||
"scour": {
|
||||
"hashes": [
|
||||
"sha256:6881ec26660c130c5ecd996ac6f6b03939dd574198f50773f2508b81a68e0daf"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.38.2"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==1.16.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,98 +1,122 @@
|
||||
<!-- markdownlint-disable MD041 -->
|
||||
<!-- markdownlint-disable MD041 MD045 -->
|
||||
<div align="center">
|
||||
<a href="https://www.privacyguides.org/">
|
||||
<a href="https://www.privacyguides.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/privacyguides/brand/main/SVG/Logo/privacy-guides-logo-dark.svg">
|
||||
<img alt="Privacy Guides" width="500px" src="https://raw.githubusercontent.com/privacyguides/brand/main/SVG/Logo/privacy-guides-logo.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/privacyguides/brand/67166ed8b641d8ac1837d0b75329e02ed4056704/logos/svg/logo/privacy-guides-logo-dark.svg">
|
||||
<img alt="Privacy Guides" width="500px" src="https://raw.githubusercontent.com/privacyguides/brand/67166ed8b641d8ac1837d0b75329e02ed4056704/logos/svg/logo/privacy-guides-logo.svg">
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
<p><em>Your central privacy and security resource to protect yourself online.</em></p>
|
||||
|
||||
<p><a href="https://mastodon.neat.computer/@privacyguides">
|
||||
<img src="https://img.shields.io/mastodon/follow/109298532634697668?domain=https%3A%2F%2Fmastodon.neat.computer&label=Follow%20%40privacyguides%40neat.computer&style=social">
|
||||
</a>
|
||||
<a href="https://twitter.com/privacy_guides">
|
||||
<img src="https://img.shields.io/twitter/follow/privacy_guides?style=social">
|
||||
</a>
|
||||
<a href="https://discuss.privacyguides.net/">
|
||||
<img src="https://img.shields.io/discourse/users?label=Join%20our%20forum&logo=discourse&server=https%3A%2F%2Fdiscuss.privacyguides.net&style=social">
|
||||
</a>
|
||||
<p><a href="https://discuss.privacyguides.net">
|
||||
<img src="https://img.shields.io/discourse/users?label=Join%20our%20forum&logo=discourse&server=https%3A%2F%2Fdiscuss.privacyguides.net&style=social"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/privacyguides?style=social">
|
||||
</a></p>
|
||||
<img src="https://img.shields.io/github/stars/privacyguides?style=social"></a>
|
||||
<a href="https://mastodon.neat.computer/@privacyguides">
|
||||
<img src="https://img.shields.io/mastodon/follow/109298532634697668?domain=https%3A%2F%2Fmastodon.neat.computer&label=Follow&style=social"></a></p>
|
||||
|
||||
<p><a href="https://github.com/privacyguides/privacyguides.org/pulls">
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org">
|
||||
</a>
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+is%3Aclosed">
|
||||
<img src="https://img.shields.io/github/issues-pr-closed-raw/privacyguides/privacyguides.org">
|
||||
</a>
|
||||
<img src="https://img.shields.io/github/issues-pr-closed-raw/privacyguides/privacyguides.org"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/graphs/contributors">
|
||||
<img src="https://img.shields.io/github/commit-activity/m/privacyguides/privacyguides.org"></a>
|
||||
<a href="#contributors">
|
||||
<img src="https://img.shields.io/github/all-contributors/privacyguides/privacyguides.org"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/releases/latest">
|
||||
<img src="https://img.shields.io/github/release-date/privacyguides/privacyguides.org"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/releases/latest">
|
||||
<img src="https://img.shields.io/github/commits-since/privacyguides/privacyguides.org/latest"></a>
|
||||
<a href="https://crowdin.com/project/privacyguides">
|
||||
<img src="https://badges.crowdin.net/privacyguides/localized.svg">
|
||||
</a>
|
||||
<a href="https://opencollective.com/privacyguides">
|
||||
<img src="https://img.shields.io/opencollective/all/privacyguides">
|
||||
</a></p>
|
||||
<img src="https://badges.crowdin.net/privacyguides/localized.svg"></a>
|
||||
<a href="https://github.com/sponsors/privacyguides#sponsors">
|
||||
<img src="https://img.shields.io/github/sponsors/privacyguides"></a>
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/">
|
||||
<img src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?logo=MaterialForMkDocs&logoColor=white"></a>
|
||||
<a href="https://github.com/privacyguides/privacyguides.org/actions/workflows/publish-release.yml">
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/privacyguides/privacyguides.org/publish-release.yml?label=release"></a></p>
|
||||
</div>
|
||||
|
||||
## About
|
||||
|
||||
**Privacy Guides** is a socially motivated website that provides information for protecting your data security and privacy. We are a non-profit collective operated entirely by volunteer team members and contributors.
|
||||
**Privacy Guides** is a socially motivated website that provides information for protecting your data security and privacy. Our mission is to inform the public about the value of digital privacy, and global government initiatives which aim to monitor your online activity. We are a non-profit collective operated entirely by volunteer team members and contributors. Our website is free of advertisements and not affiliated with any of the listed providers.
|
||||
|
||||
Our current list of team members can be found [here](https://www.privacyguides.org/about/#our-team). Additionally, [many people](https://github.com/privacyguides/privacyguides.org/graphs/contributors) have made contributions to the project, and you can too!
|
||||
The current list of team members can be found on [the executive committee page](https://www.privacyguides.org/en/about/#executive-committee). Additionally, [many people](#contributors) have made contributions to the project, and you can too!
|
||||
|
||||
*Featured on: [Tweakers](https://tweakers.net/reviews/10568/op-zoek-naar-privacyvriendelijke-tools-niek-de-wilde-van-privacy-guides.html), [The New York Times](https://nytimes.com/wirecutter/guides/online-security-social-media-privacy), [Wired](https://wired.com/story/firefox-mozilla-2022), and [Fast Company](https://www.fastcompany.com/91167564/mozilla-wants-you-to-love-firefox-again).*
|
||||
|
||||
## Contributing
|
||||
|
||||
- 💬 [Start a discussion or suggest an idea](https://discuss.privacyguides.net/)
|
||||
[](https://codespaces.new/privacyguides/privacyguides.org?devcontainer_path=.devcontainer%2Fdevcontainer.json)
|
||||
|
||||
- 💬 [Start a discussion or suggest an idea](https://discuss.privacyguides.net)
|
||||
- 💖 [Sponsor the project](https://github.com/sponsors/privacyguides)
|
||||
- 🈴 [Help translate the site](https://crwd.in/privacyguides) [[Matrix chat](https://matrix.to/#/#pg-i18n:aragon.sh)]
|
||||
- 🈴 [Help translate the site](https://crowdin.com/project/privacyguides) [[Matrix chat](https://matrix.to/#/#pg-i18n:aragon.sh)]
|
||||
- 📝 Edit the site, everything's accessible in this repo
|
||||
- Browse our [open issues](https://github.com/privacyguides/privacyguides.org/issues) to see what needs to be updated
|
||||
- View some contribution tips on our [contributor's wiki](https://github.com/privacyguides/privacyguides.org/wiki)
|
||||
- Browse our [open issues](https://github.com/privacyguides/privacyguides.org/issues) to see what needs to be updated
|
||||
- View the list of [approved topics waiting for a PR](https://discuss.privacyguides.net/tag/approved)
|
||||
- Read some writing tips in our [style guide](https://www.privacyguides.org/en/meta/writing-style)
|
||||
|
||||
All contributors to the site are listed [here](#contributors). If you have contributed to the website or project, please [add yourself](https://github.com/privacyguides/privacyguides.org/issues/2524) to the list or ask @jonaharagon to make the change.
|
||||
|
||||
## Mirrors
|
||||
|
||||
- **GitHub Pages:** [privacyguides.github.io/privacyguides.org](https://privacyguides.github.io/privacyguides.org/en/)
|
||||
- **BunnyCDN:** [privacyguides-org-production.b-cdn.net](https://privacyguides-org-production.b-cdn.net/en/)
|
||||
|
||||
### Alternative Networks
|
||||
|
||||
> [!NOTE]
|
||||
> Most hidden service providers are not very extensively used or tested, [which is why we strongly recommend Tor](https://www.privacyguides.org/en/tor/). Using other networks could be more likely to endanger your anonymity, so make sure you know what you're doing.
|
||||
|
||||
- **Tor/onion:** [xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion](http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion)
|
||||
|
||||
### Git Mirrors
|
||||
|
||||
[](https://github.com/privacyguides/privacyguides.org)
|
||||
[](https://code.privacyguides.dev/privacyguides/privacyguides.org)
|
||||
[](https://gitlab.com/privacyguides/privacyguides.org)
|
||||
[](https://codeberg.org/privacyguides/privacyguides.org)
|
||||
[](https://git.sr.ht/~jonaharagon/privacyguides.org)
|
||||
[](https://code.privacyguides.dev/privacyguides/privacyguides.org)
|
||||
[](https://git.jonaharagon.net/privacyguides/privacyguides.org)
|
||||
|
||||
## License
|
||||
|
||||
Copyright © 2019 - 2023 [Privacy Guides contributors](https://github.com/privacyguides/privacyguides.org/graphs/contributors).
|
||||
Copyright © 2019 - 2024 [Privacy Guides contributors](#contributors).
|
||||
|
||||
Privacy Guides content is licensed under the [Creative Commons Attribution-NoDerivatives 4.0 International Public License](/LICENSE), and the underlying source code used to format and display that content on [www.privacyguides.org](https://www.privacyguides.org) is licensed under the [MIT License](/LICENSE-CODE).
|
||||
Privacy Guides content is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](/LICENSE), and the underlying source code used to format and display that content on [www.privacyguides.org](https://www.privacyguides.org) is licensed under the [MIT License](/LICENSE-CODE).
|
||||
|
||||
[More info...](https://www.privacyguides.org/en/about/notices/#licenses)
|
||||
Generally speaking, **content** can be found in the [`/docs`](/docs), [`/theme/assets/img`](/theme/assets/img) and [`/includes`](/includes) folders; and **source code** and configuration files can be found in the [`/config`](/config) and [`/theme`](/theme) folders, and in the root of this repository. Any source code snippets contained within documentation files are [MIT Licensed](/LICENSE-CODE). Please contact us if you require clarification on any of these terms.
|
||||
|
||||
These licenses do not apply to any work where another license is otherwise noted.
|
||||
|
||||
**Logos** in the [`/theme/assets/img`](/theme/assets/img) folder may not be original works of Privacy Guides and therefore cannot be (re)licensed by us. We believe that these logos obtained from third-party providers are either in the public domain or **fair use**. In a nutshell, legal [fair use doctrine](https://copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject for purposes of public comment. However, these logos and other images may still be subject to trademark laws in one or more jurisdictions. Before using this content, please ensure that it is used to identify the entity or organization that owns the trademark and that you have the right to use it under the laws which apply in the circumstances of your intended use. *When copying content from this website, you are solely responsible for ensuring that you do not infringe someone else's trademark or copyright.*
|
||||
|
||||
You may comply with our license terms in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use. You **may not** use the Privacy Guides branding in your own project without express approval from this project. Privacy Guides's brand trademarks include the "Privacy Guides" wordmark and shield logo.
|
||||
|
||||
When you contribute to this repository you are doing so under the above licenses, and you are granting Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute your contribution as part of our project.
|
||||
|
||||
## Developing
|
||||
|
||||
The only supported method of building and previewing this website locally is by running the automatic dev container. The easiest way to do this in your web browser without installing any software is to use [GitHub Codespaces](https://codespaces.new/privacyguides/privacyguides.org). To build the website locally, you will need the following software:
|
||||
|
||||
- macOS/Windows: [Docker Desktop](https://www.docker.com/products/docker-desktop/)
|
||||
- Linux: [Docker CE](https://docs.docker.com/get-started/get-docker/#supported-platforms)
|
||||
- [VS Code](https://code.visualstudio.com/)
|
||||
- [Dev Containers for VS Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension
|
||||
- [GitHub Desktop](https://github.com/apps/desktop) (optional)
|
||||
|
||||
You can technically use any IDE which supports [development containers](https://containers.dev/), but YMMV. Docker Desktop has an experimental Dev Environments option which allows you to use any text editor under Settings > Features in development. We are only testing with the combination of software above.
|
||||
|
||||
Committing to this repository requires [signing your commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) (`git config commit.gpgsign true`) unless you are making edits via the GitHub.com text editor interface. As of August 2022 the preferred signing method is [SSH commit signatures](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification#ssh-commit-signature-verification), but GPG signing is also acceptable. You should add your signing key to your GitHub profile.
|
||||
|
||||
This website uses [`mkdocs-material-insiders`](https://squidfunk.github.io/mkdocs-material/insiders/) which offers additional functionality over the open-source `mkdocs-material` project. For obvious reasons we cannot distribute access to the insiders repository. Running this website locally without access to insiders is unsupported. If you are submitting a PR, please ensure the automatic preview generated for your PR looks correct, as that site will be built with the production insiders build.
|
||||
|
||||
**Team members** should clone the repository with `mkdocs-material-insiders` directly. This method is identical to production:
|
||||
|
||||
1. Clone this repository and submodules: `git clone --recurse-submodules https://github.com/privacyguides/privacyguides.org.git`
|
||||
2. Enable SSH commit verification with our local [`.allowed_signers`](/.allowed_signers) file: `git config gpg.ssh.allowedSignersFile .allowed_signers`
|
||||
3. Install Python **3.8**, this is the only version supported by Netlify.
|
||||
4. Install **pipenv**: `pip install pipenv`
|
||||
5. Install dependencies: `pipenv install --dev` (install [Pillow and CairoSVG](https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#dependencies) as well to generate social cards)
|
||||
6. Serve the site locally: `pipenv run mkdocs serve --config-file config/mkdocs.en.yml` (set `CARDS=true` to generate social cards)
|
||||
- The site will be available at `http://localhost:8000`
|
||||
- You can build the site locally with `pipenv run mkdocs build --config-file config/mkdocs.en.yml`
|
||||
- This version of the site should be identical to the live, production version
|
||||
|
||||
If you commit to `main` with commits signed with your SSH key, you should add your SSH key to [`.allowed_signers`](/.allowed_signers) in this repo.
|
||||
|
||||
## Releasing
|
||||
|
||||
1. Create a new tag: `git tag -s v3.X.X -m 'Some message'`
|
||||
- [View existing tags](https://github.com/privacyguides/privacyguides.org/tags)
|
||||
- Tag [numbering](https://semver.org/): Increment the MINOR (2nd) number when making significant changes (adding/deleting pages, etc.), increment the PATCH (3rd) number when making minor changes (typos, bug fixes). Probably leave the MAJOR number at 3 until a massive revamp (v1 -> v2 was the Jekyll to MkDocs transition, v2 -> v3 was the introduction of translations).
|
||||
- Consider enabling GPG tag signing by default (`git config tag.gpgSign true`) to avoid missing signatures
|
||||
It is required to create a GitHub release to publish the current site to privacyguides.org. The current `main` branch can be previewed at [https://main.staging.privacyguides.dev](https://main.staging.privacyguides.dev) prior to release.
|
||||
|
||||
1. Create a new tag: `git tag -s YYYY.MM.DD -m 'Some message'`
|
||||
- Tag numbering: `YYYY.MM.DD` - if two+ releases are published on the same day, append short commit to the next release, e.g. `YYYY.MM.DD-6aa14e8`
|
||||
- Enable GPG tag signing by default (`git config tag.gpgSign true`) to avoid missing signatures
|
||||
2. Push the tag to GitHub: `git push --tags`
|
||||
3. A GitHub Release will be automatically created and deployed to the live site.
|
||||
- You may wish to manually check or edit the release changelog/title after it is published for accuracy.
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
/ /en/ 302 Language=en
|
||||
/ /fr/ 302 Language=fr
|
||||
/ /he/ 302 Language=he
|
||||
/ /nl/ 302 Language=nl
|
||||
/ /en/ 302
|
||||
|
||||
/.well-known/matrix/* https://matrix.privacyguides.org/.well-known/matrix/:splat 200
|
||||
|
||||
/kb /en/basics/threat-modeling/
|
||||
/:lang/kb /:lang/basics/threat-modeling/
|
||||
|
||||
/coc/ /en/CODE_OF_CONDUCT/
|
||||
|
||||
/team /en/about/
|
||||
/browsers /en/desktop-browsers/
|
||||
/blog https://blog.privacyguides.org
|
||||
/basics/dns-overview /en/advanced/dns-overview/
|
||||
/basics/tor-overview /en/advanced/tor-overview/
|
||||
/real-time-communication/communication-network-types /en/advanced/communication-network-types
|
||||
/advanced/real-time-communication /en/advanced/communication-network-types
|
||||
/android/overview /en/os/android-overview/
|
||||
/linux-desktop/overview /en/os/linux-overview/
|
||||
/android/grapheneos-vs-calyxos https://blog.privacyguides.org/2022/04/21/grapheneos-or-calyxos/
|
||||
/ios/configuration https://blog.privacyguides.org/2022/10/22/ios-configuration-guide/
|
||||
/linux-desktop/hardening https://blog.privacyguides.org/2022/04/22/linux-system-hardening/
|
||||
/linux-desktop/sandboxing https://blog.privacyguides.org/2022/04/22/linux-application-sandboxing/
|
||||
/advanced/signal-configuration-hardening https://blog.privacyguides.org/2022/07/07/signal-configuration-and-hardening/
|
||||
/real-time-communication/signal-configuration-hardening https://blog.privacyguides.org/2022/07/07/signal-configuration-and-hardening/
|
||||
/advanced/integrating-metadata-removal https://blog.privacyguides.org/2022/04/09/integrating-metadata-removal/
|
||||
/advanced/erasing-data https://blog.privacyguides.org/2022/05/25/secure-data-erasure/
|
||||
/operating-systems /en/desktop/
|
||||
/threat-modeling /en/basics/threat-modeling/
|
||||
/self-contained-networks /en/tor/
|
||||
/privacy-policy /en/about/privacy-policy/
|
||||
/metadata-removal-tools /en/data-redaction/
|
||||
/basics /en/kb
|
||||
/software/file-encryption /en/encryption/
|
||||
/providers /en/tools/#service-providers
|
||||
/software/calendar-contacts /en/calendar/
|
||||
/calendar-contacts /en/calendar/
|
||||
/software/metadata-removal-tools /en/data-redaction/
|
||||
/contact /en/about/
|
||||
/welcome-to-privacy-guides https://blog.privacyguides.org/2021/09/14/welcome-to-privacy-guides/
|
||||
/software/email /en/email-clients/
|
||||
/providers/paste /en/tools/
|
||||
/blog/2019/10/05/understanding-vpns https://www.jonaharagon.com/posts/understanding-vpns/
|
||||
/terms-and-notices /en/about/notices/
|
||||
/software/networks /en/tor/
|
||||
/social-news-aggregator /en/news-aggregators/
|
||||
/basics/erasing-data https://blog.privacyguides.org/2022/05/25/secure-data-erasure/
|
||||
/linux-desktop /en/desktop/
|
||||
|
||||
/providers/:slug /en/:slug/
|
||||
/software/:slug /en/:slug/
|
||||
/blog/* https://blog.privacyguides.org/:splat
|
||||
/assets/* /en/assets/:splat
|
||||
|
||||
/:slug/ /en/:slug/
|
||||
/about/:slug/ /en/about/:slug/
|
||||
/advanced/:slug/ /en/advanced/:slug/
|
||||
/basics/:slug/ /en/basics/:slug/
|
||||
/meta/:slug/ /en/meta/:slug/
|
||||
/os/:slug/ /en/os/:slug/
|
||||
@@ -0,0 +1,214 @@
|
||||
@font-face {
|
||||
font-family: 'Bagnard';
|
||||
src: url("/brand/fonts/Bagnard/Bold.woff") format("woff");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Thin.ttf') format('truetype');
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Thin%20Italic.ttf') format('truetype');
|
||||
font-weight: 100;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/ExtraLight.ttf') format('truetype');
|
||||
font-weight: 200;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/ExtraLight%20Italic.ttf') format('truetype');
|
||||
font-weight: 200;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Light.ttf') format('truetype');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Light%20Italic.ttf') format('truetype');
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Italic.ttf') format('truetype');
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Regular.ttf') format('truetype');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Medium.ttf') format('truetype');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Medium%20Italic.ttf') format('truetype');
|
||||
font-weight: 500;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/SemiBold.ttf') format('truetype');
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/SemiBold%20Italic.ttf') format('truetype');
|
||||
font-weight: 600;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Bold.ttf') format('truetype');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Bold%20Italic.ttf') format('truetype');
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/ExtraBold.ttf') format('truetype');
|
||||
font-weight: 800;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/ExtraBold%20Italic.ttf') format('truetype');
|
||||
font-weight: 800;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Black.ttf') format('truetype');
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Public Sans';
|
||||
src: url('/brand/fonts/Public%20Sans/Black%20Italic.ttf') format('truetype');
|
||||
font-weight: 900;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'DM Mono';
|
||||
src: url('/brand/fonts/DM%20Mono/Regular.woff2') format('woff2');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'DM Mono';
|
||||
src: url('/brand/fonts/DM%20Mono/Medium.woff2') format('woff2');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
.content {
|
||||
font-family: "Public Sans", Helvetica, ui-sans-serif, system-ui, sans-serif;
|
||||
}
|
||||
h1, .content h1, .content h2, .content h3 {
|
||||
font-family: "Bagnard", "Georgia", ui-serif, serif;
|
||||
font-weight: bold;
|
||||
padding-top: 0.5em;
|
||||
border: none;
|
||||
}
|
||||
.pg-home h3 {
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
:root {
|
||||
--primary-hue: 40.42deg;
|
||||
--primary-saturation: 100%;
|
||||
--primary-lightness: 71.76%;
|
||||
--hx-font-sans: "Public Sans", Helvetica, ui-sans-serif, system-ui, sans-serif;
|
||||
}
|
||||
|
||||
.content :where(a):not(:where([class~=not-prose],
|
||||
[class~=not-prose] *)) {
|
||||
color:var(--hx-color-primary-800);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.content :where(a):not(:where([class~=not-prose],
|
||||
[class~=not-prose] *)):hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.footnote-ref {
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.pg-card-logos img {
|
||||
width: 100px;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.pg-unstyled-cards .hextra-card {
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.pg-unstyled-cards .hextra-card:hover {
|
||||
background-color: inherit;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
var feedback = document.forms.feedback
|
||||
feedback.hidden = false
|
||||
|
||||
feedback.addEventListener("submit", function(ev) {
|
||||
ev.preventDefault()
|
||||
|
||||
var data = ev.submitter.getAttribute("data-md-value")
|
||||
|
||||
if (data == 1) {
|
||||
var umamiEventName = "feedback-positive"
|
||||
} else if (data == 0) {
|
||||
var umamiEventName = "feedback-negative"
|
||||
}
|
||||
|
||||
var umamiEvent = {
|
||||
payload: {
|
||||
hostname: window.location.hostname,
|
||||
language: navigator.language,
|
||||
referrer: document.referrer,
|
||||
screen: `${window.screen.width}x${window.screen.height}`,
|
||||
url: window.location.pathname,
|
||||
website: '246e357e-0764-4674-9314-7676724b3a88',
|
||||
name: umamiEventName,
|
||||
},
|
||||
type: 'event',
|
||||
};
|
||||
|
||||
// remove trailing slash from path
|
||||
if (umamiEvent.payload.url.slice(-1) === '/') {
|
||||
umamiEvent.payload.url = umamiEvent.payload.url.slice(0, -1);
|
||||
}
|
||||
|
||||
console.log(umamiEvent)
|
||||
|
||||
fetch("https://stats.triplebit.net/api/send", {
|
||||
method: "POST",
|
||||
body: JSON.stringify(umamiEvent),
|
||||
headers: {
|
||||
"Content-type": "application/json",
|
||||
}
|
||||
})
|
||||
.then((response) => console.log(response));
|
||||
|
||||
feedback.firstElementChild.disabled = true
|
||||
|
||||
var note = feedback.querySelector(
|
||||
".md-feedback__note [data-md-value='" + data + "']"
|
||||
)
|
||||
if (note)
|
||||
note.hidden = false
|
||||
})
|
||||
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* @overview Randomizes the order of an HTML element's children.
|
||||
* @author Jonah Aragon <jonah@triplebit.net>
|
||||
* @license
|
||||
* Copyright (c) 2024 Jonah Aragon
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
// Fetch global data from meta tag
|
||||
let globalData = document.querySelector("#global-data");
|
||||
|
||||
if (globalData.dataset.randomizeElement) {
|
||||
// Get elements to be randomized from meta tag in HTML
|
||||
let randomizeElement = globalData.dataset.randomizeElement;
|
||||
console.log("Randomizing child elements of " + randomizeElement);
|
||||
|
||||
// Get all elements to be randomized
|
||||
let randomizeChildren = document.querySelectorAll(randomizeElement);
|
||||
let randomizeArray = Array.from(randomizeChildren);
|
||||
|
||||
// Handle multiple elements to be randomized
|
||||
for (const element of randomizeArray) {
|
||||
let selector = " > *";
|
||||
if (globalData.dataset.randomizeElementSelector) {
|
||||
selector = globalData.dataset.randomizeElementSelector
|
||||
}
|
||||
|
||||
// Select all direct children of element
|
||||
let children = element.querySelectorAll(randomizeElement + selector);
|
||||
|
||||
// Randomize rows (simple, probably not efficient)
|
||||
let randomChildren = Array.from(children)
|
||||
.map(value => ({ value, sort: Math.random() }))
|
||||
.sort((a, b) => a.sort - b.sort)
|
||||
.map(({ value }) => value);
|
||||
|
||||
// Replace each element with randomly selected element
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
let child = randomChildren[i].cloneNode(true);
|
||||
child.classList.add("randomized");
|
||||
let parent = children[i].parentNode;
|
||||
parent.insertBefore(child, children[i]);
|
||||
children[i].remove();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,137 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
extra:
|
||||
social:
|
||||
- icon: simple/mastodon
|
||||
link: https://mastodon.neat.computer/@privacyguides
|
||||
name: Mastodon
|
||||
- icon: simple/matrix
|
||||
link: https://matrix.to/#/#privacyguides:matrix.org
|
||||
name: Matrix
|
||||
- icon: simple/discourse
|
||||
link: https://discuss.privacyguides.net/
|
||||
name: Forum
|
||||
- icon: simple/github
|
||||
link: https://github.com/privacyguides
|
||||
name: GitHub
|
||||
alternate:
|
||||
- name: English
|
||||
link: /en/
|
||||
lang: en
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1fa-1f1f8.svg
|
||||
- name: Français
|
||||
link: /fr/
|
||||
lang: fr
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1eb-1f1f7.svg
|
||||
- name: עִברִית
|
||||
link: /he/
|
||||
lang: he
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ee-1f1f1.svg
|
||||
- name: Nederlands
|
||||
link: /nl/
|
||||
lang: nl
|
||||
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1f3-1f1f1.svg
|
||||
|
||||
repo_url: https://github.com/privacyguides/privacyguides.org
|
||||
repo_name: ""
|
||||
|
||||
theme:
|
||||
name: material
|
||||
custom_dir: ../theme
|
||||
favicon: assets/brand/png/favicon/favicon-32x32.png
|
||||
icon:
|
||||
repo: simple/github
|
||||
features:
|
||||
- navigation.tracking
|
||||
- navigation.tabs
|
||||
- navigation.sections
|
||||
- navigation.expand
|
||||
- navigation.path
|
||||
- navigation.indexes
|
||||
- content.tooltips
|
||||
- search.highlight
|
||||
|
||||
extra_css:
|
||||
- assets/stylesheets/extra.css?v=3.2.0
|
||||
extra_javascript:
|
||||
- assets/javascripts/mathjax.js
|
||||
- assets/javascripts/feedback.js
|
||||
|
||||
watch:
|
||||
- ../theme
|
||||
- ../includes
|
||||
- mkdocs.common.yml
|
||||
|
||||
plugins:
|
||||
tags: {}
|
||||
search: {}
|
||||
macros: {}
|
||||
meta: {}
|
||||
git-committers:
|
||||
enabled: !ENV [NETLIFY, false]
|
||||
repository: privacyguides/privacyguides.org
|
||||
branch: main
|
||||
git-revision-date-localized:
|
||||
enabled: !ENV [NETLIFY, false]
|
||||
exclude:
|
||||
- index.md
|
||||
fallback_to_build_date: true
|
||||
privacy:
|
||||
external_assets_exclude:
|
||||
- cdn.jsdelivr.net/npm/mathjax@3/*
|
||||
- api.privacyguides.net/*
|
||||
optimize:
|
||||
enabled: !ENV [NETLIFY, false]
|
||||
typeset: {}
|
||||
|
||||
markdown_extensions:
|
||||
admonition: {}
|
||||
pymdownx.details: {}
|
||||
pymdownx.superfences:
|
||||
custom_fences:
|
||||
- name: mermaid
|
||||
class: mermaid
|
||||
format: !!python/name:pymdownx.superfences.fence_code_format
|
||||
pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
pymdownx.arithmatex:
|
||||
generic: true
|
||||
pymdownx.critic: {}
|
||||
pymdownx.caret: {}
|
||||
pymdownx.keys: {}
|
||||
pymdownx.mark: {}
|
||||
pymdownx.tilde: {}
|
||||
pymdownx.snippets: {}
|
||||
pymdownx.tasklist:
|
||||
custom_checkbox: true
|
||||
attr_list: {}
|
||||
def_list: {}
|
||||
md_in_html: {}
|
||||
meta: {}
|
||||
abbr: {}
|
||||
pymdownx.emoji:
|
||||
emoji_index: !!python/name:materialx.emoji.twemoji
|
||||
emoji_generator: !!python/name:materialx.emoji.to_svg
|
||||
tables: {}
|
||||
footnotes: {}
|
||||
toc:
|
||||
permalink: true
|
||||
toc_depth: 4
|
||||
@@ -1,170 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs.common.yml
|
||||
docs_dir: '../docs'
|
||||
site_url: "https://www.privacyguides.org/en/"
|
||||
site_dir: '../site/en'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides is your central privacy and security resource to protect yourself online.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> is a non-profit, socially motivated website that provides information for protecting your data security and privacy.<br>
|
||||
We do not make money from recommending certain products, and we do not use affiliate links.<br>
|
||||
© 2022 Privacy Guides and contributors.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Content licensed under <a href="/about/"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/docs/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
analytics:
|
||||
provider: plausible
|
||||
property: privacyguides.org
|
||||
feedback:
|
||||
title: "Was this page helpful?"
|
||||
ratings:
|
||||
- icon: material/robot-happy-outline
|
||||
name: "This page was helpful"
|
||||
data: Helpful
|
||||
note: "Thanks for your feedback!"
|
||||
- icon: material/robot-confused
|
||||
name: "This page could be improved"
|
||||
data: Needs Improvement
|
||||
note: "Thanks for your feedback! Help us improve this page by opening a <a href='https://discuss.privacyguides.net/'>discussion on our forum</a>."
|
||||
|
||||
theme:
|
||||
language: en
|
||||
logo: ../theme/assets/brand/SVG/Logo/privacy-guides-logo-notext-colorbg.svg
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Switch to dark mode"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Switch to light mode"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Switch to system theme"
|
||||
|
||||
plugins:
|
||||
social:
|
||||
cards: !ENV [NETLIFY, false]
|
||||
cards_color:
|
||||
fill: "#FFD06F"
|
||||
text: "#2d2d2d"
|
||||
cards_dir: assets/img/social
|
||||
cards_font: Public Sans
|
||||
cache_dir: .cache/plugin/social-en
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.en.txt
|
||||
|
||||
nav:
|
||||
- Home: 'index.md'
|
||||
- Knowledge Base:
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Technology Essentials:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- Operating Systems:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- Advanced Topics:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- kb-archive.md
|
||||
- Recommendations:
|
||||
- 'tools.md'
|
||||
- Internet Browsing:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- Operating Systems:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- Providers:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- Software:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- 'video-streaming.md'
|
||||
- About:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/statistics.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Community:
|
||||
- 'about/donate.md'
|
||||
- Online Services: 'about/services.md'
|
||||
- Code of Conduct: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contributing:
|
||||
- Writing Guide:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- Technical Guides:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Changelog: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Forum: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
||||
@@ -1,170 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs.common.yml
|
||||
docs_dir: '../i18n/fr'
|
||||
site_url: "https://www.privacyguides.org/fr/"
|
||||
site_dir: '../site/fr'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides est votre ressource centrale en matière de vie privée et de sécurité pour vous protéger en ligne.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> is a non-profit, socially motivated website that provides information for protecting your data security and privacy.<br>
|
||||
We do not make money from recommending certain products, and we do not use affiliate links.<br>
|
||||
© 2022 Privacy Guides and contributors.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Content licensed under <a href="/about/"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/i18n/fr/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
analytics:
|
||||
provider: plausible
|
||||
property: privacyguides.org
|
||||
feedback:
|
||||
title: "Cette page vous a été utile ?"
|
||||
ratings:
|
||||
- icon: material/robot-happy-outline
|
||||
name: "Cette page a été utile"
|
||||
data: Helpful
|
||||
note: "Merci pour votre retour !"
|
||||
- icon: material/robot-confused
|
||||
name: "Cette page pourrait être améliorée"
|
||||
data: Needs Improvement
|
||||
note: "Thanks for your feedback! Help us improve this page by opening a <a href='https://discuss.privacyguides.net/'>discussion on our forum</a>."
|
||||
|
||||
theme:
|
||||
language: fr
|
||||
logo: ../../theme/assets/brand/SVG/Logo/privacy-guides-logo-notext-colorbg.svg
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Basculer en mode sombre"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Basculer en mode clair"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Basculer vers le thème du système"
|
||||
|
||||
plugins:
|
||||
social:
|
||||
cards: !ENV [NETLIFY, false]
|
||||
cards_color:
|
||||
fill: "#FFD06F"
|
||||
text: "#2d2d2d"
|
||||
cards_dir: assets/img/social
|
||||
cards_font: Public Sans
|
||||
cache_dir: .cache/plugin/social-fr
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.fr.txt
|
||||
|
||||
nav:
|
||||
- Accueil: 'index.md'
|
||||
- Base de connaissances:
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Les essentiels de la technologie:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- "Systèmes d'exploitation":
|
||||
- 'os/android-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- "Sujets avancés":
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- kb-archive.md
|
||||
- Recommandations:
|
||||
- 'tools.md'
|
||||
- Navigation internet:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- "Systèmes d'exploitation":
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- "Fournisseurs":
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- "Logiciels":
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- 'video-streaming.md'
|
||||
- "À propos":
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/statistics.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Community:
|
||||
- 'about/donate.md'
|
||||
- Online Services: 'about/services.md'
|
||||
- Code of Conduct: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contributing:
|
||||
- Writing Guide:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- Technical Guides:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Journal des modifications: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Forum: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
||||
@@ -1,174 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs.common.yml
|
||||
docs_dir: '../i18n/he'
|
||||
site_url: "https://www.privacyguides.org/he/"
|
||||
site_dir: '../site/he'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides (מדריכי פרטיות) הם משאב הפרטיות והאבטחה המרכזי שלכם כדי להגן על עצמכם באופן מקוון.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> is a non-profit, socially motivated website that provides information for protecting your data security and privacy.<br>
|
||||
We do not make money from recommending certain products, and we do not use affiliate links.<br>
|
||||
© 2022 Privacy Guides and contributors.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Content licensed under <a href="/about/"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/i18n/he/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
analytics:
|
||||
provider: plausible
|
||||
property: privacyguides.org
|
||||
feedback:
|
||||
title: "האם הדף הזה עזר לך?"
|
||||
ratings:
|
||||
- icon: material/robot-happy-outline
|
||||
name: "הדף הזה היה מועיל"
|
||||
data: Helpful
|
||||
note: "תודה על המשוב שלך!"
|
||||
- icon: material/robot-confused
|
||||
name: "דף זה יכול להשתפר"
|
||||
data: Needs Improvement
|
||||
note: "תודה על המשוב שלך! Help us improve this page by opening a <a href='https://discuss.privacyguides.net/'>discussion on our forum</a>."
|
||||
|
||||
extra_css:
|
||||
- assets/stylesheets/extra.css?v=3.2.0
|
||||
- assets/stylesheets/lang-he.css?v=3.4.0
|
||||
|
||||
theme:
|
||||
language: he
|
||||
logo: ../../theme/assets/brand/SVG/Logo/privacy-guides-logo-notext-colorbg.svg
|
||||
font:
|
||||
text: Open Sans
|
||||
code: Cousine
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "עבור למצב כהה"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "עבור למצב בהיר"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "עבור לערכת הנושא של המערכת"
|
||||
|
||||
plugins:
|
||||
social:
|
||||
cards: !ENV [NETLIFY, false]
|
||||
cards_color:
|
||||
fill: "#FFD06F"
|
||||
text: "#2d2d2d"
|
||||
cards_dir: assets/img/social
|
||||
cards_font: Suez One
|
||||
cache_dir: .cache/plugin/social-he
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.he.txt
|
||||
|
||||
nav:
|
||||
- "דף הבית": 'index.md'
|
||||
- "ידע בסיסי":
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- "יסודות הטכנולוגיה":
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- "מערכות הפעלה":
|
||||
- 'os/android-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- "נושאים מתקדמים":
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- kb-archive.md
|
||||
- "המלצות":
|
||||
- 'tools.md'
|
||||
- "גלישה באינטרנט":
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- "מערכות הפעלה":
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- "ספקים":
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- "תוכנה":
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- 'video-streaming.md'
|
||||
- "על אודות":
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/statistics.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Community:
|
||||
- 'about/donate.md'
|
||||
- Online Services: 'about/services.md'
|
||||
- Code of Conduct: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contributing:
|
||||
- Writing Guide:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- Technical Guides:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- "יומן שינויים": 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- "פורום": 'https://discuss.privacyguides.net/'
|
||||
- "בלוג": 'https://blog.privacyguides.org/'
|
||||
@@ -1,170 +0,0 @@
|
||||
# Copyright (c) 2022-2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs.common.yml
|
||||
docs_dir: '../i18n/nl'
|
||||
site_url: "https://www.privacyguides.org/nl/"
|
||||
site_dir: '../site/nl'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides is jouw centrale bron voor privacy en beveiliging om jezelf online te beschermen.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> is een non-profit, sociaal gemotiveerde website die informatie biedt voor de bescherming van jouw gegevensbeveiliging en privacy.<br>
|
||||
Wij verdienen geen geld met het aanbevelen van bepaalde producten, en wij maken geen gebruik van affiliate links.<br>
|
||||
© 2022 Privacy Guides en medewerkers.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Inhoud gelicentieerd onder <a href="/about/"><strong>CC BY-ND 4.0</strong></a>.
|
||||
edit_uri: edit/main/docs/
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
analytics:
|
||||
provider: plausible
|
||||
property: privacyguides.org
|
||||
feedback:
|
||||
title: "Was deze pagina nuttig?"
|
||||
ratings:
|
||||
- icon: material/robot-happy-outline
|
||||
name: "Deze pagina was nuttig"
|
||||
data: Helpful
|
||||
note: "Bedankt voor je feedback!"
|
||||
- icon: material/robot-confused
|
||||
name: "Deze pagina kan worden verbeterd"
|
||||
data: Needs Improvement
|
||||
note: "Bedankt voor jouw feedback! Help ons deze pagina te verbeteren door een <a href='https://discuss.privacyguides.net/'>discussie te openen op ons forum</a>."
|
||||
|
||||
theme:
|
||||
language: nl
|
||||
logo: ../../theme/assets/brand/SVG/Logo/privacy-guides-logo-notext-colorbg.svg
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Verander naar donker thema"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Verander naar licht thema"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Verander naar systeem thema"
|
||||
|
||||
plugins:
|
||||
social:
|
||||
cards: !ENV [NETLIFY, false]
|
||||
cards_color:
|
||||
fill: "#FFD06F"
|
||||
text: "#2d2d2d"
|
||||
cards_dir: assets/img/social
|
||||
cards_font: Public Sans
|
||||
cache_dir: .cache/plugin/social-nl
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.nl.txt
|
||||
|
||||
nav:
|
||||
- Home: 'index.md'
|
||||
- Kennisbank:
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Technologie essenties:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- Besturings systemen:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- Gevorderde onderwerpen:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- kb-archive.md
|
||||
- Recommendaties:
|
||||
- 'tools.md'
|
||||
- Surfen op het internet:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- Besturings systemen:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- Providers:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- Software:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- 'video-streaming.md'
|
||||
- Over ons:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/statistics.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Community:
|
||||
- 'about/donate.md'
|
||||
- Online Services: 'about/services.md'
|
||||
- Code of Conduct: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contributing:
|
||||
- Writing Guide:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- Technical Guides:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Changelog: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Forum: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
||||
@@ -1,159 +0,0 @@
|
||||
# Copyright (c) 2023 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
INHERIT: mkdocs.common.yml
|
||||
docs_dir: '../docs'
|
||||
site_url: "https://www.privacyguides.org/"
|
||||
site_dir: '../site'
|
||||
|
||||
site_name: Privacy Guides
|
||||
site_description: |
|
||||
Privacy Guides is your central privacy and security resource to protect yourself online.
|
||||
copyright: |
|
||||
<b>Privacy Guides</b> is a non-profit, socially motivated website that provides information for protecting your data security and privacy.<br>
|
||||
We do not make money from recommending certain products, and we do not use affiliate links.<br>
|
||||
© 2022 Privacy Guides and contributors.
|
||||
<span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="m245.83 214.87-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"></path></svg></span><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"></path></svg></span>
|
||||
Content licensed under <a href="/about/"><strong>CC BY-ND 4.0</strong></a>.
|
||||
repo_url: ""
|
||||
|
||||
extra:
|
||||
generator: false
|
||||
analytics: false
|
||||
alternate: false
|
||||
offline: true
|
||||
|
||||
theme:
|
||||
language: en
|
||||
logo: ../theme/assets/brand/SVG/Logo/privacy-guides-logo-notext-colorbg.svg
|
||||
font:
|
||||
text: Public Sans
|
||||
code: DM Mono
|
||||
palette:
|
||||
- media: "(prefers-color-scheme)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: "Switch to dark mode"
|
||||
- media: "(prefers-color-scheme: dark)"
|
||||
scheme: slate
|
||||
accent: amber
|
||||
toggle:
|
||||
icon: material/brightness-2
|
||||
name: "Switch to light mode"
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
accent: deep purple
|
||||
toggle:
|
||||
icon: material/brightness-5
|
||||
name: "Switch to system theme"
|
||||
features:
|
||||
- navigation.tabs
|
||||
- navigation.sections
|
||||
- navigation.indexes
|
||||
- content.tooltips
|
||||
- search.highlight
|
||||
|
||||
plugins:
|
||||
offline:
|
||||
enabled: true
|
||||
|
||||
markdown_extensions:
|
||||
pymdownx.snippets:
|
||||
auto_append:
|
||||
- includes/abbreviations.en.txt
|
||||
|
||||
nav:
|
||||
- Home: 'index.md'
|
||||
- Knowledge Base:
|
||||
- 'basics/threat-modeling.md'
|
||||
- 'basics/common-threats.md'
|
||||
- 'basics/common-misconceptions.md'
|
||||
- 'basics/account-creation.md'
|
||||
- 'basics/account-deletion.md'
|
||||
- Technology Essentials:
|
||||
- 'basics/passwords-overview.md'
|
||||
- 'basics/multi-factor-authentication.md'
|
||||
- 'basics/email-security.md'
|
||||
- 'basics/vpn-overview.md'
|
||||
- Operating Systems:
|
||||
- 'os/android-overview.md'
|
||||
- 'os/linux-overview.md'
|
||||
- 'os/qubes-overview.md'
|
||||
- Advanced Topics:
|
||||
- 'advanced/dns-overview.md'
|
||||
- 'advanced/tor-overview.md'
|
||||
- 'advanced/payments.md'
|
||||
- 'advanced/communication-network-types.md'
|
||||
- kb-archive.md
|
||||
- Recommendations:
|
||||
- 'tools.md'
|
||||
- Internet Browsing:
|
||||
- 'tor.md'
|
||||
- 'desktop-browsers.md'
|
||||
- 'mobile-browsers.md'
|
||||
- Operating Systems:
|
||||
- 'android.md'
|
||||
- 'desktop.md'
|
||||
- 'router.md'
|
||||
- Providers:
|
||||
- 'cloud.md'
|
||||
- 'dns.md'
|
||||
- 'email.md'
|
||||
- 'financial-services.md'
|
||||
- 'search-engines.md'
|
||||
- 'vpn.md'
|
||||
- Software:
|
||||
- 'calendar.md'
|
||||
- 'cryptocurrency.md'
|
||||
- 'data-redaction.md'
|
||||
- 'email-clients.md'
|
||||
- 'encryption.md'
|
||||
- 'file-sharing.md'
|
||||
- 'frontends.md'
|
||||
- 'multi-factor-authentication.md'
|
||||
- 'news-aggregators.md'
|
||||
- 'notebooks.md'
|
||||
- 'passwords.md'
|
||||
- 'productivity.md'
|
||||
- 'real-time-communication.md'
|
||||
- 'video-streaming.md'
|
||||
- About:
|
||||
- 'about/index.md'
|
||||
- 'about/criteria.md'
|
||||
- 'about/statistics.md'
|
||||
- 'about/notices.md'
|
||||
- 'about/privacy-policy.md'
|
||||
- Community:
|
||||
- 'about/donate.md'
|
||||
- Online Services: 'about/services.md'
|
||||
- Code of Conduct: 'CODE_OF_CONDUCT.md'
|
||||
- 'about/privacytools.md'
|
||||
- Contributing:
|
||||
- Writing Guide:
|
||||
- 'meta/writing-style.md'
|
||||
- 'meta/brand.md'
|
||||
- Technical Guides:
|
||||
- 'meta/uploading-images.md'
|
||||
- 'meta/git-recommendations.md'
|
||||
- Changelog: 'https://github.com/privacyguides/privacyguides.org/releases'
|
||||
- Forum: 'https://discuss.privacyguides.net/'
|
||||
- Blog: 'https://blog.privacyguides.org/'
|
||||
@@ -0,0 +1,53 @@
|
||||
# Community Code of Conduct
|
||||
|
||||
**We pledge** to make our community a harassment-free experience for everyone.
|
||||
|
||||
**We strive** to create a positive environment, using welcoming and inclusive language, and being respectful of the viewpoints of others.
|
||||
|
||||
**We do not allow** inappropriate or otherwise unacceptable behavior, such as sexualized language, trolling and insulting comments, or otherwise promoting intolerance or harassment.
|
||||
|
||||
## Community Standards
|
||||
|
||||
What we expect from members of our communities:
|
||||
|
||||
1. **Do not spread misinformation**
|
||||
|
||||
We are creating an evidence-based educational community around information privacy and security, not an information home for conspiracy theories. For example, when making a claim that a certain piece of software is malicious or that certain telemetry data is privacy invasive, explain in detail what is collected and how it collected. Claims of this nature must be backed by technical evidence.
|
||||
|
||||
2. **Do not abuse our willingness to help**
|
||||
|
||||
Our community members are not free tech support. We are happy to help with specific steps for your privacy journey, if you are willing to put in effort. We are not obligated to answer endless, repetitive questions about general computer problems solvable with a simple internet search. **Do not** become a [help vampire](https://slash7.com/2006/12/22/vampires).
|
||||
|
||||
3. **Behave in a positive and constructive manner**
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our community include:
|
||||
|
||||
- Being respectful of differing opinions, viewpoints, and experiences.
|
||||
- Demonstrating empathy and kindness toward others.
|
||||
- Focusing on what is best not just for us as overseers, but for the overall community.
|
||||
- Giving and gracefully accepting constructive feedback within our community while growing and improving.
|
||||
- Operating with a communal mindset at all times.
|
||||
|
||||
## Unacceptable Behavior
|
||||
|
||||
The following behaviors are considered harassment and are unacceptable within our community:
|
||||
|
||||
- Any other conduct which would reasonably be considered inappropriate in a professional setting.
|
||||
- Public and/or private harassment of any kind.
|
||||
- Publishing others' private information, such as a physical address and/or an email address, without their explicit permission.
|
||||
- The use of sexualized language or imagery, and sexual attention or advances of any kind.
|
||||
- Trolling, insulting and/or derogatory comments, including personal or political attacks.
|
||||
|
||||
## Scope
|
||||
|
||||
Our Code of Conduct applies within all project spaces, as well as when an individual is representing the Privacy Guides project in other communities.
|
||||
|
||||
We are responsible for clarifying the standards of our community and have the right to remove or alter the comments of those participating within our community, as necessary and at our discretion.
|
||||
|
||||
## Contact
|
||||
|
||||
If you observe a problem on a platform like Matrix or Reddit, please contact our moderators on that platform via chat, direct message, or any designated "Modmail" system.
|
||||
|
||||
If you have a problem elsewhere, or a problem that our community moderators are unable to resolve, reach out to `jonah@privacyguides.org` and/or `dngray@privacyguides.org`.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of reporters for all incidents.
|
||||
@@ -0,0 +1,134 @@
|
||||
---
|
||||
title: Privacy Guides
|
||||
layout: pg-home
|
||||
---
|
||||
|
||||
{{< hextra/hero-container image="brand/logos/svg/square/pg-yellow-nobg.svg" imageTitle="Privacy Guides shield logo" >}}
|
||||
|
||||
<div class="hx:mt-6 hx:mb-6">
|
||||
{{< hextra/hero-headline >}}
|
||||
Consumer Data Privacy <br class="hx:sm:block hx:hidden" />Advocacy & Resources
|
||||
{{< /hextra/hero-headline >}}
|
||||
</div>
|
||||
|
||||
<div class="hx:mb-12">
|
||||
{{< hextra/hero-subtitle >}}
|
||||
<strong>Privacy Guides</strong> is the only impartial, non-profit project<br class="hx:sm:block hx:hidden" />
|
||||
focused on building a <strong>strong privacy advocacy</strong> community <br class="hx:sm:block hx:hidden" />
|
||||
and delivering the best <strong>digital privacy education</strong> on the internet.
|
||||
{{< /hextra/hero-subtitle >}}
|
||||
</div>
|
||||
|
||||
<div class="hx:mb-6">
|
||||
{{< hextra/hero-button text="Why Privacy Matters" link="wiki/basics/why-privacy-matters" style="margin-top: 8px; margin-right: 8px; color: var(--hx-color-gray-800); background-color: var(--hx-color-primary-500);" >}}
|
||||
{{< hextra/hero-button text="Recommended Tools" link="tools" style="margin-top: 8px; color: white; background-color: var(--hx-color-gray-600);" >}}
|
||||
</div>
|
||||
|
||||
{{< /hextra/hero-container >}}
|
||||
|
||||
<div class="hx:mt-12"></div>
|
||||
|
||||
{{< hextra/hero-section style="text-align: center; width: 100%; margin-bottom: 1em;" >}}
|
||||
What <strong>Privacy Champions</strong> Like You Have Built:
|
||||
{{< /hextra/hero-section >}}
|
||||
|
||||
{{< hextra/feature-grid >}}
|
||||
{{< hextra/feature-card
|
||||
title="Privacy Tools"
|
||||
subtitle="The essential tools you need to safeguard your digital privacy, chosen by community consensus."
|
||||
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px]"
|
||||
image="pg-home-privacy-tools.png"
|
||||
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
|
||||
style="background: radial-gradient(ellipse at 50% 80%,rgba(0, 0, 0, 0.15),hsla(0,0%,100%,0));"
|
||||
link="tools"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="Privacy Wiki"
|
||||
subtitle="A comprehensive resource for understanding digital privacy concepts and best practices."
|
||||
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px]"
|
||||
image="pg-home-privacy-wiki.png"
|
||||
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
|
||||
style="background: radial-gradient(ellipse at 50% 80%,rgba(53, 142, 62, 0.15),hsla(0,0%,100%,0));"
|
||||
link="wiki"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="Privacy Forum"
|
||||
subtitle="Join the conversation, get answers, and connect with others who share your commitment to digital privacy."
|
||||
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px]"
|
||||
image="pg-home-privacy-forum.png"
|
||||
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
|
||||
style="background: radial-gradient(ellipse at 50% 80%,rgba(59, 202, 221, 0.15),hsla(0,0%,100%,0));"
|
||||
link="https://discuss.privacyguides.net"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="Educational Videos"
|
||||
subtitle="Watch our educational videos to learn more about digital privacy and how to protect yourself online."
|
||||
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px]"
|
||||
image="pg-home-youtube.png"
|
||||
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
|
||||
style="background: radial-gradient(ellipse at 50% 80%,rgba(221,210,59,0.15),hsla(0,0%,100%,0));"
|
||||
link="https://youtube.com/@PrivacyGuides"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="For Advocates"
|
||||
subtitle="Get involved in privacy activism and help us build a more private internet."
|
||||
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px]"
|
||||
image="pg-home-privacy-activism.png"
|
||||
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
|
||||
style="background: radial-gradient(ellipse at 50% 80%,rgba(221, 59, 59, 0.15),hsla(0,0%,100%,0));"
|
||||
link="activism"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="News Briefs"
|
||||
subtitle="Stay updated with the latest news and developments in the world of cybersecurity, privacy, and digital rights."
|
||||
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px]"
|
||||
image="pg-home-privacy-news.png"
|
||||
imageClass="hx:top-[40%] hx:left-[24px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
|
||||
style="background: radial-gradient(ellipse at 50% 80%,rgba(183, 59, 221, 0.15),hsla(0,0%,100%,0));"
|
||||
link="news"
|
||||
>}}
|
||||
{{< /hextra/feature-grid >}}
|
||||
|
||||
<div class="hx:mt-12"></div>
|
||||
|
||||
{{< hextra/hero-section style="text-align: center; width: 100%; margin-bottom: 1em;" >}}
|
||||
More Resources:
|
||||
{{< /hextra/hero-section >}}
|
||||
|
||||
{{< hextra/feature-grid >}}
|
||||
{{< hextra/feature-card
|
||||
title="Newsletter"
|
||||
subtitle="Subscribe to our newsletter and never miss an update on the latest in the consumer digital privacy world."
|
||||
link="#/portal"
|
||||
icon="mail-open"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="Articles"
|
||||
subtitle="Read the latest articles from our team of privacy experts and guest contributors."
|
||||
link="articles"
|
||||
icon="book-open"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="This Week in Privacy"
|
||||
subtitle="Our livestream and podcast discussing the latest news and answering your questions, every single week."
|
||||
link="https://thisweekinprivacy.net"
|
||||
icon="chat-alt-2"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="Courses and Tutorials"
|
||||
subtitle="Follow our courses and tutorials to learn more about digital privacy and how to protect yourself online."
|
||||
link="https://www.youtube.com/@PrivacyGuides/courses"
|
||||
icon="academic-cap"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="Trustworthy Reviews"
|
||||
subtitle="We're committed to providing unbiased and comprehensive reviews of privacy tools and services."
|
||||
icon="badge-check"
|
||||
>}}
|
||||
{{< hextra/feature-card
|
||||
title="Learn More"
|
||||
subtitle="Find out more about Privacy Guides and how you can support our mission."
|
||||
link="about"
|
||||
icon="heart"
|
||||
>}}
|
||||
{{< /hextra/feature-grid >}}
|
||||
@@ -0,0 +1,222 @@
|
||||
---
|
||||
title: "About Privacy Guides"
|
||||
description: Privacy Guides is a socially motivated website that provides information for protecting your data security and privacy.
|
||||
breadcrumbs: false
|
||||
cascade:
|
||||
type: docs
|
||||
---
|
||||
{ align=right }
|
||||
|
||||
**Privacy Guides** is a socially motivated website that provides information for protecting your data security and privacy. We are a non-profit project with a mission to inform the public about the value of digital privacy, and about global government initiatives which aim to monitor your online activity. Our website is free of advertisements and not affiliated with any of the listed providers.
|
||||
|
||||
[:material-heart:{.pg-red} Become a Member](https://donate.magicgrants.org/privacyguides){ .md-button .md-button--primary data-portal="signup" }
|
||||
[:octicons-home-16:](https://www.privacyguides.org){ .card-link title=Homepage }
|
||||
[:octicons-code-16:](https://github.com/privacyguides/privacyguides.org){ .card-link title="Source Code" }
|
||||
|
||||
Privacy Guides is built by volunteers and staff members around the world. All changes to our recommendations and resources are reviewed by at least two [trusted](https://discuss.privacyguides.net/u?group=team&order=solutions&period=all) individuals, and we work diligently to ensure our content is updated as quickly as possible to adapt to the ever-changing cybersecurity threat landscape.
|
||||
|
||||
In addition to our core team, many other people have made contributions to the project. You can too! We're open source on GitHub, and accepting translation suggestions on [Crowdin](https://crowdin.com/project/privacyguides).
|
||||
|
||||
[Job Openings :material-arrow-right-drop-circle:](jobs.md)
|
||||
|
||||
## :material-email-edit: Contact Us
|
||||
|
||||
[:simple-discourse: Join the Privacy Guides forum](https://discuss.privacyguides.net){ .md-button .md-button--primary }
|
||||
|
||||
The best way to get individual help is from our community on Discourse. If you notice an issue with our website, please open a discussion in the [Site Development](https://discuss.privacyguides.net/c/site-development/7) category on our forum. If you have a question about anything we cover, please ask it in the [Questions](https://discuss.privacyguides.net/c/privacy/questions/8) category on our forum.
|
||||
|
||||
{ align=right }
|
||||
|
||||
Have a tip for us, or need to share some sensitive information? The best way to get in touch with us securely is via `@privacyguides.01` on Signal. This group account is monitored by [Jonah](https://discuss.privacyguides.net/u/jonah), [Niek](https://discuss.privacyguides.net/u/niek-de-wilde), [Em](https://discuss.privacyguides.net/u/em), and [Jordan](https://discuss.privacyguides.net/u/jordan).
|
||||
|
||||
[:simple-signal: Chat on Signal](https://signal.me/#eu/zg9xcrIv5w-EtXt2FmTJgfWv01LmyTed8rpr7RDv35Mizq8ISZ9NJLmYtzsxI0Z4){ .md-button }
|
||||
|
||||
You may also email the entire team at <team@privacyguides.org>. This is a shared inbox that could be read by any [team member](https://discuss.privacyguides.net/u?group=team&order=solutions&period=all), so please consider what sensitive information you share via email accordingly.
|
||||
|
||||
We will do our best to respond to all queries within 3 business days, but please understand we are unable to provide individualized advice to everyone who asks. If you have a question about privacy, you will receive a much more detailed and timely response from the Privacy Guides community by [asking on our forum](https://discuss.privacyguides.net/c/privacy/questions/8).
|
||||
|
||||
You can also use OpenPGP to contact us via email, if you feel comfortable with your client's security settings. You can discover the PGP keys of our team members using WKD if your client supports it. If it doesn't, or you don't know what that means, you can also find the public key for any Privacy Guides email account by searching on [keys.openpgp.org](https://keys.openpgp.org). We do not have PGP for the shared team inbox, only individual mailboxes which can be found in our team directory below.
|
||||
|
||||
If you need an alternative secure channel, please request one via any contact method including social media, and we will work with you to establish one. Please do not share any sensitive information with us before we have established an appropriately secure discussion channel.
|
||||
|
||||
## :material-account-tie: Executive Committee
|
||||
<!-- markdownlint-disable MD030 -->
|
||||
|
||||
The project executive committee consists of five volunteers charged with management of the [MAGIC Privacy Guides Fund](https://magicgrants.org/funds/privacy_guides), making most critical project-related decisions.
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
- :polar_bear:{ .lg .middle } **Daniel Gray**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/dngray)
|
||||
|
||||
[:material-github:](<https://github.com/dngray> "GitHub")
|
||||
[:material-mastodon:](https://mastodon.social/@dngray "@dngray@mastodon.social"){rel=me}
|
||||
[:material-email:](mailto:dngray@privacyguides.org "Email")
|
||||
|
||||
- :detective:{ .lg .middle } **Freddy**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/freddy)
|
||||
|
||||
[:material-github:](https://github.com/freddy-m "GitHub")
|
||||
[:material-mastodon:](https://social.lol/@freddy "@freddy@social.lol"){rel=me}
|
||||
[:material-email:](mailto:freddy@privacyguides.org "Email")
|
||||
|
||||
- :robot:{ .lg .middle } **Jonah Aragon**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder, Program Director
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/jonah)
|
||||
|
||||
[:material-home:](https://www.jonaharagon.com "Homepage")
|
||||
[:material-github:](https://github.com/jonaharagon "GitHub")
|
||||
[:material-mastodon:](https://mastodon.neat.computer/@jonah "@jonah@neat.computer"){rel=me}
|
||||
[:material-email:](mailto:jonah@privacyguides.org "Email")
|
||||
|
||||
- :cactus:{ .lg .middle } **Niek de Wilde**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/Niek-de-Wilde)
|
||||
|
||||
[:material-github:](https://github.com/blacklight447 "GitHub")
|
||||
[:material-mastodon:](https://mastodon.social/@blacklight447 "@blacklight447@mastodon.social"){rel=me}
|
||||
[:material-email:](mailto:niekdewilde@privacyguides.org "Email")
|
||||
|
||||
- :smirk_cat:{ .lg .middle } **Olivia**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Founder
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/olivia)
|
||||
|
||||
[:material-github:](https://github.com/hook9 "GitHub")
|
||||
[:material-mastodon:](https://mastodon.neat.computer/@oliviablob "@oliviablob@neat.computer"){rel=me}
|
||||
|
||||
</div>
|
||||
|
||||
## :material-account-edit: Staff
|
||||
|
||||
Our staff are paid to contribute to supplemental content at Privacy Guides, like [video production](https://www.youtube.com/@privacyguides), [news articles and tutorials](https://www.privacyguides.org/articles), and our discussion communities and social media. Most are available and paid on a full-time basis to assist the organization.
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
- :jack_o_lantern:{ .lg .middle } **Em**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Activism and Outreach
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/em)
|
||||
|
||||
[:material-github:](https://github.com/EmAtPrivacyGuides "GitHub")
|
||||
[:material-mastodon:](https://infosec.exchange/@Em0nM4stodon "@Em0nM4stodon@infosec.exchange"){rel=me}
|
||||
[:material-email:](mailto:em@privacyguides.org "Email")
|
||||
|
||||
- :full_moon_with_face:{ .lg .middle } **Jordan Warne**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Digital Content Producer
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/Jordan)
|
||||
|
||||
[:material-github:](https://github.com/jordan-warne "GitHub")
|
||||
[:material-mastodon:](https://social.lol/@jw "@jw@social.lol"){rel=me}
|
||||
[:material-email:](mailto:jordan@privacyguides.org "Email")
|
||||
|
||||
- :video_camera:{ .lg .middle } **Nate Bartram**
|
||||
|
||||
---
|
||||
|
||||
:material-text-account: Digital Content Producer
|
||||
|
||||
[:material-account: Profile](https://discuss.privacyguides.net/u/nateb)
|
||||
|
||||
[:material-github:](https://github.com/tnonate "GitHub")
|
||||
[:material-mastodon:](https://mastodon.thenewoil.org/@nateb "@nateb@mastodon.thenewoil.org"){rel=me}
|
||||
[:material-email:](mailto:nate@privacyguides.org "Email")
|
||||
|
||||
</div>
|
||||
|
||||
## :material-check-decagram: Social Media
|
||||
|
||||
We have a general policy of avoiding links to centralized social media profiles and other websites outside our control. This means that in places like our website footer and other areas, we only link to platforms we fully control, such as our Mastodon and PeerTube accounts or Matrix channels.
|
||||
|
||||
However, Privacy Guides *does* have social media accounts on a wide variety of platforms, in the hope of reaching new users who aren't yet familiar with our content. We try to make this a "one-way street" where those accounts link to privacyguides.org, and not the other way around. However, this creates some confusion about which accounts are actually run by the Privacy Guides team. For reference, we will list all of our accounts here:
|
||||
|
||||
<div class="grid cards" markdown>
|
||||
|
||||
- [:simple-discourse: **Forum**](https://discuss.privacyguides.net)
|
||||
- [:simple-matrix: **Matrix Space**](https://matrix.to/#/#privacyguides:matrix.org)
|
||||
- [:simple-mastodon: **Mastodon**](https://mastodon.neat.computer/@privacyguides)
|
||||
- [:simple-peertube: **PeerTube**](https://neat.tube/c/privacyguides)
|
||||
- [:simple-bluesky: Bluesky](https://bsky.app/profile/privacyguides.org)
|
||||
- [:simple-codeberg: Codeberg](https://codeberg.org/privacyguides)
|
||||
- [:simple-github: GitHub](https://github.com/privacyguides)
|
||||
- [:simple-gitlab: GitLab](https://gitlab.com/privacyguides)
|
||||
- [:fontawesome-brands-linkedin: LinkedIn](https://linkedin.com/company/privacyguides)
|
||||
- [:simple-reddit: Reddit](https://reddit.com/r/PrivacyGuides)
|
||||
- [:simple-x: X (Twitter)](https://x.com/privacy_guides)
|
||||
- [:simple-youtube: YouTube](https://youtube.com/@privacyguides)
|
||||
- [:simple-tiktok: TikTok](https://www.tiktok.com/@privacyguides)
|
||||
- [:simple-facebook: Facebook](https://www.facebook.com/PrivacyGuides.org)
|
||||
- [:simple-instagram: Instagram](https://www.instagram.com/privacy.guides/)
|
||||
- [:simple-threads: Threads](https://www.threads.net/@privacy.guides)
|
||||
|
||||
</div>
|
||||
|
||||
To reiterate, this is not an endorsement of any platform, and we generally discourage following us on most social media platforms.
|
||||
|
||||
## :material-newspaper: In The Media
|
||||
|
||||
> To find [privacy-focused alternative] apps, check out sites like Good Reports and **Privacy Guides**, which list privacy-focused apps in a variety of categories, notably including email providers (usually on paid plans) that aren’t run by the big tech companies.
|
||||
|
||||
— [New York Times](https://nytimes.com/wirecutter/guides/online-security-social-media-privacy)
|
||||
|
||||
> If you're looking for a new VPN, you can go to the discount code of just about any podcast. If you are looking for a **good** VPN, you need professional help. The same goes for email clients, browsers, operating systems and password managers. How do you know which of these is the best, most privacy-friendly option? For that there is **Privacy Guides**, a platform on which a number of volunteers search day in, day out for the best privacy-friendly tools to use on the internet.
|
||||
|
||||
— [Tweakers.net](https://tweakers.net/reviews/10568/op-zoek-naar-privacyvriendelijke-tools-niek-de-wilde-van-privacy-guides.html) [Translated from Dutch]
|
||||
|
||||
Also featured on: [Ars Technica](https://arstechnica.com/gadgets/2022/02/is-firefox-ok), [Wirecutter](https://nytimes.com/wirecutter/guides/practical-guide-to-securing-windows-pc) [[2](https://nytimes.com/wirecutter/guides/practical-guide-to-securing-your-mac)], [NPO Radio 1](https://nporadio1.nl/nieuws/binnenland/8eaff3a2-8b29-4f63-9b74-36d2b28b1fe1/ooit-online-eens-wat-doms-geplaatst-ga-jezelf-eens-googlen-en-kijk-dan-wat-je-tegenkomt), [Wired](https://wired.com/story/firefox-mozilla-2022), [Fast Company](https://fastcompany.com/91167564/mozilla-wants-you-to-love-firefox-again) and [404 Media](https://404media.co/privacy-service-optery-faces-backlash-after-plan-to-send-openai-user-data).
|
||||
|
||||
## :material-history: History
|
||||
|
||||
Privacy Guides was launched in September 2021 as a continuation of the [defunct](privacytools.md) "PrivacyTools" open-source educational project. We recognized the importance of independent, criteria-focused product recommendations and general knowledge in the privacy space, which is why we needed to preserve the work that had been created by so many contributors since 2015 and make sure that information had a stable home on the web indefinitely.
|
||||
|
||||
In 2022, we completed the transition of our main website framework from Jekyll to MkDocs, using the `mkdocs-material` documentation software. This change made open-source contributions to our site significantly easier for outsiders, because instead of needing to know complicated syntax to write posts effectively, contributing is now as easy as writing a standard Markdown document.
|
||||
|
||||
We additionally launched our new discussion forum at [discuss.privacyguides.net](https://discuss.privacyguides.net) as a community platform to share ideas and ask questions about our mission. This augments our existing community on Matrix, and replaced our previous GitHub Discussions platform, decreasing our reliance on proprietary discussion platforms.
|
||||
|
||||
In 2023, we launched international translations of our website in [French](https://www.privacyguides.org/fr), [Hebrew](https://www.privacyguides.org/he), [Dutch](https://www.privacyguides.org/nl), and more languages, made possible by our excellent translation team on [Crowdin](https://crowdin.com/project/privacyguides).
|
||||
|
||||
In 2024, we successfully fundraised to hire several full-time staff members, Em, Jordan, and Kevin; to help with content creation, community management, and video production. This has allowed us to expand our reach and provide more frequent updates to our audience.
|
||||
|
||||
In 2025, we launched our [newsroom](https://www.privacyguides.org/news), providing timely articles on the latest developments in privacy and security. We also hired Nate as a Digital Content Producer to bring more consistency to our educational video content.
|
||||
|
||||
We plan to continue carrying forward our mission of outreach and education, and finding ways to more clearly highlight the dangers of a lack of privacy awareness in the modern digital age, and the prevalence and harms of security breaches across the technology industry.
|
||||
|
||||
## :material-license: Site License
|
||||
|
||||
<div class="admonition danger" markdown>
|
||||
|
||||
The following is a human-readable summary of (and not a substitute for) the [license](https://github.com/privacyguides/privacyguides.org/blob/main/README.md#license).
|
||||
|
||||
</div>
|
||||
|
||||
:fontawesome-brands-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-sa: Unless otherwise noted, the original content on this website is made available under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/blob/main/LICENSE). This means that you are free to copy and redistribute the material in any medium or format for any purpose, even commercially; as long as you give appropriate credit to `Privacy Guides (www.privacyguides.org)` and share your work under the same license.
|
||||
|
||||
You may comply with these terms in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use.
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
title: General Criteria
|
||||
description: A list of general priorities we consider for all submissions to Privacy Guides.
|
||||
---
|
||||
|
||||
Below are some general priorities we consider for all submissions to Privacy Guides. Each category will have additional requirements for inclusion.
|
||||
|
||||
- **Security**: Tools should follow security best practices wherever applicable.
|
||||
- **Source Availability**: Open-source projects are generally preferred over equivalent proprietary alternatives.
|
||||
- **Cross-Platform Availability**: We typically prefer recommendations to be cross-platform to avoid vendor lock-in.
|
||||
- **Active Development**: The tools that we recommend should be actively developed. Unmaintained projects will be removed in most cases.
|
||||
- **Usability**: Tools should be accessible to most computer users. An overly technical background should not be required.
|
||||
- **Documentation**: Tools should have clear and extensive documentation for use.
|
||||
|
||||
## Financial Disclosure
|
||||
|
||||
We do not make money from recommending certain products, we do not use affiliate links, and we do not provide special consideration to project donors.
|
||||
|
||||
## Developer Self-Submissions
|
||||
|
||||
We have these requirements in regard to developers which wish to submit their project or software for consideration.
|
||||
|
||||
- Must undergo our [self-submission process](https://discuss.privacyguides.net/t/about-the-project-showcase-category/114) as a way to engage with our community, address any potential concerns, and elicit any feedback that can help improve your project.
|
||||
|
||||
- Must disclose affiliation, i.e. your position within the project being submitted.
|
||||
|
||||
- Must have a security white paper if it is a project that involves the handling of sensitive information like a messenger, password manager, encrypted cloud storage, etc.
|
||||
- Regarding third party audit status, we want to know if you have undergone one, or have requested one. If possible please mention who will be conducting the audit.
|
||||
|
||||
- Must explain what the project brings to the table in regard to privacy.
|
||||
- What new problem(s), if any, does it solve?
|
||||
- Why should anyone use it over the alternatives?
|
||||
|
||||
- Must state what the exact threat model is with their project.
|
||||
- It should be clear to potential users what the project can provide, and what it cannot. Ideally, a developer should be able to identify what [common threat(s)](../wiki/basics/common-threats/index.md) their project protects against.
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,124 @@
|
||||
---
|
||||
title: Donate
|
||||
description: The charitable mission of Privacy Guides relies on contributions from visitors like yourself. Anything you can do to support the project is hugely appreciated.
|
||||
---
|
||||
<!-- markdownlint-disable MD036 -->
|
||||
Support our mission to defend digital rights and spread the word about mass surveillance programs and other daily privacy invasions. You can help Privacy Guides researchers, activists, and maintainers create informative content, host private digital services, and protect privacy rights at a time when the world needs it most.
|
||||
|
||||
<!-- markdownlint-disable-next-line -->
|
||||
[:material-heart:{ .pg-red } Become a Member](https://donate.magicgrants.org/privacyguides/membership){ class="md-button md-button--primary" data-portal="signup" }
|
||||
|
||||
[Become a Member (Cryptocurrency)](https://donate.magicgrants.org/privacyguides/membership){ class="md-button" }
|
||||
[One-Time Donation](https://donate.magicgrants.org/privacyguides/donate/privacyguides){ class="md-button" }
|
||||
|
||||
<small markdown>
|
||||
|
||||
MAGIC Grants is our fiscal host, and their custom, open-source donation platform allows you to donate to our project with **Monero**, **Litecoin (MWEB)**, **Bitcoin**, or **debit/credit card**. You can also donate using [:simple-github: GitHub Sponsors](https://github.com/sponsors/privacyguides).
|
||||
|
||||
</small>
|
||||
|
||||
## Foundations & Organizations
|
||||
|
||||
=== "Current Supporters"
|
||||
|
||||
Thank you to these organizations who significantly support Privacy Guides. (1)
|
||||
{ .annotate }
|
||||
|
||||
1. Please contact <info@magicgrants.org> to inquire about giving. Privacy Guides reserves the right to rescind the membership of those who are unaligned with our mission or organization at any time. Organizational members have no ability to influence what content is recommended on the Privacy Guides website. Learn more about our [donation acceptance policy](donation-acceptance-policy.md).
|
||||
|
||||
<div class="mdx-specialthanks" markdown>
|
||||
|
||||
[![Power Up Privacy]](https://powerupprivacy.com){ rel=nofollow target=_blank title="Power Up Privacy" }
|
||||
[![DeleteMe]](https://joindeleteme.com){ rel=nofollow target=_blank title="DeleteMe" }
|
||||
|
||||
[Power Up Privacy]: ../assets/img/donors/power-up-privacy.webp
|
||||
[DeleteMe]: ../assets/img/donors/deleteme.webp
|
||||
|
||||
</div>
|
||||
|
||||
=== "Past Supporters"
|
||||
|
||||
Thank you to these organizations who have substantially supported our project in the past.
|
||||
|
||||
- [Safing](https://safing.io){ rel=nofollow target=_blank }: 2019 – 2021
|
||||
|
||||
## Active Members
|
||||
|
||||
Privacy Guides would not be possible without these individuals who generously donate on a monthly or yearly basis. (1)
|
||||
{ .annotate }
|
||||
|
||||
1. If you [become a member](https://donate.magicgrants.org/privacyguides/membership) and [link your donation](https://discuss.privacyguides.net/t/getting-your-member-flair-on-the-forum/25453) to your forum account, you're automatically added here with a link to your profile and avatar to show your support for Privacy Guides. If you don't make your membership public on the forum, you'll be a silent +1. You can change your visibility any time. This chart is updated upon each website release.
|
||||
|
||||
<div class="mdx-donors" data-mdx-component="donors">
|
||||
<div class="mdx-donors__list">
|
||||
|
||||
--8<-- "includes/members.md"
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<small markdown>
|
||||
|
||||
This is a list of our **active** [members](https://donate.magicgrants.org/privacyguides/membership), plus donors on GitHub, who have chosen to make their donation public. Hundreds more have donated in the past or privately, and their support is hugely appreciated as well.
|
||||
|
||||
</small>
|
||||
|
||||
## Merchandise
|
||||
|
||||
You can support us and share your passion for privacy by buying our merchandise from HelloTux.
|
||||
|
||||
[Buy on HelloTux.com](https://hellotux.com/privacyguides){ class="md-button" }
|
||||
|
||||
## Non-Financial Support
|
||||
|
||||
It takes a lot of people and [work](https://github.com/privacyguides/privacyguides.org/pulse/monthly) to keep Privacy Guides up to date and spread the word about privacy and mass surveillance. If you're looking for other ways to help out, consider getting involved by [editing the site](https://github.com/privacyguides/privacyguides.org), [joining our forum](https://discuss.privacyguides.net), or [contributing translations](https://crowdin.com/project/privacyguides).
|
||||
|
||||
## FAQ
|
||||
|
||||
### What is an organizational membership?
|
||||
|
||||
Organizational membership to Privacy Guides is open to any company, private foundation, or organization that donates at least $5,000 per year. While Privacy Guides does not endorse private companies or their products, we're grateful for their contributions. Your donation may be tax-deductible, and we will provide you with a receipt.
|
||||
|
||||
You can become an organizational member by reaching out to <info@magicgrants.org> for more information.
|
||||
|
||||
### How are organizational members recognized?
|
||||
|
||||
Organizational members that choose to be recognized publicly are included in our organizational members section (above), and occasionally at other opportunities where appropriate. Organizational member links include the `rel="nofollow"` attribute: We adopted this policy to screen out potential abuse of our program and site to raise the rank of third parties in search algorithms. Unfortunately, this is a growing problem for nonprofits. This was a complex decision since we know many of the sincere supporters behind these companies, but we decided that it was the best choice for us.
|
||||
|
||||
Organizational members have no ability to influence what content is recommended on the Privacy Guides website. Learn more about our [donation acceptance policy](donation-acceptance-policy.md).
|
||||
|
||||
### What is an active membership?
|
||||
|
||||
Your monthly or yearly membership sustains Privacy Guides's services and public activism for privacy and cybersecurity year round. If you become a member, we will recognize your support here on our website, our community forum, and occasionally in other areas like our videos if you choose to make your membership publicly known.
|
||||
|
||||
Our membership program is brand new, and we are still exploring other ways that we can share a token of our appreciation with you, while maintaining sustainable and ethical boundaries. Stay tuned!
|
||||
|
||||
### How does Privacy Guides use donations?
|
||||
|
||||
Privacy Guides has been a nonstop effort for over 5 years to stay up to date with the world of cybersecurity and privacy, and to promote the benefits of privacy overall. This is a **non-profit, community-driven** project that would not be possible without the generous support of all our contributors, in addition to our regularly donating members above.
|
||||
|
||||
Your donation go to a [dedicated fund](https://magicgrants.org/funds/privacy_guides) within [MAGIC Grants](https://magicgrants.org), a 501(c)(3) organization and our fiscal host. The funds will **only** be used for this project specifically.
|
||||
|
||||
You may qualify for a tax deduction. When you donate to us [here](https://donate.magicgrants.org/privacyguides) with cryptocurrency or card you have the option to receive a receipt from MAGIC Grants for this purpose. If you have questions about other transactions please email <info@magicgrants.org>.
|
||||
|
||||
We use donations for a variety of purposes, including:
|
||||
|
||||
**Payroll**
|
||||
|
||||
: We have journalists, writers, and video creators on payroll to review products and create more educational content on a regular basis. This is a significant expense, and we are only able to create our quantity of content with your support.
|
||||
|
||||
**Web Hosting and Infrastructure**
|
||||
|
||||
: Traffic to this website uses hundreds of gigabytes of data per month; we use a variety of service providers to keep up with this traffic.
|
||||
|
||||
**Online Services**
|
||||
|
||||
: We host [internet services](services.md) for testing and showcasing different privacy-products we like and [recommend](../tools/_index.md). Some of them are made publicly available for our community's use (SearXNG, Tor, etc.), and some are provided for our team members (email, etc.).
|
||||
|
||||
**Product Purchases**
|
||||
|
||||
: We occasionally purchase products and services for the purposes of testing our [recommended tools](../tools/_index.md).
|
||||
|
||||
Thank you to all those who support our mission! :material-heart:{ .pg-red }
|
||||
|
||||
We strictly **do not** use donations to support political campaigns/candidates or attempt to influence legislation. Earnings will **not** inure to the benefit of any private shareholder or individual.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: Donation Acceptance Policy
|
||||
description: Privacy Guides aspires to obtain funding from a wide variety of sources to reduce our dependency on any single donor. Please consider donating!
|
||||
---
|
||||
|
||||
Privacy Guides takes the ethical responsibility of making unbiased recommendations on its website very seriously.
|
||||
|
||||
Privacy Guides aspires to obtain funding from a wide variety of sources to reduce our dependency on any single donor. Please consider [donating](donate.md)!
|
||||
|
||||
## What we **can** accept
|
||||
|
||||
In the course of our regular fundraising activities...
|
||||
|
||||
- Donations and other forms of support will generally be accepted from individuals, corporations, foundations, or other entities, without limitations.
|
||||
- This includes cash, cash equivalents (checks, money orders, credit/debit card payments), and cryptocurrency.
|
||||
- Gifts of Real Property, Personal Property, or Securities may only be accepted upon approval of the MAGIC Grants board of directors.
|
||||
|
||||
Privacy Guides will only accept such gifts that are legal and consistent with our policies. Gifts must not interfere with Privacy Guides' mission, purpose, and procedures.
|
||||
|
||||
## Things we do **not** do
|
||||
|
||||
- Accept sponsorships.
|
||||
- Offer to recommend a product or service in exchange for a donation or other incentive.
|
||||
- Threaten to remove a recommendation for a product or service unless we receive a donation or other incentive.
|
||||
- Offer to expedite a review of a product or service in exchange for a donation or other incentive.
|
||||
- Write sponsored content or feature sponsored components in our content.
|
||||
|
||||
## Things we **may** do
|
||||
|
||||
- Accept donations from privacy-related companies and non-profits.
|
||||
- Apply for grant programs.
|
||||
- Accept free versions of software or hardware to test and review, while being mindful of possible differences in versions that could differ from a regular customer experience. ([More details](executive-policy.md#ep1-freely-provided-product-samples))
|
||||
- Accept discounted versions of software or hardware that assist our operations (for example, discounted software costs made available to non-profits).
|
||||
|
||||
## Restrictions on gifts
|
||||
|
||||
Privacy Guides accepts unrestricted gifts, and we appreciate the flexibility to apply your gift to our programs where they are most needed.
|
||||
|
||||
We also accept and appreciate gifts for specified programs or purposes, provided that such gifts are consistent with our program's stated mission, purpose, and priority. Privacy Guides will not accept gifts which are too restrictive in purpose.
|
||||
|
||||
Examples of gifts which are too restrictive include:
|
||||
|
||||
- Those which fund the research and review of a specific product category or specific product.
|
||||
- Those which violate our existing policies.
|
||||
- Those which are too difficult for us to administer.
|
||||
- Those that are for purposes outside our general mission.
|
||||
|
||||
An example of an acceptable restriction could be a gift towards funding our [video](https://www.privacyguides.org/videos) production, or hosting our website and forum.
|
||||
|
||||
Final decisions on the restrictive nature of a gift and its acceptance or refusal will be made by our executive committee.
|
||||
|
||||
## Additional terms
|
||||
|
||||
Privacy Guides generally does not pay "finder's fees" or commissions to third parties in connection with any gift to Privacy Guides. We may, however, pay commissions and fees to properly negotiate and receive assets when appropriate.
|
||||
|
||||
No officer, committee member, employee, or other agent of Privacy Guides will be compensated in a manner which is dependent on the size or nature of gifts made to Privacy Guides by any person. If we engage with legal, accounting, or other professionals, their fees and expenses will be determined by the time they spend engaged with our work, and not by reference to any particular gift in connection to their retainer.
|
||||
|
||||
Privacy Guides always follows the MAGIC Grants Gift Acceptance Policy, available on their website: <https://magicgrants.org/about/documentation/>
|
||||
@@ -0,0 +1,26 @@
|
||||
---
|
||||
title: Executive Policy
|
||||
description: These are policies formally adopted by our executive committee, and take precedence over all other statements expressed on this website.
|
||||
---
|
||||
|
||||
These are policies formally adopted by Privacy Guides' executive committee, and take precedence over all other statements expressed on this website.
|
||||
|
||||
The keywords **must**, **must not**, **required**, **shall**, **shall not**, **should**, **should not**, **recommended**, **may**, and **optional** are to be interpreted as described in [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119).
|
||||
|
||||
## EP1: Freely-Provided Product Samples
|
||||
|
||||
*Our policy on accepting product samples for review was adopted September 7, 2024.*
|
||||
|
||||
=== "Current Version (1)"
|
||||
|
||||
- Privacy Guides **shall not** proactively reach out to vendors asking for product samples or review accounts.
|
||||
- Privacy Guides **shall not** accept test/review accounts for subscription cloud services.
|
||||
- Privacy Guides **may** accept freely-provided product samples for one-time purchase software applications which run locally, given they don't require a subscription for continued operation.
|
||||
- Privacy Guides **may** accept freely-provided samples of hardware products.
|
||||
- Privacy Guides **may** accept a freely-provided subscription service associated with a hardware product, if such a subscription/license is necessary to use the product.
|
||||
- Privacy Guides **must not** enter into an agreement pertaining to our editorial opinion with the vendor in order to receive a sample or publish a review. All freely-provided items must be strictly "no strings attached."
|
||||
- We **may** agree to return the product to the vendor following the review if requested.
|
||||
- We **may** agree to a reasonable NDA, provided it has a clear embargo date that is lifted no more than 6 months in the future where the NDA completely no longer applies.
|
||||
- We **should not** enter into any other agreement with the vendor not described here. Potential agreements not described here **must** be approved by the executive committee beforehand.
|
||||
|
||||
In all cases, whether we paid for the product independently or received a free sample from a vendor, how we obtained the product **must** be clearly documented in the background section of every article associated with the product.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: Job Openings
|
||||
description: Privacy Guides has a small, remote team of privacy researchers and advocates. Any open positions we may have in the future will be posted here.
|
||||
---
|
||||
|
||||
Privacy Guides has a small, remote team of privacy researchers and advocates working to further our mission of protecting free expression and promoting privacy-respecting technology. As a non-profit, we are expanding very slowly to ensure the project is sustainable in the long term. All of our team members are listed [here](https://discuss.privacyguides.net/u?group=team&order=solutions&period=all). Please consider [donating](https://donate.magicgrants.org/privacyguides) to support our cause.
|
||||
|
||||
We are occasionally looking for strong journalistic writers, product reviewers, and privacy experts to help us out, and any open positions will be posted below.
|
||||
|
||||
---
|
||||
|
||||
## Open Positions
|
||||
|
||||
There are no open positions at this time.
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
title: Content Creator
|
||||
description: Privacy Guides is looking for a video producer and host for informative privacy-related content on YouTube and other platforms.
|
||||
---
|
||||
|
||||
[:material-arrow-left-drop-circle: Job Openings](../jobs.md)
|
||||
|
||||
<div class="admonition info" markdown>
|
||||
<p class="admonition-title">Position Closed</p>
|
||||
|
||||
Thank you for your interest in this position at Privacy Guides. At this time we are no longer accepting new applications, but please follow our [job openings](../jobs.md) page to learn about future opportunities.
|
||||
|
||||
</div>
|
||||
|
||||
Are you passionate about privacy and cybersecurity?
|
||||
|
||||
Privacy Guides is an international nonprofit dedicated to producing top-tier, unbiased educational content and journalism, and to fostering safe and informative online communities to discuss technical topics around improving personal privacy and cybersecurity.
|
||||
|
||||
Privacy Guides is looking for a focused and motivated individual to be responsible for our social media presence from end to end, with a particular emphasis on video content. You must be comfortable being on camera to succeed in this role.
|
||||
|
||||
This is a unique opportunity. Your primary goal will be to create and share privacy-based educational materials, without any motive to sell a product. If you truly value being able to create the best content that you can, and if you are passionate about privacy, then this position is for you!
|
||||
|
||||
Your responsibilities will include, but aren’t limited to:
|
||||
|
||||
- Scripting and hosting educational video content to be posted across various social media platforms.
|
||||
- Video editing, production, and other backend work required to make successful content.
|
||||
- Researching new topics to cover.
|
||||
- Regular, daily posting to text-based social media platforms like Mastodon.
|
||||
- Regular posting of highly educational video content to social media platforms.
|
||||
- Compiling news sources for and hosting a weekly news recap (livestreamed) podcast on our YouTube channel.
|
||||
- Regularly communicating with the Privacy Guides committee and other team members.
|
||||
|
||||
This is a highly individualized role, and we are extremely interested in hearing your ideas on how you’ll find success and make this role your own. You will be responsible for handling virtually every aspect of this role without regular supervision, so being highly self-motivated is a must.
|
||||
|
||||
As a guideline, we expect your video output to be roughly 1 video and 1 *This Week In Privacy* livestream per week, since we think most videos which meet our quality standards will be a multi-day process to research and script, in addition to a day for recording and editing. We realize some videos can be completed more quickly, while others may take multiple weeks or longer before publishing. You will be empowered to use your best judgement and prioritize your work accordingly.
|
||||
|
||||
Job requirements:
|
||||
|
||||
- Excellent organization and communication skills.
|
||||
- Flexibility to set and respond to varying priorities and deadlines.
|
||||
- Proactive, results-driven mindset with a strong sense of initiative.
|
||||
- Comfortable being on camera, and working with video production equipment.
|
||||
- Personal interest in consumer privacy, cybersecurity, and technology.
|
||||
- Skeptical nature and drive to investigate difficult, often niche, technologies. You will need to evaluate the truthfulness of claims.
|
||||
|
||||
The following qualifications will be an asset to your application. However, we are looking for the best candidate (which isn’t always apparent on paper!), so please apply even if you don’t meet any/many of these qualifications.
|
||||
|
||||
- Previous YouTube or other video creation experience.
|
||||
- Previous social media management experience.
|
||||
- Education in English, journalism, media production, or any other related fields.
|
||||
- Fluency in Spanish, French, Portuguese, or other languages.
|
||||
- Familiarity with Privacy Guides' communities, culture, and mission.
|
||||
- A solid understanding of the latest trends/culture on YouTube & TikTok.
|
||||
- Located between UTC-08:00 and UTC-04:00 time zones.
|
||||
- At least basic familiarity with GitHub, including pull requests, branches, reviews, and issues.
|
||||
|
||||
The ideal candidate can commit to this role on a full-time basis (40 hours / week), but we are open to discussing a schedule you suggest.
|
||||
|
||||
For this position, our hiring pay range falls between \$20-$25 / hour USD. The base pay may vary depending on job related qualifications such as knowledge, skills, and experience. Our compensation structure is rooted in a performance and merit based approach that acknowledges performance of both the individual and the project as a whole.
|
||||
|
||||
---
|
||||
|
||||
<div class="admonition info" markdown>
|
||||
<p class="admonition-title">Position Closed</p>
|
||||
|
||||
Thank you for your interest in this position at Privacy Guides. At this time we are no longer accepting new applications, but please follow our [job openings](../jobs.md) page to learn about future opportunities.
|
||||
|
||||
</div>
|
||||
|
||||
Privacy Guides is fiscally hosted by [MAGIC Grants](https://magicgrants.org), a 501(c)(3) public charity. MAGIC Grants is an equal opportunity employer. MAGIC Grants does not discriminate against any applicant or employee because of age, color, sex, disability, national origin, race, religion, sexual orientation, sexual identity, veteran status, or other protected characteristic.
|
||||
|
||||
We respect your privacy. After this position is filled, your application will be deleted. Your application will not be shared with third parties.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: Intern (Community & News)
|
||||
description: Privacy Guides is looking for an intern to discover and promote relevant news content on our platform, and to moderate and engage with our online communities.
|
||||
---
|
||||
|
||||
[:material-arrow-left-drop-circle: Job Openings](../jobs.md)
|
||||
|
||||
<div class="admonition info" markdown>
|
||||
<p class="admonition-title">Position Closed</p>
|
||||
|
||||
Thank you for your interest in this position at Privacy Guides. At this time we are no longer accepting new applications, but please follow our [job openings](../jobs.md) page to learn about future opportunities.
|
||||
|
||||
</div>
|
||||
|
||||
Are you passionate about privacy and cybersecurity?
|
||||
|
||||
Privacy Guides is an international nonprofit dedicated to producing top-tier, unbiased educational content and journalism, and to fostering safe and informative online communities to discuss technical topics around improving personal privacy and cybersecurity.
|
||||
|
||||
This role is focused on interacting with our community members and answering their questions, keeping our online communities safe and constructive, and sharing thoughtful and informative news stories from around the internet for community discussion.
|
||||
|
||||
Responsibilities will include:
|
||||
|
||||
- Regularly interacting with our forum and other communities.
|
||||
- Responding to moderation complaints/flags within our communities.
|
||||
- Reading news stories from a variety of publications and generally staying up to date with the latest news in the privacy and cybersecurity space.
|
||||
- Regularly posting interesting news stories and other topics you discover in our communities for discussion.
|
||||
- Assisting our other staff and volunteers with research, writing, video production, and editing.
|
||||
- Assisting with Privacy Guides' advocacy efforts.
|
||||
- Remaining polite and fact-focused.
|
||||
|
||||
No prior experience is necessary. We are looking for people passionate about privacy, cybersecurity, journalism, and community management regardless of your GPA or background.
|
||||
|
||||
The following will be assets to your application, but please submit an application even if they don't apply to you:
|
||||
|
||||
- Familiarity with Privacy Guides' communities, culture, and mission.
|
||||
- Previous experience with social media management and/or journalism.
|
||||
- Located between UTC-08:00 and UTC-04:00 time zones.
|
||||
|
||||
This is a part-time, 10-20 hour per week role depending on your availability. We can work around your schedule and other obligations.
|
||||
|
||||
This is a 6-month contract paying $15 / hour USD, with the optional opportunity for renewal or a longer-term role depending on your personal goals and the project's outcome. The specific starting and ending dates are flexible.
|
||||
|
||||
---
|
||||
|
||||
<div class="admonition info" markdown>
|
||||
<p class="admonition-title">Position Closed</p>
|
||||
|
||||
Thank you for your interest in this position at Privacy Guides. At this time we are no longer accepting new applications, but please follow our [job openings](../jobs.md) page to learn about future opportunities.
|
||||
|
||||
</div>
|
||||
|
||||
Privacy Guides is fiscally hosted by [MAGIC Grants](https://magicgrants.org), a 501(c)(3) public charity. MAGIC Grants is an equal opportunity employer. MAGIC Grants does not discriminate against any applicant or employee because of age, color, sex, disability, national origin, race, religion, sexual orientation, sexual identity, veteran status, or other protected characteristic.
|
||||
|
||||
We respect your privacy. After this position is filled, your application will be deleted. Your application will not be shared with third parties.
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: Journalist
|
||||
description: Privacy Guides is looking for a determined and focused journalist to research and write stories from the privacy and cybersecurity space on a regular basis.
|
||||
---
|
||||
|
||||
[:material-arrow-left-drop-circle: Job Openings](../jobs.md)
|
||||
|
||||
<div class="admonition info" markdown>
|
||||
<p class="admonition-title">Position Closed</p>
|
||||
|
||||
Thank you for your interest in this position at Privacy Guides. At this time we are no longer accepting new applications, but please follow our [job openings](../jobs.md) page to learn about future opportunities.
|
||||
|
||||
</div>
|
||||
|
||||
Are you passionate about privacy and cybersecurity?
|
||||
|
||||
Privacy Guides is an international nonprofit dedicated to producing top-tier, unbiased educational content and journalism, and to fostering safe and informative online communities to discuss technical topics around improving personal privacy and cybersecurity.
|
||||
|
||||
We are looking for a determined and focused journalist to join our team. As a reporter for our organization, you will conduct research, interview sources, and write engaging stories in the field of consumer privacy and cybersecurity.
|
||||
|
||||
Our ideal candidate is committed to combating misinformation and clearly communicating stories on a timely basis, and dedicated to producing top-tier, unbiased journalism.
|
||||
|
||||
Privacy Guides is a small, largely volunteer-driven nonprofit media organization, and we do not currently have a dedicated writing and editing team. As such, you will be expected to take charge of the entire writing process from beginning to publication. You will have the freedom to choose which topics to cover and set a schedule to release articles on our main website.
|
||||
|
||||
==Our primary mission is to publish the highest quality content surrounding consumer privacy and cybersecurity on the internet==, not the highest quantity of stories. You will be empowered to dive deep into the topics you are writing about, and expected to meet our high quality and editorial standards.
|
||||
|
||||
Your responsibilities will include, but aren’t limited to:
|
||||
|
||||
- Creating high-quality articles for our [knowledge base](../../wiki/basics/why-privacy-matters/index.md).
|
||||
- Performing product reviews for our [reviews](https://www.privacyguides.org/articles/category/reviews) section and [tool recommendations](../../tools/_index.md).
|
||||
- Researching new topics to cover.
|
||||
- Interviewing and fact-checking all relevant sources.
|
||||
- Regular posting of high-quality, unbiased journalistic content across our platforms.
|
||||
|
||||
As a guideline, we expect roughly 3-5 articles a week that meet our quality standards, since we believe a well-researched article will take at least 8 hours to research and write on average. We realize some articles can be completed quickly, while others may take weeks or longer before publishing. You will be empowered to use your best judgement and prioritize your work accordingly.
|
||||
|
||||
We are much more interested in articles that deeply cover a subject area than articles that cover the news of the day.
|
||||
|
||||
Job requirements:
|
||||
|
||||
- Excellent organization and communication skills.
|
||||
- Expertise in English and writing.
|
||||
- Flexibility to set and respond to varying priorities and deadlines.
|
||||
- Proactive, results-driven mindset with a strong sense of initiative.
|
||||
- Personal interest in consumer privacy, cybersecurity, and technology.
|
||||
- Regular communication with the Privacy Guides committee and other team members.
|
||||
- Skeptical nature and drive to investigate difficult, often niche, technologies. You will need to evaluate the truthfulness of claims.
|
||||
|
||||
The following qualifications will be an asset to your application. However, we are looking for the best candidate (which isn’t always apparent on paper!), so please apply even if you don’t meet any/many of these qualifications.
|
||||
|
||||
- Previous writing or journalism experience.
|
||||
- Previous product review experience.
|
||||
- Education in English, journalism, media production, or any other related fields.
|
||||
- Familiarity with Privacy Guides' communities, culture, and mission.
|
||||
- Located between UTC-08:00 and UTC-04:00 time zones.
|
||||
- At least basic familiarity with GitHub, including pull requests, branches, reviews, and issues.
|
||||
|
||||
The ideal candidate can commit to this role on a full-time basis (40 hours / week), but we are open to discussing a schedule you suggest.
|
||||
|
||||
For this position, our hiring pay range falls between \$20-$25 / hour USD. The base pay may vary depending on job related qualifications such as knowledge, skills, and experience. Our compensation structure is rooted in a performance and merit based approach that acknowledges performance of both the individual and the project as a whole.
|
||||
|
||||
---
|
||||
|
||||
<div class="admonition info" markdown>
|
||||
<p class="admonition-title">Position Closed</p>
|
||||
|
||||
Thank you for your interest in this position at Privacy Guides. At this time we are no longer accepting new applications, but please follow our [job openings](../jobs.md) page to learn about future opportunities.
|
||||
|
||||
</div>
|
||||
|
||||
Privacy Guides is fiscally hosted by [MAGIC Grants](https://magicgrants.org), a 501(c)(3) public charity. MAGIC Grants is an equal opportunity employer. MAGIC Grants does not discriminate against any applicant or employee because of age, color, sex, disability, national origin, race, religion, sexual orientation, sexual identity, veteran status, or other protected characteristic.
|
||||
|
||||
We respect your privacy. After this position is filled, your application will be deleted. Your application will not be shared with third parties.
|
||||
@@ -0,0 +1,280 @@
|
||||
---
|
||||
title: Admonitions
|
||||
description: A guide for website contributors on creating admonitions.
|
||||
---
|
||||
|
||||
**Admonitions** (or "call-outs") are tools that writers can use to include side content in an article without interrupting the document flow.
|
||||
|
||||
<div class="admonition example" markdown>
|
||||
<p class="admonition-title">Example Admonition</p>
|
||||
|
||||
This is an example of an admonition. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.
|
||||
|
||||
</div>
|
||||
|
||||
<details class="example" markdown>
|
||||
<summary>Example Collapsible Admonition</summary>
|
||||
|
||||
This is an example of a collapsible admonition. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor massa, nec semper lorem quam in massa.
|
||||
|
||||
</details>
|
||||
|
||||
## Formatting
|
||||
|
||||
To add an admonition to a page, you can use the following code:
|
||||
|
||||
```markdown title="Admonition"
|
||||
<div class="admonition TYPE" markdown>
|
||||
<p class="admonition-title">TITLE</p>
|
||||
|
||||
ENCLOSED TEXT
|
||||
|
||||
</div>
|
||||
```
|
||||
|
||||
```markdown title="Collapsible Admonition"
|
||||
<details class="TYPE" markdown>
|
||||
<summary>TITLE</summary>
|
||||
|
||||
ENCLOSED TEXT
|
||||
|
||||
</details>
|
||||
```
|
||||
|
||||
The `TITLE` must be specified; if you don't want a specific title you can set it to the same text as the `TYPE` (see below) in title case, e.g. `Note`. The `ENCLOSED TEXT` should be Markdown formatted.
|
||||
|
||||
### Regular types
|
||||
|
||||
Replace `TYPE` in the examples above with one of the following:
|
||||
|
||||
#### `note`
|
||||
|
||||
<div class="admonition note" markdown>
|
||||
<p class="admonition-title">Note</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `abstract`
|
||||
|
||||
<div class="admonition abstract" markdown>
|
||||
<p class="admonition-title">Abstract</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `info`
|
||||
|
||||
<div class="admonition info" markdown>
|
||||
<p class="admonition-title">Info</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `tip`
|
||||
|
||||
<div class="admonition tip" markdown>
|
||||
<p class="admonition-title">Tip</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `success`
|
||||
|
||||
<div class="admonition success" markdown>
|
||||
<p class="admonition-title">Success</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `question`
|
||||
|
||||
<div class="admonition question" markdown>
|
||||
<p class="admonition-title">Question</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `warning`
|
||||
|
||||
<div class="admonition warning" markdown>
|
||||
<p class="admonition-title">Warning</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `failure`
|
||||
|
||||
<div class="admonition failure" markdown>
|
||||
<p class="admonition-title">Failure</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `danger`
|
||||
|
||||
<div class="admonition danger" markdown>
|
||||
<p class="admonition-title">Danger</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `bug`
|
||||
|
||||
<div class="admonition bug" markdown>
|
||||
<p class="admonition-title">Bug</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `example`
|
||||
|
||||
<div class="admonition example" markdown>
|
||||
<p class="admonition-title">Example</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
#### `quote`
|
||||
|
||||
<div class="admonition quote" markdown>
|
||||
<p class="admonition-title">Quote</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||
|
||||
</div>
|
||||
|
||||
### Special Types
|
||||
|
||||
#### `recommendation`
|
||||
|
||||
This format is used to generate recommendation cards. Notably it is missing the `<p class="admonition-title">` element.
|
||||
|
||||
``` markdown title="Recommendation Card"
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**PhotoPrism** is a self-hostable platform for managing photos. It supports album syncing and sharing as well as a variety of other [features](https://photoprism.app/features). It does not include end-to-end encryption, so it's best hosted on a server that you trust and is under your control.
|
||||
|
||||
[:octicons-home-16: Homepage](https://photoprism.app){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://photoprism.app/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://photoprism.app/kb){ .card-link title="Documentation" }
|
||||
[:octicons-code-16:](https://github.com/photoprism){ .card-link title="Source Code" }
|
||||
|
||||
</div>
|
||||
```
|
||||
|
||||
<div class="result" markdown>
|
||||
|
||||
<div class="admonition recommendation" markdown>
|
||||
|
||||
{ align=right }
|
||||
|
||||
**PhotoPrism** is a self-hostable platform for managing photos. It supports album syncing and sharing as well as a variety of other [features](https://photoprism.app/features). It does not include end-to-end encryption, so it's best hosted on a server that you trust and is under your control.
|
||||
|
||||
[:octicons-home-16: Homepage](https://photoprism.app){ .md-button .md-button--primary }
|
||||
[:octicons-eye-16:](https://photoprism.app/privacy){ .card-link title="Privacy Policy" }
|
||||
[:octicons-info-16:](https://photoprism.app/kb){ .card-link title="Documentation" }
|
||||
[:octicons-code-16:](https://github.com/photoprism){ .card-link title="Source Code" }
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
#### `downloads`
|
||||
|
||||
This is a special type of collapsible admonition which is used to generate sections containing download links. It is only used within recommendation cards, as shown in the example above.
|
||||
|
||||
```markdown title="Downloads Section"
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=ch.protonmail.android)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id979659905)
|
||||
- [:simple-github: GitHub](https://github.com/ProtonMail/android-mail/releases)
|
||||
- [:fontawesome-brands-windows: Windows](https://proton.me/mail/bridge#download)
|
||||
- [:simple-apple: macOS](https://proton.me/mail/bridge#download)
|
||||
- [:simple-linux: Linux](https://proton.me/mail/bridge#download)
|
||||
- [:octicons-browser-16: Web](https://mail.proton.me)
|
||||
|
||||
</details>
|
||||
```
|
||||
|
||||
<div class="result" markdown>
|
||||
|
||||
<details class="downloads" markdown>
|
||||
<summary>Downloads</summary>
|
||||
|
||||
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=ch.protonmail.android)
|
||||
- [:simple-appstore: App Store](https://apps.apple.com/app/id979659905)
|
||||
- [:simple-github: GitHub](https://github.com/ProtonMail/android-mail/releases)
|
||||
- [:fontawesome-brands-windows: Windows](https://proton.me/mail/bridge#download)
|
||||
- [:simple-apple: macOS](https://proton.me/mail/bridge#download)
|
||||
- [:simple-linux: Linux](https://proton.me/mail/bridge#download)
|
||||
- [:octicons-browser-16: Web](https://mail.proton.me)
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
## Old Format
|
||||
|
||||
Throughout the site, you may see some admonitions formatted like the following examples:
|
||||
|
||||
``` markdown title="Admonition"
|
||||
!!! note
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod
|
||||
nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor
|
||||
massa, nec semper lorem quam in massa.
|
||||
```
|
||||
|
||||
<div class="result" markdown>
|
||||
|
||||
<div class="admonition note" markdown>
|
||||
<p class="admonition-title">Note</p>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod
|
||||
nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor
|
||||
massa, nec semper lorem quam in massa.
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
``` markdown title="Collapsible Admonition"
|
||||
??? example "Custom Title"
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod
|
||||
nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor
|
||||
massa, nec semper lorem quam in massa.
|
||||
```
|
||||
|
||||
<div class="result" markdown>
|
||||
|
||||
<details class="example" markdown>
|
||||
<summary>Custom Title</summary>
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod
|
||||
nulla. Curabitur feugiat, tortor non consequat finibus, justo purus auctor
|
||||
massa, nec semper lorem quam in massa.
|
||||
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
**This format is no longer used going forward** because it is incompatible with newer versions of our translation software at Crowdin. When adding a new page to the site, only the newer, HTML-based format should be used.
|
||||
|
||||
There is no rush to convert admonitions with the old format to the new format. Pages currently using this formatting should continue to work, but we will be updating them to use the newer, HTML-based format above over time as we continue to update the site.
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Branding Guidelines
|
||||
description: A guide for journalists and website contributors on proper branding of the Privacy Guides wordmark and logo.
|
||||
---
|
||||
|
||||
The name of the website is **Privacy Guides** and should **not** be changed to:
|
||||
|
||||
<div class="pg-red" markdown>
|
||||
- PrivacyGuides
|
||||
- Privacy guides
|
||||
- PG
|
||||
- PG.org
|
||||
</div>
|
||||
|
||||
The name of the Subreddit is **r/PrivacyGuides** or **the Privacy Guides Subreddit**.
|
||||
|
||||
Additional branding guidelines can be found at [github.com/privacyguides/brand](https://github.com/privacyguides/brand)
|
||||
|
||||
## Trademark
|
||||
|
||||
"Privacy Guides" and the shield logo are trademarks owned by Jonah Aragon, unlimited usage is granted to the Privacy Guides project.
|
||||
|
||||
Without waiving any of its rights, Privacy Guides does not advise others on the scope of its intellectual property rights. Privacy Guides does not permit or consent to any use of its trademarks in any manner that is likely to cause confusion by implying association with or sponsorship by Privacy Guides. If you are aware of any such use, please contact Jonah Aragon at `jonah@privacyguides.org`. Consult your legal counsel if you have questions.
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: Commit Messages
|
||||
description: A guide for website contributors on using useful Git commit messages when making website change requests.
|
||||
---
|
||||
|
||||
For our commit messages we follow the style provided by [Conventional Commits](https://conventionalcommits.org). Not all of those suggestions are appropriate for Privacy Guides, so the main ones we use are:
|
||||
|
||||
## Update to existing text
|
||||
|
||||
This example could be used for an item already on the site, but includes a minor update to the description.
|
||||
|
||||
```text
|
||||
update: Add mention of security audit (#0000)
|
||||
```
|
||||
|
||||
## Addition or removal of recommendations/pages
|
||||
|
||||
This example is for the addition or removal of an item. You may elaborate why it was removed in the commit paragraph below. Note the extra `!` to draw attention to a major change.
|
||||
|
||||
```text
|
||||
update!: Remove foobar (#0000)
|
||||
|
||||
Foobar was removed due to it having numerious security issues and being unmaintained.
|
||||
```
|
||||
|
||||
You can actually add a `!` to *any* of the types on this page to denote particularly large changes, but this is generally where it will be most appropriate.
|
||||
|
||||
## Feature/enhancement
|
||||
|
||||
For new features or enhancements to the site, e.g. things that have the `enhancements` label on GitHub, it may be appropriate to signify these with:
|
||||
|
||||
```text
|
||||
feat: Add blah blah (#0000)
|
||||
|
||||
This change adds the forum topics to the main page
|
||||
```
|
||||
|
||||
## Minor changes
|
||||
|
||||
Small changes that **don't affect the meaning** of the article, e.g. correcting a typo, fixing grammar, changing formatting/whitespace, CSS updates, etc.
|
||||
|
||||
```text
|
||||
style: Typo correction in VPN overview
|
||||
```
|
||||
|
||||
## Development-related types
|
||||
|
||||
These commit types are typically used for changes that won't be visible to the general audience.
|
||||
|
||||
We use `fix:` for changes that fix site related bugs. These things will usually have the `bug` label on GitHub.
|
||||
|
||||
```text
|
||||
fix: Remove broken Invidious embeds (#0000)
|
||||
```
|
||||
|
||||
We use `docs:` to denote changes to the developer documentation for this website, including (but not limited to) for example the README file, or most pages in `/docs/about` or `/docs/meta`:
|
||||
|
||||
```text
|
||||
docs: Update Git commit message guidelines (#0000)
|
||||
```
|
||||
|
||||
We use `build:` for commits related to our build process, mainly dependency updates.
|
||||
|
||||
```text
|
||||
build: Bump modules/mkdocs-material from 463e535 to 621a5b8
|
||||
```
|
||||
|
||||
We use `ci:` for commits related to GitHub Actions, DevContainers, or other automated build platforms.
|
||||
|
||||
```text
|
||||
ci: Update Netlify config (#0000)
|
||||
```
|
||||
|
||||
We use `refactor:` for changes which neither fix a bug nor add a feature, e.g. rearranging files, navigation order, etc.
|
||||
|
||||
```text
|
||||
refactor: Move docs/assets to theme/assets
|
||||
```
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Git Recommendations
|
||||
description: A guide for website contributors on using Git effectively.
|
||||
---
|
||||
If you make changes to this website on GitHub.com's web editor directly, you shouldn't have to worry about this. If you are developing locally and/or are a long-term website editor (who should probably be developing locally!), consider these recommendations.
|
||||
|
||||
## Enable SSH Key Commit Signing
|
||||
|
||||
You can use an existing SSH key for signing, or [create a new one](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).
|
||||
|
||||
1. Configure your Git client to sign commits and tags by default (remove `--global` to only sign by default for this repo):
|
||||
|
||||
```bash
|
||||
git config --global commit.gpgsign true
|
||||
git config --global gpg.format ssh
|
||||
git config --global tag.gpgSign true
|
||||
```
|
||||
|
||||
2. Set your SSH key for signing in Git with the following command, substituting `/PATH/TO/.SSH/KEY.PUB` with the path to the public key you'd like to use, e.g. `/home/user/.ssh/id_ed25519.pub`:
|
||||
|
||||
```bash
|
||||
git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB
|
||||
```
|
||||
|
||||
Ensure you [add your SSH key to your GitHub account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account#adding-a-new-ssh-key-to-your-account) **as a Signing Key** (as opposed to or in addition to as an Authentication Key).
|
||||
|
||||
## Rebase on Git pull
|
||||
|
||||
Use `git pull --rebase` instead of `git pull` when pulling in changes from GitHub to your local machine. This way your local changes will always be "on top of" the latest changes on GitHub, and you avoid merge commits (which are disallowed in this repo).
|
||||
|
||||
You can set this to be the default behavior:
|
||||
|
||||
```bash
|
||||
git config --global pull.rebase true
|
||||
```
|
||||
|
||||
## Rebase from `main` before submitting a PR
|
||||
|
||||
If you are working on your own branch, run these commands before submitting a PR:
|
||||
|
||||
```bash
|
||||
git fetch origin
|
||||
git rebase origin/main
|
||||
```
|
||||
|
After Width: | Height: | Size: 261 KiB |
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: Commenting on PRs
|
||||
description: A guide on participating in Pull Request discussions.
|
||||
---
|
||||
Please refrain from using the general **Add a comment** box in GitHub PRs when leaving a comment or performing a review.
|
||||
|
||||

|
||||
|
||||
Comments that are left like this are not *threaded*, which makes it difficult to keep track of multiple conversations.
|
||||
|
||||
Comments that are instead left in the manner described below will have a built-in reply box to keep conversations in a single thread. These comments can also be marked as resolved afterwards, so that discussion can be tracked more easily.
|
||||
|
||||

|
||||
|
||||
## Commenting
|
||||
|
||||
To start a threaded comment, you should leave all comments under the :octicons-file-diff-16: **Files changed** tab in a PR.
|
||||
|
||||

|
||||
|
||||
To leave a *general* comment on a PR, click the :octicons-comment-16: comment icon to the right of a file:
|
||||
|
||||

|
||||
|
||||
If the PR has multiple files changed, comment on the primary or most relevant file changed, or comment on the first file if you can't decide.
|
||||
|
||||
To leave a comment *on a specific line* of a PR, hover over the line where you'd like to add a comment, and click the blue comment icon:
|
||||
|
||||

|
||||
|
||||
(Optionally, you can add a comment on multiple lines. You can click the line number of the first line you want to comment on and drag down to select a range of lines, then click the blue comment icon on the last line you want to comment on. Alternatively, you can click the blue comment icon next to the first line you want to comment on, then drag down to the last line you want to comment on.)
|
||||
|
||||
Then, type your comment and click **Add single comment**.
|
||||
|
||||
## Reviewing
|
||||
|
||||
When performing a review, follow the same steps as above, but click **Start a review** (and subsequently, **Add a review comment**) instead of **Add single comment**.
|
||||
|
||||
Then, click the green **Finish your review** button at the top of the page.
|
||||
|
||||
Do not leave any discussion comments in the *Leave a comment* box in the review finalization pop-up. You can leave it blank, or leave a short note if it will not require any follow-up. To comment on something that will require further discussion, add a comment on a file as described above instead.
|
||||
|
||||
Then, click **Submit review**.
|
||||
|
After Width: | Height: | Size: 58 KiB |
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: Translations
|
||||
description: A guide for website contributors on adding translations to our website.
|
||||
---
|
||||
|
||||
Crowdin has good documentation, and we suggest looking at their [Getting Started](https://support.crowdin.com/crowdin-intro) guide. Our site is largely written in [Markdown](https://en.wikipedia.org/wiki/Markdown), so it should be easy to contribute. This page contains some helpful pointers for translating some specific syntax you may encounter on our site.
|
||||
|
||||
Please join our localization room on Matrix ([#pg-i18n:aragon.sh](https://matrix.to/#/%23pg-i18n:aragon.sh)) if you have any additional questions, and read our [announcement blog post](https://blog.privacyguides.org/2023/02/26/i18n-announcement) for additional information about the project.
|
||||
|
||||
Note that the English version of the site is the primary version, meaning changes occur there first. If you notice a language falling behind the English version, please help out. We cannot guarantee the accuracy of all our translations. If you have a suggestion about content specific to your region, please open an issue or pull request to our [main repository](https://github.com/privacyguides/privacyguides.org).
|
||||
|
||||
## Translation output
|
||||
|
||||
Translation software gets the translation quite accurate; however, you need to make sure the translated string is correct.
|
||||
|
||||
For example:
|
||||
|
||||
```text
|
||||
{ align=right }
|
||||
```
|
||||
|
||||
We have sometimes found that the syntax for inserting an image like above was missing the `![` or an extra space was placed between the text and the path, e.g. `] (` with no space between those characters. If a translation string is clearly not correct, we encourage you to **delete** it by pressing the trash icon [or vote](https://support.crowdin.com/enterprise/getting-started-for-volunteers/#voting-view) on which one you think sounds best. When invalid strings are deleted, they are removed from the organization's [translation memory](https://support.crowdin.com/enterprise/translation-memory), meaning that when the source string is seen again, it won't suggest the incorrect translation.
|
||||
|
||||
## Punctuation
|
||||
|
||||
For examples like the above admonitions, quotation marks, e.g.: `" "` must be used to specify string text. MkDocs will not correctly interpret other symbols i.e., `「 」` or `« »`. Other punctuation marks are fine for marking regular quotations within the text otherwise.
|
||||
|
||||
## Fullwidth alternatives and Markdown syntax
|
||||
|
||||
CJK writing systems tend to use alternative "fullwidth" variants of common symbols. These are different characters and cannot be used for Markdown syntax.
|
||||
|
||||
- Links must use regular parenthesis i.e. `(` (Left Parenthesis U+0028) and `)` (Right Parenthesis U+0029) and not `(` (Fullwidth Left Parenthesis U+FF08) or `)` (Fullwidth Right Parenthesis U+FF09)
|
||||
- Indented quoted text must use `:` (Colon U+003A) and not `:` (Fullwidth Colon U+FF1A)
|
||||
- Pictures must use `!` (Exclamation Mark U+0021) and not `!` (Fullwidth Exclamation Mark U+FF01)
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: Uploading Images
|
||||
description: A guide for website contributors on uploading images in the proper format and location.
|
||||
---
|
||||
|
||||
If you make changes to this website that involve adding new images or replacing existing ones, here are a couple of general recommendations:
|
||||
|
||||
## Images
|
||||
|
||||
- We **prefer** SVG images, but if those do not exist we can use PNG images. Additionally, for cover images, we prefer that they are obtained from [Unsplash](https://unsplash.com) and are in the WebP format.
|
||||
|
||||
Company logos should be square if possible, and at least 200x200px if they are PNGs (non-vector images).
|
||||
|
||||
## Optimization
|
||||
|
||||
### PNG
|
||||
|
||||
Use the [OptiPNG](https://sourceforge.net/projects/optipng) tool to optimize PNG images:
|
||||
|
||||
```bash
|
||||
optipng -o7 file.png
|
||||
```
|
||||
|
||||
### SVG
|
||||
|
||||
#### Inkscape
|
||||
|
||||
[Scour](https://github.com/scour-project/scour) all SVG images.
|
||||
|
||||
In Inkscape:
|
||||
|
||||
1. File > Save As...
|
||||
2. Set type to: Optimized SVG (*.svg)
|
||||
|
||||
In the **Options** tab:
|
||||
|
||||
- **Number of significant digits for coordinates** > **5**
|
||||
- [x] Turn on **Shorten color values**
|
||||
- [x] Turn on **Convert CSS attributes to XML attributes**
|
||||
- [x] Turn on **Collapse groups**
|
||||
- [x] Turn on **Create groups for similar attributes**
|
||||
- [ ] Turn off **Keep editor data**
|
||||
- [ ] Turn off **Keep unreferenced definitions**
|
||||
- [x] Turn on **Work around renderer bugs**
|
||||
|
||||
In the **SVG Output** tab under **Document options**:
|
||||
|
||||
- [ ] Turn off **Remove the XML declaration**
|
||||
- [x] Turn on **Remove metadata**
|
||||
- [x] Turn on **Remove comments**
|
||||
- [x] Turn on **Embedded raster images**
|
||||
- [x] Turn on **Enable viewboxing**
|
||||
|
||||
In the **SVG Output** under **Pretty-printing**:
|
||||
|
||||
- [ ] Turn off **Format output with line-breaks and indentation**
|
||||
- **Indentation characters** > Select **Space**
|
||||
- **Depth of indentation** > **1**
|
||||
- [ ] Turn off **Strip the "xml:space" attribute from the root SVG element**
|
||||
|
||||
In the **IDs** tab:
|
||||
|
||||
- [x] Turn on **Remove unused IDs**
|
||||
- [ ] Turn off **Shorten IDs**
|
||||
- **Prefix shortened IDs with** > `leave blank`
|
||||
- [x] Turn on **Preserve manually created IDs not ending with digits**
|
||||
- **Preserve the following IDs** > `leave blank`
|
||||
- **Preserve IDs starting with** > `leave blank`
|
||||
|
||||
#### CLI
|
||||
|
||||
The same can be achieved with the [Scour](https://github.com/scour-project/scour) command:
|
||||
|
||||
```bash
|
||||
scour --set-precision=5 \
|
||||
--create-groups \
|
||||
--renderer-workaround \
|
||||
--remove-descriptive-elements \
|
||||
--enable-comment-stripping \
|
||||
--enable-viewboxing \
|
||||
--indent=space \
|
||||
--nindent=1 \
|
||||
--no-line-breaks \
|
||||
--enable-id-stripping \
|
||||
--protect-ids-noninkscape \
|
||||
input.svg output.svg
|
||||
```
|
||||
|
||||
### WebP
|
||||
|
||||
Use the [`cwebp`](https://developers.google.com/speed/webp/docs/using) command to convert PNG or JPEG image files to WebP format:
|
||||
|
||||
```bash
|
||||
cwebp -m 6 input_file -o output.webp
|
||||
```
|
||||
@@ -0,0 +1,88 @@
|
||||
---
|
||||
title: Writing Style
|
||||
description: Our official writing style handbook for website contributors.
|
||||
---
|
||||
|
||||
Privacy Guides is written in American English, and you should refer to [APA Style guidelines](https://apastyle.apa.org/style-grammar-guidelines/grammar) when in doubt.
|
||||
|
||||
In general the [United States federal plain language guidelines](https://plainlanguage.gov/guidelines) provide a good overview of how to write clearly and concisely. We highlight a few important notes from these guidelines below.
|
||||
|
||||
## Writing for our audience
|
||||
|
||||
Privacy Guides' intended [audience](https://plainlanguage.gov/guidelines/audience) is primarily adults who use technology. Don't dumb down content as if you are addressing a middle-school class, but don't overuse complicated terminology about concepts average computer users wouldn't be familiar with.
|
||||
|
||||
### Address only what people want to know
|
||||
|
||||
People don't need overly complex articles with little relevance to them. Figure out what you want people to accomplish when writing an article, and only include those details.
|
||||
|
||||
> Tell your audience why the material is important to them. Say, “If you want a research grant, here’s what you have to do.” Or, “If you want to mine federal coal, here’s what you should know.” Or, “If you’re planning a trip to Rwanda, read this first.”
|
||||
|
||||
### Address people directly
|
||||
|
||||
We're writing *for* a wide variety of people, but we are writing *to* the person who is actually reading it. Use "you" to address the reader directly.
|
||||
|
||||
> More than any other single technique, using “you” pulls users into the information and makes it relevant to them.
|
||||
>
|
||||
> When you use “you” to address users, they are more likely to understand what their responsibility is.
|
||||
|
||||
Source: [plainlanguage.gov](https://plainlanguage.gov/guidelines/audience/address-the-user)
|
||||
|
||||
### Avoid "users"
|
||||
|
||||
Avoid calling people "users", in favor of "people", or a more specific description of the group of people you are writing for.
|
||||
|
||||
## Organizing content
|
||||
|
||||
Organization is key. Content should flow from most to least important information, and use headers as much as needed to logically separate different ideas.
|
||||
|
||||
- Limit the document to around five or six sections. Long documents should probably be broken up into separate pages.
|
||||
- Mark important ideas with **bold** or *italics*.
|
||||
|
||||
Source: [plainlanguage.gov](https://plainlanguage.gov/guidelines/design)
|
||||
|
||||
### Begin with a topic sentence
|
||||
|
||||
> If you tell your reader what they’re going to read about, they’re less likely to have to read your paragraph again. Headings help, but they’re not enough. Establish a context for your audience before you provide them with the details.
|
||||
>
|
||||
> We often write the way we think, putting our premises first and then our conclusion. It may be the natural way to develop thoughts, but we wind up with the topic sentence at the end of the paragraph. Move it up front and let users know where you’re going. Don’t make readers hold a lot of information in their heads before getting to the point.
|
||||
|
||||
Source: [plainlanguage.gov](https://plainlanguage.gov/guidelines/organize/have-a-topic-sentence)
|
||||
|
||||
## Choose your words carefully
|
||||
|
||||
> Words matter. They are the most basic building blocks of written and spoken communication. Don’t complicate things by using jargon, technical terms, or abbreviations that people won’t understand.
|
||||
|
||||
We should try to avoid abbreviations where possible, but technology is full of abbreviations. In general, spell out the abbreviation/acronym the first time it is used on a page, and add the abbreviation to the abbreviation glossary file when it is used repeatedly.
|
||||
|
||||
> Kathy McGinty offers tongue-in-cheek instructions for bulking up your simple, direct sentences:
|
||||
>
|
||||
> > There is no escaping the fact that it is considered very important to note that a number of various available applicable studies ipso facto have generally identified the fact that additional appropriate nocturnal employment could usually keep juvenile adolescents off thoroughfares during the night hours, including but not limited to the time prior to midnight on weeknights and/or 2 a.m. on weekends.
|
||||
>
|
||||
>And the original, using stronger, simpler words:
|
||||
>
|
||||
> > More night jobs would keep youths off the streets.
|
||||
|
||||
## Be concise
|
||||
|
||||
> Unnecessary words waste your audience’s time. Great writing is like a conversation. Omit information that the audience doesn’t need to know. This can be difficult as a subject-matter expert, so it’s important to have someone look at the information from the audience’s perspective.
|
||||
|
||||
Source: [plainlanguage.gov](https://plainlanguage.gov/guidelines/concise)
|
||||
|
||||
## Keep text conversational
|
||||
|
||||
> Verbs are the fuel of writing. They give your sentences power and direction. They enliven your writing and make it more interesting.
|
||||
>
|
||||
> Verbs tell your audience what to do. Make sure it’s clear who does what.
|
||||
|
||||
### Use active voice
|
||||
|
||||
> Active voice makes it clear who is supposed to do what. It eliminates ambiguity about responsibilities. Not “It must be done,” but “You must do it.”
|
||||
|
||||
Source: [plainlanguage.gov](https://plainlanguage.gov/guidelines/conversational/use-active-voice)
|
||||
|
||||
### Use "must" for requirements
|
||||
|
||||
> - “must” for an obligation
|
||||
> - “must not” for a prohibition
|
||||
> - “may” for a discretionary action
|
||||
> - “should” for a recommendation
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: "Notices and Disclaimers"
|
||||
description: Information about our website license, acceptable use policy, and other important details.
|
||||
---
|
||||
|
||||
## Legal Disclaimer
|
||||
|
||||
Privacy Guides is not a law firm. As such, the Privacy Guides website and contributors are not providing legal advice. The material and recommendations in our website and guides do not constitute legal advice nor does contributing to the website or communicating with Privacy Guides or other contributors about our website create an attorney-client relationship.
|
||||
|
||||
Running this website, like any human endeavor, involves uncertainty and trade-offs. We hope this website helps, but it may include mistakes and can’t address every situation. If you have any questions about your situation, we encourage you to do your own research, seek out other experts, and engage in discussions with the Privacy Guides community. If you have any legal questions, you should consult with your own legal counsel before moving forward.
|
||||
|
||||
Privacy Guides is an open-source project contributed to under licenses that include terms that, for the protection of the website and its contributors, make clear that the Privacy Guides project and website is offered "as-is", without warranty, and disclaiming liability for damages resulting from using the website or any recommendations contained within. Privacy Guides does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on the website or otherwise relating to such materials on the website or on any third-party sites linked on this site.
|
||||
|
||||
Privacy Guides additionally does not warrant that this website will be constantly available, or available at all.
|
||||
|
||||
## Licensing Overview
|
||||
|
||||
<div class="admonition danger" markdown>
|
||||
|
||||
The following is a human-readable summary of (and not a substitute for) the [license](https://github.com/privacyguides/privacyguides.org/blob/main/README.md#license).
|
||||
|
||||
</div>
|
||||
|
||||
Unless otherwise noted, all **content** on this website is released under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/tree/main/LICENSE). This means that you can use the human-readable content on this website for your own project, as long as you give appropriate credit to [Privacy Guides](https://www.privacyguides.org) including a link where technically possible, and you release your project under the same license. You may not do so in any way that suggests Privacy Guides endorses you or your use. You **may not** use the Privacy Guides brand trademarks in your own project without express approval from this project. Privacy Guides's brand trademarks include the "Privacy Guides" wordmark and shield logo.
|
||||
|
||||
The underlying **source code** used to generate this website and display that content is released under the [MIT License](https://github.com/privacyguides/privacyguides.org/tree/main/LICENSE-CODE).
|
||||
|
||||
This does not include third-party code embedded in the Privacy Guides code repository, or code where a superseding license is otherwise noted. The following are notable examples, but this list may not be all-inclusive:
|
||||
|
||||
* The [Bagnard](https://github.com/privacyguides/brand/tree/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Bagnard) heading font is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Bagnard/LICENSE.txt).
|
||||
* The [Public Sans](https://github.com/privacyguides/brand/tree/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Public%20Sans) font used for most text on the site is licensed under the terms detailed [here](https://github.com/privacyguides/brand/blob/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/Public%20Sans/LICENSE.txt).
|
||||
* The [DM Mono](https://github.com/privacyguides/brand/tree/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/DM%20Mono) font used for monospaced text on the site is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/67166ed8b641d8ac1837d0b75329e02ed4056704/fonts/DM%20Mono/LICENSE.txt).
|
||||
|
||||
We believe that the logos and other images in `assets` obtained from third-party providers are either in the public domain or **fair use**. In a nutshell, legal [fair use doctrine](https://copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject for purposes of public comment. However, these logos and other images may still be subject to trademark laws in one or more jurisdictions. Before using this content, please ensure that it is used to identify the entity or organization that owns the trademark and that you have the right to use it under the laws which apply in the circumstances of your intended use. *When copying content from this website, you are solely responsible for ensuring that you do not infringe someone else's trademark or copyright.*
|
||||
|
||||
When you contribute to our website you are doing so under the above licenses, and you are granting Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute your contribution as part of our project.
|
||||
|
||||
## Acceptable Use
|
||||
|
||||
You may not use this website in any way that causes or may cause damage to the website or impairment of the availability or accessibility of Privacy Guides, or in any way which is unlawful, illegal, fraudulent, harmful, or in connection with any unlawful, illegal, fraudulent, or harmful purpose or activity.
|
||||
|
||||
You must not conduct any systematic or automated data collection activities on or in relation to this website without express written consent, including:
|
||||
|
||||
* Excessive Automated Scans
|
||||
* Denial of Service Attacks
|
||||
* Scraping
|
||||
* Data Mining
|
||||
* 'Framing' (IFrames)
|
||||
|
||||
---
|
||||
|
||||
*Portions of this notice itself were adopted from [opensource.guide](https://github.com/github/opensource.guide/blob/master/notices.md) on GitHub. That resource and this page itself are released under [CC-BY-4.0](https://creativecommons.org/licenses/by-sa/4.0).*
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,116 @@
|
||||
---
|
||||
title: "PrivacyTools FAQ"
|
||||
description: The real story behind the team transition from privacytools.io to privacyguides.org
|
||||
---
|
||||
In September 2021, every active contributor unanimously agreed to move from PrivacyTools to work on this site: Privacy Guides. This decision was made because PrivacyTools’ founder and controller of the domain name had disappeared for an extended period of time and could not be contacted.
|
||||
|
||||
Having built a reputable site and set of services on PrivacyTools.io, this caused grave concerns for the future of PrivacyTools, as any future disruption could wipe out the entire organization with no recovery method. This transition was communicated to the PrivacyTools community many months in advance via a variety of channels including its blog, Twitter, Reddit, and Mastodon to ensure the entire process went as smoothly as possible. We did this to ensure nobody was kept in the dark, which has been our modus operandi since our team was created, and to make sure Privacy Guides was recognized as the same reliable organization that PrivacyTools was before the transition.
|
||||
|
||||
After the organizational move was completed, the founder of PrivacyTools returned and began to spread misinformation about the Privacy Guides project. They continue to spread misinformation in addition to operating a paid link farm on the PrivacyTools domain. We are creating this page to clear up any misconceptions.
|
||||
|
||||
## What is PrivacyTools?
|
||||
|
||||
PrivacyTools was created in 2015 by "BurungHantu," who wanted to make a privacy information resource - helpful tools following the Snowden revelations. The site grew into a flourishing open-source project with [many contributors](https://github.com/privacytools/privacytools.io/graphs/contributors), some eventually given various organizational responsibilities, such as operating online services like Matrix and Mastodon, managing and reviewing changes to the site on GitHub, finding sponsors for the project, writing blog posts and operating social media outreach platforms like Twitter, etc.
|
||||
|
||||
Beginning in 2019, BurungHantu grew more and more distant from the active development of the website and communities, and began delaying payments he was responsible for related to the servers we operated. To avoid having our system administrator pay server costs out of their own pocket, we changed the donation methods listed on the site from BurungHantu's personal PayPal and crypto accounts to a new OpenCollective page on [October 31, 2019](https://web.archive.org/web/20210729184557/https://blog.privacytools.io/privacytools-io-joins-the-open-collective-foundation). This had the added benefits of making our finances completely transparent, a value we strongly believe in, and tax-deductible in the United States, because they were being held by the Open Collective Foundation 501(c)3. This change was unanimously agreed upon by the team and went uncontested.
|
||||
|
||||
## Why We Moved On
|
||||
|
||||
In 2020, BurungHantu's absence grew much more noticeable. At one point, we required the domain's nameservers to be changed to nameservers controlled by our system administrator to avoid future disruption, and this change was not completed for over a month after the initial request. He would disappear from the public chat and private team chat rooms on Matrix for months at a time, occasionally popping in to give some small feedback or promise to be more active before disappearing once again.
|
||||
|
||||
In October 2020, the PrivacyTools system administrator (Jonah) [left](https://web.archive.org/web/20210729190742/https://blog.privacytools.io/blacklight447-taking-over) the project because of these difficulties, handing control to another long-time contributor. Jonah had been operating nearly every PrivacyTools service and acting as the *de facto* project lead for website development in BurungHantu's absence, thus his departure was a significant change to the organization. At the time, because of these significant organizational changes, BurungHantu promised the remaining team he would return to take control of the project going forward. ==The PrivacyTools team reached out via several communication methods over the following months, but did not receive any response.==
|
||||
|
||||
## Domain Name Reliance
|
||||
|
||||
At the beginning of 2021, the PrivacyTools team grew worried about the future of the project, because the domain name was set to expire on 1st March 2021. The domain was ultimately renewed by BurungHantu with no comment.
|
||||
|
||||
The team’s concerns were not addressed, and we realized this would be a problem every year: If the domain expired it would have allowed it to be stolen by squatters or spammers, thus ruining the organization's reputation. We also would have had trouble reaching the community to inform them of what took place.
|
||||
|
||||
Without being in any contact with BurungHantu, we decided the best course of action would be to move to a new domain name while we still had guaranteed control over the old domain name, sometime before March 2022. This way, we would be able to cleanly redirect all PrivacyTools resources to the new site without any interruption in service. This decision was made many months in advance and communicated to the entire team in the hopes that BurungHantu would reach out and assure his continued support for the project, because with a recognizable brand name and large communities online, moving away from "PrivacyTools" was the least desirable possible outcome.
|
||||
|
||||
In mid-2021 the PrivacyTools team reached out to Jonah, who agreed to rejoin the team to help with the transition.
|
||||
|
||||
## Community Call to Action
|
||||
|
||||
At the end of July 2021, we [informed](https://web.archive.org/web/20210729184422/https://blog.privacytools.io/the-future-of-privacytools) the PrivacyTools community of our intention to choose a new name and continue the project on a new domain, to be [chosen](https://web.archive.org/web/20210729190935/https://aragon.cloud/apps/forms/cMPxG9KyopapBbcw) on 2nd August 2022. In the end, "Privacy Guides" was selected, with the `privacyguides.org` domain already owned by Jonah for a side-project from 2020 that went undeveloped.
|
||||
|
||||
## Control of r/privacytoolsIO
|
||||
|
||||
Simultaneously with the ongoing website issues at privacytools.io, the r/privacytoolsIO moderation team was facing challenges with managing the Subreddit. The Subreddit had always been operated mostly independently of the website's development, but BurungHantu was the primary moderator of the Subreddit as well, and he was the only moderator granted "Full Control" privileges. u/trai_dep was the only active moderator at the time, and [posted](https://reddit.com/comments/o9tllh) a request to Reddit's administrators on June 28, 2021, asking to be granted the primary moderator position and full control privileges, in order to make necessary changes to the Subreddit.
|
||||
|
||||
Reddit requires that Subreddits have active moderators. If the primary moderator is inactive for a lengthy period of time (such as a year) the primary moderation position can be re-appointed to the next moderator in line. For this request to have been granted, BurungHantu had to have been completely absent from all Reddit activity for a long period of time, which was consistent with his behaviors on other platforms.
|
||||
|
||||
> If you were removed as moderator from a subreddit through Reddit request it is because your lack of response and lack of activity qualified the subreddit for an r/redditrequest transfer.
|
||||
>
|
||||
> r/redditrequest is Reddit's way of making sure communities have active moderators and is part of the [Moderator Code of Conduct](https://redditinc.com/policies/moderator-code-of-conduct).
|
||||
|
||||
## Beginning the Transition
|
||||
|
||||
On September 14th, 2021, we [announced](https://blog.privacyguides.org/2021/09/14/welcome-to-privacy-guides) the beginning of our migration to this new domain:
|
||||
|
||||
> [...] we found it necessary to make this switch sooner rather than later to ensure people would find out about this transition as soon as possible. This gives us adequate time to transition the domain name, which is currently redirecting to `www.privacyguides.org`, and it hopefully gives everyone enough time to notice the change, update bookmarks and websites, etc.
|
||||
|
||||
This change [entailed:](https://reddit.com/comments/pnhn4a)
|
||||
|
||||
- Redirecting `www.privacytools.io` to [www.privacyguides.org](https://www.privacyguides.org).
|
||||
- Archiving the source code on GitHub to preserve our past work and issue tracker, which we continued to use for months of future development of this site.
|
||||
- Posting announcements to our Subreddit and various other communities informing people of the official change.
|
||||
- Formally closing privacytools.io services, like Matrix and Mastodon, and encouraging existing users to migrate as soon as possible.
|
||||
|
||||
Things appeared to be going smoothly, and most of our active community made the switch to our new project exactly as we hoped.
|
||||
|
||||
## Following Events
|
||||
|
||||
Roughly a week following the transition, BurungHantu returned online for the first time in nearly a year, however nobody on our team was willing to return to PrivacyTools because of his historic unreliability. Rather than apologize for his prolonged absence, he immediately went on the offensive and positioned the transition to Privacy Guides as an attack against him and his project. He subsequently [deleted](https://reddit.com/comments/pp9yie/comment/hd49wbn) many of these posts when it was pointed out by the community that he had been absent and abandoned the project.
|
||||
|
||||
At this point, BurungHantu claimed he wanted to continue working on privacytools.io on his own and requested that we remove the redirect from `www.privacytools.io` to [www.privacyguides.org](https://www.privacyguides.org). We obliged and requested that he keep the subdomains for Matrix, Mastodon, and PeerTube active for us to run as a public service to our community for at least a few months, in order to allow users on those platforms to easily migrate to other accounts. Due to the federated nature of the services we provided, they were tied to specific domain names making it very difficult to migrate (and in some cases impossible).
|
||||
|
||||
Unfortunately, because control of the r/privacytoolsIO Subreddit was not returned to BurungHantu at his demand (further information below), those subdomains were [cut off](https://reddit.com/comments/pymthv/comment/hexwrps) at the beginning of October, ending any migration possibilities to any users still using those services.
|
||||
|
||||
Following this, BurungHantu made false accusations about Jonah stealing donations from the project. BurungHantu had over a year since the alleged incident occurred, and yet he never made anyone aware of it until after the Privacy Guides migration. BurungHantu has been repeatedly asked for proof and to comment on the reason for his silence by the team [and the community](https://twitter.com/TommyTran732/status/1526153536962281474), and has not done so.
|
||||
|
||||
BurungHantu also made a [twitter post](https://twitter.com/privacytoolsIO/status/1510560676967710728) alleging that an "attorney" had reached out to him on Twitter and was providing advice, in another attempt to bully us into giving him control of our Subreddit, and as part of his smear campaign to muddy the waters surrounding the launch of Privacy Guides while pretending to be a victim.
|
||||
|
||||
## PrivacyTools.io Now
|
||||
|
||||
As of September 25th 2022 we are seeing BurungHantu's overall plans come to fruition on privacytools.io, and this is the very reason we decided to create this explainer page today. The website he is operating appears to be a heavily SEO-optimized version of the site which recommends tools in exchange for financial compensation. Very recently, IVPN and Mullvad, two VPN providers near-universally [recommended](../tools/services/vpn/index.md) by the privacy community and notable for their stance against affiliate programs were removed from PrivacyTools. In their place? NordVPN, Surfshark, ExpressVPN, and hide.me; Giant VPN corporations with untrustworthy platforms and business practices, notorious for their aggressive marketing and affiliate programs.
|
||||
|
||||
==**PrivacyTools has become exactly the type of site we [warned against](https://web.archive.org/web/20210729205249/https://blog.privacytools.io/the-trouble-with-vpn-and-privacy-reviews) on the PrivacyTools blog in 2019.**== We've tried to keep our distance from PrivacyTools since the transition, but their continued harassment towards our project and now their absurd abuse of the credibility their brand gained over 6 years of open-source contributions is extremely troubling to us. Those of us actually fighting for privacy are not fighting against each other, and are not getting our advice from the highest bidder.
|
||||
|
||||
## r/privacytoolsIO Now
|
||||
|
||||
After the launch of [r/PrivacyGuides](https://reddit.com/r/privacyguides), it was impractical for u/trai_dep to continue moderating both Subreddits, and with the community on-board with the transition, r/privacytoolsIO was [made](https://reddit.com/comments/qk7qrj) a restricted sub in a post on November 1st, 2021:
|
||||
|
||||
> [...] The growth of this Sub was the result of great effort, across several years, by the PrivacyGuides.org team. And by every one of you.
|
||||
>
|
||||
> A Subreddit is a great deal of work to administer and moderate. Like a garden, it requires patient tending and daily care. It's not a task for dilettantes or commitment-challenged people. It can’t thrive under a gardener who abandons it for several years, then shows up demanding this year’s harvest as their tribute. It's unfair to the team formed years ago. It’s unfair to you. [...]
|
||||
|
||||
Subreddits do not belong to anybody, and they especially do not belong to brand-holders. They belong to their communities, and the community and its moderators made the decision to support the move to r/PrivacyGuides.
|
||||
|
||||
In the months since, BurungHantu has threatened and begged for returning Subreddit control to his account in [violation](https://reddit.com/r/redditrequest/wiki/top_mod_removal) of Reddit rules:
|
||||
|
||||
> Retaliation from any moderator with regards to removal requests is disallowed.
|
||||
|
||||
For a community with many thousands of remaining subscribers, we feel that it would be incredibly disrespectful to return control of that massive platform to the person who abandoned it for over a year, and who now operates a website that we feel provides very low-quality information. Preserving the years of past discussions in that community is more important to us, and thus u/trai_dep and the rest of the Subreddit moderation team has made the decision to keep r/privacytoolsIO as-is.
|
||||
|
||||
## OpenCollective Now
|
||||
|
||||
Our fundraising platform, OpenCollective, is another source of contention. Our position is that OpenCollective was put in place by our team and managed by our team to fund services we currently operate and which PrivacyTools no longer does. We [reached out](https://opencollective.com/privacyguides/updates/transitioning-to-privacy-guides) to all of our donors regarding our move to Privacy Guides, and we were unanimously supported by our sponsors and community.
|
||||
|
||||
Thus, the funds in OpenCollective belong to Privacy Guides, they were given to our project, and not the owner of a well known domain name. In the announcement made to donors on September 17th, 2021, we offered refunds to any donor who disagrees with the stance we took, but nobody has taken us up on this offer:
|
||||
|
||||
> If any sponsors or backers disagree with or feel misled by these recent events and would like to request a refund given these highly unusual circumstances, please get in touch with our project admin by emailing `jonah@triplebit.net`.
|
||||
|
||||
## Further Reading
|
||||
|
||||
This topic has been discussed extensively within our communities in various locations, and it seems likely that most people reading this page will already be familiar with the events leading up to the move to Privacy Guides. Some of our previous posts on the matter may have extra detail we omitted here for brevity. They have been linked below for the sake of completion.
|
||||
|
||||
- [June 28, 2021 request for control of r/privacytoolsIO](https://reddit.com/comments/o9tllh)
|
||||
- [July 27, 2021 announcement of our intentions to move on the PrivacyTools blog, written by the team](https://web.archive.org/web/20210729184422/https://blog.privacytools.io/the-future-of-privacytools)
|
||||
- [Sept 13, 2021 announcement of the beginning of our transition to Privacy Guides on r/privacytoolsIO](https://reddit.com/pnql46)
|
||||
- [Sept 17, 2021 announcement on OpenCollective from Jonah](https://opencollective.com/privacyguides/updates/transitioning-to-privacy-guides)
|
||||
- [Sept 30, 2021 Twitter thread detailing most of the events now described on this page](https://twitter.com/privacy_guides/status/1443633412800225280)
|
||||
- [Oct 1, 2021 post by u/dng99 noting subdomain failure](https://reddit.com/comments/pymthv/comment/hexwrps)
|
||||
- [Apr 2, 2022 response by u/dng99 to PrivacyTools' accusatory blog post](https://reddit.com/comments/tuo7mm/comment/i35kw5a)
|
||||
- [May 16, 2022 response by @TommyTran732 on Twitter](https://twitter.com/TommyTran732/status/1526153497984618496)
|
||||
- [Sep 3, 2022 post on Techlore's forum by @dngray](https://discuss.techlore.tech/t/has-anyone-seen-this-video-wondering-your-thoughts/792/20)
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
description: We run a number of web services to test out features and promote cool decentralized, federated, and/or open-source projects.
|
||||
---
|
||||
|
||||
# Privacy Guides Services
|
||||
|
||||
We run a number of web services to test out features and promote cool decentralized, federated, and/or open-source projects. Many of these services are available to the public and are detailed below.
|
||||
|
||||
[:material-comment-alert: Report an issue](https://discuss.privacyguides.net/c/services/2){ class="md-button md-button--primary" }
|
||||
|
||||
## Discourse
|
||||
|
||||
- Domain: [discuss.privacyguides.net](https://discuss.privacyguides.net)
|
||||
- Availability: Public
|
||||
- Source: [github.com/discourse/discourse](https://github.com/discourse/discourse)
|
||||
|
||||
## Gitea
|
||||
|
||||
- Domain: [code.privacyguides.dev](https://code.privacyguides.dev)
|
||||
- Availability: Invite-Only. Access may be granted upon request to any team working on *Privacy Guides*-related development or content.
|
||||
- Source: [snapcraft.io/gitea](https://snapcraft.io/gitea)
|
||||
|
||||
## Matrix
|
||||
|
||||
- Domain: [matrix.privacyguides.org](https://matrix.privacyguides.org)
|
||||
- Availability: Invite-Only. Access may be granted upon request to Privacy Guides team members, Matrix moderators, third-party Matrix community administrators, Matrix bot operators, and other individuals in need of a reliable Matrix presence.
|
||||
- Source: [github.com/spantaleev/matrix-docker-ansible-deploy](https://github.com/spantaleev/matrix-docker-ansible-deploy)
|
||||
|
||||
## SearXNG
|
||||
|
||||
- Domain: [search.privacyguides.net](https://search.privacyguides.net)
|
||||
- Availability: Public
|
||||
- Source: [github.com/searxng/searxng-docker](https://github.com/searxng/searxng-docker)
|
||||
|
After Width: | Height: | Size: 212 KiB |
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: Traffic Statistics
|
||||
description: We self-host Umami to create a nice visualization of our traffic statistics, which are made public here.
|
||||
---
|
||||
<!-- markdownlint-disable MD051 -->
|
||||
We self-host [Umami](https://umami.is) to create a nice visualization of our traffic statistics, which are public at the link below.
|
||||
|
||||
[View Statistics](https://stats.triplebit.net/share/S80jBc50hxr5TquS/www.privacyguides.org){ .md-button .md-button--primary }
|
||||
|
||||
With this process:
|
||||
|
||||
- Your information is never shared with a third party, it stays on servers we control
|
||||
- Your personal data is never saved, we only collect data in aggregate
|
||||
- No client-side JavaScript is used
|
||||
|
||||
Because of these facts, keep in mind our statistics may be inaccurate. It is a useful tool to compare different dates with each other and analyze overall trends, but the actual numbers may be far off from reality. In other words they're *precise* statistics, but not *accurate* statistics.
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: "Privacy Activism"
|
||||
meta_title: "Guides and Tools for Privacy Activists"
|
||||
description: Privacy Guides' Activism section contains tools to support the community in its privacy advocacy and activism effort, both for individuals and organizations.
|
||||
hide:
|
||||
- toc
|
||||
- footer
|
||||
cover: activism/banner-activism.webp
|
||||
breadcrumbs: false
|
||||
cascade:
|
||||
type: docs
|
||||
---
|
||||
The **Guides and Tools for Privacy Activists** project from [*Privacy Guides*](../about/_index.md) offers a new way to empower the digital rights community.
|
||||
|
||||
This section contains information to help you become a better defender of privacy rights, both for individuals and organizations.
|
||||
|
||||
## We must fight for privacy rights collectively
|
||||
|
||||
Fighting to improve our privacy cannot *only* be a matter of individual protections.
|
||||
|
||||
When [regulations keep attacking](https://www.privacyguides.org/articles/2025/09/08/chat-control-must-be-stopped/) the tools and services we rely on to protect our personal information, when corporations [exploit our data](../wiki/basics/common-threats/index.md#surveillance-as-a-business-model) more aggressively every day, and when platforms exponentially [erode online pseudonymity](https://www.privacyguides.org/articles/2025/10/15/real-name-policies/), we must broaden our reach to fight for our rights.
|
||||
|
||||
==For privacy to become a valued and respected human right, we must work together== to defend privacy rights as a community.
|
||||
|
||||
This section will progressively grow with more tools to support the community in its privacy advocacy and activism effort. The Privacy Activist Toolbox and the DPA Directory are the first parts of this new development.
|
||||
|
||||
<div class="toolbox-button-grid" markdown>
|
||||
|
||||
[:fontawesome-solid-toolbox:{ .toolbox-button-icon } Privacy Activist Toolbox](toolbox/_index.md){ .toolbox-button .toolbox-bg }
|
||||
|
||||
[:fontawesome-solid-address-card:{ .toolbox-button-icon } DPA Directory](legal/dpa-directory.md){ .toolbox-button .dpadirectory-bg }
|
||||
|
||||
</div>
|
||||
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 6.9 KiB |