1
0
mirror of https://github.com/privacyguides/privacyguides.org.git synced 2025-07-02 17:42:39 +00:00

Compare commits

...

452 Commits

Author SHA1 Message Date
35dc235a9d Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-04-24 20:03:12 +08:00
6d34aa1f7d Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-04-24 19:57:37 +08:00
d988800738 Update mkdocs.en.yml
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-04-02 16:36:34 +08:00
090645b150 Update mkdocs.en.yml
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-04-02 16:35:10 +08:00
cb9d760c56 Update mkdocs-common.yml
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-04-02 16:23:05 +08:00
4a42d8e1fe Merge branch 'main' into main
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-04-02 16:21:40 +08:00
5820c4d945 add policy Prevent OneDrive from generating network traffic until the user signs in to OneDrive
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-04-02 15:47:35 +08:00
1372587017 Upgrade to Python 3.12 (#2468)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-04-01 00:39:12 +10:30
82ab189d36 Deploy releases to BunnyCDN (#2466) 2024-03-31 04:04:20 -05:00
139a206367 Fix language build environment variables (#2465) 2024-03-31 01:27:43 -05:00
4b92316774 Hebrew language build fix (#2464) 2024-03-31 00:49:48 -05:00
fc19f44c18 Use GitHub Actions instead of Netlify (#2462)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-30 23:55:44 -05:00
0b43cb1fc7 Fix GitHub README logo (#2463)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2024-03-30 22:51:07 -05:00
9a56bd46b1 Change link to icon on DNS provider table (#2457)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2024-03-31 14:18:42 +10:30
9169afa79a Revert "Ente Auth desktop apps on all platforms (#2453)"
This reverts commit 6aa14e8eb1.

Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-31 14:12:57 +10:30
6aa14e8eb1 Ente Auth desktop apps on all platforms (#2453)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2024-03-30 23:23:06 +10:30
f37e72084c Reorganize DNS recommendations (#2330)
Co-authored-by: Daniel Gray <dngray@privacyguides.org>
2024-03-30 20:20:29 +10:30
d050d27767 Remove "this section is new" admonitions (#2456)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2024-03-30 16:07:52 +10:30
e5d9d1d055 Remove Brave's Flatpak footnote (#2455)
Co-authored-by: redoomed1 <161974310+redoomed1@users.noreply.github.com>
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-30 15:58:40 +10:30
e8a1e5bfa0 Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-29 16:51:02 +08:00
d137e1acf3 Update copilot settings
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-29 15:44:48 +08:00
07efd74ca1 Correct Markdown syntax
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-29 14:57:50 +08:00
beff5eb145 Merge branch 'privacyguides:main' into main 2024-03-29 14:37:21 +08:00
e3e9faaeba Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-29 14:36:52 +08:00
3aa43c0e4e Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-29 14:23:07 +08:00
a31dcb6df8 Add Pull Request deployment workflow 2024-03-29 00:46:15 -05:00
525a2c1137 Update mkdocs-material-insiders (#2449) 2024-03-28 16:03:26 -05:00
00926206cc Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-28 11:17:25 +08:00
c64d5e6795 Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-27 16:57:14 +08:00
88724b7833 Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-27 11:18:23 +08:00
10e68cd44b Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-26 17:02:14 +08:00
adc97bc8b1 Merge branch 'privacyguides:main' into main 2024-03-25 17:01:08 +08:00
6bc7782a42 Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-25 17:00:38 +08:00
e42533fa1b Update windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-25 16:38:22 +08:00
c5bdbbcdcb Minor: add MacOS/Linux for Cake Wallet (#2441)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-25 02:09:23 +10:30
48abc1d42a Update VPN countries count (#2445)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-25 01:55:53 +10:30
f77fbc6a45 Bump crowdin/github-action from 1.19.0 to 1.20.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.19.0 to 1.20.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.19.0...v1.20.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 01:53:24 +10:30
01b3a7d48f Bump actions/cache from 4.0.1 to 4.0.2
Bumps [actions/cache](https://github.com/actions/cache) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4.0.1...v4.0.2)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-25 01:50:39 +10:30
792fc00b06 Unsandboxed apps in Mac app store (#2444)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-25 01:33:48 +10:30
0e07ccaf50 Create windows-overview.md
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-20 15:04:51 +08:00
ccb08456a2 Update mkdocs.en.yml
Signed-off-by: oppressor1761 <163018825+oppressor1761@users.noreply.github.com>
2024-03-20 11:10:54 +08:00
d022f53e6b Change team member card layout (#2403)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: hook <7744057+hook321@users.noreply.github.com>
Signed-off-by: blacklight447 <niek@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2024-03-17 14:29:04 +10:30
3b69c565a3 Randomize DNS table order (#2438)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-17 02:01:35 +10:30
2b8869882c Add Email Aliasing page (#2409)
Co-Authored-By: Jonah Aragon <jonah@triplebit.net>
Co-Authored-By: Daniel Gray <dngray@privacyguides.org>
2024-03-16 20:12:57 +10:30
xe3
bfa4b0f422 Clarification of NextDNS logging policy (#2434)
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-13 15:46:55 +10:30
3ad66a447f Remove admonition section from translation (#2436) 2024-03-13 15:28:48 +10:30
aaa843d272 Tidy links, and lint (#2435)
Tidies up a number of things:

- Outdated links that redirect
- Dead links
- Remove unnecessary parameters eg "en" and "en-US"
- Shortened amazon, apps.apple.com, reddit links
- Removed trailing /
- Remove www (except for PG assets)
- Optimize unoptimized SVGs and remove xml declarations
- Lint yaml, md files

Co-Authored-By: Daniel Gray <dngray@privacyguides.org>
2024-03-13 14:08:50 +10:30
d8627a1ad2 Update ente card (#2432)
- Add info about self-hosting
- Add audit from Fallible
- Change GitHub download link to https://github.com/ente-io/ente/releases

Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-10 15:10:17 +10:30
ae0800e8ec remove closing </details> tag (#2431)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-10 02:16:07 +10:30
df824ee0e3 Update Element organization link (#2428)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-10 01:12:57 +10:30
298c3cde2b Update Tor link in frontends (#2369)
Co-authored-by: Daniel Gray <dngray@privacyguides.org>
2024-03-07 20:22:25 +10:30
dd492b272a Update Brave cookie and move social media blocking (#2422)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-07 19:00:11 +10:30
67614c3e17 NextDNS logging is opt-out, not opt-in (#2426)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-07 16:14:45 +10:30
05e5832161 Convert KB pages HTML to admonitions (#2425)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-07 15:18:01 +10:30
0140f0ab7e Convert 4 pages to HTML admonitions (#2424)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-07 13:24:30 +10:30
b477409747 Bump actions/cache from 4.0.0 to 4.0.1
Bumps [actions/cache](https://github.com/actions/cache) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4.0.0...v4.0.1)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-05 16:15:43 +10:30
f60fcf4b2f Convert 6 pages to HTML admonitions (#2419)
- "DNS providers" page
- "Data redaction" page
- "2FA" page
- tools.md file
- "Tor" page
- "VPN providers page"

Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-05 16:13:45 +10:30
5b09c59a7c Fix Miniflux recommendation card (#2423)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-03-05 13:26:10 +10:30
6b7f2bca03 Fix typo in Frontends page criteria (#2418)
Signed-off-by: Jonah Aragon <jonah@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-29 20:33:29 +10:30
5d76e2ae0b Fix Netlify build error 2024-02-28 23:54:57 -06:00
df13d33a09 Open Collective Foundation dissolution (#2417)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-28 13:58:52 +10:30
c64814d41a Add editor config (#2416)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-27 20:41:19 +10:30
63270a3e8c Remove social media links (#2414)
Signed-off-by: Jonah Aragon <jonah@privacyguides.org>
Signed-off-by: blacklight447 <niek@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-27 12:25:43 +10:30
e388e84dc5 Convert Cryptocurrency to HTML admonitions (#2415)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-27 12:22:20 +10:30
b0aa86f8dc Update Thunderbird supported chat clients (#2412)
Signed-off-by: Jonah Aragon <jonah@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-21 22:53:35 +10:30
46b462ad72 Remove Nitter (#2410)
Signed-off-by: Jonah Aragon <jonah@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-21 22:04:53 +10:30
7011b007a0 Add Permissions-Policy HTTP header (#2408)
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-21 21:21:29 +10:30
a890fc47af Add Signal username information (#2079)
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: blacklight447 <niek@privacyguides.org>
2024-02-20 17:06:12 -06:00
3f0ba17dcc Bump crowdin/github-action from 1.18.0 to 1.19.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.18.0 to 1.19.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.18.0...v1.19.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-18 23:44:45 +10:30
f6f800d49f Convert File sharing/sync HTML admonitions (#2406)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-18 23:42:23 +10:30
97996b9397 Convert Mobile Browsers to HTML admonitions (#2405)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-18 23:39:34 +10:30
0d0c272a5d Mention video memory clearing on Tails (#2399)
Signed-off-by: Jonah Aragon <jonah@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-18 13:56:09 +10:30
546e728188 Rebranding 'Immutable Distributions' (#2402)
It seems like both distributions in the current 'immutable distributions' category are moving beyond the immutable branding.

Fedora:
> Thirdly, this nice branding term is also a more accurate way of talking about how rpm-ostree works. Fedora Atomic spins are not actually immutable. There are ways to get around the read-only aspects of the implementation even though it is much harder. The nature of the OS, where updates are only implemented when they successfully build and you can rollback or rebase between core host systems, is better described by atomicity than immutability. Atomic is also how many of the contributors who work on rpm-ostree prefer to talk about it! Rebranding provides an opportunity to change the language surrounding this technology.

Nix:
> NixOS also provides atomic updates;
(Directly from Privacy Guides)

It's a minor change, but I feel it'd be helpful for the community to be utilizing consistent terminology for different technologies being utilized.

Co-authored-by: Jonah Aragon <jonah@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-17 22:40:12 +10:30
8e3bd2589e Convert Encryption to HTML admonitions (#2400)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-11 15:00:21 +10:30
cd4181a7fc Fix fedora workstation logo 2024-02-11 13:17:13 +10:30
3f26dd3b27 Recommend Fedora Atomic Desktops (#2393)
Signed-off-by: Jonah Aragon <jonah@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-11 03:19:10 +10:30
8a25c48f57 Update Safari settings for iOS 17 (#2338)
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-11 01:34:22 +10:30
f098042357 Convert Desktop page to HTML admonitions (#2397)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-11 01:22:18 +10:30
f12573d40b Convert Search Engines to HTML admonitions (#2396)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-11 00:01:37 +10:30
2043e644c3 Change Nitter instances link in news agg (#2394)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2024-02-10 23:56:26 +10:30
ede201f76d Convert Desktop browser HTML admonitions (#2392)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-10 21:26:26 +10:30
96d857da21 Convert routers page to HTML admonitions (#2391)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-10 19:30:14 +10:30
73188e1a21 Convert Financial Services HTML admonition (#2390)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-10 19:28:05 +10:30
8ea30ebd7f Convert Cloud storage to HTML admonitions (#2389)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-10 19:23:05 +10:30
fe121cf0d5 Convert Calendars page to HTML admonitions (#2388)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-10 19:20:32 +10:30
7c0ff5824a Convert Android to HTML admontions (#2378)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2024-02-10 19:14:08 +10:30
a650d015fc Convert Email clients HTML admontions (#2385)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-10 19:09:31 +10:30
33aecf011a Convert News Aggregators HTML admonitions (#2376) 2024-02-10 18:49:48 +10:30
e756ae4b37 Bump crowdin/github-action from 1.16.1 to 1.18.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.16.1 to 1.18.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.16.1...v1.18.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-10 16:08:02 +10:30
f1e6db05b5 Remove Skiff Mail (#2398)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-02-10 16:05:33 +10:30
1634bea9d2 Fixed incorrect link for Stingle Photos (#2386)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2024-01-31 23:48:08 -06:00
01c19281f7 Clarify meaning of sentence in threat modeling guide (#2375)
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-01-31 23:41:19 -06:00
f1864a4062 Mention other Matrix clients exist (#2377) 2024-01-31 22:00:56 +10:30
a1523e3f81 Convert the Messengers page to HTML admonitions (#2383)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-01-31 21:45:21 +10:30
c89d1ed25f Fix Reddit RSS syntax (#2380)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-01-31 21:37:52 +10:30
667a207010 Stolen Data Protection in iOS 17.3 (#2373)
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-01-31 21:33:00 +10:30
b856a51785 Update Stealth Protocol VPN (#2371)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2024-01-31 21:31:03 +10:30
9d0a2de9a1 Bump crowdin/github-action from 1.16.0 to 1.16.1
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.16.0 to 1.16.1.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.16.0...v1.16.1)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-28 19:41:39 +10:30
e9cde5c75d Remove gfeeds unmaintained (#2374)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2024-01-28 19:10:19 +10:30
93081f84c7 Add NewsFlash (#2360)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-01-28 01:28:56 +10:30
e182583a17 Note Proton Calendar's source availability (#2365)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2024-01-22 07:10:25 +10:30
8167166eb9 Update README links (#2366)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-01-22 07:08:13 +10:30
772cd517cf Bump actions/cache from 3.3.2 to 4.0.0
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.2 to 4.0.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.3.2...v4.0.0)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 06:19:05 +10:30
2a4885ed39 Proton VPN Stealth availability (#2370)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2024-01-22 06:16:34 +10:30
7ebe767518 Use HTML for admonitions (#2367)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-01-15 15:26:57 -06:00
9e40a3ece5 Skiff Mail added WKD/OpenPGP support (#2353)
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-01-07 08:08:29 +10:30
084a0f9427 Add section on censorship circumvention (#2351)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Freddy <freddy@privacyguides.org>
2024-01-07 07:54:29 +10:30
fe127bed0f Bump crowdin/github-action from 1.15.2 to 1.16.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.15.2 to 1.16.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.15.2...v1.16.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-07 07:52:03 +10:30
fce4ad5a6b Update Tor VPN warning (#2362)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2024-01-07 07:50:14 +10:30
ee4ff2d41b Update license year (#2363)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2024-01-07 07:42:44 +10:30
54f37e7f53 Proton VPN has reduced set of countries on free plans (#2357)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-12-25 11:01:16 +10:30
xe3
9e247fcbe6 Reword wayland compositor mention (#2354)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-12-22 16:53:52 +10:30
019c9d46f9 Update server count for VPNs (#2356)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-12-22 16:48:49 +10:30
9d877250f9 Fix typo JS requirment Frontends page (#2352) 2023-12-21 05:05:21 +10:30
ee1c13db4c Bump actions/upload-pages-artifact from 2 to 3
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-20 04:14:57 +00:00
bb04a71b59 Discuss other variants Fedora immutable desktops (#2350)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2023-12-18 19:00:18 +10:30
60db942814 Bump actions/download-artifact from 3 to 4
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-16 15:01:55 +10:30
6c771e2ea8 Bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 04:13:12 +00:00
8b7a0e3233 Forgetful browsing recommendation - Brave (#2344)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2023-12-10 20:02:14 +10:30
b7f20342f2 Bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-09 19:08:33 +10:30
efcd5159c8 Bump actions/configure-pages from 3 to 4
Bumps [actions/configure-pages](https://github.com/actions/configure-pages) from 3 to 4.
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](https://github.com/actions/configure-pages/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/configure-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-09 17:47:54 +10:30
aca6b565a7 Include NitroPhone global shipping under the Pixel recommendation (#2345) 2023-12-07 20:32:23 +00:00
5808953199 Add uBlock Origin Lite (#2342) 2023-12-07 10:33:36 +00:00
dc054d91e0 Update styling to fix margins on mobile (#2341)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dng@disroot.org>
2023-12-02 17:19:06 +10:30
2fbc674986 Fix dead links (#2337)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-11-28 04:41:08 +10:30
239ac0d9e9 Remove web-based encryption recommendation (#2339)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-11-28 04:37:28 +10:30
55dd7465d2 Added Proton Drive macOS download (#2340)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-11-28 04:34:44 +10:30
cf96d55027 Clarify Notesnook encryption (#2332)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-11-19 18:36:05 +10:30
a896a1a306 AdGuard supports DoQ (#2336)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-11-19 18:32:30 +10:30
b7f0b672a2 AdGuard DNS supports ECS as of v0.3.1 (#2334)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-11-19 17:35:09 +10:30
7004d344ac CoC updated grammar and punctuation (#2324)
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-11-19 14:00:42 +10:30
461ac8f224 MAT2 Nautilus extension deprecated (#2333)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-11-18 23:14:18 +10:30
c8dc59c134 Bump crowdin/github-action from 1.14.1 to 1.15.2
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.14.1 to 1.15.2.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.14.1...v1.15.2)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-17 04:47:42 +00:00
f8570a4c6a Clarify data breach risk with OAuth (#2326)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-11-14 02:03:22 +10:30
9d285e3094 Clarify Google Play Services permissions (#2328) 2023-11-13 11:59:53 +00:00
abc22993cb Tuta now supports subfolders (#2329) 2023-11-13 11:51:55 +00:00
e56081202d Add Photo Management Recommendations (#2102)
Co-authored-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-11-12 18:22:54 -06:00
6da9b15464 Clarify and modernize VPN and Tor advice (#2322)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-11-12 21:33:42 +10:30
d5a31c88bb Add device integrity/verification tools (#2315)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-11-12 21:30:56 +10:30
d9ff08381f Replace "Tutanota" with "Tuta" (#2325) 2023-11-08 10:11:05 +00:00
e6149a97d9 Bump crowdin/github-action from 1.14.0 to 1.14.1
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.14.0 to 1.14.1.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.14.0...v1.14.1)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 04:25:30 +00:00
b69edfefd6 Recommend F-Droid Basic over Neo Store (#2293)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: blacklight447 <github.ef27z@simplelogin.com>
2023-11-01 13:39:32 -05:00
d419ac9432 Remove i18n link from README.md (#2319)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-11-01 19:23:24 +10:30
708b1917a7 Bump crowdin/github-action from 1.13.1 to 1.14.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.13.1 to 1.14.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.13.1...v1.14.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-31 07:51:54 +00:00
741fb9d904 Update and Add URLs (#2321)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-10-31 18:18:51 +10:30
05228b4db3 Link to code.privacyguides.dev archive (#2316) 2023-10-26 11:19:16 +01:00
aa9fed4eac Add warning about Brave's "referral code" system (#2271)
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: blacklight447 <github.ef27z@simplelogin.com>
2023-10-24 19:58:42 +10:30
3db638b937 Update pixel updates to 7 years (#2314)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-10-24 19:57:16 +10:30
43b346a5ff Add "share" section (#2300)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: blacklight447 <github.ef27z@simplelogin.com>
2023-10-24 19:57:15 +10:30
de216b9cde Open-source hyphens fix (#2295)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2023-10-24 19:57:15 +10:30
add980a655 Add "ente Auth" TOTP app (#2310)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-10-24 19:57:15 +10:30
MMR
58d6e4e044 Recommend Max Protection DoH in Firefox (#2292)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-10-24 19:57:15 +10:30
366e44a940 Add Proton Calendar App Store link (#2312)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-10-24 19:56:40 +10:30
b3a26717cd Improve SSH commit signing instructions (#2265)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2023-10-13 22:28:20 -05:00
b0b6434f28 Remove Plausible analytics (#2305) 2023-10-11 22:42:29 -05:00
42bce85c7f Use WebP for cover images (#2301) 2023-10-11 11:23:08 -05:00
aa54b66a03 MAC address randomization update (#2303) 2023-10-11 11:18:48 -05:00
122646d0f8 Add more information about Bitlocker (#2302)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-10-11 21:03:19 +10:30
9bd5e84d32 Re-add Onion Browser (#2299) 2023-10-10 15:18:36 +01:00
025a07e658 Fix indent in email marketing criteria (#2298) 2023-10-10 07:49:26 +02:00
4621a11016 Fix broken link common misconceptions (#2296)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-10-09 23:08:36 +10:30
46d2d50842 Add note about security audit to addy.io (#2297)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-10-09 22:28:32 +10:30
3dbc2f0083 Recommend Obtainium (#2294) 2023-10-09 10:38:12 +01:00
06fc5e9f1d Add more information about WKD (#2291) 2023-10-06 12:39:42 -05:00
880bfd3cb2 Provide example of QNAME minimization (#2290) 2023-10-06 12:38:49 -05:00
f37cd9e7f2 Additional SimpleX downloads (#2283)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: blacklight447 <github.ef27z@simplelogin.com>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-10-05 20:00:27 +10:30
78eb8f8eac Update Tutanota aliases (#2287)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-10-05 16:11:26 +10:30
0a83385de0 Update dependencies (#2289) 2023-10-04 16:45:24 -05:00
a85690b306 Startpage, mention Bing as source (#2281) 2023-09-28 18:45:22 +09:30
38dcfbb3e1 Remove bogus link (#2282)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-09-26 04:57:49 +09:30
95516f6344 Update feeder repo url (#2280) 2023-09-23 13:42:56 +09:30
edae556a2a Bump crowdin/github-action from 1.13.0 to 1.13.1
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.13.0 to 1.13.1.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.13.0...v1.13.1)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 13:39:05 +09:30
d52e533fa2 Update Proton Calendar information (#2278)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-09-21 00:27:57 +09:30
e7686c1cc1 Update note about MySudo's iOS exclusivity (#2277)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: Freddy <freddy@privacyguides.org>
2023-09-18 15:16:49 +09:30
d94da5094f Bump crowdin/github-action from 1.12.0 to 1.13.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.12.0 to 1.13.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.12.0...v1.13.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-13 04:39:11 +00:00
4caef8ef1e Add Proton Drive Windows (#2275)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-09-12 16:23:36 +09:30
42de2565ba Bump actions/cache from 3.3.1 to 3.3.2
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.3.1...v3.3.2)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-10 20:12:17 +09:30
5d6992bf76 Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-05 04:23:13 +00:00
4867ca9b79 Make list item clickable (#2269)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
2023-08-31 19:30:50 +09:30
19119a4c03 Update team member info (#2270)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-08-31 15:38:23 +09:30
e619ccaf28 AnonAddy rebranded as addy.io (#2263)
https://addy.io/blog/anonaddy-has-rebranded-as-addy-io/

Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-08-22 13:38:04 +09:30
e44e24d77f Bump modules/mkdocs-material from 8fd8ceb to 6b4bfc2
Bumps [modules/mkdocs-material](https://github.com/privacyguides/mkdocs-material-insiders) from `8fd8ceb` to `6b4bfc2`.
- [Commits](8fd8ceb5b1...6b4bfc21f8)

---
updated-dependencies:
- dependency-name: modules/mkdocs-material
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-04 04:29:09 +00:00
465e499db1 Update Qubes-OS "Qube" instead of VM (#2257)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-08-02 04:49:01 +09:30
e277417ab2 Fix Fedora links (#2256)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-30 20:21:30 +09:30
659a03be58 Update dependencies (#2248) 2023-07-29 10:24:55 -05:00
f69e1ad6af Update countries VPN providers (#2255) 2023-07-28 16:02:39 +09:30
94599e568d Place Brave's Web3 settings on multiple lines (#2253)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-28 15:52:50 +09:30
d653735a3b Correction HTTPS instruction Brave Android (#2246)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-28 14:29:12 +09:30
ddc800d6e4 Bump modules/mkdocs-material from afb31ad to d2033e5
Bumps [modules/mkdocs-material](https://github.com/privacyguides/mkdocs-material-insiders) from `afb31ad` to `d2033e5`.
- [Commits](afb31add19...d2033e5aee)

---
updated-dependencies:
- dependency-name: modules/mkdocs-material
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-28 04:14:00 +00:00
83ea0d0774 Disable cards in offline build 2023-07-27 16:03:27 -05:00
b6d8df1239 Remove Raivo OTP (#2251) 2023-07-27 15:45:53 -05:00
821f35eb37 Update Brave HTTPS setting (#2247)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-24 15:27:07 +02:00
2d0c5ea9a7 Clean up OS overview pages (#2235) 2023-07-21 02:00:14 -05:00
abaca70f2f Add new custom card layouts (#2245) 2023-07-20 16:48:57 -05:00
4eae08712d Update links on Privacy Tools page.md (#2244)
Signed-off-by: datoshkr <79659024+datoshkr@users.noreply.github.com>
2023-07-20 13:03:16 -05:00
af3f279d29 Remove pride background cover
Brings back missing changes from e906eb1d3fa52284ddcdded0c9c561fb21775a46
2023-07-20 11:22:17 -05:00
e40f3979b9 Custom domain on Skiff Mail's free plan (#2242)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-20 11:15:27 -05:00
3f48629ed3 Fix typo in macos page (#2243) 2023-07-20 11:15:00 -05:00
9fa7184a24 Remove WKD (#2240)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-19 11:42:12 +09:30
8c8c4e1009 Remove video streaming section (#2239)
Co-authored-by: Daniel Gray <dngray@privacyguides.org>
2023-07-16 13:35:38 -05:00
6f9cf58da1 Enable Russian Translation (#2225) 2023-07-17 03:49:18 +09:30
51230eb68f Enable Chinese Traditional Translation (#2193) 2023-07-17 03:11:28 +09:30
3a52e6986b HOTP/TOTP typo (#2237)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-16 03:18:59 +09:30
966626d9e2 Add macOS overview (#2150)
Signed-off-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
Signed-off-by: Jonah Aragon <github@aragon.science>
Co-authored-by: noClaps <github@zerolimits.dev>
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
Co-authored-by: quackerex <41659980+quackerex@users.noreply.github.com>
Co-authored-by: lavndör <nibbles.09-delta@icloud.com>
2023-07-14 17:17:33 -05:00
5a04889a9e Re-write fullwidth part (#2236) 2023-07-13 21:12:18 +09:30
813936b51b Bump actions/upload-pages-artifact from 1 to 2
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 1 to 2.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v1...v2)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-13 07:02:53 +00:00
cf0d62ef7c Add onion-location header (#2234) 2023-07-12 16:22:50 -05:00
1c9a1a805d Disable Dependabot python updates 2023-07-12 16:22:22 -05:00
1502f1b36c Revert pride month logos (#2223) 2023-07-11 14:32:12 +09:30
a5327ff4d1 Remove Cake Pay (#2231)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-11 14:30:12 +09:30
911c0b5f24 Translation page (#2224)
Co-authored-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
Signed-off-by: Daniel Nathan Gray <dng@disroot.org>
2023-07-11 14:26:48 +09:30
e90fd2377d Add Skiff Mail (#2108)
Co-Authored-By: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
Co-Authored-By: Daniel Nathan Gray <48640805+dngray@users.noreply.github.com>
2023-07-10 12:26:25 -05:00
1fe5320bbe docs/desktop.md: fix broken link (#2229)
Signed-off-by: nopeitsnothing <no@anonymousplanet.org>
2023-07-09 09:23:13 +02:00
45ff07147d Fix pronoun in Youtube RSS feed (#2228)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-08 04:26:26 +09:30
509397d6e7 Mention how to get channel ID (#2221) 2023-07-07 22:19:09 +09:30
8809550e58 Fix Phoronix links (#2227) 2023-07-07 22:05:58 +09:30
61ad5103fb Fix zram link (#2226) 2023-07-07 21:59:56 +09:30
7429f0b8b1 Bump pillow from 9.5.0 to 10.0.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.5.0 to 10.0.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.5.0...10.0.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 04:36:35 +00:00
dcd5cc05dd Remove old BSD links (#2218)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-07-01 05:42:17 +09:30
de75a19b2c Fix inaccurate info about Safari SIP (#2217) 2023-06-30 09:15:44 +02:00
e3beac9e01 IVPN announces removal of port forwarding (#2215) 2023-06-30 06:30:15 +09:30
794591bbd5 Fix typo on mobile browser page (#2214) 2023-06-29 19:38:13 +09:30
2029ecbb8d Normalize on "Forward Secrecy" (#2212) 2023-06-28 15:36:49 +09:30
f55467fc01 Change Seahorse link (#2211) 2023-06-23 20:48:27 +02:00
e9a7b27cf2 Fix Italian flag icon (#2208) 2023-06-21 19:11:51 -05:00
278c462466 Download branch translations from GitHub 2023-06-21 12:21:44 -05:00
96da882689 Add static 404 page (#2199)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
2023-06-19 13:00:08 -05:00
1487ad6dca Fix typo in Privacy Matters page (#2200)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-06-19 17:45:53 +09:30
522c5e92ef Fix links under File Sharing on tools.md (#2201)
* The Syncthing link was #syncthing instead of #syncthing-p2p
* The Nextcloud link was to productivity instead of file sharing

Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
2023-06-19 17:41:42 +09:30
6849228388 Bump modules/mkdocs-material from 72c3d0d to 2ac6640
Bumps [modules/mkdocs-material](https://github.com/privacyguides/mkdocs-material-insiders) from `72c3d0d` to `2ac6640`.
- [Commits](72c3d0d5fe...2ac6640830)

---
updated-dependencies:
- dependency-name: modules/mkdocs-material
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 07:08:16 +00:00
472ab56d50 Bump crowdin/github-action from 1.10.0 to 1.11.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.10.0...v1.11.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 04:58:39 +00:00
d8c8a631ee Recommend Notesnook (#2176)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
Signed-off-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
2023-06-19 11:13:55 +09:30
c23c06c11b Fix indentation of Why Privacy Matters article (#2192) 2023-06-19 10:45:58 +09:30
2ddb046a4b Fix inaccurate port forwarding information for ProtonVPN (#2191)
Signed-off-by: Jonah Aragon <github@aragon.science>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-06-17 01:31:18 +09:30
1a8fda242e Bump crowdin/github-action from 1.9.0 to 1.10.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-14 04:58:35 +00:00
92d5d9d1ac Fix Inaccurate Info in Safari Card (#2194) 2023-06-12 13:00:46 -05:00
e356ae9212 Enable Italian Translation (#2184)
Signed-off-by: Jonah Aragon <github@aragon.science>
2023-06-10 16:57:39 +09:30
ef7bd365cc Fix broken link to Shelter description (#2190) 2023-06-08 17:15:00 +02:00
8c69fa78d0 Fix Netnewswire privacy policy link (#2186)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-06-07 21:52:32 +09:30
87b1377e85 Fix broken link on cryptocurrency page (#2188)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-06-07 21:10:01 +09:30
94da846afc Fix broken donation link Divest OS (#2185)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-06-07 21:07:26 +09:30
42c1611420 Make digital legacy feature show up (#2181) 2023-06-05 16:27:08 +09:30
caae79bea2 Fix Standard Notes Security Audit Link (#2183)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-06-05 16:24:16 +09:30
fde6019469 Bump crowdin/github-action from 1.8.1 to 1.9.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.8.1 to 1.9.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.8.1...v1.9.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 14:02:44 +09:30
cc077e63c8 Add HelloTux link to support page (#2182) 2023-06-02 19:17:14 -05:00
ff60d624fc Rainbow logo 2023-06-02 19:01:34 -05:00
f3144efeb2 Mullvad dropped port forwarding (#2175) 2023-05-31 08:01:08 -05:00
0faf548111 New social card layout (#2177) 2023-05-30 17:00:01 -05:00
60c7a0970f Add criteria for pastebin services (#2165) 2023-05-30 15:38:42 +01:00
3daeea597d Deprioritize OS recommendations (#2174)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-05-28 20:01:02 +09:30
972df273e1 Bump modules/mkdocs-material from fe72fa9 to a430e2b
Bumps [modules/mkdocs-material](https://github.com/privacyguides/mkdocs-material-insiders) from `fe72fa9` to `a430e2b`.
- [Commits](fe72fa9d66...a430e2b770)

---
updated-dependencies:
- dependency-name: modules/mkdocs-material
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-28 19:59:21 +09:30
b8b62c18df Remove prohibition on US-based email providers
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2023-05-28 18:34:41 +09:30
e09e35dfdf Update dependencies (#2171) 2023-05-26 14:36:49 -05:00
90a96896a7 Bump modules/mkdocs-material from fe72fa9 to a430e2b
Bumps [modules/mkdocs-material](https://github.com/privacyguides/mkdocs-material-insiders) from `fe72fa9` to `a430e2b`.
- [Commits](fe72fa9d66...a430e2b770)

---
updated-dependencies:
- dependency-name: modules/mkdocs-material
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 05:18:08 +00:00
8b09671052 Fix security.txt (#2170) 2023-05-24 20:42:42 -05:00
f439e0be46 Remove Startmail, as it's not zero-knowledge (#2166) 2023-05-24 18:40:05 -05:00
7220531861 Remove mention of Brave wallet setting (#2164)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-05-22 19:39:54 +09:30
72166bb3f1 Bump crowdin/github-action from 1.8.0 to 1.8.1
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 14:51:01 +09:30
2998c52d7c Bump pymdown-extensions from 9.11 to 10.0
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 9.11 to 10.0.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/9.11...10.0)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 14:50:04 +09:30
c19c1599cb Remove Librarian (#2159) 2023-05-16 04:26:50 -05:00
d47c737a73 Update Tresorit jurisdiction (#2158)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-05-10 21:06:44 +09:30
5f45dd9147 Add DoQ to NextDNS (#2154)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-05-10 21:04:12 +09:30
57056566b4 Bump crowdin/github-action from 1.7.1 to 1.8.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.7.1 to 1.8.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.7.1...v1.8.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-10 19:45:06 +09:30
42fe93a194 Clean up tor page (#2142)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-05-10 19:43:07 +09:30
b42e62e822 Say OAuth instead of SSO (#2148)
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2023-05-04 13:04:36 -04:00
6cdd3ed34b Remove redundant statements in frontends page (#2144) 2023-05-04 11:51:02 -05:00
93462d6ea7 Why Privacy Matters (#2153) 2023-05-01 09:34:19 -05:00
3016dc4bc8 Update NetNewsWire icon (#2152)
Signed-off-by: BionicBison05 <93722725+BionicBison05@users.noreply.github.com>
2023-05-01 13:10:38 +02:00
ef990bf0f2 Fix 1password privacy policy link (#2151) 2023-04-30 12:38:27 -05:00
ad94d0ebe9 Add mention of Apple Mail's Protect Mail Activity feature (#2145)
Signed-off-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
Co-authored-by: quackerex <41659980+quackerex@users.noreply.github.com>
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
2023-04-30 12:24:03 -05:00
186e7a2b47 add email niek (#2147) 2023-04-29 09:34:04 +02:00
fa2ed271ef Remove mention of built-in Twitter support for Netnewswire (#2143) 2023-04-27 13:34:17 -05:00
97ed4c7279 Add two missed asterisks for Bold (#2140)
Signed-off-by: datoshkr <79659024+datoshkr@users.noreply.github.com>
2023-04-25 01:51:09 -05:00
65a4e306eb Remove Play Store link for shelter (#2141)
Signed-off-by: noClaps <github@zerolimits.dev>
2023-04-25 01:50:51 -05:00
7de8b90cb0 Add Accrescent & Play Store Link For IVPN (#2139)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-04-21 19:55:14 +09:30
c5d14debd1 Update financial-services.md (#2136)
Signed-off-by: ItsDonny <96709134+ItsDonny@users.noreply.github.com>
2023-04-19 19:06:59 -05:00
a2b1f8adf9 Change inaccurate wording for DNS providers (#2132)
Co-authored-by: Jonah Aragon <github@aragon.science>
2023-04-18 20:55:38 -05:00
ca6236da58 Add cover images (#2137) 2023-04-17 18:22:14 -05:00
a5c761c237 Add RSS Metadata 2023-04-17 13:15:42 -05:00
86f8fda8a5 Remove UK from CoinCards countries (#2131)
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
2023-04-15 18:42:00 -05:00
fe0f0d1ce3 Disable Crowdin on Netlify PR Previews (#2130) 2023-04-14 16:40:38 -05:00
18f76a9068 Fix typo of YubiKey, YubiCloud (#2128) 2023-04-14 16:16:53 -05:00
e41d5eae11 Clarify Auditor's supported devices (#2123) 2023-04-14 16:06:05 -05:00
d03114fd33 Netlify production releases 2023-04-14 15:58:01 -05:00
b1fcc23d0f More descriptive title tags (#2129) 2023-04-14 14:29:16 -05:00
3d2d6fb726 Add translation notice to footer (#2127) 2023-04-13 09:45:11 -05:00
32969c9fc5 Fix inconsistency/caps (#2126) 2023-04-12 23:59:47 +09:30
31f3319951 Add Spanish translation (#2111) 2023-04-12 09:24:56 -05:00
70366045d5 Browser configuration updates (#2124)
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
2023-04-12 09:29:45 +02:00
8c438b8183 Fix missing commas before and missing dots after 'etc' (#2125)
Signed-off-by: ticklemyIP <126688461+ticklemyIP@users.noreply.github.com>
2023-04-12 09:24:05 +02:00
2df3405598 Download translations dynamically (#2120) 2023-04-11 12:47:54 -05:00
ebfb448ed2 Add Mullvad Browser (#2109) 2023-04-11 09:56:12 -05:00
fc12732e93 Don't recommend Orbot IsolateDestAddr (#2121)
Signed-off-by: Freddy <freddy@privacyguides.org>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-04-11 22:10:24 +09:30
0e457065a0 Clarify source availability in MFA criteria (#2113) 2023-04-10 17:53:11 -05:00
b074ed9401 Fix broken links (#2112)
Co-Authored-By: jermanuts <109705802+jermanuts@users.noreply.github.com>
2023-04-07 13:35:29 -05:00
b4804752e1 Brave corrections, additions and fixes (#2115) 2023-04-07 13:13:07 -05:00
4c805daa7e Update dependencies 2023-04-06 15:53:16 -05:00
416f468a20 Bump pillow from 9.4.0 to 9.5.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.4.0 to 9.5.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.4.0...9.5.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-05 12:23:43 +00:00
1f6dfc4e6f Bump mkdocs-git-committers-plugin-2 from 1.1.1 to 1.1.2
Bumps [mkdocs-git-committers-plugin-2](https://github.com/ojacques/mkdocs-git-committers-plugin-2) from 1.1.1 to 1.1.2.
- [Release notes](https://github.com/ojacques/mkdocs-git-committers-plugin-2/releases)
- [Commits](https://github.com/ojacques/mkdocs-git-committers-plugin-2/compare/1.1.1...1.1.2)

---
updated-dependencies:
- dependency-name: mkdocs-git-committers-plugin-2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-05 21:49:49 +09:30
4847c25066 New Crowdin Translations (#2110)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2023-04-04 21:38:20 -05:00
6582156917 Fix Crowdin YAML Bug (#2106) 2023-04-04 21:26:29 -05:00
e29ed5de35 Revert "Official banner"
This reverts commit 09b4799dbf.
2023-04-01 22:30:04 -05:00
09b4799dbf Official banner 2023-03-31 20:17:25 -05:00
d1c4abcd4f Add some structured data entities (#2106) 2023-03-29 14:27:39 -05:00
77c073c602 Deploy preview warning (#2104) 2023-03-27 10:11:11 -05:00
d25b4021d5 Link to NPO Radio 1 interview (#2103) 2023-03-27 09:51:11 -05:00
37632d93ec Update website metadata (#2098) 2023-03-23 06:39:01 +00:00
321eccb7d6 Remove Librem Key Recommendation (#2101) 2023-03-23 01:30:18 -05:00
aefa3e75c4 Recommend Tresorit (#2100) 2023-03-22 13:34:49 -05:00
8fc748109d MIT License source code (#2096) 2023-03-21 17:21:51 -05:00
7b75ad0514 Use GitHub issue form syntax (#2095) 2023-03-21 17:15:55 -05:00
a88689fb43 Add dependency version locks (#2094) 2023-03-21 15:23:17 -05:00
3f5bbbd492 Update Dependabot configuration 2023-03-21 11:05:52 -05:00
3499498be7 Add Onion Service path overview diagram (#2089) 2023-03-20 14:53:09 +10:30
1bde6c2920 Bump crowdin/github-action from 1.7.0 to 1.7.1
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.7.0 to 1.7.1.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.7.0...v1.7.1)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 14:51:18 +10:30
14b2f975e2 Updated Proton Mail, U2F/FIDO2 support (#2092)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-03-20 14:49:59 +10:30
29658d1d98 New Crowdin Translations (#2088)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-03-14 16:54:06 +10:30
3e7d6c6ac2 Bump actions/cache from 3.3.0 to 3.3.1
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.3.0...v3.3.1)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-14 04:59:12 +00:00
60f0a8df9f Create Kiwix/ZIM Download 2023-03-11 19:37:24 -06:00
9112720140 Enable offline builds (#2087) 2023-03-11 19:02:09 -06:00
c99bdda06f Add abbreviation KYC (#2086) 2023-03-11 18:53:28 -06:00
3849c523ef Remove digital legacy heading (#2081) 2023-03-11 18:52:54 -06:00
9e35e2ef8a New Crowdin Translations (#2074)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-03-12 01:27:24 +10:30
5bad28ff6d Add page descriptions to docs (#2075)
Co-authored-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
Signed-off-by: Jonah Aragon <github@aragon.science>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-03-11 02:40:11 +10:30
3955114451 Fix merge conflict mistakes (#2080)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-03-11 02:33:35 +10:30
d2316dd782 Bump actions/cache from 3.2.6 to 3.3.0
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.6 to 3.3.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.6...v3.3.0)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-11 02:20:46 +10:30
99618de520 Proton Drive is now open source (#2083)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-03-11 02:19:31 +10:30
5c41b3c2f2 Redesign larger pages (#2078)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-03-09 16:52:16 +10:30
ac8c5a30d1 Add private payment methods overview (#1068) 2023-03-09 15:13:09 +10:30
45bfe22c61 Fix theme switcher (#2077)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-03-08 14:27:20 +10:30
65db9d3fee Revert some changes from cc69609 (#2073) 2023-03-06 13:49:03 -06:00
f3f092d1a3 Add breadcrumb metadata (#2072) 2023-03-05 14:52:02 -06:00
35c95c029c Improve our About page (#2071) 2023-03-03 12:18:38 -06:00
7fb07925ec SEO fixes (#2070) 2023-03-03 09:27:46 -06:00
dc4199d7c4 Expand Permissions on Android (#2030) 2023-03-03 19:15:48 +10:30
fda35b5f70 Use logo for social card (#2069) 2023-03-02 14:24:16 -06:00
9e16a63caa New Crowdin translations by GitHub Action (#2065) 2023-03-03 04:05:27 +10:30
47377df8da Fix external resource errors (#2066) 2023-03-02 11:01:48 -06:00
28c576110c Enable social card generation (#2068) 2023-03-01 21:28:32 -06:00
d63dc04aff Enable asset optimization (#2061) 2023-03-01 13:05:14 -06:00
e336699480 Use flag for language selector icon (#2062) 2023-03-01 13:04:52 -06:00
aaec10b83e Remove mkdocs.en.yml from Crowdin (#2064) 2023-03-01 12:54:19 -06:00
9cbebf239b Fix #1930 (#2060) 2023-03-01 08:59:44 -06:00
97350b6245 GitHub Pages fix 2023-03-01 07:56:07 -06:00
f0621e257b New Crowdin Translations (#2058)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2023-03-01 07:16:04 +01:00
1ac4dd75c7 Download Translations from Crowdin (#2054) 2023-02-28 21:12:51 -06:00
4c8cd3f295 Stop using i18n plugin (#2054) 2023-02-28 20:11:33 -06:00
bfaba1cd11 Add biometrics note (#2055)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-03-01 12:38:44 +10:30
66efe4a27f Adjust mobile width issues (#2051) 2023-02-28 08:43:33 -06:00
657e977074 F-Droid consistency (#2052) 2023-02-28 20:56:30 +10:30
f516235dd4 Handle standard language codes properly (#2050) 2023-02-27 21:52:36 -06:00
cc696093ce Add abbreviations to Crowdin (#2049) 2023-02-27 18:56:23 -06:00
4da25bc39a Skip untranslated files 2023-02-27 17:01:31 -06:00
6245ed8581 Update dependencies (#2048) 2023-02-27 16:27:01 -06:00
d9b9092ac3 Disable translation uploads 2023-02-27 14:14:51 -06:00
7a6fc90114 New Crowdin translations by GitHub Action (#2039) 2023-02-27 14:05:05 -06:00
ef7cf862d4 [ImgBot] Optimize images (#2043)
Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2023-02-27 13:58:35 -06:00
f396afa15f Support l10n of config strings (#2045) 2023-02-27 13:54:55 -06:00
227609f768 Use Invidious for Embeds (#2046) 2023-02-27 13:34:27 -06:00
425914a33d Add french specific GDPR mention (#2040)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-28 03:43:21 +10:30
131f91ad56 New Crowdin translations by GitHub Action (#2038) 2023-02-28 00:16:34 +10:30
9b008f2b76 Add FR specific, multi languages context (#2035)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-27 23:59:05 +10:30
2a4947bd72 Fix MFA consistency in criteria (#2034) 2023-02-27 19:05:39 +10:30
829883c450 Use consistent language across articles for open-source (#2033) 2023-02-27 19:02:22 +10:30
e52286a1b0 New Crowdin translations by GitHub Action (#2032)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-27 15:25:13 +10:30
2a85daa3fa Fix Crowdin Download Workflow
Signed-off-by: Jonah Aragon <jonah@triplebit.net>
2023-02-26 21:30:15 -06:00
052671197b Create 404 Page (#2031) 2023-02-26 12:37:19 -06:00
f6ca66bbb4 Enable Hebrew, French, Dutch (#2022)
add french translations for navigation categories (#2028)

Co-Authored-By: Paul Verbeke 🇫🇷 <github.f9qel@simplelogin.com>
Co-Authored-By: Daniel Gray <dngray@privacyguides.org>
Co-Authored-By: Niek de Wilde 🇳🇱 <niek@privacyguides.org>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-Authored-By: fireinme 🇮🇱 <126413261+freeopensourc@users.noreply.github.com>
2023-02-26 11:53:34 -06:00
d03f91b1c0 Remove nerd term "use case", fix typos (#2029) 2023-02-25 23:58:23 -06:00
74928bb4c7 Fix mistakes in various files (#2027) 2023-02-25 16:31:15 +10:30
7b6a158e4d Add Crowdin Translations (#2026)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Jonah Aragon <jonah@triplebit.net>
2023-02-24 16:47:54 -06:00
2150385184 Update GitHub Workflows (#2023) 2023-02-24 16:39:07 -06:00
561f6a7463 Configure HTTP Headers (#2021) 2023-02-24 11:12:00 -06:00
23b7effac9 Fix Black Line on Brave (#2018)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-22 21:14:25 +10:30
1cd29c6972 Bump actions/cache from 3.2.5 to 3.2.6
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.5...v3.2.6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-22 04:15:52 +00:00
ebf28c2b35 Fix grammar on LibreTube entry (#2016)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-22 04:21:35 +10:30
3498602fdd Fix typo in frontends page (#2017)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-22 04:18:27 +10:30
7c6ebc5ebb Add LibreTube Logo (#2001)
Co-authored-by: Jonah Aragon <github@aragon.science>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-20 14:00:00 +10:30
d011fe716e Warning about k-9 reply mailing list (#2012) 2023-02-20 13:45:36 +10:30
428121c0c7 Clarify PGP on Apple Mail (#2011)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-19 00:54:32 +10:30
3361de1705 Remove ExifCleaner (#2000) 2023-02-17 08:15:22 -06:00
242894c291 Downrank messengers without PFS (#1999)
Co-Authored-By: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
2023-02-16 15:24:48 -06:00
d67dcaea11 Define criteria on all pages (#1980) 2023-02-16 10:06:49 -06:00
e901d0db22 Update Fedora description (fs-verity) (#1997)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-17 01:20:42 +10:30
815739b7bc Bump crowdin/github-action from 1.6.0 to 1.7.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-16 04:58:09 +00:00
1b9d8f9c14 fix typo in Email Services (#1995)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-16 14:26:40 +10:30
70a6cda9d5 Consistent references to "Linux" (#1993) 2023-02-15 14:30:53 -06:00
e6f6498908 Mention linux updates (#1984)
Co-Authored-By: Jonah Aragon <jonah@triplebit.net>
Co-Authored-By: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
2023-02-15 13:29:48 -06:00
687a36e7db Disable Firefox Accounts telemetry (#1992)
Co-Authored-By: Jonah Aragon <jonah@triplebit.net>
2023-02-15 13:27:35 -06:00
94fa083700 Other uBO lists (#1986) 2023-02-15 08:05:31 -06:00
752db84b86 Correct dead link in DoH description (#1985) 2023-02-15 08:03:21 -06:00
d5a732e08c Improve email criteria (#1982) 2023-02-15 07:55:51 -06:00
2746861567 Remove Microsoft Office suggestion (#1979) 2023-02-15 07:51:23 -06:00
f4f28ce821 Remove incorrect information about Tutanota (#1981) 2023-02-15 07:50:07 -06:00
b0ce8cea24 Adds Yattee to "Frontends" (#1955)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-15 02:39:21 +10:30
43cdf87ad3 Update forum domain (#1976) 2023-02-14 09:40:59 -06:00
9782ddf60f Fix typos in Android and Email Services (#1974)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-15 01:57:45 +10:30
8ffa8207ff Move Cryptee to Notebooks section (#1975)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-15 01:47:03 +10:30
ff30001aff Fix admonitions (#1973) 2023-02-13 11:13:59 -06:00
145e0af811 Fix typo Linux overview (#1971)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-12 22:49:53 +10:30
e91f63045d Fix Briar id in Privacy Tools page (#1970)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-12 22:42:24 +10:30
790293b792 Bump actions/cache from 3.2.4 to 3.2.5
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.4...v3.2.5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-10 16:07:50 +00:00
d4f1195bb3 Disable Dependabot for Python dependencies (#1968) 2023-02-11 02:21:52 +10:30
e4d89b0894 Update mkdocs-material (#1967) 2023-02-11 02:20:51 +10:30
a9a7864889 Mention Proton's letter of attestation (#1966) 2023-02-11 02:20:42 +10:30
d6bab0c4f8 Fix typo Qubes OS overview (#1965)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-11 02:20:19 +10:30
27fe6a4c41 Missing comma, grammar, fix onion link (#1941) 2023-02-07 00:04:32 +10:30
bd1ff328a7 Fix broken links across the site (#1963)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-06 19:59:59 +10:30
64d736a7ef Remove subheading Other/Android messengers (#1962)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-06 19:55:45 +10:30
a1e40a79ba Adds Win, Linux download for Briar (#1961)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-06 19:44:45 +10:30
baece71b49 Add Accrescent download for ExifEraser (#1957)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-06 19:13:55 +10:30
f5910c4b2b Add mention for Atlas Of Surveillance (#1951)
Co-authored-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-02-06 19:09:18 +10:30
d35437cafa Bump actions/cache from 3.2.3 to 3.2.4
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.3...v3.2.4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-31 04:03:20 +00:00
41bb717191 Bump crowdin/github-action from 1.5.3 to 1.6.0
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.5.3 to 1.6.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/1.5.3...v1.6.0)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 22:16:09 +10:30
fdb59b32b9 DoH/3 support AdGuard, NextDNS, Cloudflare (#1959)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-01-30 22:13:02 +10:30
c1f8a1e00c Updates to Brave description (#1952) 2023-01-25 13:12:25 +10:30
070a9b157c Fix broken link (#1950)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-01-21 13:42:47 +10:30
a17363080e Update Mullvad countries (#1948)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-01-20 18:21:13 +10:30
f714a82d84 Bump actions/configure-pages from 2 to 3
Bumps [actions/configure-pages](https://github.com/actions/configure-pages) from 2 to 3.
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](https://github.com/actions/configure-pages/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/configure-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 22:15:45 +10:30
3efe31dc29 Bump crowdin/github-action from 1.5.2 to 1.5.3
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/1.5.2...1.5.3)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 22:14:46 +10:30
670331bcd9 Prefer Anycast or Geosteering support (#1944) 2023-01-19 22:12:11 +10:30
bd5506bab8 Remove DNSCrypt support for ControlD (#1943) 2023-01-16 16:26:12 +10:30
eb2fd3bccb Mention disabling crash reports (#1940) 2023-01-11 23:56:37 +10:30
478c2cee3b Remove macOS/iOS config profile info (#1934)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-01-11 22:57:24 +10:30
dd96ff1b56 Add note on built-in password managers (#1937) 2023-01-11 06:17:10 -06:00
2c61157cbc Remove redundant/broken links from Psono description (#1936)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-01-10 22:41:13 +10:30
a110fb0489 Add iOS download to Proton Drive (#1935)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-01-10 22:34:44 +10:30
b66845af14 Bump actions/cache from 3.2.2 to 3.2.3
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.2 to 3.2.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.2...v3.2.3)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-10 04:03:28 +00:00
39f67789c4 Flathub link for ONLYOFFICE (#1931)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2023-01-10 02:45:29 +10:30
603bec291e Use SVG for ProxiTok and fix button (#1929) 2023-01-10 02:27:49 +10:30
80f1e8ca51 Criteria updates to email: Require export and headers (#1933) 2023-01-10 00:48:46 +10:30
fa9faa5648 Add ProxiTok (#1926) 2023-01-06 17:19:38 +00:00
95126762a6 VPN server update (#1925) 2023-01-05 19:29:04 +10:30
0d597160cf Account creation section (#1723)
Co-authored-by: matchboxbananasynergy <107055883+matchboxbananasynergy@users.noreply.github.com>
Co-authored-by: mfwmyfacewhen <94880365+mfwmyfacewhen@users.noreply.github.com>
Co-authored-by: Daniel Gray <dngray@privacyguides.org>
2023-01-04 23:01:43 +10:30
dc0cd7d35f Elaborate on digital legacy PR (#1924) 2022-12-29 02:23:00 +10:30
10812ede81 Update Android 13+ DoH description (#1920)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2022-12-28 17:04:49 +10:30
53b2c2af89 Bump actions/cache from 3.2.0 to 3.2.2
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.0 to 3.2.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.0...v3.2.2)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-28 15:43:01 +10:30
78e0cf7a42 Updating blog post link (#1921)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2022-12-28 15:42:02 +10:30
0c2b119089 Add Digital Legacy and Account Termination info to Email Providers (#1915) 2022-12-24 08:15:05 -06:00
22572e096f Bump actions/cache from 3.0.11 to 3.2.0
Bumps [actions/cache](https://github.com/actions/cache) from 3.0.11 to 3.2.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.0.11...v3.2.0)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-25 00:33:05 +10:30
41215f7433 Remove Advanced Data Protection from Filevault (#1917) 2022-12-24 04:26:15 -06:00
750b73c589 Remove Twitter icon from footer (#1916)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2022-12-19 22:45:38 +10:30
2edd012619 Update Tutanota 2FA to Include Android and iOS (#1914)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2022-12-18 14:10:29 +10:30
2172eab26a Add Advanced Data Protection to Safari (#1911)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2022-12-17 17:33:20 +10:30
724b70ae51 Update Filevault for Advanced Data Protection (#1913)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2022-12-17 17:27:13 +10:30
b9937e8630 Bump crowdin/github-action from 1.5.1 to 1.5.2
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/1.5.1...1.5.2)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-13 04:03:41 +00:00
303bf1aff6 Add SimpleX Chat to tools page (#1909)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2022-12-13 04:24:21 +10:30
ba435096f3 Fix broken link on suggestions page (#1906)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2022-12-11 22:32:06 +10:30
3ae6f80797 Fix search suggestions (#1905)
Signed-off-by: Daniel Gray <dngray@privacyguides.org>
2022-12-11 00:28:25 +10:30
67535a820c Replace F-Droid link (#1904) 2022-12-10 14:29:02 +10:30
c7ff34b330 Remove DNSCrypt mention for NextDNS (#1903) 2022-12-07 22:31:48 +10:30
703c291ba3 Recommend against Nextcloud E2EE (#1901) 2022-12-02 00:26:19 +00:00
420 changed files with 13354 additions and 6489 deletions

33
.editorconfig Normal file
View File

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

20
.gitattributes vendored
View File

@ -1,3 +1,23 @@
# Copyright (c) 2020-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.
# Auto detect text files and perform LF normalization
* text=auto

20
.github/CODEOWNERS vendored
View File

@ -1,3 +1,23 @@
# 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

View File

@ -1,8 +0,0 @@
---
name: "Content Correction"
about: Report any inaccurate, incorrect, or outdated information on the website.
---
## Description
**URL of affected page:**

View File

@ -0,0 +1,66 @@
# 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.
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.
- 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"
validations:
required: true
- type: textarea
id: description
attributes:
label: Description
description: Please let us know what should be fixed.
placeholder: The Google Play Store link for ExifEraser is broken...
validations:
required: true
- type: textarea
id: source
attributes:
label: Sources
description: Please provide reliable sources that support the change you are requesting.
validations:
required: true
- type: checkboxes
id: checklist
attributes:
label: Before submitting
description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
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/coc).
required: true

View File

@ -1,15 +0,0 @@
---
name: "Website Issue"
about: Report a bug with the website. (NO CONTENT ISSUES)
---
<!--
READ ME FIRST:
This is NOT the place to request changes to the content of the website.
This is NOT the place to report issues with our services like Matrix.
This is ONLY for reporting bugs or technical issues with www.privacyguides.org, the website.
Please add screenshots if applicable.
-->

View File

@ -0,0 +1,101 @@
# 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.
name: "Website Issue"
description: Report a bug with the website.
labels: ["t:bug"]
assignees:
- jonaharagon
body:
- type: markdown
attributes:
value: |
This form is only for reporting a technical bug __with our website__, like broken images, broken CSS, issues with search or themes, etc.
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.
- 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.
If you have found a workaround or a fix for the problem too, please let us know.
validations:
required: true
- type: textarea
id: affected-pages
attributes:
label: Affected pages
description: |
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:
label: Browser
description: |
Please select the browser(s) you have noticed this issue with.
If your browser is not listed or the version is relevant, you may select _Other_ and provide more details in the description above.
multiple: true
options:
- Firefox
- Tor Browser
- Chrome
- Safari
- Edge
- Other
- type: dropdown
id: os
attributes:
label: Operating System
description: |
Please select the operating system(s) you have noticed this issue with.
multiple: true
options:
- Linux
- macOS
- Windows
- Android
- iOS
- Other
- type: checkboxes
id: checklist
attributes:
label: Before submitting
description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
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/coc).
required: true
- type: markdown
attributes:
value: Thank you for letting us know about this!

View File

@ -1,12 +1,36 @@
# Copyright (c) 2020-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.
blank_issues_enabled: false
contact_links:
- name: Suggest a New Provider or Software
url: https://discuss.privacyguides.org/c/suggestions
- name: Suggest Adding or Removing a Tool
url: https://discuss.privacyguides.net/c/site-development/suggestions
about: Suggest something new for us to look at, or something we should remove.
- name: Suggest a New Guide
url: https://discuss.privacyguides.net/c/site-development/guide-suggestions
about: Suggest an area where you think guidance might be required.
- name: Ask a Question
url: https://discuss.privacyguides.org/c/questions
url: https://discuss.privacyguides.net/c/privacy/questions
about: Let us know if something doesn't make sense!
- name: Share an Idea
url: https://discuss.privacyguides.org/c/site-development
url: https://discuss.privacyguides.net/c/site-development
about: Suggest a new feature/section/page or anything else for the website.
- name: Report a Translation Issue
url: https://crowdin.com/project/privacyguides/discussions

View File

@ -1,31 +1,23 @@
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!
Please share with us what you've changed.
If you are adding a software recommendation, give us a link to its website or
source code.
If you are making changes that you have a conflict of interest with, please
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.
That someone has a conflict of interest is a description of a situation,
NOT a judgement about that person's opinions, integrity, or good faith.
If you have a conflict of interest, you MUST disclose who is paying you for
this contribution, who the client is (if for example, you are being paid by
an advertising agency), and any other relevant affiliations.
-->
<!-- Place an x in the boxes below, like: [x] -->
- [ ] Please check this box to confirm you have disclosed any relevant conflicts of interest in your post.
- [ ] Please check this box to confirm your agreement 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 your contribution as part of our project.
- [ ] Please check this box to confirm you are the sole author of this work, or that any additional authors will also reply to this PR on GitHub confirming their agreement to these terms.
- [ ] 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/coc).
<!-- 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

View File

@ -1,12 +1,40 @@
# 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"
interval: "monthly"
assignees:
- "jonaharagon"
reviewers:
@ -14,16 +42,29 @@ updates:
labels:
- "fix:github_actions"
# Maintain dependencies for pipenv
- package-ecosystem: "pip"
# Maintain submodules
- package-ecosystem: "gitsubmodule"
directory: "/"
ignore:
- dependency-name: "mkdocs-material"
registries:
- github-privacyguides
schedule:
interval: "daily"
assignees:
- "jonaharagon"
reviewers:
- "jonaharagon"
interval: "monthly"
labels:
- "fix:python"
- "fix:submodules"
# Disabled because some updates tend to remove needed dependencies for some reason
# # 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"

113
.github/workflows/build-offline.yml vendored Normal file
View File

@ -0,0 +1,113 @@
# 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: Build Offline Website
on:
workflow_call:
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: 'false'
- uses: actions/download-artifact@v4
with:
pattern: repo-*
path: modules
- run: |
rmdir modules/mkdocs-material
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
rmdir theme/assets/brand
mv modules/repo-brand theme/assets/brand
- name: Python setup
uses: actions/setup-python@v5
with:
cache: 'pipenv'
- uses: actions/cache/restore@v4.0.2
with:
key: site-cache-${{ github.repository }}-en-${{ github.ref }}-${{ hashfiles('.cache/**') }}
path: .cache
restore-keys: |
site-cache-${{ github.repository }}-en-${{ github.ref }}-
site-cache-${{ github.repository }}-en-
- name: Install Python dependencies
run: |
pip install pipenv
pipenv install
sudo apt install pngquant
- name: Build website
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARDS: false
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
- uses: actions/cache/save@v4.0.2
with:
key: site-cache-${{ github.repository }}-en-${{ github.ref }}-${{ hashfiles('.cache/**') }}
path: .cache
- name: Upload tar.gz file
uses: actions/upload-artifact@v4
with:
name: offline.tar.gz
path: offline.tar.gz
- name: Upload zip file
uses: actions/upload-artifact@v4
with:
name: offline.zip
path: offline.zip
- name: Create ZIM File
uses: addnab/docker-run-action@v3
with:
image: ghcr.io/openzim/zim-tools:3.1.3
options: -v ${{ github.workspace }}:/data
run: |
zimwriterfs -w index.html -I 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 "Jonah Aragon" -n "Privacy Guides" -e "https://github.com/privacyguides/privacyguides.org" /data/site /data/offline-privacy_guides.zim
- name: Upload ZIM file
uses: actions/upload-artifact@v4
with:
name: offline-privacy_guides.zim
path: offline-privacy_guides.zim

136
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,136 @@
# 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: Build Website
on:
workflow_call:
inputs:
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
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
continue-on-error: ${{ inputs.continue-on-error }}
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
repository: ${{ inputs.repo }}
ref: ${{ inputs.ref }}
persist-credentials: 'false'
fetch-depth: 0
- uses: actions/download-artifact@v4
with:
pattern: repo-*
path: modules
- run: |
rmdir modules/mkdocs-material
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
rmdir theme/assets/brand
mv modules/repo-brand theme/assets/brand
- if: inputs.lang != 'en'
run: |
cp -rl modules/repo-i18n/i18n .
cp -rl modules/repo-i18n/includes .
cp -rl modules/repo-i18n/theme .
- uses: actions/setup-python@v5
with:
cache: 'pipenv'
- uses: actions/cache/restore@v4.0.2
with:
key: site-cache-${{ inputs.repo }}-${{ inputs.ref }}-${{ hashfiles('.cache/**') }}
path: .cache
restore-keys: |
site-cache-${{ inputs.repo }}-${{ inputs.ref }}-
site-cache-${{ inputs.repo }}-
- uses: actions/cache/restore@v4.0.2
with:
key: card-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ inputs.ref }}-${{ hashfiles('config/.cache/plugin/social/manifest.json') }}
path: |
config/.cache/plugin/social/manifest.json
config/.cache/plugin/social/assets
restore-keys: |
card-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ inputs.ref }}-
card-cache-${{ inputs.repo }}-${{ inputs.lang }}-
- run: |
pip install pipenv
pipenv install
sudo apt install pngquant
- if: inputs.lang != 'en'
uses: falti/dotenv-action@v1.1
with:
path: includes/strings.${{ inputs.lang }}.env
export-variables: true
keys-case: bypass
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CONTEXT: ${{ inputs.context }}
PRODUCTION: true
run: |
pipenv run mkdocs build --config-file config/mkdocs.${{ inputs.lang }}.yml
cp -r static/* site/
pipenv run mkdocs --version
tar -czvf site-build-${{ inputs.lang }}.tar.gz site
- uses: actions/cache/save@v4.0.2
with:
key: site-cache-${{ inputs.repo }}-${{ inputs.ref }}-${{ hashfiles('.cache/**') }}
path: .cache
- uses: actions/cache/save@v4.0.2
with:
key: card-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ inputs.ref }}-${{ hashfiles('config/.cache/plugin/social/manifest.json') }}
path: |
config/.cache/plugin/social/manifest.json
config/.cache/plugin/social/assets
- uses: actions/upload-artifact@v4
with:
name: site-build-${{ inputs.lang }}.tar.gz
path: site-build-${{ inputs.lang }}.tar.gz

33
.github/workflows/cleanup.yml vendored Normal file
View File

@ -0,0 +1,33 @@
# 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: Cleanup Artifacts
on:
workflow_call:
jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- uses: geekyeggo/delete-artifact@v5
with:
name: repo-*
failOnError: false

View File

@ -1,28 +0,0 @@
name: 💬 Crowdin Upload
on:
workflow_dispatch:
release:
types: [published]
jobs:
synchronize-with-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: crowdin action
uses: crowdin/github-action@1.5.1
with:
upload_sources: true
upload_sources_args: '--auto-update --delete-obsolete'
upload_translations: false
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 }}

237
.github/workflows/deploy.yml vendored Normal file
View File

@ -0,0 +1,237 @@
# 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: Deploy Website Build
on:
workflow_call:
inputs:
netlify_preview:
type: boolean
netlify_alias:
type: string
netlify_production:
type: boolean
github_pages:
type: boolean
bunnycdn_production:
type: boolean
minio_production:
type: boolean
outputs:
netlify_preview_address:
value: ${{ jobs.netlify_preview.outputs.address }}
secrets:
NETLIFY_TOKEN:
PROD_BUNNYCDN_API_KEY:
PROD_BUNNYCDN_PASSWORD:
PROD_MINIO_KEY_ID:
PROD_MINIO_SECRET_KEY:
jobs:
netlify_preview:
if: inputs.netlify_preview
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
address: ${{ steps.address.outputs.address }}
steps:
- uses: actions/download-artifact@v4
with:
pattern: site-build-*
merge-multiple: true
- run: |
for file in *.tar.gz; do tar -zxf "$file"; done
wget https://raw.githubusercontent.com/privacyguides/privacyguides.org/main/netlify.toml
ls -la site/
- uses: actions/setup-node@v4
- run: |
npm install netlify-cli -g
- if: inputs.netlify_preview
name: Limit length of Netlify alias to 12
run: echo "SHORT_ALIAS=`echo ${{ inputs.netlify_alias }} | cut -c1-12`" >> $GITHUB_ENV
- if: inputs.netlify_preview
id: deployment
env:
NETLIFY_SITE_ID: ${{ vars.NETLIFY_SITE }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
run: |
netlify deploy --dir=site --alias=${{ env.SHORT_ALIAS }}
echo "DEPLOYED_ADDRESS=https://${{ env.SHORT_ALIAS }}--${{ vars.NETLIFY_SITE }}.netlify.app/" >> "$GITHUB_ENV"
- id: address
run: |
echo "address=$DEPLOYED_ADDRESS" >> "$GITHUB_OUTPUT"
netlify_production:
if: inputs.netlify_production
runs-on: ubuntu-latest
permissions:
contents: read
environment:
name: production
url: https://illustrious-bavarois-56cf30.netlify.app/
steps:
- uses: actions/download-artifact@v4
with:
pattern: site-build-*
merge-multiple: true
- run: |
for file in *.tar.gz; do tar -zxf "$file"; done
wget https://raw.githubusercontent.com/privacyguides/privacyguides.org/main/netlify.toml
ls -la site/
- uses: actions/setup-node@v4
- run: |
npm install netlify-cli -g
- id: prod_deployment
env:
NETLIFY_SITE_ID: ${{ vars.PROD_NETLIFY_SITE }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
run: |
netlify deploy --dir=site --prod-if-unlocked
github_pages:
if: inputs.github_pages
runs-on: ubuntu-latest
concurrency:
group: "pages"
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
contents: read
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
steps:
- uses: actions/configure-pages@v5
- 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/
- uses: 1arp/create-a-file-action@0.4.4
with:
path: site
file: index.html
content: |
<html lang="en">
<head>
<title>Redirecting to English site...</title>
<meta
http-equiv="refresh"
content="0; URL=./en/"
/>
</head>
</html>
- uses: actions/upload-pages-artifact@v3
with:
path: site
- id: deployment
uses: actions/deploy-pages@main
bunnycdn_production:
if: inputs.bunnycdn_production
runs-on: ubuntu-latest
permissions:
contents: read
environment:
name: production
url: https://privacyguides-org-production.b-cdn.net
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/
- uses: own3d/bunny-action@bfaa5c6bc8b7a7ebd599ddd4912347d7c3847e78
env:
BUNNY_API_ACCESS_KEY: ${{ secrets.PROD_BUNNYCDN_API_KEY }}
BUNNY_STORAGE_HOSTNAME: storage.bunnycdn.com
BUNNY_STORAGE_USERNAME: ${{ vars.PROD_BUNNYCDN_USER }}
BUNNY_STORAGE_PASSWORD: ${{ secrets.PROD_BUNNYCDN_PASSWORD }}
BUNNY_PULL_ZONE_ID: 2117106
with:
args: deploy --dir=site
minio_production:
if: inputs.minio_production
runs-on: ubuntu-latest
permissions:
contents: read
environment:
name: production
url: https://privacyguides-org-production.stor1-minio.jonaharagon.net
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/
- uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete
env:
SOURCE_DIR: "site/"
AWS_S3_BUCKET: ${{ vars.PROD_MINIO_BUCKET }}
AWS_S3_ENDPOINT: ${{ vars.PROD_MINIO_HOSTNAME }}
AWS_ACCESS_KEY_ID: ${{ secrets.PROD_MINIO_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.PROD_MINIO_SECRET_KEY }}

48
.github/workflows/download-repo.yml vendored Normal file
View File

@ -0,0 +1,48 @@
# 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: Download Repository
on:
workflow_call:
inputs:
repo:
required: true
type: string
secrets:
ACTIONS_SSH_KEY:
required: true
jobs:
download:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
repository: 'privacyguides/${{ inputs.repo }}'
path: repo-${{ inputs.repo }}
ssh-key: ${{ secrets.ACTIONS_SSH_KEY }}
- uses: actions/upload-artifact@v4
with:
name: repo-${{ inputs.repo }}
path: repo-${{ inputs.repo }}
retention-days: 1

View File

@ -1,87 +0,0 @@
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.x
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: '0'
ref: ${{github.event.pull_request.head.ref}}
repository: ${{github.event.pull_request.head.repo.full_name}}
ssh-key: ${{ secrets.ACTIONS_SSH_KEY }}
submodules: 'true'
- name: Pages setup
uses: actions/configure-pages@v2
- name: Python setup
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Cache files
uses: actions/cache@v3.0.11
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 mkdocs.production.yml
mv .well-known site/
pipenv run mkdocs --version
- name: Matrix homeserver configuration
run: |
mkdir -p site/.well-known/matrix
curl -o site/.well-known/matrix/server https://matrix.privacyguides.org/.well-known/matrix/server
curl -o site/.well-known/matrix/client https://matrix.privacyguides.org/.well-known/matrix/client
- 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

View File

@ -1,3 +1,23 @@
# 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 ]

102
.github/workflows/publish-pr.yml vendored Normal file
View File

@ -0,0 +1,102 @@
# 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: 📦 Publish Pull Request Preview
on:
pull_request_target:
concurrency:
group: ${{github.event.pull_request.head.ref}}
cancel-in-progress: true
permissions:
pull-requests: write
contents: read
pages: write
id-token: write
jobs:
submodule:
strategy:
matrix:
repo: [mkdocs-material-insiders, brand, i18n]
uses: ./.github/workflows/download-repo.yml
with:
repo: ${{ matrix.repo }}
secrets:
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
build:
needs: submodule
strategy:
matrix:
lang: [es, fr, he, it, nl, ru, zh-Hant]
allow-error: [true]
include:
- lang: en
allow-error: false
fail-fast: false
permissions:
contents: read
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: ${{ matrix.allow-error }}
deploy:
needs: build
permissions:
contents: read
pages: write
id-token: write
uses: ./.github/workflows/deploy.yml
with:
netlify_preview: true
netlify_alias: ${{ github.event.pull_request.head.sha }}
secrets:
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
comment:
permissions:
pull-requests: write
needs: deploy
runs-on: ubuntu-latest
env:
address: ${{ needs.deploy.outputs.netlify_preview_address }}
steps:
- uses: thollander/actions-comment-pull-request@v2.5.0
with:
message: |
### <span aria-hidden="true">✅</span> Your preview is ready!
| Name | Link |
| :---: | ---- |
| <span aria-hidden="true">🔨</span> Latest commit | ${{ github.event.pull_request.head.sha }} |
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
comment_tag: deployment
cleanup:
if: ${{ always() }}
needs: build
uses: ./.github/workflows/cleanup.yml

103
.github/workflows/publish-release.yml vendored Normal file
View File

@ -0,0 +1,103 @@
# 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: 📦 Publish Release
on:
push:
tags:
- '*'
permissions:
contents: write
pages: write
id-token: write
jobs:
submodule:
strategy:
matrix:
repo: [mkdocs-material-insiders, brand, i18n]
uses: ./.github/workflows/download-repo.yml
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]
permissions:
contents: read
uses: ./.github/workflows/build.yml
with:
ref: ${{ github.ref }}
repo: ${{ github.repository }}
lang: ${{ matrix.lang }}
context: production
continue-on-error: false
buildoffline:
needs: submodule
permissions:
contents: read
uses: ./.github/workflows/build-offline.yml
release:
name: Create release notes
needs: buildoffline
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@v4
with:
pattern: offline*
merge-multiple: true
- name: Create release notes
uses: ncipollo/release-action@v1
with:
generateReleaseNotes: true
artifacts: "offline.zip,offline.tar.gz,offline-privacy_guides.zim"
makeLatest: true
deploy:
needs: build
uses: ./.github/workflows/deploy.yml
with:
netlify_production: true
github_pages: true
bunnycdn_production: true
minio_production: true
secrets:
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
PROD_BUNNYCDN_API_KEY: ${{ secrets.PROD_BUNNYCDN_API_KEY }}
PROD_BUNNYCDN_PASSWORD: ${{ secrets.PROD_BUNNYCDN_PASSWORD }}
PROD_MINIO_KEY_ID: ${{ secrets.PROD_MINIO_KEY_ID }}
PROD_MINIO_SECRET_KEY: ${{ secrets.PROD_MINIO_SECRET_KEY }}
cleanup:
if: ${{ always() }}
needs: [build, buildoffline]
uses: ./.github/workflows/cleanup.yml

View File

@ -1,19 +0,0 @@
name: 📦 Releases
on:
push:
tags:
- '*'
jobs:
release:
name: Create Release
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- uses: ncipollo/release-action@v1
with:
generateReleaseNotes: true
token: ${{ secrets.REPO_TOKEN }}

64
.github/workflows/test-build.yml vendored Normal file
View File

@ -0,0 +1,64 @@
# 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: ./.github/workflows/download-repo.yml
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]
fail-fast: false
permissions:
contents: read
uses: ./.github/workflows/build.yml
with:
ref: ${{ github.ref }}
repo: ${{ github.repository }}
lang: ${{ matrix.lang }}
continue-on-error: true
buildoffline:
needs: submodule
permissions:
contents: read
uses: ./.github/workflows/build-offline.yml
cleanup:
if: ${{ always() }}
needs: [build, buildoffline]
uses: ./.github/workflows/cleanup.yml

51
.github/workflows/upload-crowdin.yml vendored Normal file
View File

@ -0,0 +1,51 @@
# 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
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@v1.20.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 }}

28
.gitignore vendored
View File

@ -1,2 +1,28 @@
site
.cache
/i18n/
/includes/*
!/includes/*.en.*
/static/i18n/*
!/static/i18n/*.en.*
/theme/overrides/*
!/theme/overrides/*.en.*
# commit social card fonts to repo
# see: https://github.com/squidfunk/mkdocs-material/issues/6983
# ridiculous hide-and-seek https://stackoverflow.com/a/72380673
.cache/*
!/config/.cache
/config/.cache/*
!/config/.cache/plugin
/config/.cache/plugin/*
!/config/.cache/plugin/social
/config/.cache/plugin/social/*
!/config/.cache/plugin/social/fonts
# Editor settings
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
# Local Netlify folder
.netlify
node_modules

10
.gitmodules vendored
View File

@ -1,6 +1,6 @@
[submodule "mkdocs-material-insiders"]
path = mkdocs-material
url = git@github.com:privacyguides/mkdocs-material-insiders.git
[submodule "docs/assets/brand"]
path = docs/assets/brand
[submodule "theme/assets/brand"]
path = theme/assets/brand
url = https://github.com/privacyguides/brand.git
[submodule "modules/mkdocs-material"]
path = modules/mkdocs-material
url = git@github.com:privacyguides/mkdocs-material-insiders.git

View File

@ -1,3 +1,23 @@
# 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.
default: true
line-length: false
ul-indent:

1
.python-version Normal file
View File

@ -0,0 +1 @@
3.12

28
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,28 @@
// 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.
{
"recommendations": [
"EditorConfig.EditorConfig",
"DavidAnson.vscode-markdownlint",
"wholroyd.jinja",
"mikestead.dotenv"
]
}

27
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,27 @@
// 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.
{
"git.ignoreLimitWarning": true,
"[markdown]": {
"editor.unicodeHighlight.ambiguousCharacters": true,
"editor.unicodeHighlight.invisibleCharacters": true
}
}

View File

@ -1,37 +1,88 @@
# 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.
cff-version: 1.2.0
title: Privacy Guides
message: 'If you reference this website, please cite it in your work.'
message: "If you reference this website, please cite it in your work."
type: software
authors:
- email: jonah@privacyguides.org
- family-names: Aragon
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'
website: "https://www.jonaharagon.com"
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"
license:
- MIT
- CC-BY-ND-4.0
references:
- authors:
- family-names: Donath
given-names: Martin
title: 'mkdocs-material'
title: "mkdocs-material"
type: software
repository-code: 'https://github.com/squidfunk/mkdocs-material'
repository-code: "https://github.com/squidfunk/mkdocs-material"
license: MIT
preferred-citation:
type: website
title: Privacy Guides
authors:
- email: jonah@privacyguides.org
- family-names: Aragon
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'
website: "https://www.jonaharagon.com"
orcid: "https://orcid.org/0000-0001-6996-4965"
- family-names: Gray
given-names: Daniel
alias: dngray
website: "https://polarbear.army"
- family-names: Wilde
given-names: Niek
name-particle: de
alias: blacklight447
- given-names: Freddy
website: "https://freddy.lol"
- alias: mfwmyfacewhen
website: "https://github.com/mfwmyfacewhen"
- given-names: Olivia
alias: hook
- alias: nitrohorse
website: "https://nitrohorse.com"
- family-names: Suomalainen
given-names: Aminda
alias: Mikaela
website: "https://aminda.eu"
- family-names: Potocki
given-names: Dawid
website: "https://dawidpotocki.com"
- alias: matchboxbananasynergy
website: "https://banana.omg.lol"
- family-names: Tran
given-names: Thien
alias: Tommy
website: "https://tommytran.io"
- alias: samsepi0l
website: "https://github.com/d4rklynk"
- name: Privacy Guides Contributors
website: "https://github.com/privacyguides/privacyguides.org/graphs/contributors"
url: "https://www.privacyguides.org"
abstract: >-
Privacy Guides is a socially motivated website that
provides information for protecting your data
@ -44,4 +95,4 @@ preferred-citation:
- encryption
- website
- markdown
license: "CC-BY-ND-4.0"
license: CC-BY-ND-4.0

22
LICENSE-CODE Normal file
View File

@ -0,0 +1,22 @@
MIT License
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
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.

38
Pipfile
View File

@ -1,21 +1,37 @@
# 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.
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
mkdocs = "*"
mkdocs-material = {path = "./mkdocs-material"}
mkdocs-static-i18n = "*"
mkdocs-git-revision-date-localized-plugin = "*"
typing-extensions = "*"
mkdocs-git-committers-plugin-2 = "*"
mkdocs-macros-plugin = "*"
pillow = "*"
cairosvg = "*"
mkdocs-material = {extras = ["imaging"], path = "./modules/mkdocs-material"}
mkdocs-git-revision-date-localized-plugin = "~=1.2"
mkdocs-git-committers-plugin-2 = "~=1.1"
mkdocs-macros-plugin = "~=1.0"
jieba = "~=0.42"
[dev-packages]
scour = "*"
scour = "~=0.38"
[requires]
python_version = "3.8"
python_version = "3.12"

1263
Pipfile.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +1,25 @@
<!-- markdownlint-disable MD041 -->
<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/">
<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>
<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://lemmy.one/c/privacyguides">
<img src="https://img.shields.io/lemmy/privacyguides%40lemmy.one?style=social">
</a></p>
<p><a href="https://github.com/privacyguides/privacyguides.org/pulls">
@ -28,6 +28,9 @@
<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>
<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>
@ -35,65 +38,87 @@
## 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 [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!
*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), and [Wired](https://wired.com/story/firefox-mozilla-2022)*
## Contributing
- 💬 [Start a discussion or suggest an idea](https://discuss.privacyguides.org/)
- 💬 [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)
- 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](https://github.com/privacyguides/privacyguides.org/graphs/contributors). If you make a substantial (i.e. copyright eligible) contribution to the project and would like to be formally credited, you are welcome to include your information in the appropriate `authors` section in [`CITATION.cff`](/CITATION.cff) as well, just submit a PR or ask @jonaharagon to make the change.
## Mirrors
[![GitHub](https://img.shields.io/static/v1?logo=github&label=&message=GitHub&color=000&style=for-the-badge)](https://github.com/privacyguides/privacyguides.org)
[![Gitea](https://img.shields.io/static/v1?logo=gitea&label=&message=Gitea&color=000&style=for-the-badge)](https://code.privacyguides.dev/privacyguides/privacyguides.org)
[![GitLab](https://img.shields.io/static/v1?logo=gitlab&label=&message=GitLab&color=000&style=for-the-badge)](https://gitlab.com/privacyguides/privacyguides.org)
[![Codeberg](https://img.shields.io/static/v1?logo=codeberg&label=&message=Codeberg&color=000&style=for-the-badge)](https://codeberg.org/privacyguides/privacyguides.org)
[![SourceHut](https://img.shields.io/static/v1?logo=git&label=&message=SourceHut&color=000&style=for-the-badge)](https://git.sr.ht/~jonaharagon/privacyguides.org)
[![Gitea](https://img.shields.io/static/v1?logo=gitea&label=&message=Gitea&color=000&style=for-the-badge)](https://code.privacyguides.dev/privacyguides/privacyguides.org)
[![Forgejo](https://img.shields.io/static/v1?logo=forgejo&label=&message=Forgejo&color=000&style=for-the-badge)](https://git.jonaharagon.net/privacyguides/privacyguides.org)
**Hidden service (Tor/onion):** [xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion](http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion)
## License
Copyright &copy; 2019 - 2024 [Privacy Guides contributors](https://github.com/privacyguides/privacyguides.org/graphs/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).
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
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. You can install the website locally with the open-source version of `mkdocs-material`:
1. Clone this repository:
- `git clone https://github.com/privacyguides/privacyguides.org.git` (then `cd privacyguides.org`)
- `git submodule init`
- `git submodule update docs/assets/brand`
- `git config gpg.ssh.allowedSignersFile .allowed_signers`
2. Install [Python 3.6+](https://www.python.org/downloads/) (currently only tested with 3.10)
3. Install [dependencies](/Pipfile): `pip install mkdocs mkdocs-material mkdocs-static-i18n mkdocs-macros-plugin typing-extensions`
4. Serve the site locally: `mkdocs serve`
- The site will be available at `http://localhost:8000`
- You can build the site locally with `mkdocs build`
- Your local version of the site may be missing functionality, which is expected. 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.
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.10**
3. Install Python **3.12**.
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 mkdocs.production.yml` (set `CARDS=true` 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`
- 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.
### Local Translated Site Builds
1. Install the [Crowdin CLI Tool](https://developer.crowdin.com/cli-tool) (`brew install crowdin`)
2. Set the `CROWDIN_PERSONAL_TOKEN` environment variable to your Crowdin personal access token
3. Run `crowdin download` in the root of this repo
4. Import the language's environment variables: `set -a; source includes/strings.fr.env; set +a` (replacing fr with the appropriate language)
5. Serve the site locally: `pipenv run mkdocs serve --config-file config/mkdocs.fr.yml` (replacing fr with the appropriate language in [/config](/config))
Translations downloaded from Crowdin are [.gitignore](/.gitignore)'d, so any local changes to the translated site cannot be committed to this repo. Actual modifications need to be made on Crowdin. As an alternative to steps 1-3, you can copy the folders from [privacyguides/i18n](https://github.com/privacyguides/i18n) to the root of this repo to obtain the translated files.
## Releasing
1. Create a new tag: `git tag -s v2.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 2 until a massive revamp (v1 -> v2 was the Jekyll to MkDocs transition).
- 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 sha to 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.

View File

@ -0,0 +1 @@
../../../../theme/assets/brand/fonts

100
config/layouts/home.yml Normal file
View File

@ -0,0 +1,100 @@
definitions:
- &background_color >-
#FFD06F
- &color >-
#2d2d2d
- &title_font_family >-
Bagnard
- &font_family >-
{%- if config.theme.language == "he" -%}
Suez One
{%- elif config.theme.language == ("zh-Hant" or "ru") -%}
Noto Sans TC
{%- else -%}
Public Sans
{%- endif -%}
- &page_title >-
{{ config.site_name }}
- &page_title_with_site_name >-
{{ page.meta.get("title", page.title) }}
- &page_description >-
{{ config.extra.homepage_description }}
- &og_description >-
{{ page.meta.get("description", config.site_description) or "" }}
- &logo >-
{{ config.docs_dir }}/{{ config.theme.logo }}
# Meta tags
tags:
# Open Graph
og:type: website
og:title: *page_title_with_site_name
og:description: *og_description
og:image: "{{ image.url }}"
og:image:type: "{{ image.type }}"
og:image:width: "{{ image.width }}"
og:image:height: "{{ image.height }}"
og:url: "{{ page.canonical_url }}"
# Twitter
twitter:card: summary_large_image
twitter.title: *page_title_with_site_name
twitter:description: *page_description
twitter:image: "{{ image.url }}"
# -----------------------------------------------------------------------------
# Specification
# -----------------------------------------------------------------------------
# Card size and layers
size: { width: 1200, height: 630 }
layers:
# Background
- background:
color: *background_color
# Logo
- size: { width: 64, height: 64 }
offset: { x: 64, y: 64 }
background:
image: *logo
# Page title
- size: { width: 864, height: 256 }
offset: { x: 62, y: 192 }
typography:
content: *page_title
align: start
color: *color
line:
amount: 3
height: 1.5
font:
family: *title_font_family
style: Bold
# Page description
- size: { width: 864, height: 192 }
offset: { x: 64, y: 320 }
typography:
content: *page_description
overflow: shrink
align: start
color: *color
line:
amount: 3
height: 1.5
font:
family: *font_family
style: Regular

152
config/layouts/page.yml Normal file
View File

@ -0,0 +1,152 @@
definitions:
- &background_image >-
{%- if page.meta.cover -%}
theme/assets/img/cover/{{ page.meta.cover }}
{%- else -%}
{{ layout.background_image or "" }}
{%- endif -%}
- &background_color >-
{%- if page.meta.cover -%}
#f7f7fcaa
{%- else -%}
#FFD06F
{%- endif -%}
- &color >-
{{ layout.color or "#2d2d2d" }}
- &title_font_family >-
{%- if config.theme.language == "he" -%}
Suez One
{%- elif config.theme.language == ("zh-Hant" or "ru") -%}
Noto Serif TC
{%- else -%}
Bagnard
{%- endif -%}
- &title_font_style >-
{%- if config.theme.language == "he" -%}
Regular
{%- else -%}
Bold
{%- endif -%}
- &font_family >-
{%- if config.theme.language == "he" -%}
Suez One
{%- elif config.theme.language == ("zh-Hant" or "ru") -%}
Noto Sans TC
{%- else -%}
Public Sans
{%- endif -%}
- &site_name >-
{{ config.site_name }}
- &page_title >-
{{ page.meta.get("title", page.title) }}
- &page_title_with_site_name >-
{%- if page.meta.meta_title -%}
{{ page.meta.meta_title }}
{%- else -%}
{{ page.meta.get("title", page.title) }} - {{ config.site_name }}
{%- endif -%}
- &page_description >-
{{ page.meta.get("description", config.site_description) or "" }}
- &page_icon >-
{{ page.meta.icon or "" }}
- &logo >-
{%- if page.meta.cover -%}
theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext.svg
{%- elif config.theme.logo -%}
{{ config.docs_dir }}/{{ config.theme.logo }}
{%- endif -%}
# Meta tags
tags:
# Open Graph
og:type: website
og:title: *page_title_with_site_name
og:description: *page_description
og:image: "{{ image.url }}"
og:image:type: "{{ image.type }}"
og:image:width: "{{ image.width }}"
og:image:height: "{{ image.height }}"
og:url: "{{ page.canonical_url }}"
# Twitter
twitter:card: summary_large_image
twitter.title: *page_title_with_site_name
twitter:description: *page_description
twitter:image: "{{ image.url }}"
# -----------------------------------------------------------------------------
# Specification
# -----------------------------------------------------------------------------
# Card size and layers
size: { width: 1200, height: 630 }
layers:
# Background
- background:
image: *background_image
color: *background_color
# Page icon
- size: { width: 630, height: 630 }
offset: { x: 570, y: 0 }
icon:
value: *page_icon
color: "#00000033"
# Logo
- size: { width: 64, height: 64 }
offset: { x: 64, y: 64 }
background:
image: *logo
# Site name
- size: { width: 768, height: 42 }
offset: { x: 160, y: 78 }
typography:
content: *site_name
color: *color
font:
family: Bagnard
style: Bold
# Page title
- size: { width: 864, height: 256 }
offset: { x: 62, y: 192 }
typography:
content: *page_title
align: start
color: *color
line:
amount: 3
height: 1.5
font:
family: *title_font_family
style: *title_font_style
# Page description
- size: { width: 864, height: 96 }
offset: { x: 64, y: 480 }
typography:
content: *page_description
align: start
color: *color
line:
amount: 3
height: 1.5
font:
family: *font_family
style: Regular

137
config/layouts/pride.yml Normal file
View File

@ -0,0 +1,137 @@
definitions:
- &background_image >-
{%- if page.meta.cover -%}
theme/assets/img/cover/{{ page.meta.cover }}
{%- else -%}
{{ layout.background_image or "theme/assets/brand/images/png/cover-progress-notext-blur.png" }}
{%- endif -%}
- &background_color >-
#f7f7fcaa
- &color >-
{{ layout.color or "#2d2d2d" }}
- &title_font_family >-
{%- if config.theme.language == "he" -%}
Suez One
{%- elif config.theme.language == ("zh-Hant" or "ru") -%}
Noto Serif TC
{%- else -%}
Bagnard
{%- endif -%}
- &font_family >-
{%- if config.theme.language == "he" -%}
Suez One
{%- elif config.theme.language == ("zh-Hant" or "ru") -%}
Noto Sans TC
{%- else -%}
Public Sans
{%- endif -%}
- &site_name >-
{{ config.site_name }}
- &page_title >-
{{ page.meta.get("title", page.title) }}
- &page_title_with_site_name >-
{%- if page.meta.meta_title -%}
{{ page.meta.meta_title }}
{%- else -%}
{{ page.meta.get("title", page.title) }}
{%- endif -%}
- &page_description >-
{{ page.meta.get("description", config.site_description) or "" }}
- &page_icon >-
{{ page.meta.icon or "" }}
- &logo >-
theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext.svg
# Meta tags
tags:
# Open Graph
og:type: website
og:title: *page_title_with_site_name
og:description: *page_description
og:image: "{{ image.url }}"
og:image:type: "{{ image.type }}"
og:image:width: "{{ image.width }}"
og:image:height: "{{ image.height }}"
og:url: "{{ page.canonical_url }}"
# Twitter
twitter:card: summary_large_image
twitter.title: *page_title_with_site_name
twitter:description: *page_description
twitter:image: "{{ image.url }}"
# -----------------------------------------------------------------------------
# Specification
# -----------------------------------------------------------------------------
# Card size and layers
size: { width: 1200, height: 630 }
layers:
# Background
- background:
image: *background_image
color: *background_color
# Page icon
- size: { width: 630, height: 630 }
offset: { x: 570, y: 0 }
icon:
value: *page_icon
color: "#00000033"
# Logo
- size: { width: 64, height: 64 }
offset: { x: 64, y: 64 }
background:
image: *logo
# Site name
- size: { width: 768, height: 42 }
offset: { x: 160, y: 78 }
typography:
content: *site_name
color: *color
font:
family: Bagnard
style: Bold
# Page title
- size: { width: 864, height: 256 }
offset: { x: 62, y: 192 }
typography:
content: *page_title
align: start
color: *color
line:
amount: 3
height: 1.5
font:
family: *title_font_family
style: Bold
# Page description
- size: { width: 864, height: 96 }
offset: { x: 64, y: 480 }
typography:
content: *page_description
align: start
color: *color
line:
amount: 3
height: 1.5
font:
family: *font_family
style: Regular

290
config/mkdocs-common.yml Normal file
View File

@ -0,0 +1,290 @@
# 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.
docs_dir: '../docs'
site_url: "https://www.privacyguides.org/"
site_dir: '../site'
site_name: Privacy Guides
site_description: !ENV [SITE_DESCRIPTION, "Privacy Guides is your central privacy and security resource to protect yourself online."]
copyright: !ENV [FOOTER_COPYRIGHT, "&copy; 2019 Privacy Guides and contributors."]
edit_uri: edit/main/docs/
extra:
generator: false
context: !ENV [CONTEXT, "production"]
deploy: !ENV DEPLOY_ID
homepage_description: !ENV [DESCRIPTION_HOMEPAGE, "A socially motivated website which provides information about protecting your online data privacy and security."]
translation_notice: !ENV DESCRIPTION_TRANSLATION
translation_notice_cta: !ENV [DESCRIPTION_TRANSLATION_CTA, "Visit Crowdin"]
translation_notice_language: !ENV LANG_ENGLISH
social:
- icon: simple/mastodon
link: https://mastodon.neat.computer/@privacyguides
name: !ENV [SOCIAL_MASTODON, "Mastodon"]
- icon: simple/matrix
link: https://matrix.to/#/#privacyguides:matrix.org
name: !ENV [SOCIAL_MATRIX, "Matrix"]
- icon: simple/discourse
link: https://discuss.privacyguides.net/
name: !ENV [SOCIAL_FORUM, "Forum"]
- icon: simple/github
link: https://github.com/privacyguides
name: !ENV [SOCIAL_GITHUB, "GitHub"]
- icon: simple/torbrowser
link: http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion/
name: !ENV [SOCIAL_TOR_SITE, "Hidden service"]
alternate:
- name: English
link: /en/
lang: en
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1fa-1f1f8.svg
- name: Español
link: /es/
lang: es
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ea-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: Italiano
link: /it/
lang: it
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ee-1f1f9.svg
- name: Nederlands
link: /nl/
lang: nl
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1f3-1f1f1.svg
- name: 正體中文
link: /zh-hant/
lang: zh-Hant
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1ed-1f1f0.svg
- name: русский
link: /ru/
lang: ru
icon: https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/1f1f7-1f1fa.svg
repo_url: https://github.com/privacyguides/privacyguides.org
repo_name: ""
edit_uri: edit/main/docs/
theme:
name: material
language: en
custom_dir: ../theme
logo: ../../theme/assets/brand/logos/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: !ENV [THEME_DARK, "Switch to dark mode"]
- media: "(prefers-color-scheme: dark)"
scheme: slate
accent: amber
toggle:
icon: material/brightness-2
name: !ENV [THEME_LIGHT, "Switch to light mode"]
- media: "(prefers-color-scheme: light)"
scheme: default
accent: deep purple
toggle:
icon: material/brightness-5
name: !ENV [THEME_AUTO, "Switch to system theme"]
favicon: assets/brand/logos/png/favicon-32x32.png
icon:
repo: simple/github
features:
- navigation.tracking
- navigation.tabs
- navigation.sections
- navigation.expand
- navigation.path
- navigation.indexes
- content.tabs.link
- content.tooltips
- search.highlight
extra_css:
- assets/stylesheets/extra.css?v=3.17.0
extra_javascript:
- assets/javascripts/mathjax.js
- assets/javascripts/randomize-element.js
watch:
- ../theme
- ../includes
- mkdocs-common.yml
plugins:
tags: {}
search: {}
macros: {}
meta: {}
git-committers:
enabled: !ENV [GITCOMMITTERS, PRODUCTION, NETLIFY, false]
repository: privacyguides/privacyguides.org
branch: main
git-revision-date-localized:
enabled: !ENV [GITREVISIONDATE, PRODUCTION, NETLIFY, false]
exclude:
- index.md
fallback_to_build_date: true
privacy:
assets_exclude:
- cdn.jsdelivr.net/npm/mathjax@3/*
optimize:
enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false]
typeset: {}
social:
cards: !ENV [CARDS, PRODUCTION, NETLIFY, true]
cards_dir: assets/img/social
cards_layout_dir: config/layouts
cards_layout: page
# cards_layout: pride
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:
auto_append:
- includes/abbreviations.en.txt
pymdownx.tasklist:
custom_checkbox: true
attr_list: {}
def_list: {}
md_in_html: {}
meta: {}
abbr: {}
pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
tables: {}
footnotes: {}
toc:
permalink: true
toc_depth: 4
nav:
- !ENV [NAV_HOME, 'Home']: 'index.md'
- !ENV [NAV_KNOWLEDGE_BASE, 'Knowledge Base']:
- 'basics/why-privacy-matters.md'
- 'basics/threat-modeling.md'
- 'basics/common-threats.md'
- 'basics/common-misconceptions.md'
- 'basics/account-creation.md'
- 'basics/account-deletion.md'
- !ENV [NAV_TECHNOLOGY_ESSENTIALS, 'Technology Essentials']:
- 'basics/passwords-overview.md'
- 'basics/multi-factor-authentication.md'
- 'basics/email-security.md'
- 'basics/vpn-overview.md'
- !ENV [NAV_ADVANCED_TOPICS, 'Advanced Topics']:
- 'advanced/dns-overview.md'
- 'advanced/tor-overview.md'
- 'advanced/payments.md'
- 'advanced/communication-network-types.md'
- !ENV [NAV_OPERATING_SYSTEMS, 'Operating Systems']:
- 'os/android-overview.md'
- 'os/ios-overview.md'
- 'os/linux-overview.md'
- 'os/macos-overview.md'
- 'os/qubes-overview.md'
- 'os/windows-overview.md'
- kb-archive.md
- !ENV [NAV_RECOMMENDATIONS, 'Recommendations']:
- 'tools.md'
- !ENV [NAV_INTERNET_BROWSING, 'Internet Browsing']:
- 'tor.md'
- 'desktop-browsers.md'
- 'mobile-browsers.md'
- !ENV [NAV_PROVIDERS, 'Providers']:
- 'cloud.md'
- 'dns.md'
- 'email-aliasing.md'
- 'email.md'
- 'financial-services.md'
- 'photo-management.md'
- 'search-engines.md'
- 'vpn.md'
- !ENV [NAV_SOFTWARE, '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'
- !ENV [NAV_OPERATING_SYSTEMS, 'Operating Systems']:
- 'android.md'
- 'desktop.md'
- 'router.md'
- !ENV [NAV_ADVANCED, 'Advanced']:
- 'device-integrity.md'
- !ENV [NAV_ABOUT, 'About']:
- 'about/index.md'
- 'about/criteria.md'
- 'about/notices.md'
- 'about/privacy-policy.md'
- !ENV [NAV_COMMUNITY, 'Community']:
- 'about/donate.md'
- !ENV [NAV_ONLINE_SERVICES, 'Online Services']: 'about/services.md'
- !ENV [NAV_CODE_OF_CONDUCT, 'Code of Conduct']: 'CODE_OF_CONDUCT.md'
- 'about/privacytools.md'
- !ENV [NAV_CONTRIBUTING, 'Contributing']:
- !ENV [NAV_WRITING_GUIDE, 'Writing Guide']:
- 'meta/writing-style.md'
- 'meta/admonitions.md'
- 'meta/brand.md'
- 'meta/translations.md'
- !ENV [NAV_TECHNICAL_GUIDES, 'Technical Guides']:
- 'meta/uploading-images.md'
- 'meta/git-recommendations.md'
- !ENV [NAV_CHANGELOG, 'Changelog']: 'https://github.com/privacyguides/privacyguides.org/releases'
- !ENV [NAV_FORUM, 'Forum']: 'https://discuss.privacyguides.net/'
- !ENV [NAV_BLOG, 'Blog']: 'https://blog.privacyguides.org/'

48
config/mkdocs-offline.yml Normal file
View File

@ -0,0 +1,48 @@
# Copyright (c) 2023-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.
INHERIT: mkdocs-common.yml
# Disable any GitHub integrations
repo_url: ""
extra:
# Disable language switcher
alternate: false
offline: true
theme:
# OFFLINE ONLY: this logo needs to be set separately because the relative path is different
logo: ../theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext-colorbg.svg
features:
- navigation.tabs
- navigation.sections
- navigation.indexes
- content.tabs.link
- content.tooltips
- search.highlight
plugins:
offline:
enabled: true
social:
enabled: false
# Edit the offline-mode navbar in mkdocs-common.yml

27
config/mkdocs.en.yml Normal file
View File

@ -0,0 +1,27 @@
# 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.
INHERIT: mkdocs-common.yml
site_url: "https://www.privacyguides.org/en/"
site_dir: '../site/en'
theme:
# ENGLISH ONLY: this logo needs to be set separately because the relative path is different
logo: ../theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext-colorbg.svg

34
config/mkdocs.es.yml Normal file
View File

@ -0,0 +1,34 @@
# 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.
INHERIT: mkdocs-common.yml
docs_dir: '../i18n/es'
site_url: "https://www.privacyguides.org/es/"
site_dir: '../site/es'
edit_uri: edit/main/i18n/es/
theme:
language: es
markdown_extensions:
pymdownx.snippets:
auto_append:
- includes/abbreviations.es.txt

34
config/mkdocs.fr.yml Normal file
View File

@ -0,0 +1,34 @@
# 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.
INHERIT: mkdocs-common.yml
docs_dir: '../i18n/fr'
site_url: "https://www.privacyguides.org/fr/"
site_dir: '../site/fr'
edit_uri: edit/main/i18n/fr/
theme:
language: fr
markdown_extensions:
pymdownx.snippets:
auto_append:
- includes/abbreviations.fr.txt

41
config/mkdocs.he.yml Normal file
View File

@ -0,0 +1,41 @@
# 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.
INHERIT: mkdocs-common.yml
docs_dir: '../i18n/he'
site_url: "https://www.privacyguides.org/he/"
site_dir: '../site/he'
edit_uri: edit/main/i18n/he/
extra_css:
- assets/stylesheets/extra.css?v=3.2.0
- assets/stylesheets/lang-he.css?v=3.4.0
theme:
language: he
font:
text: Open Sans
code: Cousine
markdown_extensions:
pymdownx.snippets:
auto_append:
- includes/abbreviations.he.txt

34
config/mkdocs.it.yml Normal file
View File

@ -0,0 +1,34 @@
# 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.
INHERIT: mkdocs-common.yml
docs_dir: '../i18n/it'
site_url: "https://www.privacyguides.org/it/"
site_dir: '../site/it'
edit_uri: edit/main/i18n/it/
theme:
language: it
markdown_extensions:
pymdownx.snippets:
auto_append:
- includes/abbreviations.it.txt

34
config/mkdocs.nl.yml Normal file
View File

@ -0,0 +1,34 @@
# 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.
INHERIT: mkdocs-common.yml
docs_dir: '../i18n/nl'
site_url: "https://www.privacyguides.org/nl/"
site_dir: '../site/nl'
edit_uri: edit/main/i18n/nl/
theme:
language: nl
markdown_extensions:
pymdownx.snippets:
auto_append:
- includes/abbreviations.nl.txt

38
config/mkdocs.ru.yml Normal file
View File

@ -0,0 +1,38 @@
# 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.
INHERIT: mkdocs-common.yml
docs_dir: '../i18n/ru'
site_url: "https://www.privacyguides.org/ru/"
site_dir: '../site/ru'
edit_uri: edit/main/docs/
extra_css:
- assets/stylesheets/extra.css?v=3.2.0
- assets/stylesheets/lang-ru.css?v=3.13.0
theme:
language: ru
markdown_extensions:
pymdownx.snippets:
auto_append:
- includes/abbreviations.ru.txt

41
config/mkdocs.zh-Hant.yml Normal file
View File

@ -0,0 +1,41 @@
# 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.
INHERIT: mkdocs-common.yml
docs_dir: '../i18n/zh-Hant'
site_url: "https://www.privacyguides.org/zh-Hant/"
site_dir: '../site/zh-Hant'
edit_uri: edit/main/i18n/zh-Hant/
extra_css:
- assets/stylesheets/extra.css?v=3.2.0
- assets/stylesheets/lang-zh-Hant.css?v=3.13.0
theme:
language: zh-Hant
font:
text: Noto Sans TC
code: Noto Sans TC
markdown_extensions:
pymdownx.snippets:
auto_append:
- includes/abbreviations.zh-Hant.txt

View File

@ -1,18 +1,42 @@
project_id_env: CROWDIN_PROJECT_ID
# 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.
api_token_env: CROWDIN_PERSONAL_TOKEN
project_id: "509862"
"preserve_hierarchy": true
files:
- source: "/docs/**/*.en.*"
translation: "/docs/**/%file_name%.%locale_with_underscore%.%file_extension%"
translation_replace:
"en.": ""
update_option: update_as_unapproved
- source: "/docs/**/*.*"
translation: "/i18n/%two_letters_code%/**/%file_name%.%file_extension%"
skip_untranslated_files: false
- source: "/theme/overrides/*.en.html"
translation: "/theme/overrides/%file_name%.%locale_with_underscore%.html"
translation: "/theme/overrides/%file_name%.%two_letters_code%.html"
translation_replace:
"en.": ""
- source: "/includes/*.en.md"
translation: "/includes/%file_name%.%locale_with_underscore%.md"
skip_untranslated_files: false
- source: "/includes/*.en.*"
translation: "/includes/%file_name%.%two_letters_code%.%file_extension%"
translation_replace:
"en.": ""
update_option: update_as_unapproved
skip_untranslated_files: false
- source: "/static/i18n/*.en.*"
translation: "/static/i18n/%file_name%.%two_letters_code%.%file_extension%"
translation_replace:
"en.": ""
skip_untranslated_files: false

View File

@ -10,44 +10,44 @@
What we expect from members of our communities:
1. **Don't spread misinformation**
1. **Do not spread misinformation**
We are creating an evidence-based educational community around information privacy and security, not a 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.
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.
1. **Don't abuse our willingness to help**
2. **Do not abuse our willingness to help**
Our community members are not your free tech support. We are happy to help you with specific steps on your privacy journey if you are willing to put in effort on your end. We are not willing to answer endlessly repeated questions about generic computer problems you could have answered yourself with a 30-second internet search. Don't be a [help vampire](https://slash7.com/2006/12/22/vampires/).
1. **Behave in a positive and constructive manner**
Our community members are not free tech support. We are happy to help with specific steps for individual's, privacy journey, if they 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:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall community
- 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
## Unacceptable Behavior
The following behaviors are considered harassment and are unacceptable within our community:
- The use of sexualized language or imagery, and sexual attention or advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
- 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 email address, without a persons 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.
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
## Contact
If you observe a problem on a platform like Matrix or Reddit, please contact our moderators on that platform in chat, via DM, or through any designated "Modmail" system.
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 our community moderators are unable to resolve, reach out to `jonah@privacyguides.org` and/or `dngray@privacyguides.org`.
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 the reporter of any incident.
All community leaders are obligated to respect the privacy and security of reporters for all incidents.

View File

@ -2,9 +2,12 @@
title: General Criteria
---
!!! example "Work in Progress"
<div class="admonition example" markdown>
<p class="admonition-title">Work in Progress</p>
The following page is a work in progress, and does not reflect the full criteria for our recommendations at this time. Past discussion on this topic: [#24](https://github.com/privacyguides/privacyguides.org/discussions/24)
The following page is a work in progress, and does not reflect the full criteria for our recommendations at this time. Past discussion on this topic: [#24](https://github.com/privacyguides/privacyguides.org/discussions/24)
</div>
Below are some things that must apply to all submissions to Privacy Guides. Each category will have additional requirements for inclusion.
@ -17,7 +20,7 @@ We do not make money from recommending certain products, we do not use affiliate
We apply these priorities when considering new recommendations:
- **Secure**: Tools should follow security best-practices wherever applicable.
- **Source Availability**: Open source projects are generally preferred over equivalent proprietary alternatives.
- **Source Availability**: Open-source projects are generally preferred over equivalent proprietary alternatives.
- **Cross-Platform**: 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.
@ -29,7 +32,7 @@ We have these requirements in regard to developers which wish to submit their pr
- Must disclose affiliation, i.e. your position within the project being submitted.
- Must have a security whitepaper if it is a project that involves handling of sensitive information like a messenger, password manager, encrypted cloud storage etc.
- Must have a security whitepaper if it is a project that involves handling of sensitive information like a messenger, password manager, encrypted cloud storage, etc.
- Third party audit status. We want to know if you have one, or have one planned. If possible please mention who will be conducting the audit.
- Must explain what the project brings to the table in regard to privacy.

View File

@ -2,25 +2,20 @@
title: Supporting Us
---
<!-- markdownlint-disable MD036 -->
It takes a lot of [people](https://github.com/privacyguides/privacyguides.org/graphs/contributors) and [work](https://github.com/privacyguides/privacyguides.org/pulse/monthly) to keep Privacy Guides up to date and spreading the word about privacy and mass surveillance. If you like what we do, the best way to help out is by getting involved by [editing the site](https://github.com/privacyguides/privacyguides.org) or [contributing translations](https://crowdin.com/project/privacyguides).
It takes a lot of [people](https://github.com/privacyguides/privacyguides.org/graphs/contributors) and [work](https://github.com/privacyguides/privacyguides.org/pulse/monthly) to keep Privacy Guides up to date and spreading the word about privacy and mass surveillance. If you like what we do, consider getting involved by [editing the site](https://github.com/privacyguides/privacyguides.org) or [contributing translations](https://crowdin.com/project/privacyguides).
If you want to support us financially, the most convenient method for us is contributing via Open Collective, a website operated by our fiscal host. Open Collective accepts payments via credit/debit card, PayPal, and bank transfers.
<div class="admonition failure" markdown>
<p class="admonition-title">Donation Information</p>
[Donate on OpenCollective.com](https://opencollective.com/privacyguides/donate){ .md-button .md-button--primary }
Unfortunately, Open Collective Foundation (our long-time fiscal host) announced they are dissolving their operations and can no longer support us or any project they host. Thus, we have no way to accept donations at this time. We are looking into ways to move forward from a legal perspective, but in the meantime any non-monetary contribution you can provide would be greatly appreciated.
Donations made directly to us Open Collective are generally tax-deductible in the US, because our fiscal host (the Open Collective Foundation) is a registered 501(c)3 organization. You will receive a receipt from the Open Collective Foundation after donating. Privacy Guides does not provide financial advice, and you should contact your tax advisor to find out whether this is applicable to you.
</div>
If you already make use of GitHub sponsorships, you can also sponsor our organization there.
Another option to support us is by buying our merchandise from HelloTux. We get a small commission for each item sold, and you get a quality product to show for it.
[Sponsor us on GitHub](https://github.com/sponsors/privacyguides){ .md-button }
[Buy on HelloTux.com](https://hellotux.com/privacyguides){ class="md-button" }
## Backers
A special thanks to all those who support our mission! :heart:
*Please note: This section loads a widget directly from Open Collective. This section does not reflect donations made outside of Open Collective, and we have no control over the specific donors featured in this section.*
<script src="https://opencollective.com/privacyguides/banner.js"></script>
Thank you to all those who support our mission! :heart:
## How We Use Donations

View File

@ -1,60 +1,132 @@
---
title: "About Privacy Guides"
description: Privacy Guides is a socially motivated website that provides information for protecting your data security and privacy.
schema:
"@context": https://schema.org
"@type": Organization
"@id": https://www.privacyguides.org/
name: Privacy Guides
url: https://www.privacyguides.org/en/about/
logo: https://www.privacyguides.org/en/assets/brand/logos/png/square/pg-yellow.png
sameAs:
- https://twitter.com/privacy_guides
- https://github.com/privacyguides
- https://www.wikidata.org/wiki/Q111710163
- https://opencollective.com/privacyguides
- https://www.youtube.com/@privacyguides
- https://mastodon.neat.computer/@privacyguides
---
![Privacy Guides logo](../assets/brand/logos/png/square/pg-yellow.png){ align=right }
**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](https://discuss.privacyguides.org/g/team) and contributors.
**Privacy Guides** is a socially motivated website that provides [information](/kb) 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](https://discuss.privacyguides.net/g/team) and contributors. Our website is free of advertisements and not affiliated with any of the listed providers.
[:material-hand-coin-outline: Support the project](donate.md){ .md-button .md-button--primary }
[: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" }
[:octicons-heart-16:](donate.md){ .card-link title=Contribute }
> 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 arent 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), and [Wired](https://wired.com/story/firefox-mozilla-2022).
## 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.
So far in 2023 we've launched international translations of our website in [French](/fr/), [Hebrew](/he/), and [Dutch](/nl/), with more languages on the way, made possible by our excellent translation team on [Crowdin](https://crowdin.com/project/privacyguides). 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.
## Our Team
<!-- markdownlint-disable MD030 -->
??? person "@jonah"
<div class="grid cards" markdown>
<!-- Every team member should have a unique emoji.
Team member cards should include ONLY the following links:
- Discourse Profile
- ONE Link of team member's choice
- Email if applicable
This is to keep it fair and not spammy, especially as we grow.
-->
- [:simple-discourse: Discourse](https://discuss.privacyguides.org/u/jonah)
- [:simple-github: GitHub](https://github.com/jonaharagon "@jonaharagon")
- [:simple-mastodon: Mastodon](https://mastodon.neat.computer/@jonah "@jonah@neat.computer"){rel=me}
- [:fontawesome-solid-house: Homepage](https://www.jonaharagon.com)
- :robot:{ .lg .middle } **@jonah**
??? person "@niek-de-wilde"
---
- [:simple-discourse: Discourse](https://discuss.privacyguides.org/u/Niek-de-Wilde)
- [:simple-github: GitHub](https://github.com/blacklight447 "@blacklight447")
- [:simple-mastodon: Mastodon](https://mastodon.social/@blacklight447 "@blacklight447@mastodon.social"){rel=me}
:material-text-account: Founder
??? person "@dngray"
[:material-account: Profile](https://discuss.privacyguides.net/u/jonah)
- [:simple-discourse: Discourse](https://discuss.privacyguides.org/u/dngray)
- [:simple-github: GitHub](https://github.com/dngray "@dngray")
- [:simple-mastodon: Mastodon](https://mastodon.social/@dngray "@dngray@mastodon.social"){rel=me}
- [:fontawesome-solid-envelope: Email](mailto:dngray@privacyguides.org)
[:material-home: Homepage](https://www.jonaharagon.com)
??? person "@freddy"
[:material-email: Email](mailto:jonah@privacyguides.org)
- [:simple-discourse: Discourse](https://discuss.privacyguides.org/u/freddy)
- [:simple-github: GitHub](https://github.com/freddy-m "@freddy-m")
- [:simple-mastodon: Mastodon](https://social.lol/@freddy "@freddy@social.lol"){rel=me}
- [:fontawesome-solid-envelope: Email](mailto:freddy@privacyguides.org)
- [:fontawesome-solid-house: Homepage](https://freddy.omg.lol)
- :cactus:{ .lg .middle } **@niek-de-wilde**
??? person "@mfwmyfacewhen"
---
- [:simple-discourse: Discourse](https://discuss.privacyguides.org/u/mfwmyfacewhen)
- [:simple-github: GitHub](https://github.com/mfwmyfacewhen "@mfwmyfacewhen")
- [:fontawesome-solid-house: Homepage](https://mfw.omg.lol)
??? person "@olivia"
:material-text-account: Founder
- [:simple-discourse: Discourse](https://discuss.privacyguides.org/u/olivia)
- [:simple-github: GitHub](https://github.com/hook9 "@hook9")
- [:simple-mastodon: Mastodon](https://mastodon.neat.computer/@oliviablob "@oliviablob@neat.computer"){rel=me}
[:material-account: Profile](https://discuss.privacyguides.net/u/Niek-de-Wilde)
Additionally, [many people](https://github.com/privacyguides/privacyguides.org/graphs/contributors) have made contributions to the project. You can too, we're open sourced on GitHub!
[:simple-mastodon: Mastodon](https://mastodon.social/@blacklight447 "@blacklight447@mastodon.social"){rel=me}
Our team members review all changes made to the website and handle administrative duties such as web hosting and financials, however they do not personally profit from any contributions made to this site. Our financials are transparently hosted by the Open Collective Foundation 501(c)(3) at [opencollective.com/privacyguides](https://opencollective.com/privacyguides). Donations to Privacy Guides are generally tax deductible in the United States.
[:material-email: Email](mailto:niekdewilde@privacyguides.org)
- :polar_bear:{ .lg .middle } **@dngray**
---
:material-text-account: Founder
[:material-account: Profile](https://discuss.privacyguides.net/u/dngray)
[:simple-mastodon: Mastodon](https://mastodon.social/@dngray "@dngray@mastodon.social"){rel=me}
[:material-email: Email](mailto:dngray@privacyguides.org)
- :detective:{ .lg .middle } **@freddy**
---
:material-text-account: Founder
[:material-account: Profile](https://discuss.privacyguides.net/u/freddy)
[:simple-mastodon: Mastodon](https://social.lol/@freddy "@freddy@social.lol"){rel=me}
[:material-email: Email](mailto:freddy@privacyguides.org)
- :smirk_cat:{ .lg .middle } **@olivia**
---
:material-text-account: Founder
[:material-account: Profile](https://discuss.privacyguides.net/u/olivia)
[:simple-mastodon: Mastodon](https://mastodon.neat.computer/@oliviablob "@oliviablob@neat.computer"){rel=me}
</div>
Additionally, [many people](https://github.com/privacyguides/privacyguides.org/graphs/contributors) 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).
Our team members review all changes made to the website and handle administrative duties such as web hosting and financials, however they do not personally profit from any contributions made to this site. Donations to Privacy Guides are generally tax-deductible in the United States.
## Site License
*The following is a human-readable summary of (and not a substitute for) the [license](https://github.com/privacyguides/privacyguides.org/blob/main/LICENSE):*
<div class="admonition danger" markdown>
The following is a human-readable summary of (and not a substitute for) the [license](/license).
</div>
:fontawesome-brands-creative-commons: :fontawesome-brands-creative-commons-by: :fontawesome-brands-creative-commons-nd: Unless otherwise noted, the original content on this website is made available under the [Creative Commons Attribution-NoDerivatives 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 provide a link to the license. You may do so in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use. If you remix, transform, or build upon the content of this website, you may not distribute the modified material.

View File

@ -1,7 +1,5 @@
---
title: "Notices and Disclaimers"
hide:
- toc
---
## Legal Disclaimer
@ -10,25 +8,32 @@ Privacy Guides is not a law firm. As such, the Privacy Guides website and contri
Running this website, like any human endeavor, involves uncertainty and trade-offs. We hope this website helps, but it may include mistakes and cant 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 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.
## Licenses
## Licensing Overview
Unless otherwise noted, all content on this website is made available under the terms of the [Creative Commons Attribution-NoDerivatives 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/blob/main/LICENSE).
<div class="admonition danger" markdown>
The following is a human-readable summary of (and not a substitute for) the [license](/license).
</div>
Unless otherwise noted, all **content** on this website is made available under the terms of the [Creative Commons Attribution-NoDerivatives 4.0 International Public License](https://github.com/privacyguides/privacyguides.org/blob/main/LICENSE). 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 this repository, or code where a superseding license is otherwise noted. The following are notable examples, but this list may not be all-inclusive:
* [MathJax](https://github.com/privacyguides/privacyguides.org/blob/main/docs/assets/javascripts/mathjax.js) is licensed under the [Apache License 2.0](https://github.com/privacyguides/privacyguides.org/blob/main/docs/assets/javascripts/LICENSE.mathjax.txt).
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://github.com/github/opensource.guide/blob/master/LICENSE).
* [MathJax](https://github.com/privacyguides/privacyguides.org/blob/main/theme/assets/javascripts/mathjax.js) is licensed under the [Apache License 2.0](https://github.com/privacyguides/privacyguides.org/blob/main/docs/assets/javascripts/LICENSE.mathjax.txt).
* The [Bagnard](https://github.com/privacyguides/brand/tree/main/WOFF/bagnard) heading font is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/main/WOFF/bagnard/LICENSE.txt).
* The [Public Sans](https://github.com/privacyguides/brand/tree/main/WOFF/public_sans) font used for most text on the site is licensed under the terms detailed [here](https://github.com/privacyguides/brand/blob/main/WOFF/public_sans/LICENSE.txt).
* The [DM Mono](https://github.com/privacyguides/brand/tree/main/WOFF/dm_mono) font used for monospaced text on the site is licensed under the [SIL Open Font License 1.1](https://github.com/privacyguides/brand/blob/main/WOFF/dm_mono/LICENSE.txt).
This means that you can use the human-readable content in this repository for your own project, per the terms outlined in the Creative Commons Attribution-NoDerivatives 4.0 International Public License text. You may do so 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.
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://www.copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject matter 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.*
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 matter 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 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.
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
@ -41,3 +46,7 @@ You must not conduct any systematic or automated data collection activities on o
* 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).*

View File

@ -8,40 +8,23 @@ Privacy Guides is a community project operated by a number of active volunteer c
The privacy of our website visitors is important to us, so we do not track any individual people. As a visitor to our website:
- No personal information is collected
- No information such as cookies is stored in the browser
- No information such as cookies are stored in the browser
- No information is shared with, sent to or sold to third-parties
- No information is shared with advertising companies
- No information is mined and harvested for personal and behavioral trends
- No information is monetized
You can view the data we collect on our [statistics](statistics.md) page.
We run a self-hosted installation of [Plausible Analytics](https://plausible.io) to collect some anonymous usage data for statistical purposes. The goal is to track overall trends in our website traffic, it is not to track individual visitors. All the data is in aggregate only. No personal data is collected.
Data collected includes referral sources, top pages, visit duration, information from the devices (device type, operating system, country and browser) used during the visit and more. You can learn more about how Plausible works and collects information in a privacy-respecting manner [here](https://plausible.io/data-policy).
## Data We Collect From Account Holders
On some websites and services we provide, many features may require an account. For example, an account may be required to post and reply to topics on a forum platform.
If you register for an account on one of our services, we may collect any information you provide us (such as your email, password, profile information, etc.) and use that information to provide you with the service. We never share or sell this data.
To sign up for most accounts, we will collect a name, username, email, and password. In the event a website requires more information than just that data, that will be clearly marked and noted in a separate privacy statement per-site.
We use your account data to identify you on the website and to create pages specific to you, such as your profile page. We will also use your account data to publish a public profile for you on our services.
We use your email to:
- Notify you about posts and other activity on the websites or services.
- Reset your password and help keep your account secure.
- Contact you in special circumstances related to your account.
- Contact you about legal requests, such as DMCA takedown requests.
On some websites and services you may provide additional information for your account, such as a short biography, avatar, your location, or your birthday. We make that information available to everyone who can access the website or service in question. This information is not required to use any of our services and can be erased at any time.
We will store your account data as long as your account remains open. After closing an account, we may retain some or all of your account data in the form of backups or archives for up to 90 days.
Some services we host have separate privacy policies which supersede this document. For example, the privacy policy of our forum can be found at [discuss.privacyguides.net/privacy](https://discuss.privacyguides.net/privacy).
## Contacting Us
The Privacy Guides team generally does not have access to personal data outside of limited access granted via some moderation panels. Inquiries regarding your personal information should be sent directly to:
Even in the limited cases where your data is collected, our volunteers and most members of the Privacy Guides team have no access to that information. Some information (such as your email address) may be accessible to moderators via limited control panels for the purposes of moderating our communities.
Thus, inquiries regarding your personal information should be sent directly to:
```text
Jonah Aragon
@ -51,7 +34,7 @@ jonah@privacyguides.org
For all other inquiries, you can contact any member of our team.
For complaints under GDPR more generally, you may lodge complaints with your local data protection supervisory authorities.
For complaints under GDPR more generally, you always have the option to lodge complaints with your local data protection supervisory authorities.
## About This Policy

View File

@ -13,13 +13,13 @@ After the organizational move was completed, the founder of PrivacyTools returne
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.
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.==
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
@ -33,25 +33,25 @@ In mid-2021 the PrivacyTools team reached out to Jonah, who agreed to rejoin the
## 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.
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://www.reddit.com/r/redditrequest/comments/o9tllh/requesting_rprivacytoolsio_im_only_active_mod_top/) 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.
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://www.redditinc.com/policies/moderator-code-of-conduct).
> 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://www.privacyguides.org/blog/2021/09/14/welcome-to-privacy-guides/) the beginning of our migration to this new domain:
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://www.reddit.com/r/PrivacyGuides/comments/pnhn4a/rprivacyguides_privacyguidesorg_what_you_need_to/)
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.
@ -62,11 +62,11 @@ Things appeared to be going smoothly, and most of our active community made the
## 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://www.reddit.com/r/privacytoolsIO/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.
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://www.reddit.com/r/PrivacyGuides/comments/pymthv/comment/hexwrps/) at the beginning of October, ending any migration possibilities to any users still using those services.
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.
@ -76,11 +76,11 @@ BurungHantu also made a [twitter post](https://twitter.com/privacytoolsIO/status
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](../vpn.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.
==**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://www.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://www.reddit.com/r/privacytoolsIO/comments/qk7qrj/a_new_era_why_rptio_is_now_a_restricted_sub/) a restricted sub in a post on November 1st, 2021:
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.
>
@ -88,7 +88,7 @@ After the launch of [r/PrivacyGuides](https://www.reddit.com/r/privacyguides), i
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://www.reddit.com/r/redditrequest/wiki/top_mod_removal/) of Reddit rules:
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.
@ -106,12 +106,12 @@ Thus, the funds in OpenCollective belong to Privacy Guides, they were given to o
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://www.reddit.com/r/redditrequest/comments/o9tllh/requesting_rprivacytoolsio_im_only_active_mod_top/)
- [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://www.reddit.com/r/privacytoolsIO/comments/pnql46/rprivacyguides_privacyguidesorg_what_you_need_to/)
- [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://www.reddit.com/r/PrivacyGuides/comments/pymthv/comment/hexwrps/)
- [Apr 2, 2022 response by u/dng99 to PrivacyTools' accusatory blog post](https://www.reddit.com/comments/tuo7mm/comment/i35kw5a/)
- [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)

View File

@ -2,7 +2,7 @@
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){ .md-button .md-button--primary }
[:material-comment-alert: Report an issue](https://discuss.privacyguides.net/c/services/2){ class="md-button md-button--primary" }
## Discourse
@ -29,3 +29,10 @@ Access may be granted upon request to Privacy Guides team members, Matrix modera
- Domain: [search.privacyguides.net](https://search.privacyguides.net)
- Availability: Public
- Source: [github.com/searxng/searxng-docker](https://github.com/searxng/searxng-docker)
## Invidious
- Domain: [invidious.privacyguides.net](https://invidious.privacyguides.net)
- Availability: Semi-Public
We host Invidious primarily to serve embedded YouTube videos on our website, this instance is not intended for general-purpose use and may be limited at any time.
- Source: [github.com/iv-org/invidious](https://github.com/iv-org/invidious)

View File

@ -1,60 +0,0 @@
---
title: Traffic Statistics
---
## Website Statistics
<iframe plausible-embed src="https://stats.privacyguides.net/share/privacyguides.org?auth=IxTl2wRhi3uxF09rd1NSn&embed=true&theme=system&background=transparent" scrolling="no" frameborder="0" loading="lazy" style="width: 1px; min-width: 100%; height: 1600px;" id="plausibleFrame"></iframe>
<div style="font-size: 14px; padding-bottom: 14px;">Stats powered by <a target="_blank" style="color: #4F46E5; text-decoration: underline;" href="https://plausible.io">Plausible Analytics</a></div>
<script async src="https://stats.privacyguides.net/js/embed.host.js"></script>
<script>
/* Set palette on initial load */
var palette = __md_get("__palette")
if (palette && typeof palette.color === "object") {
var theme = palette.color.scheme === "slate" ? "dark" : "light"
document.getElementById('plausibleFrame').src = 'https://stats.privacyguides.net/share/privacyguides.org?auth=IxTl2wRhi3uxF09rd1NSn&embed=true&theme=' + theme + '&background=transparent';
}
/* Register event handlers after documented loaded */
document.addEventListener("DOMContentLoaded", function() {
var ref = document.querySelector("[data-md-component=palette]")
ref.addEventListener("change", function() {
var palette = __md_get("__palette")
if (palette && typeof palette.color === "object") {
var theme = palette.color.scheme === "slate" ? "dark" : "light"
document.getElementById('plausibleFrame').src = 'https://stats.privacyguides.net/share/privacyguides.org?auth=IxTl2wRhi3uxF09rd1NSn&embed=true&theme=' + theme + '&background=transparent';
}
})
})
</script>
## Blog Statistics
<iframe plausible-embed src="https://stats.privacyguides.net/share/blog.privacyguides.org?auth=onWV76WWcsDifUqlaHEAg&embed=true&theme=system&background=transparent" scrolling="no" frameborder="0" loading="lazy" style="width: 1px; min-width: 100%; height: 1600px;" id="blogFrame"></iframe>
<div style="font-size: 14px; padding-bottom: 14px;">Stats powered by <a target="_blank" style="color: #4F46E5; text-decoration: underline;" href="https://plausible.io">Plausible Analytics</a></div>
<script async src="https://stats.privacyguides.net/js/embed.host.js"></script>
<script>
/* Set palette on initial load */
var palette = __md_get("__palette")
if (palette && typeof palette.color === "object") {
var theme = palette.color.scheme === "slate" ? "dark" : "light"
document.getElementById('blogFrame').src = 'https://stats.privacyguides.net/share/blog.privacyguides.org?auth=onWV76WWcsDifUqlaHEAg&embed=true&theme=' + theme + '&background=transparent';
}
/* Register event handlers after documented loaded */
document.addEventListener("DOMContentLoaded", function() {
var ref = document.querySelector("[data-md-component=palette]")
ref.addEventListener("change", function() {
var palette = __md_get("__palette")
if (palette && typeof palette.color === "object") {
var theme = palette.color.scheme === "slate" ? "dark" : "light"
document.getElementById('blogFrame').src = 'https://stats.privacyguides.net/share/blog.privacyguides.org?auth=onWV76WWcsDifUqlaHEAg&embed=true&theme=' + theme + '&background=transparent';
}
})
})
</script>

View File

@ -1,6 +1,7 @@
---
title: "Types of Communication Networks"
icon: 'material/transit-connection-variant'
description: An overview of several network architectures commonly used by instant messaging applications.
---
There are several network architectures commonly used to relay messages between people. These networks can provide different privacy guarantees, which is why it's worth considering your [threat model](../basics/threat-modeling.md) when deciding which app to use.
@ -27,7 +28,7 @@ Some self-hosted messengers allow you to set up your own server. Self-hosting ca
- Can include [restricted control or access](https://drewdevault.com/2018/08/08/Signal.html). This can include things like:
- Being [forbidden from connecting third-party clients](https://github.com/LibreSignal/LibreSignal/issues/37#issuecomment-217211165) to the centralized network that might provide for greater customization or a better experience. Often defined in Terms and Conditions of usage.
- Poor or no documentation for third-party developers.
- The [ownership](https://web.archive.org/web/20210729191953/https://blog.privacytools.io/delisting-wire/), privacy policy, and operations of the service can change easily when a single entity controls it, potentially compromising the service later on.
- The [ownership](https://web.archive.org/web/20210729191953/https://blog.privacytools.io/delisting-wire), privacy policy, and operations of the service can change easily when a single entity controls it, potentially compromising the service later on.
- Self-hosting requires effort and knowledge of how to set up a service.
## Federated Networks
@ -59,7 +60,7 @@ When self-hosted, members of a federated server can discover and communicate wit
P2P messengers connect to a [distributed network](https://en.wikipedia.org/wiki/Distributed_networking) of nodes to relay a message to the recipient without a third-party server.
Clients (peers) usually find each other through the use of a [distributed computing](https://en.wikipedia.org/wiki/Distributed_computing) network. Examples of this include [Distributed Hash Tables](https://en.wikipedia.org/wiki/Distributed_hash_table) (DHT), used by [torrents](https://en.wikipedia.org/wiki/BitTorrent_(protocol)) and [IPFS](https://en.wikipedia.org/wiki/InterPlanetary_File_System) for example. Another approach is proximity based networks, where a connection is established over WiFi or Bluetooth (for example, Briar or the [Scuttlebutt](https://www.scuttlebutt.nz) social network protocol).
Clients (peers) usually find each other through the use of a [distributed computing](https://en.wikipedia.org/wiki/Distributed_computing) network. Examples of this include [Distributed Hash Tables](https://en.wikipedia.org/wiki/Distributed_hash_table) (DHT), used by [torrents](https://en.wikipedia.org/wiki/BitTorrent_(protocol)) and [IPFS](https://en.wikipedia.org/wiki/InterPlanetary_File_System) for example. Another approach is proximity based networks, where a connection is established over WiFi or Bluetooth (for example, Briar or the [Scuttlebutt](https://scuttlebutt.nz) social network protocol).
Once a peer has found a route to its contact via any of these methods, a direct connection between them is made. Although messages are usually encrypted, an observer can still deduce the location and identity of the sender and recipient.

View File

@ -1,6 +1,7 @@
---
title: "DNS Overview"
icon: material/dns
description: The Domain Name System is the "phonebook of the internet," helping your browser find the website it's looking for.
---
The [Domain Name System](https://en.wikipedia.org/wiki/Domain_Name_System) is the 'phonebook of the Internet'. DNS translates domain names to IP addresses so browsers and other services can load Internet resources, through a decentralized network of servers.
@ -17,13 +18,13 @@ Below, we discuss and provide a tutorial to prove what an outside observer may s
### Unencrypted DNS
1. Using [`tshark`](https://www.wireshark.org/docs/man-pages/tshark.html) (part of the [Wireshark](https://en.wikipedia.org/wiki/Wireshark) project) we can monitor and record internet packet flow. This command records packets that meet the rules specified:
1. Using [`tshark`](https://wireshark.org/docs/man-pages/tshark.html) (part of the [Wireshark](https://en.wikipedia.org/wiki/Wireshark) project) we can monitor and record internet packet flow. This command records packets that meet the rules specified:
```bash
tshark -w /tmp/dns.pcap udp port 53 and host 1.1.1.1 or host 8.8.8.8
```
2. We can then use [`dig`](https://en.wikipedia.org/wiki/Dig_(command)) (Linux, MacOS etc) or [`nslookup`](https://en.wikipedia.org/wiki/Nslookup) (Windows) to send the DNS lookup to both servers. Software such as web browsers do these lookups automatically, unless they are configured to use encrypted DNS.
2. We can then use [`dig`](https://en.wikipedia.org/wiki/Dig_(command)) (Linux, MacOS, etc.) or [`nslookup`](https://en.wikipedia.org/wiki/Nslookup) (Windows) to send the DNS lookup to both servers. Software such as web browsers do these lookups automatically, unless they are configured to use encrypted DNS.
=== "Linux, macOS"
@ -38,7 +39,7 @@ Below, we discuss and provide a tutorial to prove what an outside observer may s
nslookup privacyguides.org 8.8.8.8
```
3. Next, we want to [analyse](https://www.wireshark.org/docs/wsug_html_chunked/ChapterIntroduction.html#ChIntroWhatIs) the results:
3. Next, we want to [analyse](https://wireshark.org/docs/wsug_html_chunked/ChapterIntroduction.html#ChIntroWhatIs) the results:
=== "Wireshark"
@ -73,13 +74,31 @@ Encrypted DNS can refer to one of a number of protocols, the most common ones be
### DNS over TLS (DoT)
[**DNS over TLS**](https://en.wikipedia.org/wiki/DNS_over_TLS) is another method for encrypting DNS communication that is defined in [RFC 7858](https://datatracker.ietf.org/doc/html/rfc7858). Support was first implemented in Android 9, iOS 14, and on Linux in [systemd-resolved](https://www.freedesktop.org/software/systemd/man/resolved.conf.html#DNSOverTLS=) in version 237. Preference in the industry has been moving away from DoT to DoH in recent years, as DoT is a [complex protocol](https://dnscrypt.info/faq/) and has varying compliance to the RFC across the implementations that exist. DoT also operates on a dedicated port 853 which can be blocked easily by restrictive firewalls.
[**DNS over TLS**](https://en.wikipedia.org/wiki/DNS_over_TLS) is another method for encrypting DNS communication that is defined in [RFC 7858](https://datatracker.ietf.org/doc/html/rfc7858). Support was first implemented in Android 9, iOS 14, and on Linux in [systemd-resolved](https://freedesktop.org/software/systemd/man/resolved.conf.html#DNSOverTLS=) in version 237. Preference in the industry has been moving away from DoT to DoH in recent years, as DoT is a [complex protocol](https://dnscrypt.info/faq) and has varying compliance to the RFC across the implementations that exist. DoT also operates on a dedicated port 853 which can be blocked easily by restrictive firewalls.
### DNS over HTTPS (DoH)
[**DNS over HTTPS**](https://en.wikipedia.org/wiki/DNS_over_HTTPS) as defined in [RFC 8484](https://datatracker.ietf.org/doc/html/rfc8484) packages queries in the [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) protocol and provides security with HTTPS. Support was first added in web browsers such as Firefox 60 and Chrome 83.
Native implementation of DoH showed up in iOS 14, macOS 11, Microsoft Windows, and Android 13 (however, it won't be enabled [by default](https://android-review.googlesource.com/c/platform/packages/modules/DnsResolver/+/1833144)). General Linux desktop support is waiting on the systemd [implementation](https://github.com/systemd/systemd/issues/8639) so [installing third-party software is still required](../dns.md#linux).
Native implementation of DoH showed up in iOS 14, macOS 11, Microsoft Windows, and Android 13 (however, it won't be enabled [by default](https://android-review.googlesource.com/c/platform/packages/modules/DnsResolver/+/1833144)). General Linux desktop support is waiting on the systemd [implementation](https://github.com/systemd/systemd/issues/8639) so [installing third-party software is still required](../dns.md#encrypted-dns-proxies).
### Native Operating System Support
#### Android
Android 9 and above support DNS over TLS. The settings can be found in: **Settings** &rarr; **Network & Internet** &rarr; **Private DNS**.
#### Apple Devices
The latest versions of iOS, iPadOS, tvOS, and macOS, support both DoT and DoH. Both protocols are supported natively via [configuration profiles](https://support.apple.com/guide/security/configuration-profile-enforcement-secf6fb9f053/web) or through the [DNS Settings API](https://developer.apple.com/documentation/networkextension/dns_settings).
After installation of either a configuration profile or an app that uses the DNS Settings API, the DNS configuration can be selected. If a VPN is active, resolution within the VPN tunnel will use the VPN's DNS settings and not your system-wide settings.
Apple does not provide a native interface for creating encrypted DNS profiles. [Secure DNS profile creator](https://dns.notjakob.com/tool.html) is an unofficial tool for creating your own encrypted DNS profiles, however they will not be signed. Signed profiles are preferred; signing validates a profile's origin and helps to ensure the integrity of the profiles. A green "Verified" label is given to signed configuration profiles. For more information on code signing, see [About Code Signing](https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html).
#### Linux
`systemd-resolved`, which many Linux distributions use to do their DNS lookups, doesn't yet [support DoH](https://github.com/systemd/systemd/issues/8639). If you want to use DoH, you'll need to install a proxy like [dnscrypt-proxy](https://github.com/DNSCrypt/dnscrypt-proxy) and [configure it](https://wiki.archlinux.org/title/Dnscrypt-proxy) to take all the DNS queries from your system resolver and forward them over HTTPS.
## What can an outside party see?
@ -105,7 +124,7 @@ In this example we will record what happens when we make a DoH request:
wireshark -r /tmp/dns_doh.pcap
```
We can see the [connection establishment](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment) and [TLS handshake](https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/) that occurs with any encrypted connection. When looking at the "application data" packets that follow, none of them contain the domain we requested or the IP address returned.
We can see the [connection establishment](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_establishment) and [TLS handshake](https://cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake) that occurs with any encrypted connection. When looking at the "application data" packets that follow, none of them contain the domain we requested or the IP address returned.
## Why **shouldn't** I use encrypted DNS?
@ -117,7 +136,7 @@ When we do a DNS lookup, it's generally because we want to access a resource. Be
The simplest way to determine browsing activity might be to look at the IP addresses your devices are accessing. For example, if the observer knows that `privacyguides.org` is at `198.98.54.105`, and your device is requesting data from `198.98.54.105`, there is a good chance you're visiting Privacy Guides.
This method is only useful when the IP address belongs to a server that only hosts few websites. It's also not very useful if the site is hosted on a shared platform (e.g. Github Pages, Cloudflare Pages, Netlify, WordPress, Blogger, etc). It also isn't very useful if the server is hosted behind a [reverse proxy](https://en.wikipedia.org/wiki/Reverse_proxy), which is very common on the modern Internet.
This method is only useful when the IP address belongs to a server that only hosts few websites. It's also not very useful if the site is hosted on a shared platform (e.g. Github Pages, Cloudflare Pages, Netlify, WordPress, Blogger, etc.). It also isn't very useful if the server is hosted behind a [reverse proxy](https://en.wikipedia.org/wiki/Reverse_proxy), which is very common on the modern Internet.
### Server Name Indication (SNI)
@ -157,9 +176,9 @@ Server Name Indication is typically used when a IP address hosts many websites.
tshark -r /tmp/pg.pcap -Tfields -Y tls.handshake.extensions_server_name -e tls.handshake.extensions_server_name
```
This means even if we are using "Encrypted DNS" servers, the domain will likely be disclosed through SNI. The [TLS v1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3) protocol brings with it [Encrypted Client Hello](https://blog.cloudflare.com/encrypted-client-hello/), which prevents this kind of leak.
This means even if we are using "Encrypted DNS" servers, the domain will likely be disclosed through SNI. The [TLS v1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3) protocol brings with it [Encrypted Client Hello](https://blog.cloudflare.com/encrypted-client-hello), which prevents this kind of leak.
Governments, in particular [China](https://www.zdnet.com/article/china-is-now-blocking-all-encrypted-https-traffic-using-tls-1-3-and-esni/) and [Russia](https://www.zdnet.com/article/russia-wants-to-ban-the-use-of-secure-protocols-such-as-tls-1-3-doh-dot-esni/), have either already [started blocking](https://en.wikipedia.org/wiki/Server_Name_Indication#Encrypted_Client_Hello) it or expressed a desire to do so. Recently, Russia has [started blocking foreign websites](https://github.com/net4people/bbs/issues/108) that use the [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) standard. This is because the [QUIC](https://en.wikipedia.org/wiki/QUIC) protocol that is a part of HTTP/3 requires that `ClientHello` also be encrypted.
Governments, in particular [China](https://zdnet.com/article/china-is-now-blocking-all-encrypted-https-traffic-using-tls-1-3-and-esni) and [Russia](https://zdnet.com/article/russia-wants-to-ban-the-use-of-secure-protocols-such-as-tls-1-3-doh-dot-esni), have either already [started blocking](https://en.wikipedia.org/wiki/Server_Name_Indication#Encrypted_Client_Hello) it or expressed a desire to do so. Recently, Russia has [started blocking foreign websites](https://github.com/net4people/bbs/issues/108) that use the [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) standard. This is because the [QUIC](https://en.wikipedia.org/wiki/QUIC) protocol that is a part of HTTP/3 requires that `ClientHello` also be encrypted.
### Online Certificate Status Protocol (OCSP)
@ -289,13 +308,28 @@ The DNSSEC signing process is similar to someone signing a legal document with a
DNSSEC implements a hierarchical digital signing policy across all layers of DNS. For example, in the case of a `privacyguides.org` lookup, a root DNS server would sign a key for the `.org` nameserver, and the `.org` nameserver would then sign a key for `privacyguides.org`s authoritative nameserver.
<small>Adapted from [DNS Security Extensions (DNSSEC) overview](https://cloud.google.com/dns/docs/dnssec) by Google and [DNSSEC: An Introduction](https://blog.cloudflare.com/dnssec-an-introduction/) by Cloudflare, both licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).</small>
<small>Adapted from [DNS Security Extensions (DNSSEC) overview](https://cloud.google.com/dns/docs/dnssec) by Google and [DNSSEC: An Introduction](https://blog.cloudflare.com/dnssec-an-introduction) by Cloudflare, both licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0).</small>
## What is QNAME minimization?
A QNAME is a "qualified name", for example `privacyguides.org`. QNAME minimisation reduces the amount of information sent from the DNS server to the [authoritative name server](https://en.wikipedia.org/wiki/Name_server#Authoritative_name_server).
A QNAME is a "qualified name", for example `discuss.privacyguides.net`. In the past, when resolving a domain name your DNS resolver would ask every server in the chain to provide any information it has about your full query. In this example below, your request to find the IP address for `discuss.privacyguides.net` gets asked of every DNS server provider:
Instead of sending the whole domain `privacyguides.org`, QNAME minimization means the DNS server will ask for all the records that end in `.org`. Further technical description is defined in [RFC 7816](https://datatracker.ietf.org/doc/html/rfc7816).
| Server | Question Asked | Response |
|------------------------|---------------------------------------------|---------------------------------------------|
| Root server | What's the IP of discuss.privacyguides.net? | I don't know, ask .net's server... |
| .net's server | What's the IP of discuss.privacyguides.net? | I don't know, ask Privacy Guides' server... |
| Privacy Guides' server | What's the IP of discuss.privacyguides.net? | 5.161.195.190! |
With "QNAME minimization," your DNS resolver now only asks for just enough information to find the next server in the chain. In this example, the root server is only asked for enough information to find the appropriate nameserver for the .net TLD, and so on, without ever knowing the full domain you're trying to visit:
| Server | Question Asked | Response |
|------------------------|------------------------------------------------------|-----------------------------------|
| Root server | What's the nameserver for .net? | *Provides .net's server* |
| .net's server | What's the nameserver for privacyguides.net? | *Provides Privacy Guides' server* |
| Privacy Guides' server | What's the nameserver for discuss.privacyguides.net? | This server! |
| Privacy Guides' server | What's the IP of discuss.privacyguides.net? | 5.161.195.190 |
While this process can be slightly more inefficient, in this example neither the central root nameservers nor the TLD's nameservers ever receive information about your *full* query, thus reducing the amount of information being transmitted about your browsing habits. Further technical description is defined in [RFC 7816](https://datatracker.ietf.org/doc/html/rfc7816).
## What is EDNS Client Subnet (ECS)?
@ -303,4 +337,27 @@ The [EDNS Client Subnet](https://en.wikipedia.org/wiki/EDNS_Client_Subnet) is a
It's intended to "speed up" delivery of data by giving the client an answer that belongs to a server that is close to them such as a [content delivery network](https://en.wikipedia.org/wiki/Content_delivery_network), which are often used in video streaming and serving JavaScript web apps.
This feature does come at a privacy cost, as it tells the DNS server some information about the client's location.
This feature does come at a privacy cost, as it tells the DNS server some information about the client's location, generally your IP network. For example, if your IP address is `198.51.100.32` the DNS provider might share `198.51.100.0/24` with the authoritative server. Some DNS providers anonymize this data by providing another IP address which is approximately near your location.
If you have `dig` installed you can test whether your DNS provider gives EDNS information out to DNS nameservers with the following command:
```bash
dig +nocmd -t txt o-o.myaddr.l.google.com +nocomments +noall +answer +stats
```
Note that this command will contact Google for the test, and return your IP as well as EDNS client subnet information. If you want to test another DNS resolver you can specify their IP, to test `9.9.9.11` for example:
```bash
dig +nocmd @9.9.9.11 -t txt o-o.myaddr.l.google.com +nocomments +noall +answer +stats
```
If the results include a second edns0-client-subnet TXT record (like shown below), then your DNS server is passing along EDNS information. The IP or network shown after is the precise information which was shared with Google by your DNS provider.
```text
o-o.myaddr.l.google.com. 60 IN TXT "198.51.100.32"
o-o.myaddr.l.google.com. 60 IN TXT "edns0-client-subnet 198.51.100.0/24"
;; Query time: 64 msec
;; SERVER: 9.9.9.11#53(9.9.9.11)
;; WHEN: Wed Mar 13 10:23:08 CDT 2024
;; MSG SIZE rcvd: 130
```

86
docs/advanced/payments.md Normal file
View File

@ -0,0 +1,86 @@
---
title: Private Payments
icon: material/hand-coin
---
There's a reason data about your buying habits is considered the holy grail of ad targeting: your purchases can leak a veritable treasure trove of data about you. Unfortunately, the current financial system is anti-privacy by design, enabling banks, other companies, and governments to easily trace transactions. Nevertheless, you have plenty of options when it comes to making payments privately.
## Cash
For centuries, **cash** has functioned as the primary form of private payment. Cash has excellent privacy properties in most cases, is widely accepted in most countries, and is **fungible**, meaning it is non-unique and completely interchangable.
Cash payment laws vary by country. In the United States, special disclosure is required for cash payments over $10,000 to the IRS on [Form 8300](https://irs.gov/businesses/small-businesses-self-employed/form-8300-and-reporting-cash-payments-of-over-10000). The receiving business is required to ID verify the payees name, address, occupation, date of birth, and Social Security Number or other TIN (with some exceptions). Lower limits without ID such as $3,000 or less exist for exchanges and money transmission. Cash also contains serial numbers. These are almost never tracked by merchants, but they can be used by law enforcement in targeted investigations.
Despite this, its typically the best option.
## Prepaid Cards & Gift Cards
Its relatively simple to purchase gift cards and prepaid cards at most grocery stores and convenience stores with cash. Gift cards usually dont have a fee, though prepaid cards often do, so pay close attention to these fees and expiry dates. Some stores may ask to see your ID at checkout to reduce fraud.
Gift cards usually have limits of up to $200 per card, but some offer limits of up to $2,000 per card. Prepaid cards (eg: from Visa or Mastercard) usually have limits of up to $1,000 per card.
Gift cards have the downside of being subject to merchant policies, which can have terrible terms and restrictions. For example, some merchants dont accept payment in gift cards exclusively, or they may cancel the value of the card if they consider you to be a high-risk user. Once you have merchant credit, the merchant has a strong degree of control over this credit.
Prepaid cards dont allow cash withdrawals from ATMs or “peer-to-peer” payments in Venmo and similar apps.
Cash remains the best option for in-person purchases for most people. Gift cards can be useful for the savings they bring. Prepaid cards can be useful for places that dont accept cash. Gift cards and prepaid cards are easier to use online than cash, and they are easier to acquire with cryptocurrencies than cash.
### Online Marketplaces
If you have [cryptocurrency](../cryptocurrency.md), you can purchase gift cards with an online gift card marketplace. Some of these services offer ID verification options for higher limits, but they also allow accounts with just an email address. Basic limits start at $5,000-10,000 a day for basic accounts, and significantly higher limits for ID verified accounts (if offered).
When buying gift cards online, there is usually a slight discount. Prepaid cards are usually sold online at face value or with a fee. If you buy prepaid cards and gift cards with cryptocurrencies, you should strongly prefer to pay with Monero which provides strong privacy, more on this below. Paying for a gift card with a traceable payment method negates the benefits a gift card can provide when purchased with cash or Monero.
- [Online Gift Card Marketplaces :material-arrow-right-drop-circle:](../financial-services.md#gift-card-marketplaces)
## Virtual Cards
Another way to protect your information from merchants online is to use virtual, single-use cards which mask your actual banking or billing information. This is primarily useful for protecting you from merchant data breaches, less sophisticated tracking or purchase correlation by marketing agencies, and online data theft. They do **not** assist you in making a purchase completely anonymously, nor do they hide any information from the banking institution themselves. Regular financial institutions which offer virtual cards are subject to "Know Your Customer" (KYC) laws, meaning they may require your ID or other identifying information.
- [Recommended Payment Masking Services :material-arrow-right-drop-circle:](../financial-services.md#payment-masking-services)
These tend to be good options for recurring/subscription payments online, while prepaid gift cards are preferred for one-time transactions.
## Cryptocurrency
Cryptocurrencies are a digital form of currency designed to work without central authorities such as a government or bank. While *some* cryptocurrency projects can allow you to make private transactions online, many use a public blockchain which does not provide any transaction privacy. Cryptocurrencies also tend to be very volatile assets, meaning their value can change rapidly and significantly at any time. As such, we generally don't recommend using cryptocurrency as a long-term store of value. If you decide to use cryptocurrency online, make sure you have a full understanding of its privacy aspects beforehand, and only invest amounts which would not be disastrous to lose.
<div class="admonition danger" markdown>
<p class="admonition-title">Danger</p>
The vast majority of cryptocurrencies operate on a **public** blockchain, meaning that every transaction is public knowledge. This includes even most well-known cryptocurrencies like Bitcoin and Ethereum. Transactions with these cryptocurrencies should not be considered private and will not protect your anonymity.
Additionally, many if not most cryptocurrencies are scams. Make transactions carefully with only projects you trust.
</div>
### Privacy Coins
There are a number of cryptocurrency projects which purport to provide privacy by making transactions anonymous. We recommend using one which provides transaction anonymity **by default** to avoid operational errors.
- [Recommended Cryptocurrency :material-arrow-right-drop-circle:](../cryptocurrency.md#coins)
Privacy coins have been subject to increasing scrutiny by government agencies. In 2020, [the IRS published a $625,000 bounty](https://forbes.com/sites/kellyphillipserb/2020/09/14/irs-will-pay-up-to-625000-if-you-can-crack-monero-other-privacy-coins/?sh=2e9808a085cc) for tools which can break Bitcoin Lightning Network and/or Monero's transaction privacy. They ultimately [paid two companies](https://sam.gov/opp/5ab94eae1a8d422e88945b64181c6018/view) (Chainalysis and Integra Fec) a combined $1.25 million for tools which purport to do so (it is unknown which cryptocurrency network these tools target). Due to the secrecy surrounding tools like these, ==none of these methods of tracing cryptocurrencies have been independently confirmed.== However, it is quite likely that tools which assist targeted investigations into private coin transactions exist, and that privacy coins only succeed in thwarting mass surveillance.
### Other Coins (Bitcoin, Ethereum, etc.)
The vast majority of cryptocurrency projects use a public blockchain, meaning that all transactions are both easily traceable and permanent. As such, we strongly discourage the use of most cryptocurrency for privacy-related reasons.
Anonymous transactions on a public blockchain are *theoretically* possible, and the Bitcoin wiki [gives one example of a "completely anonymous" transaction](https://en.bitcoin.it/wiki/Privacy#Example_-_A_perfectly_private_donation). However, doing so requires a complicated setup involving Tor and "solo-mining" a block to generate completely independent cryptocurrency, a practice which has not been practical for nearly any enthusiast for many years.
==Your best option is to avoid these cryptocurrencies entirely and stick with one which provides privacy by default.== Attempting to use other cryptocurrency is outside the scope of this site and strongly discouraged.
### Wallet Custody
With cryptocurrency there are two forms of wallets: custodial wallets and noncustodial wallets. Custodial wallets are operated by centralized companies/exchanges, where the private key for your wallet is held by that company, and you can access them anywhere typically with a regular username and password. Noncustodial wallets are wallets where you control and manage the private keys to access it. Assuming you keep your wallet's private keys secured and backed up, noncustodial wallets provide greater security and censorship-resistance over custodial wallets, because your cryptocurrency can't be stolen or frozen by a company with custody over your private keys. Key custody is especially important when it comes to privacy coins: Custodial wallets grant the operating company the ability to view your transactions, negating the privacy benefits of those cryptocurrencies.
### Acquisition
Acquiring [cryptocurrencies](../cryptocurrency.md) like Monero privately can be difficult. P2P marketplaces like [LocalMonero](https://localmonero.co), a platform which facilitates trades between people, are one option that can be used. If using an exchange which requires KYC is an acceptable risk for you as long as subsequent transactions can't be traced, a much easier option is to purchase Monero on an exchange like [Kraken](https://kraken.com), or purchase Bitcoin/Litecoin from a KYC exchange which can then be swapped for Monero. Then, you can withdraw the purchased Monero to your own noncustodial wallet to use privately from that point forward.
If you go this route, make sure to purchase Monero at different times and in different amounts than where you will spend it. If you purchase $5000 of Monero at an exchange and make a $5000 purchase in Monero an hour later, those actions could potentially be correlated by an outside observer regardless of which path the Monero took. Staggering purchases and purchasing larger amounts of Monero in advance to later spend on multiple smaller transactions can avoid this pitfall.
## Additional Considerations
When you're making a payment in-person with cash, make sure to keep your in-person privacy in mind. Security cameras are ubiquitous. Consider wearing non-distinct clothing and a face mask (such as a surgical mask or N95). Dont sign up for rewards programs or provide any other information about yourself.
When purchasing online, ideally you should do so over [Tor](tor-overview.md). However, many merchants dont allow purchases with Tor. You can consider using a [recommended VPN](../vpn.md) (paid for with cash, gift card, or Monero), or making the purchase from a coffee shop or library with free Wi-Fi. If you are ordering a physical item that needs to be delivered, you will need to provide a delivery address. You should consider using a PO box, private mailbox, or work address.

View File

@ -1,79 +0,0 @@
---
title: "Tor Overview"
icon: 'simple/torproject'
---
Tor is a free to use, decentralized network designed for using the internet with as much privacy as possible. If used properly, the network enables private and anonymous browsing and communications.
## Path Building
Tor works by routing your traffic through a network comprised of thousands of volunteer-run servers called nodes (or relays).
Every time you connect to Tor, it will choose three nodes to build a path to the internet—this path is called a "circuit." Each of these nodes has its own function:
### The Entry Node
The entry node, often called the guard node, is the first node to which your Tor client connects. The entry node is able to see your IP address, however it is unable to see what you are connecting to.
Unlike the other nodes, the Tor client will randomly select an entry node and stick with it for two to three months to protect you from certain attacks.[^1]
[^1]: The first relay in your circuit is called an "entry guard" or "guard". It is a fast and stable relay that remains the first one in your circuit for 2-3 months in order to protect against a known anonymity-breaking attack. The rest of your circuit changes with every new website you visit, and all together these relays provide the full privacy protections of Tor. For more information on how guard relays work, see this [blog post](https://blog.torproject.org/improving-tors-anonymity-changing-guard-parameters) and [paper](https://www-users.cs.umn.edu/~hoppernj/single_guard.pdf) on entry guards. ([https://support.torproject.org/tbb/tbb-2/](https://support.torproject.org/tbb/tbb-2/))
### The Middle Node
The middle node is the second node to which your Tor client connects. It can see which node the traffic came from—the entry node—and to which node it goes to next. The middle node cannot, see your IP address or the domain you are connecting to.
For each new circuit, the middle node is randomly selected out of all available Tor nodes.
### The Exit Node
The exit node is the point in which your web traffic leaves the Tor network and is forwarded to your desired destination. The exit node is unable to see your IP address, but it does know what site it's connecting to.
The exit node will be chosen at random from all available Tor nodes ran with an exit relay flag.[^2]
[^2]: Relay flag: a special (dis-)qualification of relays for circuit positions (for example, "Guard", "Exit", "BadExit"), circuit properties (for example, "Fast", "Stable"), or roles (for example, "Authority", "HSDir"), as assigned by the directory authorities and further defined in the directory protocol specification. ([https://metrics.torproject.org/glossary.html](https://metrics.torproject.org/glossary.html))
<figure markdown>
![Tor path](../assets/img/how-tor-works/tor-path.svg#only-light)
![Tor path](../assets/img/how-tor-works/tor-path-dark.svg#only-dark)
<figcaption>Tor circuit pathway</figcaption>
</figure>
## Encryption
Tor encrypts each packet (a block of transmitted data) three times with the keys from the exit, middle, and entry node—in that order.
Once Tor has built a circuit, data transmission is done as follows:
1. Firstly: when the packet arrives at the entry node, the first layer of encryption is removed. In this encrypted packet, the entry node will find another encrypted packet with the middle nodes address. The entry node will then forward the packet to the middle node.
2. Secondly: when the middle node receives the packet from the entry node, it too will remove a layer of encryption with its key, and this time finds an encrypted packet with the exit node's address. The middle node will then forward the packet to the exit node.
3. Lastly: when the exit node receives its packet, it will remove the last layer of encryption with its key. The exit node will see the destination address and forward the packet to that address.
Below is an alternative diagram showing the process. Each node removes its own layer of encryption, and when the destination server returns data, the same process happens entirely in reverse. For example, the exit node does not know who you are, but it does know which node it came from, and so it adds its own layer of encryption and sends it back.
<figure markdown>
![Tor encryption](../assets/img/how-tor-works/tor-encryption.svg#only-light)
![Tor encryption](../assets/img/how-tor-works/tor-encryption-dark.svg#only-dark)
<figcaption>Sending and receiving data through the Tor Network</figcaption>
</figure>
Tor allows us to connect to a server without any single party knowing the entire path. The entry node knows who you are, but not where you are going; the middle node doesnt know who you are or where you are going; and the exit node knows where you are going, but not who you are. Because the exit node is what makes the final connection, the destination server will never know your IP address.
## Caveats
Though Tor does provide strong privacy guarantees, one must be aware that Tor is not perfect:
- Well-funded adversaries with the capability to passively watch most network traffic over the globe have a chance of deanonymizing Tor users by means of advanced traffic analysis. Nor does Tor protect you from exposing yourself by mistake, such as if you share too much information about your real identity.
- Tor exit nodes can also monitor traffic that passes through them. This means traffic which is not encrypted, such as plain HTTP traffic, can be recorded and monitored. If such traffic contains personally identifiable information, then it can deanonymize you to that exit node. Thus, we recommend using HTTPS over Tor where possible.
If you wish to use Tor for browsing the web, we only recommend the **official** Tor Browser—it is designed to prevent fingerprinting.
- [Tor Browser :material-arrow-right-drop-circle:](../tor.md#tor-browser)
## Additional Resources
- [Tor Browser User Manual](https://tb-manual.torproject.org)
- [How Tor Works - Computerphile](https://www.youtube-nocookie.com/embed/QRYzre4bf7I) <small>(YouTube)</small>
- [Tor Onion Services - Computerphile](https://www.youtube-nocookie.com/embed/lVcbq_a5N9I) <small>(YouTube)</small>

View File

@ -0,0 +1,198 @@
---
title: "Tor Overview"
icon: 'simple/torproject'
description: Tor is a free to use, decentralized network designed for using the internet with as much privacy as possible.
---
Tor is a free to use, decentralized network designed for using the internet with as much privacy as possible. If used properly, the network enables private and anonymous browsing and communications.
## Safely Connecting to Tor
Before connecting to [Tor](../tor.md), you should carefully consider what you're looking to accomplish by using Tor in the first place, and who you're trying to hide your network activity from.
If you live in a free country, are accessing mundane content via Tor, aren't worried about your ISP or local network administrators having the knowledge that you're using Tor, and want to help [de-stigmatize](https://2019.www.torproject.org/about/torusers.html.en) Tor usage, you can likely connect to Tor directly via standard means like [Tor Browser](../tor.md) without worry.
If you have the ability to access a trusted VPN provider and **any** of the following are true, you almost certainly should connect to Tor through a VPN:
- You already use a [trusted VPN provider](../vpn.md)
- Your threat model includes an adversary which is capable of extracting information from your ISP
- Your threat model includes your ISP itself as an adversary
- Your threat model includes local network administrators before your ISP as an adversary
Because we already [generally recommend](../basics/vpn-overview.md) that the vast majority of people use a trusted VPN provider for a variety of reasons, the following recommendation about connecting to Tor via a VPN likely applies to you. <mark>There is no need to disable your VPN before connecting to Tor</mark>, as some online resources would lead you to believe.
Connecting directly to Tor will make your connection stand out to any local network administrators or your ISP. Detecting and correlating this traffic [has been done](https://edition.cnn.com/2013/12/17/justice/massachusetts-harvard-hoax) in the past by network administrators to identify and deanonymize specific Tor users on their network. On the other hand, connecting to a VPN is almost always less suspicious, because commercial VPN providers are used by everyday consumers for a variety of mundane tasks like bypassing geo-restrictions, even in countries with heavy internet restrictions.
Therefore, you should make an effort to hide your IP address **before** connecting to the Tor network. You can do this by simply connecting to a VPN (through a client installed on your computer) and then accessing [Tor](../tor.md) as normal, through Tor Browser for example. This creates a connection chain like:
- [x] You → VPN → Tor → Internet
From your ISP's perspective, it looks like you're accessing a VPN normally (with the associated cover that provides you). From your VPN's perspective, they can see that you are connecting to the Tor network, but nothing about what websites you're accessing. From Tor's perspective, you're connecting normally, but in the unlikely event of some sort of Tor network compromise, only your VPN's IP would be exposed, and your VPN would *additionally* have to be compromised to deanonymize you.
This is **not** censorship circumvention advice, because if Tor is blocked entirely by your ISP, your VPN likely is as well. Rather, this recommendation aims to make your traffic blend in better with commonplace VPN user traffic, and provide you with some level of plausible deniability by obscuring the fact that you're connecting to Tor from your ISP.
---
We **very strongly discourage** combining Tor with a VPN in any other manner. Do not configure your connection in a way which resembles any of the following:
- You → Tor → VPN → Internet
- You → VPN → Tor → VPN → Internet
- Any other configuration
Some VPN providers and other publications will occasionally recommend these **bad** configurations to evade Tor bans (exit nodes being blocked by websites) in some places. [Normally](https://support.torproject.org/#about_change-paths), Tor frequently changes your circuit path through the network. When you choose a permanent *destination* VPN (connecting to a VPN server *after* Tor), you're eliminating this advantage and drastically harming your anonymity.
Setting up bad configurations like these is difficult to do accidentally, because it usually involves either setting up custom proxy settings inside Tor Browser, or setting up custom proxy settings inside your VPN client which routes your VPN traffic through the Tor Browser. As long as you avoid these non-default configurations, you're probably fine.
---
<div class="admonition info" markdown>
<p class="admonition-title">VPN/SSH Fingerprinting</p>
The Tor Project [notes](https://gitlab.torproject.org/legacy/trac/-/wikis/doc/TorPlusVPN#vpnssh-fingerprinting) that *theoretically* using a VPN to hide Tor activities from your ISP may not be foolproof. VPNs have been found to be vulnerable to website traffic fingerprinting, where an adversary can still guess what website is being visited, because all websites have specific traffic patterns.
Therefore, it's not unreasonable to believe that encrypted Tor traffic hidden by a VPN could also be detected via similar methods. There are no research papers on this subject, and we still consider the benefits of using a VPN to far outweigh these risks, but it is something to keep in mind.
If you still believe that pluggable transports (bridges) provide additional protection against website traffic fingerprinting that a VPN does not, you always have the option to use a bridge **and** a VPN in conjunction.
</div>
Determining whether you should first use a VPN to connect to the Tor network will require some common sense and knowledge of your own government's and ISP's policies relating to what you're connecting to. However, again in most cases you will be better off being seen as connecting to a commercial VPN network than directly to the Tor network. If VPN providers are censored in your area, then you can also consider using Tor pluggable transports (e.g. Snowflake or meek bridges) as an alternative, but using these bridges may arouse more suspicion than standard WireGuard/OpenVPN tunnels.
## What Tor is Not
The Tor network is not the perfect privacy protection tool in all cases, and has a number of drawbacks which should be carefully considered. These things should not discourage you from using Tor if it is appropriate for your needs, but they are still things to think about when deciding which solution is most appropriate for you.
### Tor is not a free VPN
The release of the *Orbot* mobile app has lead many people to describe Tor as a "free VPN" for all of your device traffic. However, treating Tor like this poses some dangers compared to a typical VPN.
Unlike Tor exit nodes, VPN providers are usually not *actively* [malicious](#caveats). Because Tor exit nodes can be created by anybody, they are hotspots for network logging and modification. In 2020, many Tor exit nodes were documented to be downgrading HTTPS traffic to HTTP in order to [hijack cryptocurrency transactions](https://therecord.media/thousands-of-tor-exit-nodes-attacked-cryptocurrency-users-over-the-past-year). Other exit node attacks such as replacing downloads via unencrypted channels with malware have also been observed. HTTPS does mitigate these threats to an extent.
As we've alluded to already, Tor is also easily identifiable on the network. Unlike an actual VPN provider, using Tor will make you stick out as a person likely attempting to evade authorities. In a perfect world, Tor would be seen by network administrators and authorities as a tool with many uses (like how VPNs are viewed), but in reality the perception of Tor is still far less legitimate than the perception of commercial VPNs, so using a real VPN provides you with plausible deniability, e.g. "I was just using it to watch Netflix," etc.
### Tor usage is not undetectable
**Even if you use bridges and pluggable transports,** the Tor Project provides no tools to hide the fact that you are using Tor from your ISP. Even using obfuscated "pluggable transports" or non-public bridges do not hide the fact that you are using a private communications channel. The most popular pluggable transports like obfs4 (which obfuscates your traffic to "look like nothing") and meek (which uses domain fronting to camouflage your traffic) can be [detected](https://hackerfactor.com/blog/index.php?/archives/889-Tor-0day-Burning-Bridges.html) with fairly standard traffic analysis techniques. Snowflake has similar issues, and can be [easily detected](https://hackerfactor.com/blog/index.php?/archives/944-Tor-0day-Snowflake.html) *before* a Tor connection is even established.
Pluggable transports other than these three do exist, but typically rely on security through obscurity to evade detection. They aren't impossible to detect, they are just used by so few people that it's not worth the effort building detectors for them. They shouldn't be relied upon if you specifically are being monitored.
It is critical to understand the difference between bypassing censorship and evading detection. It is easier to accomplish the former because of the many real-world limitations on what network censors can realistically do en masse, but these techniques do not hide the fact that you—*specifically* you—are using Tor from an interested party monitoring your network.
### Tor Browser is not the most *secure* browser
Anonymity can often be at odds with security: Tor's anonymity requires every user to be identical, which creates a monoculture (the same bugs are present across all Tor Browser users). As a cybersecurity rule of thumb, monocultures are generally regarded as bad: Security through diversity (which Tor lacks) provides natural segmentation by limiting vulnerabilities to smaller groups, and is therefore usually desirable, but this diversity is also less good for anonymity.
Additionally, Tor Browser is based on Firefox's Extended Support Release builds, which only receives patches for vulnerabilities considered *Critical* and *High* (not *Medium* and *Low*). This means that attackers could (for example):
1. Look for new Critical/High vulnerabilities in Firefox nightly or beta builds, then check if they are exploitable in Tor Browser (this vulnerability period can last weeks).
2. Chain *multiple* Medium/Low vulnerabilities together until they get the level of access they're looking for (this vulnerability period can last months or longer).
Those at risk of browser vulnerabilities should consider additional protections to defend against Tor Browser exploits, such as using Whonix in [Qubes](../os/qubes-overview.md) to contain your Tor browsing in a secure VM and protect against leaks.
## Path Building to Clearnet Services
"Clearnet services" are websites which you can access with any browser, like [privacyguides.org](https://www.privacyguides.org). Tor lets you connect to these websites anonymously by routing your traffic through a network comprised of thousands of volunteer-run servers called nodes (or relays).
Every time you [connect to Tor](../tor.md), it will choose three nodes to build a path to the internet—this path is called a "circuit."
<figure markdown>
![Tor path showing your device connecting to an entry node, middle node, and exit node before reaching the destination website](../assets/img/how-tor-works/tor-path.svg#only-light)
![Tor path showing your device connecting to an entry node, middle node, and exit node before reaching the destination website](../assets/img/how-tor-works/tor-path-dark.svg#only-dark)
<figcaption>Tor circuit pathway</figcaption>
</figure>
Each of these nodes has its own function:
### The Entry Node
The entry node, often called the guard node, is the first node to which your Tor client connects. The entry node is able to see your IP address, however it is unable to see what you are connecting to.
Unlike the other nodes, the Tor client will randomly select an entry node and stick with it for two to three months to protect you from certain attacks.[^1]
[^1]: The first relay in your circuit is called an "entry guard" or "guard". It is a fast and stable relay that remains the first one in your circuit for 2-3 months in order to protect against a known anonymity-breaking attack. The rest of your circuit changes with every new website you visit, and all together these relays provide the full privacy protections of Tor. For more information on how guard relays work, see this [blog post](https://blog.torproject.org/improving-tors-anonymity-changing-guard-parameters) and [paper](https://www-users.cs.umn.edu/~hoppernj/single_guard.pdf) on entry guards. ([https://support.torproject.org/tbb/tbb-2/](https://support.torproject.org/tbb/tbb-2))
### The Middle Node
The middle node is the second node to which your Tor client connects. It can see which node the traffic came from—the entry node—and to which node it goes to next. The middle node cannot, see your IP address or the domain you are connecting to.
For each new circuit, the middle node is randomly selected out of all available Tor nodes.
### The Exit Node
The exit node is the point in which your web traffic leaves the Tor network and is forwarded to your desired destination. The exit node is unable to see your IP address, but it does know what site it's connecting to.
The exit node will be chosen at random from all available Tor nodes ran with an exit relay flag.[^2]
[^2]: Relay flag: a special (dis-)qualification of relays for circuit positions (for example, "Guard", "Exit", "BadExit"), circuit properties (for example, "Fast", "Stable"), or roles (for example, "Authority", "HSDir"), as assigned by the directory authorities and further defined in the directory protocol specification. ([https://metrics.torproject.org/glossary.html](https://metrics.torproject.org/glossary.html))
## Path Building to Onion Services
"Onion Services" (also commonly referred to as "hidden services") are websites which can only be accessed by the Tor browser. These websites have a long randomly generated domain name ending with `.onion`.
Connecting to an Onion Service in Tor works very similarly to connecting to a clearnet service, but your traffic is routed through a total of **six** nodes before reaching the destination server. Just like before however, only three of these nodes are contributing to *your* anonymity, the other three nodes protect *the Onion Service's* anonymity, hiding the website's true IP and location in the same manner that Tor Browser is hiding yours.
<figure style="width:100%" markdown>
![Tor path showing your traffic being routed through your three Tor nodes plus three additional Tor nodes which hide the website's identity](../assets/img/how-tor-works/tor-path-hidden-service.svg#only-light)
![Tor path showing your traffic being routed through your three Tor nodes plus three additional Tor nodes which hide the website's identity](../assets/img/how-tor-works/tor-path-hidden-service-dark.svg#only-dark)
<figcaption>Tor circuit pathway with Onion Services. Nodes in the <span class="pg-blue">blue</span> fence belong to your browser, while nodes in the <span class="pg-red">red</span> fence belong to the server, so their identity is hidden from you.</figcaption>
</figure>
## Encryption
Tor encrypts each packet (a block of transmitted data) three times with the keys from the exit, middle, and entry node—in that order.
Once Tor has built a circuit, data transmission is done as follows:
1. Firstly: when the packet arrives at the entry node, the first layer of encryption is removed. In this encrypted packet, the entry node will find another encrypted packet with the middle nodes address. The entry node will then forward the packet to the middle node.
2. Secondly: when the middle node receives the packet from the entry node, it too will remove a layer of encryption with its key, and this time finds an encrypted packet with the exit node's address. The middle node will then forward the packet to the exit node.
3. Lastly: when the exit node receives its packet, it will remove the last layer of encryption with its key. The exit node will see the destination address and forward the packet to that address.
Below is an alternative diagram showing the process. Each node removes its own layer of encryption, and when the destination server returns data, the same process happens entirely in reverse. For example, the exit node does not know who you are, but it does know which node it came from, and so it adds its own layer of encryption and sends it back.
<figure markdown>
![Tor encryption](../assets/img/how-tor-works/tor-encryption.svg#only-light)
![Tor encryption](../assets/img/how-tor-works/tor-encryption-dark.svg#only-dark)
<figcaption>Sending and receiving data through the Tor Network</figcaption>
</figure>
Tor allows us to connect to a server without any single party knowing the entire path. The entry node knows who you are, but not where you are going; the middle node doesnt know who you are or where you are going; and the exit node knows where you are going, but not who you are. Because the exit node is what makes the final connection, the destination server will never know your IP address.
## Caveats
Though Tor does provide strong privacy guarantees, one must be aware that Tor is not perfect:
- Tor never protects you from exposing yourself by mistake, such as if you share too much information about your real identity.
- Tor exit nodes can **modify** unencrypted traffic which passes through them. This means traffic which is not encrypted, such as plain HTTP traffic, can be changed by a malicious exit node. **Never** download files from an unencrypted `http://` website over Tor, and ensure your browser is set to always upgrade HTTP traffic to HTTPS.
- Tor exit nodes can also monitor traffic that passes through them. Unencrypted traffic which contains personally identifiable information can deanonymize you to that exit node. Again, we recommend only using HTTPS over Tor.
- Powerful adversaries with the capability to passively watch *all* network traffic around the globe ("Global Passive Adversaries") are **not** something that Tor protects you against (and using Tor [with a VPN](#safely-connecting-to-tor) doesn't change this fact).
- Well-funded adversaries with the capability to passively watch *most* network traffic around the globe still have a *chance* of deanonymizing Tor users by means of advanced traffic analysis.
If you wish to use Tor for browsing the web, we only recommend the **official** Tor Browser—it is designed to prevent fingerprinting.
- [Tor Browser :material-arrow-right-drop-circle:](../tor.md#tor-browser)
### Protections provided by bridges
Tor bridges are commonly touted as an alternative method to hiding Tor usage from an ISP, instead of a VPN (as we suggest using if possible). Something to consider is that while bridges may provide adequate censorship circumvention, this is only a *transient* benefit. They do not adequately protect you from your ISP discovering you connected to Tor in the *past* with historical traffic log analysis.
To illustrate this point, consider the following scenario: You connect to Tor via a bridge, and your ISP doesnt detect it because they are not doing sophisticated analysis of your traffic, so things are working as intended. Now, 4 months go by, and the IP of your bridge has been made public. This is a very common occurrence with bridges, they are discovered and blocked relatively frequently, just not immediately.
Your ISP wants to identify Tor users 4 months ago, and with their limited metadata logging they can see that you connected to an IP address which was later revealed to be a Tor bridge. You have virtually no other excuse to be making such a connection, so the ISP can say with very high confidence that you were a Tor user at that time.
Contrast this with our recommended scenario, where you connect to Tor via a VPN. Say that 4 months later your ISP again wants to identify anybody who used Tor 4 months ago. Their logs almost certainly can identify your traffic 4 months ago, but all they would likely be able to see is that you connected to a VPNs IP address. This is because most ISPs only retain metadata over long periods of time, not the full contents of the traffic you request. Storing the entirety of your traffic data would require a massive quantity of storage which nearly all threat actors wouldn't possess.
Because your ISP almost certainly is not capturing all packet-level data and storing it forever, they have no way of determining what you connected to with that VPN *after* the fact with an advanced technique like deep packet inspection, and therefore you have plausible deniability.
Therefore, bridges provide the most benefit when circumventing internet censorship *in the moment*, but they are not an adequate substitute for **all** the benefits that using a VPN alongside Tor can provide. Again, this is not advice *against* using Tor bridges, you should just be aware of these limitations while making your decision. In some cases bridges may be the *only* option (if all VPN providers are blocked, for instance), so you can still use them in those circumstances with this limitation in mind.
If you think that a bridge can aid in defending against fingerprinting or other advanced network analysis more than a VPN's encrypted tunnel already can, you always have the option to use a bridge in conjunction with a VPN as well. That way you are still protected by the pluggable transport's obfuscation techniques even if an adversary gains some level of visibility into your VPN tunnel. If you decide to go this route, we recommend connecting to an obfs4 bridge behind your VPN for optimal fingerprinting protection, rather than meek or Snowflake.
It is [possible](https://discuss.privacyguides.net/t/clarify-tors-weaknesses-with-respect-to-observability/3676/16) that the [WebTunnel](https://forum.torproject.org/t/tor-relays-announcement-webtunnel-a-new-pluggable-transport-for-bridges-now-available-for-deployment/8180) pluggable transport currently being trialed may mitigate some of these concerns. We will continue to keep an eye on that technology as it develops.
## Additional Resources
- [Tor Browser User Manual](https://tb-manual.torproject.org)
- [How Tor Works - Computerphile](https://invidious.privacyguides.net/embed/QRYzre4bf7I?local=true) <small>(YouTube)</small>
- [Tor Onion Services - Computerphile](https://invidious.privacyguides.net/embed/lVcbq_a5N9I?local=true) <small>(YouTube)</small>

View File

@ -1,321 +0,0 @@
---
title: "Android"
icon: 'simple/android'
---
![Android logo](assets/img/android/android.svg){ align=right }
The **Android Open Source Project** is an open-source mobile operating system led by Google which powers the majority of the world's mobile devices. Most phones sold with Android are modified to include invasive integrations and apps such as Google Play Services, so you can significantly improve your privacy on your mobile device by replacing your phone's default installation with a version of Android without these invasive features.
[:octicons-home-16:](https://source.android.com/){ .card-link title=Homepage }
[:octicons-info-16:](https://source.android.com/docs){ .card-link title=Documentation}
[:octicons-code-16:](https://cs.android.com/android/platform/superproject/){ .card-link title="Source Code" }
These are the Android operating systems, devices, and apps we recommend to maximize your mobile device's security and privacy. To learn more about Android:
- [General Android Overview :material-arrow-right-drop-circle:](os/android-overview.md)
- [Why we recommend GrapheneOS over CalyxOS :material-arrow-right-drop-circle:](https://blog.privacyguides.org/2022/04/21/grapheneos-or-calyxos/)
## AOSP Derivatives
We recommend installing one of these custom Android operating systems on your device, listed in order of preference, depending on your device's compatibility with these operating systems.
!!! note
End-of-life devices (such as GrapheneOS or CalyxOS's "extended support" devices) do not have full security patches (firmware updates) due to the OEM discontinuing support. These devices cannot be considered completely secure regardless of installed software.
### GrapheneOS
!!! recommendation
![GrapheneOS logo](assets/img/android/grapheneos.svg#only-light){ align=right }
![GrapheneOS logo](assets/img/android/grapheneos-dark.svg#only-dark){ align=right }
**GrapheneOS** is the best choice when it comes to privacy and security.
GrapheneOS provides additional [security hardening](https://en.wikipedia.org/wiki/Hardening_(computing)) and privacy improvements. It has a [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), network and sensor permissions, and various other [security features](https://grapheneos.org/features). GrapheneOS also comes with full firmware updates and signed builds, so verified boot is fully supported.
[:octicons-home-16: Homepage](https://grapheneos.org/){ .md-button .md-button--primary }
[:octicons-eye-16:](https://grapheneos.org/faq#privacy-policy){ .card-link title="Privacy Policy" }
[:octicons-info-16:](https://grapheneos.org/faq){ .card-link title=Documentation}
[:octicons-code-16:](https://grapheneos.org/source){ .card-link title="Source Code" }
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
GrapheneOS supports [Sandboxed Google Play](https://grapheneos.org/usage#sandboxed-google-play), which runs [Google Play Services](https://en.wikipedia.org/wiki/Google_Play_Services) fully sandboxed like any other regular app. This means you can take advantage of most Google Play Services, such as [push notifications](https://firebase.google.com/docs/cloud-messaging/), while giving you full control over their permissions and access, and while containing them to a specific [work profile](os/android-overview.md#work-profile) or [user profile](os/android-overview.md#user-profiles) of your choice.
Google Pixel phones are the only devices that currently meet GrapheneOS's [hardware security requirements](https://grapheneos.org/faq#device-support).
### DivestOS
!!! recommendation
![DivestOS logo](assets/img/android/divestos.svg){ align=right }
**DivestOS** is a soft-fork of [LineageOS](https://lineageos.org/).
DivestOS inherits many [supported devices](https://divestos.org/index.php?page=devices&base=LineageOS) from LineageOS. It has signed builds, making it possible to have [verified boot](https://source.android.com/security/verifiedboot) on some non-Pixel devices.
[:octicons-home-16: Homepage](https://divestos.org){ .md-button .md-button--primary }
[:simple-torbrowser:](http://divestoseb5nncsydt7zzf5hrfg44md4bxqjs5ifcv4t7gt7u6ohjyyd.onion){ .card-link title="Onion Service" }
[:octicons-eye-16:](https://divestos.org/index.php?page=privacy_policy){ .card-link title="Privacy Policy" }
[:octicons-info-16:](https://divestos.org/index.php?page=faq){ .card-link title=Documentation}
[:octicons-code-16:](https://github.com/divested-mobile){ .card-link title="Source Code" }
[:octicons-heart-16:](https://divested.dev/index.php?page=donate){ .card-link title=Contribute }
DivestOS has automated kernel vulnerability ([CVE](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures)) [patching](https://gitlab.com/divested-mobile/cve_checker), fewer proprietary blobs, and a custom [hosts](https://divested.dev/index.php?page=dnsbl) file. Its hardened WebView, [Mulch](https://gitlab.com/divested-mobile/mulch), enables [CFI](https://en.wikipedia.org/wiki/Control-flow_integrity) for all architectures and [network state partitioning](https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning), and receives out-of-band updates.
DivestOS also includes kernel patches from GrapheneOS and enables all available kernel security features via [defconfig hardening](https://github.com/Divested-Mobile/DivestOS-Build/blob/master/Scripts/Common/Functions.sh#L758). All kernels newer than version 3.4 include full page [sanitization](https://lwn.net/Articles/334747/) and all ~22 Clang-compiled kernels have [`-ftrivial-auto-var-init=zero`](https://reviews.llvm.org/D54604?id=174471) enabled.
DivestOS implements some system hardening patches originally developed for GrapheneOS. DivestOS 16.0 and higher implements GrapheneOS's [`INTERNET`](https://developer.android.com/training/basics/network-ops/connecting) and SENSORS permission toggle, [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), [exec-spawning](https://blog.privacyguides.org/2022/04/21/grapheneos-or-calyxos/#additional-hardening), [JNI](https://en.wikipedia.org/wiki/Java_Native_Interface) [constification](https://en.wikipedia.org/wiki/Const_(computer_programming)), and partial [bionic](https://en.wikipedia.org/wiki/Bionic_(software)) hardening patchsets. 17.1 and higher features GrapheneOS's per-network full [MAC randomization](https://en.wikipedia.org/wiki/MAC_address#Randomization) option, [`ptrace_scope`](https://www.kernel.org/doc/html/latest/admin-guide/LSM/Yama.html) control, and automatic reboot/Wi-Fi/Bluetooth [timeout options](https://grapheneos.org/features).
DivestOS uses F-Droid as its default app store. Normally, we would recommend avoiding F-Droid due to its numerous [security issues](#f-droid). However, doing so on DivestOS isn't viable; the developers update their apps via their own F-Droid repositories ([DivestOS Official](https://divestos.org/fdroid/official/?fingerprint=E4BE8D6ABFA4D9D4FEEF03CDDA7FF62A73FD64B75566F6DD4E5E577550BE8467) and [DivestOS WebView](https://divestos.org/fdroid/webview/?fingerprint=FB426DA1750A53D7724C8A582B4D34174E64A84B38940E5D5A802E1DFF9A40D2)). We recommend disabling the official F-Droid app and using [Neo Store](https://github.com/NeoApplications/Neo-Store/) with the DivestOS repositories enabled to keep those components up to date. For other apps, our recommended methods of obtaining them still apply.
!!! warning
DivestOS firmware update [status](https://gitlab.com/divested-mobile/firmware-empty/-/blob/master/STATUS) and quality control varies across the devices it supports. We still recommend GrapheneOS depending on your device's compatibility. For other devices, DivestOS is a good alternative.
Not all of the supported devices have verified boot, and some perform it better than others.
## Android Devices
When purchasing a device, we recommend getting one as new as possible. The software and firmware of mobile devices are only supported for a limited time, so buying new extends that lifespan as much as possible.
Avoid buying phones from mobile network operators. These often have a **locked bootloader** and do not support [OEM unlocking](https://source.android.com/devices/bootloader/locking_unlocking). These phone variants will prevent you from installing any kind of alternative Android distribution.
Be very **careful** about buying second hand phones from online marketplaces. Always check the reputation of the seller. If the device is stolen, there's a possibility of [IMEI blacklisting](https://www.gsma.com/security/resources/imei-blacklisting/). There is also a risk involved with you being associated with the activity of the previous owner.
A few more tips regarding Android devices and operating system compatibility:
- Do not buy devices that have reached or are near their end-of-life, additional firmware updates must be provided by the manufacturer.
- Do not buy preloaded LineageOS or /e/ OS phones or any Android phones without proper [Verified Boot](https://source.android.com/security/verifiedboot) support and firmware updates. These devices also have no way for you to check whether they've been tampered with.
- In short, if a device or Android distribution is not listed here, there is probably a good reason. Check out our [forum](https://discuss.privacyguides.org/) to find details!
### Google Pixel
Google Pixel phones are the **only** devices we recommend for purchase. Pixel phones have stronger hardware security than any other Android devices currently on the market, due to proper AVB support for third-party operating systems and Google's custom [Titan](https://security.googleblog.com/2021/10/pixel-6-setting-new-standard-for-mobile.html) security chips acting as the Secure Element.
!!! recommendation
![Google Pixel 6](assets/img/android/google-pixel.png){ align=right }
**Google Pixel** devices are known to have good security and properly support [Verified Boot](https://source.android.com/security/verifiedboot), even when installing custom operating systems.
Beginning with the **Pixel 6** and **6 Pro**, Pixel devices receive a minimum of 5 years of guaranteed security updates, ensuring a much longer lifespan compared to the 2-4 years competing OEMs typically offer.
[:material-shopping: Store](https://store.google.com/category/phones){ .md-button .md-button--primary }
Secure Elements like the Titan M2 are more limited than the processor's Trusted Execution Environment used by most other phones as they are only used for secrets storage, hardware attestation, and rate limiting, not for running "trusted" programs. Phones without a Secure Element have to use the TEE for *all* of those functions, resulting in a larger attack surface.
Google Pixel phones use a TEE OS called Trusty which is [open-source](https://source.android.com/security/trusty#whyTrusty), unlike many other phones.
The installation of GrapheneOS on a Pixel phone is easy with their [web installer](https://grapheneos.org/install/web). If you don't feel comfortable doing it yourself and are willing to spend a bit of extra money, check out the [NitroPhone](https://shop.nitrokey.com/shop) as they come preloaded with GrapheneOS from the reputable [Nitrokey](https://www.nitrokey.com/about) company.
A few more tips for purchasing a Google Pixel:
- If you're after a bargain on a Pixel device, we suggest buying an "**a**" model, just after the next flagship is released. Discounts are usually available because Google will be trying to clear their stock.
- Consider price beating options and specials offered at brick and mortar stores.
- Look at online community bargain sites in your country. These can alert you to good sales.
- Google provides a list showing the [support cycle](https://support.google.com/nexus/answer/4457705) for each one of their devices. The price per day for a device can be calculated as: $\text{Cost} \over \text {EOL Date }-\text{ Current Date}$, meaning that the longer use of the device the lower cost per day.
## General Apps
We recommend a wide variety of Android apps throughout this site. The apps listed here are Android-exclusive and specifically enhance or replace key system functionality.
### Shelter
!!! recommendation
![Shelter logo](assets/img/android/shelter.svg){ align=right }
**Shelter** is an app that helps you leverage Android's Work Profile functionality to isolate or duplicate apps on your device.
Shelter supports blocking contact search cross profiles and sharing files across profiles via the default file manager ([DocumentsUI](https://source.android.com/devices/architecture/modular-system/documentsui)).
[:octicons-repo-16: Repository](https://gitea.angry.im/PeterCxy/Shelter#shelter){ .md-button .md-button--primary }
[:octicons-code-16:](https://gitea.angry.im/PeterCxy/Shelter){ .card-link title="Source Code" }
[:octicons-heart-16:](https://www.patreon.com/PeterCxy){ .card-link title=Contribute }
??? downloads
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=net.typeblog.shelter)
!!! warning
Shelter is recommended over [Insular](https://secure-system.gitlab.io/Insular/) and [Island](https://github.com/oasisfeng/island) as it supports [contact search blocking](https://secure-system.gitlab.io/Insular/faq.html).
When using Shelter, you are placing complete trust in its developer, as Shelter acts as a [Device Admin](https://developer.android.com/guide/topics/admin/device-admin) to create the Work Profile, and it has extensive access to the data stored within the Work Profile.
### Auditor
!!! recommendation
![Auditor logo](assets/img/android/auditor.svg#only-light){ align=right }
![Auditor logo](assets/img/android/auditor-dark.svg#only-dark){ align=right }
**Auditor** is an app which leverages hardware security features to provide device integrity monitoring for [supported devices](https://attestation.app/about#device-support). Currently, it only works with GrapheneOS and the device's stock operating system.
[:octicons-home-16: Homepage](https://attestation.app){ .md-button .md-button--primary }
[:octicons-eye-16:](https://attestation.app/privacy-policy){ .card-link title="Privacy Policy" }
[:octicons-info-16:](https://attestation.app/about){ .card-link title=Documentation}
[:octicons-code-16:](https://attestation.app/source){ .card-link title="Source Code" }
[:octicons-heart-16:](https://attestation.app/donate){ .card-link title=Contribute }
??? downloads
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.attestation.auditor)
- [:simple-github: GitHub](https://github.com/GrapheneOS/Auditor/releases)
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
Auditor performs attestation and intrusion detection by:
- Using a [Trust On First Use (TOFU)](https://en.wikipedia.org/wiki/Trust_on_first_use) model between an *auditor* and *auditee*, the pair establish a private key in the [hardware-backed keystore](https://source.android.com/security/keystore/) of the *Auditor*.
- The *auditor* can either be another instance of the Auditor app or the [Remote Attestation Service](https://attestation.app).
- The *auditor* records the current state and configuration of the *auditee*.
- Should tampering with the operating system of the *auditee* after the pairing is complete, the auditor will be aware of the change in the device state and configurations.
- You will be alerted to the change.
No personally identifiable information is submitted to the attestation service. We recommend that you sign up with an anonymous account and enable remote attestation for continuous monitoring.
If your [threat model](basics/threat-modeling.md) requires privacy, you could consider using [Orbot](tor.md#orbot) or a VPN to hide your IP address from the attestation service.
To make sure that your hardware and operating system is genuine, [perform local attestation](https://grapheneos.org/install/web#verifying-installation) immediately after the device has been installed and prior to any internet connection.
### Secure Camera
!!! recommendation
![Secure camera logo](assets/img/android/secure_camera.svg#only-light){ align=right }
![Secure camera logo](assets/img/android/secure_camera-dark.svg#only-dark){ align=right }
**Secure Camera** is a camera app focused on privacy and security which can capture images, videos and QR codes. CameraX vendor extensions (Portrait, HDR, Night Sight, Face Retouch, and Auto) are also supported on available devices.
[:octicons-repo-16: Repository](https://github.com/GrapheneOS/Camera){ .md-button .md-button--primary }
[:octicons-info-16:](https://grapheneos.org/usage#camera){ .card-link title=Documentation}
[:octicons-code-16:](https://github.com/GrapheneOS/Camera){ .card-link title="Source Code" }
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
??? downloads
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.grapheneos.camera.play)
- [:simple-github: GitHub](https://github.com/GrapheneOS/Camera/releases)
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
Main privacy features include:
- Auto removal of [Exif](https://en.wikipedia.org/wiki/Exif) metadata (enabled by default)
- Use of the new [Media](https://developer.android.com/training/data-storage/shared/media) API, therefore [storage permissions](https://developer.android.com/training/data-storage) are not required
- Microphone permission not required unless you want to record sound
!!! note
Metadata is not currently deleted from video files but that is planned.
The image orientation metadata is not deleted. If you enable location (in Secure Camera) that **won't** be deleted either. If you want to delete that later you will need to use an external app such as [ExifEraser](data-redaction.md#exiferaser).
### Secure PDF Viewer
!!! recommendation
![Secure PDF Viewer logo](assets/img/android/secure_pdf_viewer.svg#only-light){ align=right }
![Secure PDF Viewer logo](assets/img/android/secure_pdf_viewer-dark.svg#only-dark){ align=right }
**Secure PDF Viewer** is a PDF viewer based on [pdf.js](https://en.wikipedia.org/wiki/PDF.js) that doesn't require any permissions. The PDF is fed into a [sandboxed](https://en.wikipedia.org/wiki/Sandbox_(software_development)) [webview](https://developer.android.com/guide/webapps/webview). This means that it doesn't require permission directly to access content or files.
[Content-Security-Policy](https://en.wikipedia.org/wiki/Content_Security_Policy) is used to enforce that the JavaScript and styling properties within the WebView are entirely static content.
[:octicons-repo-16: Repository](https://github.com/GrapheneOS/PdfViewer){ .md-button .md-button--primary }
[:octicons-code-16:](https://github.com/GrapheneOS/PdfViewer){ .card-link title="Source Code" }
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
??? downloads
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.grapheneos.pdfviewer.play)
- [:simple-github: GitHub](https://github.com/GrapheneOS/PdfViewer/releases)
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
## Obtaining Applications
### GrapheneOS App Store
GrapheneOS's app store is available on [GitHub](https://github.com/GrapheneOS/Apps/releases). It supports Android 12 and above and is capable of updating itself. The app store has standalone applications built by the GrapheneOS project such as the [Auditor](https://attestation.app/), [Camera](https://github.com/GrapheneOS/Camera), and [PDF Viewer](https://github.com/GrapheneOS/PdfViewer). If you are looking for these applications, we highly recommend that you get them from GrapheneOS's app store instead of the Play Store, as the apps on their store are signed by the GrapheneOS's project own signature that Google does not have access to.
### Aurora Store
The Google Play Store requires a Google account to login which is not great for privacy. You can get around this by using an alternative client, such as Aurora Store.
!!! recommendation
![Aurora Store logo](assets/img/android/aurora-store.webp){ align=right }
**Aurora Store** is a Google Play Store client which does not require a Google Account, Google Play Services, or microG to download apps.
[:octicons-home-16: Homepage](https://auroraoss.com/){ .md-button .md-button--primary }
[:octicons-code-16:](https://gitlab.com/AuroraOSS/AuroraStore){ .card-link title="Source Code" }
??? downloads
- [:simple-gitlab: GitLab](https://gitlab.com/AuroraOSS/AuroraStore/-/releases)
Aurora Store does not allow you to download paid apps with their anonymous account feature. You can optionally log in with your Google account with Aurora Store to download apps you have purchased, which does give access to the list of apps you've installed to Google, however you still benefit from not requiring the full Google Play client and Google Play Services or microG on your device.
### Manually with RSS Notifications
For apps that are released on platforms like GitHub and GitLab, you may be able to add an RSS feed to your [news aggregator](/news-aggregators) that will help you keep track of new releases.
![RSS APK](./assets/img/android/rss-apk-light.png#only-light) ![RSS APK](./assets/img/android/rss-apk-dark.png#only-dark) ![APK Changes](./assets/img/android/rss-changes-light.png#only-light) ![APK Changes](./assets/img/android/rss-changes-dark.png#only-dark)
#### GitHub
On GitHub, using [Secure Camera](#secure-camera) as an example, you would navigate to its [releases page](https://github.com/GrapheneOS/Camera/releases) and append `.atom` to the URL:
`https://github.com/GrapheneOS/Camera/releases.atom`
#### GitLab
On GitLab, using [Aurora Store](#aurora-store) as an example, you would navigate to its [project repository](https://gitlab.com/AuroraOSS/AuroraStore) and append `/-/tags?format=atom` to the URL:
`https://gitlab.com/AuroraOSS/AuroraStore/-/tags?format=atom`
#### Verifying APK Fingerprints
If you download APK files to install manually, you can verify their signature with the [`apksigner`](https://developer.android.com/studio/command-line/apksigner) tool, which is a part of Android [build-tools](https://developer.android.com/studio/releases/build-tools).
1. Install [Java JDK](https://www.oracle.com/java/technologies/downloads/).
2. Download the [Android Studio command line tools](https://developer.android.com/studio#command-tools).
3. Extract the downloaded archive:
```bash
unzip commandlinetools-*.zip
cd cmdline-tools
./bin/sdkmanager --sdk_root=./ "build-tools;29.0.3"
```
4. Run the signature verification command:
```bash
./build-tools/29.0.3/apksigner verify --print-certs ../Camera-37.apk
```
5. The resulting hashes can then be compared with another source. Some developers such as Signal [show the fingerprints](https://signal.org/android/apk/) on their website.
```bash
Signer #1 certificate DN: CN=GrapheneOS
Signer #1 certificate SHA-256 digest: 6436b155b917c2f9a9ed1d15c4993a5968ffabc94947c13f2aeee14b7b27ed59
Signer #1 certificate SHA-1 digest: 23e108677a2e1b1d6e6b056f3bb951df7ad5570c
Signer #1 certificate MD5 digest: dbbcd0cac71bd6fa2102a0297c6e0dd3
```
### F-Droid
![F-Droid logo](assets/img/android/f-droid.svg){ align=right width=120px }
==We do **not** currently recommend F-Droid as a way to obtain apps.== F-Droid is often recommended as an alternative to Google Play, particularly in the privacy community. The option to add third-party repositories and not be confined to Google's walled garden has led to its popularity. F-Droid additionally has [reproducible builds](https://f-droid.org/en/docs/Reproducible_Builds/) for some applications and is dedicated to free and open-source software. However, there are [notable problems](https://wonderfall.dev/fdroid-issues/) with the official F-Droid client, their quality control, and how they build, sign, and deliver packages.
Due to their process of building apps, apps in the official F-Droid repository often fall behind on updates. F-Droid maintainers also reuse package IDs while signing apps with their own keys, which is not ideal as it gives the F-Droid team ultimate trust.
Other popular third-party repositories such as [IzzyOnDroid](https://apt.izzysoft.de/fdroid/) alleviate some of these concerns. The IzzyOnDroid repository pulls builds directly from GitHub and is the next best thing to the developers' own repositories. However, it is not something that we can recommend, as apps are typically [removed](https://github.com/vfsfitvnm/ViMusic/issues/240#issuecomment-1225564446) from that respository when they make it to the main F-droid repository. While that makes sense (since the goal of that particular repository is to host apps before they're accepted into the main F-Droid repository), it can leave you with installed apps which no longer receive updates.
That said, the [F-droid](https://f-droid.org/en/packages/) and [IzzyOnDroid](https://apt.izzysoft.de/fdroid/) repositories are home to countless apps, so they can be a useful tool to search for and discover open-source apps that you can then download through Play Store, Aurora Store, or by getting the APK directly from the developer. It is important to keep in mind that some apps in these repositories have not been updated in years and may rely on unsupported libraries, among other things, posing a potential security risk. You should use your best judgement when looking for new apps via this method.
!!! note
In some rare cases, the developer of an app will only distribute it through F-droid ([Gadgetbridge](https://gadgetbridge.org/) is one example of this). If you really need an app like that, we recommend using [Neo Store](https://github.com/NeoApplications/Neo-Store/) instead of the official F-droid app to obtain it.

451
docs/android.md Normal file
View File

@ -0,0 +1,451 @@
---
meta_title: "Android Recommendations: GrapheneOS and DivestOS - Privacy Guides"
title: "Android"
icon: 'simple/android'
description: You can replace the operating system on your Android phone with these secure and privacy-respecting alternatives.
cover: android.webp
schema:
-
"@context": http://schema.org
"@type": WebPage
name: Private Android Operating Systems
url: "./"
-
"@context": http://schema.org
"@type": CreativeWork
name: Android
image: /assets/img/android/android.svg
url: https://source.android.com/
sameAs: https://en.wikipedia.org/wiki/Android_(operating_system)
-
"@context": http://schema.org
"@type": CreativeWork
name: GrapheneOS
image: /assets/img/android/grapheneos.svg
url: https://grapheneos.org/
sameAs: https://en.wikipedia.org/wiki/GrapheneOS
subjectOf:
"@context": http://schema.org
"@type": WebPage
url: "./"
-
"@context": http://schema.org
"@type": CreativeWork
name: Divest
image: /assets/img/android/divestos.svg
url: https://divestos.org/
sameAs: https://en.wikipedia.org/wiki/DivestOS
subjectOf:
"@context": http://schema.org
"@type": WebPage
url: "./"
-
"@context": http://schema.org
"@type": Product
name: Pixel
brand:
"@type": Brand
name: Google
image: /assets/img/android/google-pixel.png
sameAs: https://en.wikipedia.org/wiki/Google_Pixel
review:
"@type": Review
author:
"@type": Organization
name: Privacy Guides
-
"@context": http://schema.org
"@type": MobileApplication
name: Shelter
applicationCategory: Utilities
operatingSystem: Android
-
"@context": http://schema.org
"@type": MobileApplication
name: Auditor
applicationCategory: Utilities
operatingSystem: Android
-
"@context": http://schema.org
"@type": MobileApplication
name: Secure Camera
applicationCategory: Utilities
operatingSystem: Android
-
"@context": http://schema.org
"@type": MobileApplication
name: Secure PDF Viewer
applicationCategory: Utilities
operatingSystem: Android
---
![Android logo](assets/img/android/android.svg){ align=right }
The **Android Open Source Project** is an open-source mobile operating system led by Google which powers the majority of the world's mobile devices. Most phones sold with Android are modified to include invasive integrations and apps such as Google Play Services, so you can significantly improve your privacy on your mobile device by replacing your phone's default installation with a version of Android without these invasive features.
[:octicons-home-16:](https://source.android.com){ .card-link title=Homepage }
[:octicons-info-16:](https://source.android.com/docs){ .card-link title=Documentation}
[:octicons-code-16:](https://cs.android.com/android/platform/superproject){ .card-link title="Source Code" }
These are the Android operating systems, devices, and apps we recommend to maximize your mobile device's security and privacy. To learn more about Android:
[General Android Overview :material-arrow-right-drop-circle:](os/android-overview.md){ .md-button }
## AOSP Derivatives
We recommend installing one of these custom Android operating systems on your device, listed in order of preference, depending on your device's compatibility with these operating systems.
<div class="admonition note" markdown>
<p class="admonition-title">Note</p>
End-of-life devices (such as GrapheneOS or CalyxOS's "extended support" devices) do not have full security patches (firmware updates) due to the OEM discontinuing support. These devices cannot be considered completely secure regardless of installed software.
</div>
### GrapheneOS
<div class="admonition recommendation" markdown>
![GrapheneOS logo](assets/img/android/grapheneos.svg#only-light){ align=right }
![GrapheneOS logo](assets/img/android/grapheneos-dark.svg#only-dark){ align=right }
**GrapheneOS** is the best choice when it comes to privacy and security.
GrapheneOS provides additional [security hardening](https://en.wikipedia.org/wiki/Hardening_(computing)) and privacy improvements. It has a [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), network and sensor permissions, and various other [security features](https://grapheneos.org/features). GrapheneOS also comes with full firmware updates and signed builds, so verified boot is fully supported.
[:octicons-home-16: Homepage](https://grapheneos.org){ .md-button .md-button--primary }
[:octicons-eye-16:](https://grapheneos.org/faq#privacy-policy){ .card-link title="Privacy Policy" }
[:octicons-info-16:](https://grapheneos.org/faq){ .card-link title=Documentation}
[:octicons-code-16:](https://grapheneos.org/source){ .card-link title="Source Code" }
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
</div>
GrapheneOS supports [Sandboxed Google Play](https://grapheneos.org/usage#sandboxed-google-play), which runs [Google Play Services](https://en.wikipedia.org/wiki/Google_Play_Services) fully sandboxed like any other regular app. This means you can take advantage of most Google Play Services, such as [push notifications](https://firebase.google.com/docs/cloud-messaging), while giving you full control over their permissions and access, and while containing them to a specific [work profile](os/android-overview.md#work-profile) or [user profile](os/android-overview.md#user-profiles) of your choice.
Google Pixel phones are the only devices that currently meet GrapheneOS's [hardware security requirements](https://grapheneos.org/faq#device-support).
[Why we recommend GrapheneOS over CalyxOS :material-arrow-right-drop-circle:](https://blog.privacyguides.org/2022/04/21/grapheneos-or-calyxos){ .md-button }
### DivestOS
<div class="admonition recommendation" markdown>
![DivestOS logo](assets/img/android/divestos.svg){ align=right }
**DivestOS** is a soft-fork of [LineageOS](https://lineageos.org).
DivestOS inherits many [supported devices](https://divestos.org/index.php?page=devices&base=LineageOS) from LineageOS. It has signed builds, making it possible to have [verified boot](https://source.android.com/security/verifiedboot) on some non-Pixel devices.
[:octicons-home-16: Homepage](https://divestos.org){ .md-button .md-button--primary }
[:simple-torbrowser:](http://divestoseb5nncsydt7zzf5hrfg44md4bxqjs5ifcv4t7gt7u6ohjyyd.onion){ .card-link title="Onion Service" }
[:octicons-eye-16:](https://divestos.org/index.php?page=privacy_policy){ .card-link title="Privacy Policy" }
[:octicons-info-16:](https://divestos.org/index.php?page=faq){ .card-link title=Documentation}
[:octicons-code-16:](https://github.com/divested-mobile){ .card-link title="Source Code" }
[:octicons-heart-16:](https://divested.dev/pages/donate){ .card-link title=Contribute }
</div>
DivestOS has automated kernel vulnerability ([CVE](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures)) [patching](https://gitlab.com/divested-mobile/cve_checker), fewer proprietary blobs, and a custom [hosts](https://divested.dev/index.php?page=dnsbl) file. Its hardened WebView, [Mulch](https://gitlab.com/divested-mobile/mulch), enables [CFI](https://en.wikipedia.org/wiki/Control-flow_integrity) for all architectures and [network state partitioning](https://developer.mozilla.org/docs/Web/Privacy/State_Partitioning), and receives out-of-band updates.
DivestOS also includes kernel patches from GrapheneOS and enables all available kernel security features via [defconfig hardening](https://github.com/Divested-Mobile/DivestOS-Build/blob/master/Scripts/Common/Functions.sh#L758). All kernels newer than version 3.4 include full page [sanitization](https://lwn.net/Articles/334747) and all ~22 Clang-compiled kernels have [`-ftrivial-auto-var-init=zero`](https://reviews.llvm.org/D54604?id=174471) enabled.
DivestOS implements some system hardening patches originally developed for GrapheneOS. DivestOS 16.0 and higher implements GrapheneOS's [`INTERNET`](https://developer.android.com/training/basics/network-ops/connecting) and SENSORS permission toggle, [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), [exec-spawning](https://blog.privacyguides.org/2022/04/21/grapheneos-or-calyxos/#additional-hardening), [JNI](https://en.wikipedia.org/wiki/Java_Native_Interface) [constification](https://en.wikipedia.org/wiki/Const_(computer_programming)), and partial [bionic](https://en.wikipedia.org/wiki/Bionic_(software)) hardening patchsets. 17.1 and higher features GrapheneOS's per-network full [MAC randomization](https://en.wikipedia.org/wiki/MAC_address#Randomization) option, [`ptrace_scope`](https://kernel.org/doc/html/latest/admin-guide/LSM/Yama.html) control, and automatic reboot/Wi-Fi/Bluetooth [timeout options](https://grapheneos.org/features).
DivestOS uses F-Droid as its default app store. We normally [recommend avoiding F-Droid](#f-droid), but doing so on DivestOS isn't viable; the developers update their apps via their own F-Droid repositories ([DivestOS Official](https://divestos.org/fdroid/official/?fingerprint=E4BE8D6ABFA4D9D4FEEF03CDDA7FF62A73FD64B75566F6DD4E5E577550BE8467) and [DivestOS WebView](https://divestos.org/fdroid/webview/?fingerprint=FB426DA1750A53D7724C8A582B4D34174E64A84B38940E5D5A802E1DFF9A40D2)). We recommend disabling the official F-Droid app and using [F-Droid Basic](https://f-droid.org/en/packages/org.fdroid.basic) **with the DivestOS repositories enabled** to keep those components up to date. For other apps, our recommended methods of obtaining them still apply.
<div class="admonition warning" markdown>
<p class="admonition-title">Warning</p>
DivestOS firmware update [status](https://gitlab.com/divested-mobile/firmware-empty/-/blob/master/STATUS) and quality control varies across the devices it supports. We still recommend GrapheneOS depending on your device's compatibility. For other devices, DivestOS is a good alternative.
Not all of the supported devices have verified boot, and some perform it better than others.
</div>
## Android Devices
When purchasing a device, we recommend getting one as new as possible. The software and firmware of mobile devices are only supported for a limited time, so buying new extends that lifespan as much as possible.
Avoid buying phones from mobile network operators. These often have a **locked bootloader** and do not support [OEM unlocking](https://source.android.com/devices/bootloader/locking_unlocking). These phone variants will prevent you from installing any kind of alternative Android distribution.
Be very **careful** about buying second hand phones from online marketplaces. Always check the reputation of the seller. If the device is stolen, there's a possibility of it being entered in the [IMEI database](https://gsma.com/get-involved/working-groups/terminal-steering-group/imei-database). There is also a risk involved with you being associated with the activity of the previous owner.
A few more tips regarding Android devices and operating system compatibility:
- Do not buy devices that have reached or are near their end-of-life, additional firmware updates must be provided by the manufacturer.
- Do not buy preloaded LineageOS or /e/ OS phones or any Android phones without proper [Verified Boot](https://source.android.com/security/verifiedboot) support and firmware updates. These devices also have no way for you to check whether they've been tampered with.
- In short, if a device or Android distribution is not listed here, there is probably a good reason. Check out our [forum](https://discuss.privacyguides.net) to find details!
### Google Pixel
Google Pixel phones are the **only** devices we recommend for purchase. Pixel phones have stronger hardware security than any other Android devices currently on the market, due to proper AVB support for third-party operating systems and Google's custom [Titan](https://security.googleblog.com/2021/10/pixel-6-setting-new-standard-for-mobile.html) security chips acting as the Secure Element.
<div class="admonition recommendation" markdown>
![Google Pixel 6](assets/img/android/google-pixel.png){ align=right }
**Google Pixel** devices are known to have good security and properly support [Verified Boot](https://source.android.com/security/verifiedboot), even when installing custom operating systems.
Beginning with the **Pixel 8** and **8 Pro**, Pixel devices receive a minimum of 7 years of guaranteed security updates, ensuring a much longer lifespan compared to the 2-5 years competing OEMs typically offer.
[:material-shopping: Store](https://store.google.com/category/phones){ .md-button .md-button--primary }
</div>
Secure Elements like the Titan M2 are more limited than the processor's Trusted Execution Environment used by most other phones as they are only used for secrets storage, hardware attestation, and rate limiting, not for running "trusted" programs. Phones without a Secure Element have to use the TEE for *all* of those functions, resulting in a larger attack surface.
Google Pixel phones use a TEE OS called Trusty which is [open source](https://source.android.com/security/trusty#whyTrusty), unlike many other phones.
The installation of GrapheneOS on a Pixel phone is easy with their [web installer](https://grapheneos.org/install/web). If you don't feel comfortable doing it yourself and are willing to spend a bit of extra money, check out the [NitroPhone](https://shop.nitrokey.com/shop) as they come preloaded with GrapheneOS from the reputable [Nitrokey](https://nitrokey.com/about) company.
A few more tips for purchasing a Google Pixel:
- If you're after a bargain on a Pixel device, we suggest buying an "**a**" model, just after the next flagship is released. Discounts are usually available because Google will be trying to clear their stock.
- Consider price beating options and specials offered at physical stores.
- Look at online community bargain sites in your country. These can alert you to good sales.
- Google provides a list showing the [support cycle](https://support.google.com/nexus/answer/4457705) for each one of their devices. The price per day for a device can be calculated as: $\text{Cost} \over \text {EOL Date}-\text{Current Date}$, meaning that the longer use of the device the lower cost per day.
- If the Pixel is unavailable in your region, the [NitroPhone](https://shop.nitrokey.com/shop) can be shipped globally.
## General Apps
We recommend a wide variety of Android apps throughout this site. The apps listed here are Android-exclusive and specifically enhance or replace key system functionality.
### Shelter
<div class="admonition recommendation" markdown>
![Shelter logo](assets/img/android/shelter.svg){ align=right }
**Shelter** is an app that helps you leverage Android's Work Profile functionality to isolate or duplicate apps on your device.
Shelter supports blocking contact search cross profiles and sharing files across profiles via the default file manager ([DocumentsUI](https://source.android.com/devices/architecture/modular-system/documentsui)).
[:octicons-repo-16: Repository](https://gitea.angry.im/PeterCxy/Shelter#shelter){ .md-button .md-button--primary }
[:octicons-code-16:](https://gitea.angry.im/PeterCxy/Shelter){ .card-link title="Source Code" }
[:octicons-heart-16:](https://patreon.com/PeterCxy){ .card-link title=Contribute }
</div>
<div class="admonition warning" markdown>
<p class="admonition-title">Warning</p>
Shelter is recommended over [Insular](https://secure-system.gitlab.io/Insular) and [Island](https://github.com/oasisfeng/island) as it supports [contact search blocking](https://secure-system.gitlab.io/Insular/faq.html).
When using Shelter, you are placing complete trust in its developer, as Shelter acts as a [Device Admin](https://developer.android.com/guide/topics/admin/device-admin) to create the Work Profile, and it has extensive access to the data stored within the Work Profile.
</div>
### Secure Camera
<div class="admonition recommendation" markdown>
![Secure camera logo](assets/img/android/secure_camera.svg#only-light){ align=right }
![Secure camera logo](assets/img/android/secure_camera-dark.svg#only-dark){ align=right }
**Secure Camera** is a camera app focused on privacy and security which can capture images, videos and QR codes. CameraX vendor extensions (Portrait, HDR, Night Sight, Face Retouch, and Auto) are also supported on available devices.
[:octicons-repo-16: Repository](https://github.com/GrapheneOS/Camera){ .md-button .md-button--primary }
[:octicons-info-16:](https://grapheneos.org/usage#camera){ .card-link title=Documentation}
[:octicons-code-16:](https://github.com/GrapheneOS/Camera){ .card-link title="Source Code" }
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
<details class="downloads" markdown>
<summary>Downloads</summary>
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.grapheneos.camera.play)
- [:simple-github: GitHub](https://github.com/GrapheneOS/Camera/releases)
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
</details>
</div>
Main privacy features include:
- Auto removal of [Exif](https://en.wikipedia.org/wiki/Exif) metadata (enabled by default)
- Use of the new [Media](https://developer.android.com/training/data-storage/shared/media) API, therefore [storage permissions](https://developer.android.com/training/data-storage) are not required
- Microphone permission not required unless you want to record sound
<div class="admonition note" markdown>
<p class="admonition-title">Note</p>
Metadata is not currently deleted from video files but that is planned.
The image orientation metadata is not deleted. If you enable location (in Secure Camera) that **won't** be deleted either. If you want to delete that later you will need to use an external app such as [ExifEraser](data-redaction.md#exiferaser).
</div>
### Secure PDF Viewer
<div class="admonition recommendation" markdown>
![Secure PDF Viewer logo](assets/img/android/secure_pdf_viewer.svg#only-light){ align=right }
![Secure PDF Viewer logo](assets/img/android/secure_pdf_viewer-dark.svg#only-dark){ align=right }
**Secure PDF Viewer** is a PDF viewer based on [pdf.js](https://en.wikipedia.org/wiki/PDF.js) that doesn't require any permissions. The PDF is fed into a [sandboxed](https://en.wikipedia.org/wiki/Sandbox_(software_development)) [webview](https://developer.android.com/guide/webapps/webview). This means that it doesn't require permission directly to access content or files.
[Content-Security-Policy](https://en.wikipedia.org/wiki/Content_Security_Policy) is used to enforce that the JavaScript and styling properties within the WebView are entirely static content.
[:octicons-repo-16: Repository](https://github.com/GrapheneOS/PdfViewer){ .md-button .md-button--primary }
[:octicons-code-16:](https://github.com/GrapheneOS/PdfViewer){ .card-link title="Source Code" }
[:octicons-heart-16:](https://grapheneos.org/donate){ .card-link title=Contribute }
<details class="downloads" markdown>
<summary>Downloads</summary>
- [:simple-googleplay: Google Play](https://play.google.com/store/apps/details?id=app.grapheneos.pdfviewer.play)
- [:simple-github: GitHub](https://github.com/GrapheneOS/PdfViewer/releases)
- [:material-cube-outline: GrapheneOS App Store](https://github.com/GrapheneOS/Apps/releases)
</details>
</div>
## Obtaining Applications
### Obtainium
<div class="admonition recommendation" markdown>
![Obtainium logo](assets/img/android/obtainium.svg){ align=right }
**Obtainium** is an app manager which allows you to install and update apps directly from the developer's own releases page (i.e. GitHub, GitLab, the developer's website, etc.), rather than a centralized app store/repository. It supports automatic background updates on Android 12 and higher.
[:octicons-repo-16: Repository](https://github.com/ImranR98/Obtainium#readme){ .md-button .md-button--primary }
[:octicons-code-16:](https://github.com/ImranR98/Obtainium){ .card-link title="Source Code" }
[:octicons-heart-16:](https://github.com/sponsors/ImranR98){ .card-link title=Contribute }
<details class="downloads" markdown>
<summary>Downloads</summary>
- [:simple-github: GitHub](https://github.com/ImranR98/Obtainium/releases)
</details>
</div>
Obtainium allows you to download APK installer files from a wide variety of sources, and it is up to you to ensure those sources and apps are legitimate. For example, using Obtainium to install Signal from [Signal's APK landing page](https://signal.org/android/apk) should be fine, but installing from third-party APK repositories like Aptoide or APKPure may pose additional risks. The risk of installing a malicious *update* is lower, because Android itself verifies that all app updates are signed by the same developer as the existing app on your phone before installing them.
### GrapheneOS App Store
GrapheneOS's app store is available on [GitHub](https://github.com/GrapheneOS/Apps/releases). It supports Android 12 and above and is capable of updating itself. The app store has standalone applications built by the GrapheneOS project such as the [Auditor](https://attestation.app), [Camera](https://github.com/GrapheneOS/Camera), and [PDF Viewer](https://github.com/GrapheneOS/PdfViewer). If you are looking for these applications, we highly recommend that you get them from GrapheneOS's app store instead of the Play Store, as the apps on their store are signed by the GrapheneOS's project own signature that Google does not have access to.
### Aurora Store
The Google Play Store requires a Google account to login which is not great for privacy. You can get around this by using an alternative client, such as Aurora Store.
<div class="admonition recommendation" markdown>
![Aurora Store logo](assets/img/android/aurora-store.webp){ align=right }
**Aurora Store** is a Google Play Store client which does not require a Google Account, Google Play Services, or microG to download apps.
[:octicons-home-16: Homepage](https://auroraoss.com){ .md-button .md-button--primary }
[:octicons-eye-16:](https://gitlab.com/AuroraOSS/AuroraStore/-/blob/master/POLICY.md){ .card-link title="Privacy Policy" }
[:octicons-code-16:](https://gitlab.com/AuroraOSS/AuroraStore){ .card-link title="Source Code" }
<details class="downloads" markdown>
<summary>Downloads</summary>
- [:simple-gitlab: GitLab](https://gitlab.com/AuroraOSS/AuroraStore/-/releases)
</details>
</div>
Aurora Store does not allow you to download paid apps with their anonymous account feature. You can optionally log in with your Google account with Aurora Store to download apps you have purchased, which does give access to the list of apps you've installed to Google, however you still benefit from not requiring the full Google Play client and Google Play Services or microG on your device.
### Manually with RSS Notifications
For apps that are released on platforms like GitHub and GitLab, you may be able to add an RSS feed to your [news aggregator](news-aggregators.md) that will help you keep track of new releases.
![RSS APK](./assets/img/android/rss-apk-light.png#only-light) ![RSS APK](./assets/img/android/rss-apk-dark.png#only-dark) ![APK Changes](./assets/img/android/rss-changes-light.png#only-light) ![APK Changes](./assets/img/android/rss-changes-dark.png#only-dark)
#### GitHub
On GitHub, using [Secure Camera](#secure-camera) as an example, you would navigate to its [releases page](https://github.com/GrapheneOS/Camera/releases) and append `.atom` to the URL:
`https://github.com/GrapheneOS/Camera/releases.atom`
#### GitLab
On GitLab, using [Aurora Store](#aurora-store) as an example, you would navigate to its [project repository](https://gitlab.com/AuroraOSS/AuroraStore) and append `/-/tags?format=atom` to the URL:
`https://gitlab.com/AuroraOSS/AuroraStore/-/tags?format=atom`
#### Verifying APK Fingerprints
If you download APK files to install manually, you can verify their signature with the [`apksigner`](https://developer.android.com/studio/command-line/apksigner) tool, which is a part of Android [build-tools](https://developer.android.com/studio/releases/build-tools).
1. Install [Java JDK](https://oracle.com/java/technologies/downloads).
2. Download the [Android Studio command line tools](https://developer.android.com/studio#command-tools).
3. Extract the downloaded archive:
```bash
unzip commandlinetools-*.zip
cd cmdline-tools
./bin/sdkmanager --sdk_root=./ "build-tools;29.0.3"
```
4. Run the signature verification command:
```bash
./build-tools/29.0.3/apksigner verify --print-certs ../Camera-37.apk
```
5. The resulting hashes can then be compared with another source. Some developers such as Signal [show the fingerprints](https://signal.org/android/apk) on their website.
```bash
Signer #1 certificate DN: CN=GrapheneOS
Signer #1 certificate SHA-256 digest: 6436b155b917c2f9a9ed1d15c4993a5968ffabc94947c13f2aeee14b7b27ed59
Signer #1 certificate SHA-1 digest: 23e108677a2e1b1d6e6b056f3bb951df7ad5570c
Signer #1 certificate MD5 digest: dbbcd0cac71bd6fa2102a0297c6e0dd3
```
### F-Droid
![F-Droid logo](assets/img/android/f-droid.svg){ align=right width=120px }
==We only recommend F-Droid as a way to obtain apps which cannot be obtained via the means above.== F-Droid is often recommended as an alternative to Google Play, particularly in the privacy community. The option to add third-party repositories and not be confined to Google's walled garden has led to its popularity. F-Droid additionally has [reproducible builds](https://f-droid.org/en/docs/Reproducible_Builds) for some applications and is dedicated to free and open-source software. However, there are some security-related downsides to how F-Droid builds, signs, and delivers packages:
Due to their process of building apps, apps in the official F-Droid repository often fall behind on updates. F-Droid maintainers also reuse package IDs while signing apps with their own keys, which is not ideal as it gives the F-Droid team ultimate trust. Additionally, the requirements for an app to be included in the official F-Droid repo are less strict than other app stores like Google Play, meaning that F-Droid tends to host a lot more apps which are older, unmaintained, or otherwise no longer meet [modern security standards](https://developer.android.com/google/play/requirements/target-sdk).
Other popular third-party repositories for F-Droid such as [IzzyOnDroid](https://apt.izzysoft.de/fdroid) alleviate some of these concerns. The IzzyOnDroid repository pulls builds directly from GitHub and is the next best thing to the developers' own repositories. However, it is not something that we can fully recommend, as apps are typically [removed](https://github.com/vfsfitvnm/ViMusic/issues/240#issuecomment-1225564446) from that repository if they are later added to the main F-Droid repository. While that makes sense (since the goal of that particular repository is to host apps before they're accepted into the main F-Droid repository), it can leave you with installed apps which no longer receive updates.
That said, the [F-Droid](https://f-droid.org/en/packages) and [IzzyOnDroid](https://apt.izzysoft.de/fdroid) repositories are home to countless apps, so they can be a useful tool to search for and discover open-source apps that you can then download through other means such as the Play Store, Aurora Store, or by getting the APK directly from the developer. You should use your best judgement when looking for new apps via this method, and keep an eye on how frequently the app is updated. Outdated apps may rely on unsupported libraries, among other things, posing a potential security risk.
<div class="admonition note" markdown>
<p class="admonition-title">F-Droid Basic</p>
In some rare cases, the developer of an app will only distribute it through F-Droid ([Gadgetbridge](https://gadgetbridge.org) is one example of this). If you really need an app like that, we recommend using the newer [F-Droid Basic](https://f-droid.org/en/packages/org.fdroid.basic) client instead of the original F-Droid app to obtain it. F-Droid Basic can do unattended updates without privileged extension or root, and has a reduced feature set (limiting attack surface).
</div>
## Criteria
**Please note we are not affiliated with any of the projects we recommend.** In addition to [our standard criteria](about/criteria.md), we have developed a clear set of requirements to allow us to provide objective recommendations. We suggest you familiarize yourself with this list before choosing to use a project, and conduct your own research to ensure it's the right choice for you.
### Operating Systems
- Must be open-source software.
- Must support bootloader locking with custom AVB key support.
- Must receive major Android updates within 0-1 months of release.
- Must receive Android feature updates (minor version) within 0-14 days of release.
- Must receive regular security patches within 0-5 days of release.
- Must **not** be "rooted" out of the box.
- Must **not** enable Google Play Services by default.
- Must **not** require system modification to support Google Play Services.
### Devices
- Must support at least one of our recommended custom operating systems.
- Must be currently sold new in stores.
- Must receive a minimum of 5 years of security updates.
- Must have dedicated secure element hardware.
### Applications
- Applications on this page must not be applicable to any other software category on the site.
- General applications should extend or replace core system functionality.
- Applications should receive regular updates and maintenance.

View File

@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="48" height="48" viewBox="0 0 48.000001 48.000001" id="svg4230" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="fdroid-logo.svg">
<defs id="defs4232">
<linearGradient inkscape:collect="always" id="linearGradient5212">
<stop style="stop-color:#ffffff;stop-opacity:0.09803922" offset="0" id="stop5214"/>
<stop style="stop-color:#ffffff;stop-opacity:0" offset="1" id="stop5216"/>
</linearGradient>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient5212" id="radialGradient5220" cx="-98.23381" cy="3.4695871" fx="-98.23381" fy="3.4695871" r="22.671185" gradientTransform="matrix(0,1.9747624,-2.117225,3.9784049e-8,8.677247,1199.588)" gradientUnits="userSpaceOnUse"/>
<filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter4175" x="-0.023846937" width="1.0476939" y="-0.02415504" height="1.0483101">
<feGaussianBlur inkscape:collect="always" stdDeviation="0.45053152" id="feGaussianBlur4177"/>
</filter>
</defs>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="11.313708" inkscape:cx="6.4184057" inkscape:cy="25.737489" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" units="px" inkscape:window-width="1920" inkscape:window-height="1009" inkscape:window-x="0" inkscape:window-y="34" inkscape:window-maximized="1" gridtolerance="10000"/>
<metadata id="metadata4235">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/"/>
</cc:Work>
<cc:License rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
<cc:requires rdf:resource="http://creativecommons.org/ns#Notice"/>
<cc:requires rdf:resource="http://creativecommons.org/ns#Attribution"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
<cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike"/>
</cc:License>
</rdf:RDF>
</metadata>
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1004.3622)">
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#263238;fill-opacity:0.4;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4175);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 2.613462,1006.3488 a 1.250125,1.250125 0 0 0 -1.01172,2.0293 l 3.60351,4.6641 c -0.12699,0.3331 -0.20312,0.6915 -0.20312,1.0703 l 0,4 0,2.8652 0,0.1348 c 0,1.662 1.338,3 3,3 l 32,0 c 1.662,0 3,-1.338 3,-3 l 0,-4 0,-2.8652 0,-0.1348 c 0,-0.3803 -0.0771,-0.74 -0.20508,-1.0742 l 3.60156,-4.6602 a 1.250125,1.250125 0 0 0 -1.04882,-2.0273 1.250125,1.250125 0 0 0 -0.92969,0.498 l -3.43164,4.4414 c -0.31022,-0.1079 -0.63841,-0.1777 -0.98633,-0.1777 l -32,0 c -0.34857,0 -0.67757,0.069 -0.98828,0.1777 l -3.4336,-4.4414 a 1.250125,1.250125 0 0 0 -0.96679,-0.5 z m 5.38867,18.7637 c -0.20775,0 -0.40983,0.021 -0.60547,0.061 -1.36951,0.2761 -2.39453,1.4698 -2.39453,2.9101 l 0,0.029 0,19.7793 0,0.029 0,0.1914 c 0,1.662 1.338,3 3,3 l 32,0 c 1.662,0 3,-1.338 3,-3 l 0,-20 0,-0.029 c 0,-1.4403 -1.02502,-2.634 -2.39453,-2.9101 -0.19565,-0.039 -0.39772,-0.061 -0.60547,-0.061 l -32,0 z" id="path4192" inkscape:connector-curvature="0"/>
<g id="g5012">
<g id="g4179" transform="matrix(-1,0,0,1,47.999779,0)">
<path style="fill:#8ab000;fill-opacity:1;fill-rule:evenodd;stroke:#769616;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 2.5889342,1006.8622 4.25,5.5" id="path4181" inkscape:connector-curvature="0" sodipodi:nodetypes="cc"/>
<path sodipodi:nodetypes="cccccc" inkscape:connector-curvature="0" id="path4183" d="m 2.6113281,1005.6094 c -0.4534623,0.012 -0.7616975,0.189 -0.9807462,0.4486 2.0269314,2.4089 2.368401,2.7916 5.1354735,6.2214 1.0195329,1.319 2.0816026,0.6373 1.0620696,-0.6817 l -4.25,-5.5 c -0.2289894,-0.3056 -0.5850813,-0.478 -0.9667969,-0.4883 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.29803923;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
<path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path4185" d="m 1.6220992,1006.0705 c -0.1238933,0.1479 -0.561176,0.8046 -0.02249,1.5562 l 4.25,5.5 c 1.0195329,1.319 1.1498748,-0.6123 1.1498748,-0.6123 0,0 -3.7344514,-4.51 -5.3773848,-6.4439 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#263238;fill-opacity:0.2;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
<path sodipodi:nodetypes="cscccc" inkscape:connector-curvature="0" id="path4187" d="m 2.3378905,1005.8443 c -0.438175,0 -0.959862,0.1416 -0.8242183,0.7986 0.103561,0.5016 4.6608262,6.0744 4.6608262,6.0744 1.0195329,1.319 2.4934721,0.6763 1.4739391,-0.6425 l -4.234375,-5.4727 c -0.2602394,-0.29 -0.6085188,-0.7436 -1.076172,-0.7578 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#8ab000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
</g>
<g id="g4955">
<path sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path4945" d="m 2.5889342,1006.8622 4.25,5.5" style="fill:#8ab000;fill-opacity:1;fill-rule:evenodd;stroke:#769616;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.29803923;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 2.6113281,1005.6094 c -0.4534623,0.012 -0.7616975,0.189 -0.9807462,0.4486 2.0269314,2.4089 2.368401,2.7916 5.1354735,6.2214 1.0195329,1.319 2.0816026,0.6373 1.0620696,-0.6817 l -4.25,-5.5 c -0.2289894,-0.3056 -0.5850813,-0.478 -0.9667969,-0.4883 z" id="path4947" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc"/>
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#263238;fill-opacity:0.2;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 1.6220992,1006.0705 c -0.1238933,0.1479 -0.561176,0.8046 -0.02249,1.5562 l 4.25,5.5 c 1.0195329,1.319 1.1498748,-0.6123 1.1498748,-0.6123 0,0 -3.7344514,-4.51 -5.3773848,-6.4439 z" id="path4951" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#8ab000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 2.3378905,1005.8443 c -0.438175,0 -0.959862,0.1416 -0.8242183,0.7986 0.103561,0.5016 4.6608262,6.0744 4.6608262,6.0744 1.0195329,1.319 2.4934721,0.6763 1.4739391,-0.6425 l -4.234375,-5.4727 c -0.2602394,-0.29 -0.6085188,-0.7436 -1.076172,-0.7578 z" id="path4925" inkscape:connector-curvature="0" sodipodi:nodetypes="cscccc"/>
</g>
<g transform="translate(42,0)" id="g4967">
<rect style="opacity:1;fill:#aeea00;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="rect4144" width="38" height="13" x="-37" y="1010.3622" rx="3" ry="3"/>
<rect ry="3" rx="3" y="1013.3622" x="-37" height="10" width="38" id="rect4961" style="opacity:1;fill:#263238;fill-opacity:0.2;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<rect ry="3" rx="3" y="1010.3622" x="-37" height="10" width="38" id="rect4963" style="opacity:1;fill:#ffffff;fill-opacity:0.29803923;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<rect ry="2.5384617" rx="3" y="1011.3622" x="-37" height="11" width="38" id="rect4965" style="opacity:1;fill:#aeea00;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
</g>
<g id="g4979">
<rect style="opacity:1;fill:#1976d2;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="rect4146" width="38" height="26" x="5" y="1024.3622" rx="3" ry="3"/>
<rect ry="3" rx="3" y="1037.3622" x="5" height="13" width="38" id="rect4973" style="opacity:1;fill:#263238;fill-opacity:0.2;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<rect ry="3" rx="3" y="1024.3622" x="5" height="13" width="38" id="rect4975" style="opacity:1;fill:#ffffff;fill-opacity:0.2;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<rect ry="2.7692308" rx="3" y="1025.3622" x="5" height="24" width="38" id="rect4977" style="opacity:1;fill:#1976d2;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
</g>
<g transform="translate(0,1013.3622)" id="g4211">
<path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0d47a1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 24,17.75 c -2.880662,0 -5.319789,1.984685 -6.033203,4.650391 l 3.212891,0 C 21.734004,21.415044 22.774798,20.75 24,20.75 c 1.812692,0 3.25,1.437308 3.25,3.25 0,1.812693 -1.437308,3.25 -3.25,3.25 -1.307381,0 -2.411251,-0.75269 -2.929688,-1.849609 l -3.154296,0 C 18.558263,28.166146 21.04791,30.25 24,30.25 c 3.434013,0 6.25,-2.815987 6.25,-6.25 0,-3.434012 -2.815987,-6.25 -6.25,-6.25 z" id="path4161" inkscape:connector-curvature="0"/>
<circle style="opacity:1;fill:none;fill-opacity:0.40392157;stroke:#0d47a1;stroke-width:1.89999998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path4209" cx="24" cy="24" r="9.5500002"/>
</g>
<g id="g4989" transform="translate(0,0.50001738)">
<ellipse cy="1016.4872" cx="14.375" id="circle4985" style="opacity:1;fill:#263238;fill-opacity:0.2;stroke:none;stroke-width:1.89999998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.69721117" rx="3.375" ry="3.875"/>
<circle style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.89999998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.69721117" id="path4859" cx="14.375" cy="1016.9872" r="3.375"/>
</g>
<g transform="translate(19.5,0.50001738)" id="g4171">
<ellipse ry="3.875" rx="3.375" style="opacity:1;fill:#263238;fill-opacity:0.2;stroke:none;stroke-width:1.89999998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.69721117" id="ellipse4175" cx="14.375" cy="1016.4872"/>
<circle r="3.375" cy="1016.9872" cx="14.375" id="circle4177" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.89999998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.69721117"/>
</g>
</g>
<path inkscape:connector-curvature="0" id="path5128" d="m 2.613462,1005.5987 a 1.250125,1.250125 0 0 0 -1.01172,2.0293 l 3.60351,4.6641 c -0.12699,0.3331 -0.20312,0.6915 -0.20312,1.0703 l 0,4 0,2.8652 0,0.1348 c 0,1.662 1.338,3 3,3 l 32,0 c 1.662,0 3,-1.338 3,-3 l 0,-4 0,-2.8652 0,-0.1348 c 0,-0.3803 -0.0771,-0.74 -0.20508,-1.0742 l 3.60156,-4.6602 a 1.250125,1.250125 0 0 0 -1.04882,-2.0273 1.250125,1.250125 0 0 0 -0.92969,0.498 l -3.43164,4.4414 c -0.31022,-0.1079 -0.63841,-0.1777 -0.98633,-0.1777 l -32,0 c -0.34857,0 -0.67757,0.069 -0.98828,0.1777 l -3.4336,-4.4414 a 1.250125,1.250125 0 0 0 -0.96679,-0.5 z m 5.38867,18.7637 c -0.20775,0 -0.40983,0.021 -0.60547,0.061 -1.36951,0.2761 -2.39453,1.4698 -2.39453,2.9101 l 0,0.029 0,19.7793 0,0.029 0,0.1914 c 0,1.662 1.338,3 3,3 l 32,0 c 1.662,0 3,-1.338 3,-3 l 0,-20 0,-0.029 c 0,-1.4403 -1.02502,-2.634 -2.39453,-2.9101 -0.19565,-0.039 -0.39772,-0.061 -0.60547,-0.061 l -32,0 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#radialGradient5220);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 21 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 128 128"><defs><linearGradient id="linearGradient-1" x1=".5" x2=".5" y1="1"><stop offset="0" stop-color="#420C5D"/><stop offset="1" stop-color="#951AD1"/></linearGradient><path id="path-2" d="m25 29c127.58 0 231 102.97 231 230s-103.42 230-231 230z"/><filter id="filter-3" width="1.294" height="1.148" x="-.182" y="-.074"><feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="10"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0.2 0"/></filter><linearGradient id="linearGradient9148" x1="256" x2="256" y1="512" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient-1"/><linearGradient id="linearGradient9150" x1="198.27" x2="198.27" y1="346.53" y2="20.551" gradientTransform="scale(.70864 1.4111)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient-1"/></defs><g id="Assets" fill="none" fill-rule="evenodd" transform="matrix(.24957 0 0 .24957 .21762 .22232)"><g id="Group"><g id="tb_icon/Stable"><g id="Stable"><circle id="background" cx="256" cy="256" r="246" fill="#f2e4ff" fill-rule="nonzero"/><path id="center" fill="url(#linearGradient9148)" d="m256.53 465.44v-31.033c98.301-0.28386 177.9-80.042 177.9-178.41 0-98.365-79.595-178.12-177.9-178.41v-31.033c115.44 0.29096 208.92 93.937 208.92 209.44 0 115.51-93.482 209.16-208.92 209.45zm0-108.62c55.445-0.29095 100.32-45.304 100.32-100.83 0-55.516-44.878-100.53-100.32-100.82v-31.026c72.59 0.28386 131.36 59.192 131.36 131.85 0 72.661-58.766 131.57-131.36 131.85zm0-155.1c29.742 0.28386 53.777 24.462 53.777 54.274 0 29.82-24.036 53.997-53.777 54.281zm-256.53 54.274c0 141.39 114.61 256.01 256 256.01 141.38 0 256-114.62 256-256.01 0-141.38-114.62-255.99-256-255.99-141.39 0-256 114.61-256 255.99z"/><g id="half" transform="matrix(-1,0,0,1,281,0)"><use width="100%" height="100%" fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><use width="100%" height="100%" fill="url(#linearGradient9150)" fill-rule="evenodd" xlink:href="#path-2"/></g></g></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 128 128"><defs><clipPath id="b"><use width="1280" height="800" overflow="visible" xlink:href="#a"/></clipPath><path id="a" d="m155.5 222.8c-12.64 0-22.875 10.246-22.875 22.872v211.23c0 0.801 0.046 1.608 0.123 2.388 8.5-3.167 17.524-6.629 27.054-10.436 66.336-26.48 120.57-48.994 120.62-74.415 0-0.814-0.056-1.636-0.172-2.458-3.43-25.098-63.407-32.879-63.324-44.381 7e-3 -0.611 0.18-1.25 0.548-1.889 7.205-12.619 35.743-12.015 46.253-12.907 10.519-0.913 35.206-0.724 36.399-8.244 0.035-0.232 0.057-0.463 0.057-0.695 0.028-6.987-16.977-9.726-16.977-9.726s20.635 3.083 20.579 11.11c0 0.393-0.048 0.8-0.158 1.214-2.222 8.624-20.379 10.246-32.386 10.835-11.356 0.569-28.648 1.861-28.707 7.408-7e-3 0.323 0.049 0.66 0.165 1.004 2.71 8.11 66.09 12.015 106.64 33.061 23.335 12.099 34.94 32.422 40.263 53.418v-166.52c0-12.626-10.243-22.872-22.869-22.872h-211.23z"/></defs><path d="m132.63 222.8h256.98v236.49h-256.98z" clip-path="url(#b)" transform="matrix(.49811 0 0 .49811 -66.064 -105.88)" style="fill:#a01e20"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg"><g transform="translate(0 -263.13)"><g transform="matrix(.25 0 0 .25 -75.421 228.27)"><circle cx="369.42" cy="207.2" r="67.733" fill="#521737" stroke-width=".71866"/><path transform="matrix(.26458 0 0 .26458 301.69 139.47)" d="m265.99 65.18v0.0078c1.8901 2.438 3.0273 5.5806 3.0273 9.0215v195.24c19.426 3.3884 50.314 16.138 55.404 62.422l0.26367 2.377 1.9512 17.611h-2e-3l10.252 92.566h-161.81l64.785 67.07c5.4118 0.44356 10.702 0.40924 16.131 0.50781 6.0422 3e-4 12.082-0.21339 18.109-0.64062 8.5134-0.60344 16.992-1.6336 25.402-3.084 8.4107-1.4512 16.743-3.3219 24.967-5.6055 8.2243-2.2825 16.33-4.9742 24.285-8.0664 7.9553-3.0931 15.751-6.5833 23.357-10.455 7.6063-3.8716 15.013-8.1208 22.195-12.732 7.1823-4.6114 14.13-9.5793 20.816-14.885 6.6858-5.3055 13.102-10.942 19.225-16.889 6.1225-5.9464 11.945-12.195 17.443-18.723 5.4986-6.528 10.667-13.327 15.486-20.371 4.8192-7.0443 9.2831-14.324 13.375-21.814 4.0921-7.4904 7.8071-15.181 11.131-23.043 3.3233-7.8616 6.2497-15.885 8.7715-24.039 2.5223-8.154 4.6364-16.428 6.332-24.793 0.0435-0.28271 0.12174-0.53757 0.16407-0.82032zm-119.28 111.21c-3e-3 20.217 16.387 36.607 36.604 36.605zm36.604 36.605c-20.216-1e-3 -36.605 16.387-36.604 36.604 9.4e-4 -4.2e-4 50.205 51.017 50.205 51.017 12.099-18.158 28.866-28.067 41.949-30.349zm-36.604 36.604c1e-3 -20.216-16.387-36.605-36.604-36.604z" fill="#351228" stroke-width=".98462"/><g transform="matrix(.98462 0 0 .98462 4.6413 4.2297)" fill="#fff"><path d="m370.47 153.51c-1.9408 0-3.5026 1.6846-3.5026 3.777v54.445c0 2.0925 1.5618 3.777 3.5026 3.777s3.5026-1.6846 3.5026-3.777v-54.445c0-2.0924-1.5618-3.777-3.5026-3.777z" stroke-width=".62166"/><path d="m341.11 184.75a9.8353 9.8353 0 0 1-9.836 9.836 9.8353 9.8353 0 0 1 9.836 9.836 9.8353 9.8353 0 0 1 9.836-9.836 9.8353 9.8353 0 0 1-9.836-9.836z" fill="#fff" stroke-width=".63312"/><path d="m401.71 203.66a8.3455 8.3455 0 0 1-8.3461 8.3461 8.3455 8.3455 0 0 1 8.3461 8.3461 8.3455 8.3455 0 0 1 8.3461-8.3461 8.3455 8.3455 0 0 1-8.3461-8.3461z" fill="#fff" stroke-width=".53722"/><path d="m370.47 153.51v62c-1.9408 0-3.5026-1.6846-3.5026-3.777v-54.445c0-2.0924 1.5618-3.777 3.5026-3.777z" stroke-width=".62166"/></g><path d="m369.42 155.38v61.046c1.911 0 3.4488-1.6587 3.4488-3.7189v-53.608c0-2.0602-1.5378-3.7189-3.4488-3.7189z" fill="#dfdfe0" stroke-width=".61209"/><path d="m369.42 210.44c-3.3202 0-16.374 1.0601-18.108 16.828l-3.2974 29.78h42.811l-3.2974-29.78c-1.7341-15.768-14.788-16.828-18.108-16.828z" fill="#f8d057" stroke-width=".56531"/><path d="m351.31 227.27c1.7341-15.768 14.788-16.828 18.108-16.828v46.608h-21.406z" fill="#f8d057" stroke-width=".56531"/><path d="m351.24 227.9 18.178-3e-5 1e-5 4.6596h-18.694z" fill="#e97043" stroke-width=".25734"/><path d="m387.52 227.27c-1.7341-15.768-14.788-16.828-18.108-16.828v46.608h21.406z" fill="#f2b55a" stroke-width=".56531"/><path d="m387.59 227.9h-18.178v4.6596h18.694z" fill="#a15439" stroke-width=".25734"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 91 62"><g fill="none" fill-rule="nonzero"><path fill="#3AE7E1" d="M11.36 28.163a2.704 2.704 0 0 1-2.085-4.799l7.492-5.85a2.704 2.704 0 0 1 3.786.465 2.704 2.704 0 0 1-.466 3.786l-7.491 5.852c-.365.304-.79.486-1.235.546Z"/><path fill="#F5F7FA" d="M4.092 33.873a2.736 2.736 0 0 1-2.551-.992 2.704 2.704 0 0 1 .466-3.786l.708-.547a2.704 2.704 0 0 1 3.787.466 2.704 2.704 0 0 1-.466 3.786l-.709.547c-.364.283-.79.465-1.235.526Z"/><path fill="#3AE7E1" d="M3.12 49.24a2.704 2.704 0 0 1-2.085-4.799l16.44-12.836c1.175-.91 2.875-.708 3.787.466a2.704 2.704 0 0 1-.466 3.786L4.356 48.714c-.385.284-.81.466-1.236.527Z"/><path fill="#F5F7FA" d="M26.546 31.018a2.704 2.704 0 0 1-2.085-4.799l2.611-2.044a2.704 2.704 0 0 1 3.787.466 2.704 2.704 0 0 1-.466 3.786l-2.612 2.045c-.385.283-.81.465-1.235.546Z"/><path fill="#3AE7E1" d="M25.108 46.71a2.704 2.704 0 0 1-2.085-4.799l13.484-10.528c1.175-.911 2.876-.709 3.787.465a2.704 2.704 0 0 1-.466 3.787L26.344 46.163c-.365.304-.79.486-1.236.547Z"/><path fill="#F5F7FA" d="M17.739 52.561a2.706 2.706 0 0 1-2.552-1.012c-.91-1.175-.708-2.875.466-3.786l.952-.75c1.174-.91 2.875-.708 3.786.466s.709 2.875-.466 3.786l-.951.75a2.59 2.59 0 0 1-1.235.546Z"/><path fill="#3AE7E1" d="M85.708 0H23.185c-2.328 0-4.495 1.438-5.183 3.665a5.014 5.014 0 0 0 0 3.037 5.21 5.21 0 0 0 1.761 2.53S43.715 27.84 49.587 31.89c2.106 1.356 4.15.89 5.365-.04L85.343 8.2v40.879a7.232 7.232 0 0 1-7.228 7.228h-57.44a2.67 2.67 0 0 0-2.673 2.672 2.713 2.713 0 0 0 2.713 2.713h57.38c6.965 0 12.614-5.649 12.614-12.613V5C90.729 2.247 88.48 0 85.708 0ZM52.239 27.151 24.4 5.386H80.18L52.24 27.15Z"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 91 62"><g fill="none" fill-rule="nonzero"><path fill="#3AE7E1" d="M11.36 28.163a2.704 2.704 0 0 1-2.085-4.799l7.492-5.85a2.704 2.704 0 0 1 3.786.465 2.704 2.704 0 0 1-.466 3.786l-7.491 5.852c-.365.304-.79.486-1.235.546Z"/><path fill="#7B8794" d="M4.092 33.873a2.736 2.736 0 0 1-2.551-.992 2.704 2.704 0 0 1 .466-3.786l.708-.547a2.704 2.704 0 0 1 3.787.466 2.704 2.704 0 0 1-.466 3.786l-.709.547c-.364.283-.79.465-1.235.526Z"/><path fill="#3AE7E1" d="M3.12 49.24a2.704 2.704 0 0 1-2.085-4.799l16.44-12.836c1.175-.91 2.875-.708 3.787.466a2.704 2.704 0 0 1-.466 3.786L4.356 48.714c-.385.284-.81.466-1.236.527Z"/><path fill="#7B8794" d="M26.546 31.018a2.704 2.704 0 0 1-2.085-4.799l2.611-2.044a2.704 2.704 0 0 1 3.787.466 2.704 2.704 0 0 1-.466 3.786l-2.612 2.045c-.385.283-.81.465-1.235.546Z"/><path fill="#3AE7E1" d="M25.108 46.71a2.704 2.704 0 0 1-2.085-4.799l13.484-10.528c1.175-.911 2.876-.709 3.787.465a2.704 2.704 0 0 1-.466 3.787L26.344 46.163c-.365.304-.79.486-1.236.547Z"/><path fill="#7B8794" d="M17.739 52.561a2.706 2.706 0 0 1-2.552-1.012c-.91-1.175-.708-2.875.466-3.786l.952-.75c1.174-.91 2.875-.708 3.786.466s.709 2.875-.466 3.786l-.951.75a2.59 2.59 0 0 1-1.235.546Z"/><path fill="#3AE7E1" d="M85.708 0H23.185c-2.328 0-4.495 1.438-5.183 3.665a5.014 5.014 0 0 0 0 3.037 5.21 5.21 0 0 0 1.761 2.53S43.715 27.84 49.587 31.89c2.106 1.356 4.15.89 5.365-.04L85.343 8.2v40.879a7.232 7.232 0 0 1-7.228 7.228h-57.44a2.67 2.67 0 0 0-2.673 2.672 2.713 2.713 0 0 0 2.713 2.713h57.38c6.965 0 12.614-5.649 12.614-12.613V5C90.729 2.247 88.48 0 85.708 0ZM52.239 27.151 24.4 5.386H80.18L52.24 27.15Z"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 56 56"><g fill="none" fill-rule="nonzero"><path fill="#6573FF" d="M55.73 9.844V5.297A5.275 5.275 0 0 0 50.453.022H5.284A5.275 5.275 0 0 0 .007 5.297v4.461c2.097 2.006 21.3 20.222 27.956 20.222 7.043 0 25.592-18.003 27.767-20.136h-.002Z"/><path fill="#e5e8ff" d="M45.804 26.455c-7.608 6.855-13.613 10.332-17.849 10.332C18.347 36.787 2.08 22.23 0 20.34v30.128a5.276 5.276 0 0 0 5.275 5.275h45.17a5.275 5.275 0 0 0 5.276-5.275V16.43a133.421 133.421 0 0 1-9.918 10.023l.001.002Z"/></g></svg>

Before

Width:  |  Height:  |  Size: 540 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 56 56"><g fill="none" fill-rule="nonzero"><path fill="#6573FF" d="M55.73 9.844V5.297A5.275 5.275 0 0 0 50.453.022H5.284A5.275 5.275 0 0 0 .007 5.297v4.461c2.097 2.006 21.3 20.222 27.956 20.222 7.043 0 25.592-18.003 27.767-20.136h-.002Z"/><path fill="#202945" d="M45.804 26.455c-7.608 6.855-13.613 10.332-17.849 10.332C18.347 36.787 2.08 22.23 0 20.34v30.128a5.276 5.276 0 0 0 5.275 5.275h45.17a5.275 5.275 0 0 0 5.276-5.275V16.43a133.421 133.421 0 0 1-9.918 10.023l.001.002Z"/></g></svg>

Before

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="64mm" height="64mm" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><path id="cloud-upload" d="m64 34.286a17.033 17.033 0 0 1-4.4062 11.429 14.857 14.857 0 0 1-10.558 4.5714h-2.1786v-6.8571h2.1786a8.0044 8.0044 0 0 0 5.4688-2.3103 10.184 10.184 0 0 0 2.6384-6.8326 11.442 11.442 0 0 0-11.429-11.429c-0.37683 0-2.3126 0.2418-3.4903 0.3935a1.136 1.136 0 0 1-1.2211-0.76359l-0.46538-1.3576a14.103 14.103 0 0 0-11.716-9.6317 13.666 13.666 0 0 0-14.73 16.779l0.4881 2.0877a1.1429 1.1429 0 0 1-0.78226 1.3542l-2.054 0.62062a6.7941 6.7941 0 0 0-4.8861 6.5178 4.6044 4.6044 0 0 0 0.94642 2.808 5.5388 5.5388 0 0 0 4.0893 1.7634h5.25v6.8571h-5.25a12.236 12.236 0 0 1-9.6808-4.6518 11.506 11.506 0 0 1-2.212-6.7768 13.573 13.573 0 0 1 6.9442-11.884c-0.057884-0.6138-0.087074-1.2254-0.087074-1.8304a20.563 20.563 0 0 1 38.987-9.1428 18.307 18.307 0 0 1 18.156 18.286zm-31.077-2.1632a1.1429 1.1429 0 0 0-1.8465 0l-8.5917 11.775a1.1429 1.1429 0 0 0 0.92327 1.8165h5.1631v12.571a1.1429 1.1429 0 0 0 1.1428 1.1429h4.5714a1.1429 1.1429 0 0 0 1.1429-1.1429v-12.571h5.1631a1.1429 1.1429 0 0 0 0.92326-1.8165z" fill="#45a1ff" stroke-width="2.2857"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 443 301"><g fill="none" fill-rule="evenodd" transform="translate(7 8)"><path stroke="#FFF" stroke-width="13.479" d="m46.85 153.335 147.023 71.613 200.843-128.54L204.251 0 0 126.961v62.287l194.722 95.724 205.043-128.999"/><ellipse cx="406.752" cy="145.787" fill="#1E88E5" fill-opacity=".997" fill-rule="nonzero" rx="28.441" ry="30.31"/></g></svg>

Before

Width:  |  Height:  |  Size: 398 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 443 301"><g fill="none" fill-rule="evenodd" transform="translate(7 8)"><path stroke="#000007" stroke-width="13.479" d="m46.85 153.335 147.023 71.613 200.843-128.54L204.251 0 0 126.961v62.287l194.722 95.724 205.043-128.999"/><ellipse cx="406.752" cy="145.787" fill="#1E88E5" fill-opacity=".997" fill-rule="nonzero" rx="28.441" ry="30.31"/></g></svg>

Before

Width:  |  Height:  |  Size: 401 B

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="666.67" height="666.67" version="1" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg"><path d="M73.6 33.6L71 36.3v427.4l2.6 2.7 2.7 2.6h87.4l2.7-2.6 2.6-2.7V339.9c0-102.6.2-123.9 1.3-123.9.8 0 41.1 56.1 89.7 124.7 48.5 68.7 89.2 125.6 90.4 126.5 1.9 1.6 5.5 1.8 37.7 1.8h35.6l2.7-2.6 2.6-2.7V36.3l-2.6-2.7-2.7-2.6h-87.4l-2.7 2.6-2.6 2.7v123.8c0 102.6-.2 123.9-1.3 123.9-.8 0-41.1-56.1-89.7-124.8-48.5-68.6-89.2-125.5-90.4-126.4-1.9-1.6-5.5-1.8-37.7-1.8H76.3l-2.7 2.6zm158.9 147.1c51.2 72.3 94.4 133.1 96.1 134.9 2.9 3.1 3.6 3.4 9.1 3.4 5.2 0 6.4-.4 8.7-2.6l2.6-2.7V49h62v402l-25.2-.1h-25.3l-93-131.6c-51.1-72.3-94.4-133.1-96.1-134.9-2.9-3.1-3.6-3.4-9.1-3.4-5.2 0-6.4.4-8.7 2.6l-2.6 2.7V451H89V49l25.3.1h25.2l93 131.6z" fill="#ff6c60" stroke="#ff6c60" stroke-width=".99975"/></svg>

Before

Width:  |  Height:  |  Size: 839 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 23 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867"><g><rect width="33.79" height="33.56" x=".038" y=".153" fill="#fff" rx="7.884" ry="7.884" style="paint-order:normal"/><path fill="#8d9fb4" d="m7.9686 0.15319c-4.4146 0-7.9686 3.5539-7.9686 7.9686 0 9.1039 0.07644 25.592 0.07644 25.592h25.822c4.4146 0 7.9686-3.5539 7.9686-7.9686v-25.592zm-0.25096 5.176c1.2539 0 2.2868 1.0326 2.2868 2.2865 0 0.97544-0.62626 1.8145-1.4942 2.1402v14.471l7.76-7.7342v-6.7055c-0.9126-0.30083-1.5799-1.1643-1.5799-2.1719 3e-6 -1.2539 1.0326-2.2865 2.2865-2.2865 1.2539 0 2.2868 1.0326 2.2868 2.2865 0 0.9688-0.6177 1.8032-1.4764 2.1336v5.2317l6.4098-6.3884c-0.14254-0.29726-0.22489-0.62784-0.22489-0.97689 0-1.2539 1.0326-2.2865 2.2865-2.2865 1.2539 0 2.2868 1.0326 2.2868 2.2865 0 1.2539-1.0329 2.2865-2.2868 2.2865-0.35546 0-0.69177-0.0854-0.99318-0.23289l-6.3707 6.3496h5.2981c0.33047-0.85866 1.1651-1.4761 2.1339-1.4761 1.2539 0 2.2865 1.0327 2.2865 2.2865s-1.0326 2.2865-2.2865 2.2865c-1.0076 0-1.8712-0.66726-2.1721-1.5798h-6.7819l-7.7855 7.7597h14.574c0.30629-0.90334 1.1647-1.5621 2.1656-1.5621 1.2539 0 2.2865 1.0326 2.2865 2.2865 0 1.2539-1.0326 2.2868-2.2865 2.2868-0.97544 0-1.8147-0.62626-2.1404-1.4942h-17.193v-17.032c-0.90333-0.30621-1.5621-1.1644-1.5621-2.1653 0-1.2539 1.0326-2.2865 2.2865-2.2865zm0 1.517c-0.43403 0-0.76948 0.33551-0.76948 0.76948 0 0.43398 0.33545 0.76948 0.76948 0.76948s0.76978-0.3355 0.76978-0.76948c0-0.43398-0.33574-0.76948-0.76978-0.76948zm9.2593 0c-0.43404 0-0.76948 0.33551-0.76948 0.76948 2e-6 0.43398 0.33545 0.76948 0.76948 0.76948 0.43404 0 0.76978-0.3355 0.76978-0.76948 0-0.43398-0.33574-0.76948-0.76978-0.76948zm9.2818 0c-0.43403 0-0.76948 0.33551-0.76948 0.76948 0 0.43398 0.33545 0.76948 0.76948 0.76948 0.43404 0 0.76978-0.3355 0.76978-0.76948 0-0.43398-0.33574-0.76948-0.76978-0.76948zm0.06815 9.2136c-0.43404 0-0.76978 0.33551-0.76978 0.76949 0 0.43397 0.33574 0.76948 0.76978 0.76948s0.76948-0.33551 0.76948-0.76948c0-0.43398-0.33545-0.76949-0.76948-0.76949zm0 9.1908c-0.43404 0-0.76978 0.3355-0.76978 0.76947 0 0.43398 0.33574 0.76979 0.76978 0.76979s0.76948-0.33581 0.76948-0.76979c0-0.43397-0.33545-0.76947-0.76948-0.76947z" style="paint-order:normal"/><path fill="#436795" d="m33.828 0.15319-5.9443 5.904c0.38457 0.40988 0.62311 0.95808 0.62311 1.5585 0 1.2539-1.0329 2.2865-2.2868 2.2865-0.35546 0-0.69177-0.0854-0.99318-0.23289l-6.3707 6.3496h5.2981c0.33047-0.85866 1.1651-1.4761 2.1339-1.4761 1.2539 0 2.2865 1.0327 2.2865 2.2865s-1.0326 2.2865-2.2865 2.2865c-1.0076 0-1.8712-0.66726-2.1721-1.5798h-6.7819l-7.7855 7.7597h14.574c0.30629-0.90334 1.1647-1.5621 2.1656-1.5621 1.2539 0 2.2865 1.0326 2.2865 2.2865 0 1.2539-1.0326 2.2868-2.2865 2.2868-0.97544 0-1.8147-0.62626-2.1404-1.4942h-17.162l-6.9481 6.9007h25.822c4.4146 0 7.9686-3.5539 7.9686-7.9686zm-7.0163 6.9686-1.0895 1.0821c0.13324 0.11205 0.30458 0.18133 0.49778 0.18133 0.43404 0 0.76978-0.3355 0.76978-0.76948 0-0.19127-0.06797-0.36121-0.17807-0.49392zm-0.52356 8.9381c-0.43404 0-0.76978 0.33551-0.76978 0.76949 0 0.43397 0.33574 0.76948 0.76978 0.76948s0.76948-0.33551 0.76948-0.76948c0-0.43398-0.33545-0.76949-0.76948-0.76949zm0 9.1908c-0.43404 0-0.76978 0.3355-0.76978 0.76947 0 0.43398 0.33574 0.76979 0.76978 0.76979s0.76948-0.33581 0.76948-0.76979c0-0.43397-0.33545-0.76947-0.76948-0.76947z"/></g></svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="g" x1="69.009" x2="180.21" y1="487.9" y2="487.9" gradientTransform="translate(-60,-206)" gradientUnits="userSpaceOnUse"><stop stop-color="#c0bfbc" offset="0"/><stop stop-color="#dcdbd8" offset=".065"/><stop stop-color="#c0bfbc" offset=".11"/><stop stop-color="#c0bfbc" offset=".846"/><stop stop-color="#deddda" offset=".923"/><stop stop-color="#c0bfbc" offset="1"/></linearGradient><linearGradient id="h" x1="144" x2="144" y1="-84" y2="366.07" gradientTransform="matrix(.25 0 0 .25 4 43)" gradientUnits="userSpaceOnUse"><stop stop-color="#edece9" offset="0"/><stop stop-color="#fff" offset="1"/></linearGradient><linearGradient id="a" x1="344" x2="340" y1="76" y2="72" gradientTransform="matrix(.25 0 0 .25 180 83)" gradientUnits="userSpaceOnUse"><stop stop-color="#d5d3cf" offset="0"/><stop stop-color="#fff" offset="1"/></linearGradient><clipPath id="b"><path d="m252 116 28-28v-8h-36v36z" fill="#e74747"/></clipPath></defs><g transform="matrix(.30174 0 0 .30174 -2.4139 -3.8864)"><path d="m16 40c-4.432 0-8 3.568-8 8v60c0 4.432 3.568 8 8 8h96c4.432 0 8-3.568 8-8v-60c0-4.432-3.568-8-8-8z" fill="#ffa348"/><path transform="translate(0,-172)" d="m16 210c-4.432 0-8 3.568-8 8v60c0 4.432 3.568 8 8 8h96c4.432 0 8-3.568 8-8v-60c0-4.432-3.568-8-8-8z" fill="url(#g)" style="fill:url(#g)"/><path d="m16 22c-4.432 0-8 3.568-8 8v70c0 4.432 3.568 8 8 8h96c4.432 0 8-3.568 8-8v-70c0-4.432-3.568-8-8-8h-48z" fill="url(#h)" style="fill:url(#h)"/><g transform="matrix(.59642 0 0 .59642 -7.5708 -502)"><g transform="matrix(4.9684,0,0,4.9684,126.94,884.48)" fill="#ffa348"><path d="m6 12a2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2 2 2 0 0 1 2 2z" overflow="visible"/><path d="m2 6h1.014v1.014h-1.014zm7.014 7.014h0.986v0.986h-0.986zm4 0h0.986v0.986h-0.986zm-11.014-11.014h1.014v1.014h-1.014z"/><path d="m3.014 8.014c2.774 0 5 2.227 5 5h2c0-3.854-3.145-7-7-7z" font-family="sans-serif" font-weight="400" overflow="visible" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none" white-space="normal"/><path d="m 3.014,4.028 a 8.972,8.972 0 0 1 8.987,8.986 h 2 C 14,6.96 9.07,2.028 3.014,2.028 Z" font-family="sans-serif" font-weight="400" overflow="visible" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none" white-space="normal"/><path d="m4 7a1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1 1 1 0 0 1 1 1zm0-4a1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1 1 1 0 0 1 1 1zm6 10a1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1 1 1 0 0 1 1 1zm4 0a1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1 1 1 0 0 1 1 1z" overflow="visible"/></g><g transform="translate(9.375)" stroke-width="1.875"><rect x="33.75" y="894.42" width="53.75" height="7.5" ry="0" fill="#ffa348"/><g fill="#deddda"><rect x="33.75" y="909.42" width="60" height="7.5" ry="0"/><rect x="33.75" y="924.42" width="51.469" height="7.5" ry="0"/><rect x="33.75" y="939.42" width="60" height="7.5" ry="0"/><rect x="33.75" y="954.42" width="60" height="7.5" ry="0"/><rect x="33.75" y="969.42" width="60" height="7.5" ry="0"/><rect x="33.75" y="984.42" width="39.999" height="7.5" ry="0"/><rect x="33.75" y="999.42" width="60" height="7.5" ry="0"/></g></g><g fill="#deddda" stroke-width="1.875"><rect x="136.88" y="984.42" width="60" height="7.5" ry="0"/><rect x="136.88" y="999.42" width="60" height="7.5" ry="0"/><rect x="136.88" y="969.42" width="39.999" height="7.5" ry="0"/></g></g><rect transform="matrix(0 .63036 .63036 0 47.118 -68.269)" x="252" y="88" width="36" height="36" rx="11.2" ry="11.2" clip-path="url(#b)" enable-background="new" fill="url(#a)" style="fill:url(#a);paint-order:normal"/></g></svg>

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1.10345,0,0,1.10345,0,0)">
<path d="M2,58C2,88.929 27.072,114 58,114C88.928,114 114,88.929 114,58C114,27.072 88.928,2 58,2C27.072,2 2,27.072 2,58Z" style="fill:white;"/>
<path d="M58,14C82.3,14 102,33.7 102,58C102,82.301 82.3,102 58,102C33.7,102 14,82.301 14,58C14,33.7 33.7,14 58,14" style="fill:rgb(26,140,255);"/>
<path d="M0,58C0,90.034 25.967,116 58,116C90.033,116 116,90.034 116,58C116,25.967 90.033,0 58,0C25.967,0 0,25.967 0,58ZM2,58C2,27.075 27.069,2 58,2C88.931,2 114,27.075 114,58C114,88.925 88.932,114 58,114C27.068,114 2,88.925 2,58Z" style="fill-opacity:0.5;fill-rule:nonzero;"/>
<path d="M113.921,55C113.973,55.993 114,56.994 114,58C114,88.928 88.928,114 58,114C27.072,114 2,88.928 2,58C2,56.994 2.027,55.993 2.079,55C3.638,84.533 28.079,108 58,108C87.69,108 111.985,84.894 113.88,55.682L113.921,55ZM58,8C85.062,8 107,29.938 107,57C107,72.13 100.143,85.657 89.368,94.646C98.37,86.249 104,74.282 104,61C104,35.595 83.405,15 58,15C32.595,15 12,35.595 12,61C12,74.282 17.629,86.249 26.631,94.646C15.857,85.657 9,72.129 9,57C9,29.938 30.938,8 58,8Z" style="fill-opacity:0.05;"/>
<path d="M58,14C82.304,14 102,33.703 102,58C102,82.298 82.304,102 58,102C33.94,102 14.394,82.69 14.006,58.728L14,58C14,33.703 33.696,14 58,14ZM58,16C34.804,16 16,34.804 16,58C16,81.197 34.804,100 58,100C81.196,100 100,81.197 100,58C100,34.804 81.196,16 58,16Z" style="fill-opacity:0.26;fill-rule:nonzero;"/>
<path d="M58.223,23C58.181,23 58.138,23 58.096,23C38.843,23 23,38.843 23,58.096C23,58.138 23,58.181 23,58.223C23,77.403 38.743,93 58.223,93C77.33,93 93,77.33 93,58.223C93,38.743 77.402,23 58.223,23ZM58.221,25C76.225,25 91,39.775 91,58.221C91,76.226 76.225,91 58.221,91C39.775,91 25,76.226 25,58.221C25,58.179 25,58.138 25,58.096C25,39.94 39.94,25 58.096,25C58.138,25 58.179,25 58.221,25Z" style="fill-opacity:0.25;fill-rule:nonzero;"/>
<path d="M58.221,25C76.225,25 91,39.775 91,58.221C91,76.226 76.225,91 58.221,91C39.775,91 25,76.226 25,58.221C25,58.179 25,58.138 25,58.096C25,39.94 39.94,25 58.096,25C58.138,25 58.179,25 58.221,25Z" style="fill:rgb(247,247,247);"/>
<g>
<path d="M73,58C73,66.284 66.284,73 58,73C49.716,73 43,66.284 43,58C43,49.716 49.716,43 58,43C66.284,43 73,49.716 73,58Z" style="fill-opacity:0.05;"/>
<path d="M58,41C48.611,41 41,48.611 41,58C41,67.389 48.611,75 58,75C67.389,75 75,67.389 75,58C75,48.611 67.389,41 58,41ZM58,43C66.284,43 73,49.716 73,58C73,66.284 66.284,73 58,73C49.716,73 43,66.284 43,58C43,49.716 49.716,43 58,43Z" style="fill:white;fill-rule:nonzero;"/>
<path d="M58,43C66.284,43 73,49.716 73,58C73,66.284 66.284,73 58,73C49.716,73 43,66.284 43,58C43,49.716 49.716,43 58,43ZM58,45C50.82,45 45,50.82 45,58C45,65.18 50.82,71 58,71C65.18,71 71,65.18 71,58C71,50.82 65.18,45 58,45Z" style="fill-opacity:0.15;fill-rule:nonzero;"/>
</g>
<g>
<path d="M63.577,32L52.423,32C49.951,32 48,34.165 48,36.772L48,47.564C48,48.546 48.354,49.494 48.996,50.206L50.636,52.025C50.673,52.067 50.673,52.186 50.636,52.229L48.996,54.047C48.35,54.775 47.995,55.717 48,56.69L48,79.229C48,81.835 49.951,84 52.423,84L63.577,84C66.049,84 68,81.835 68,79.228L68,68.436C68.005,67.463 67.65,66.522 67.004,65.794L65.364,63.975C65.327,63.933 65.327,63.814 65.364,63.771L67.004,61.953C67.65,61.225 68.005,60.283 68,59.31L68,36.772C68,34.165 66.049,32 63.577,32ZM63.45,34.038C64.858,34.038 66,35.332 66,36.928L66,59.302C66,59.812 65.82,60.302 65.502,60.664L63.908,62.47C63.244,63.222 63.244,64.442 63.908,65.195L65.502,67C65.821,67.361 66,67.851 66,68.362L66,79.072C66,80.667 64.858,81.962 63.45,81.962L52.55,81.962C51.142,81.962 50,80.667 50,79.072L50,56.697C50,56.187 50.18,55.697 50.498,55.335L52.092,53.529C52.756,52.777 52.756,51.557 52.092,50.804L50.498,49C50.173,48.621 49.996,48.137 50,47.637L50,36.927C50,35.332 51.142,34.037 52.55,34.037L63.45,34.037L63.45,34.038Z" style="fill:white;fill-rule:nonzero;"/>
<path d="M50,47.621L50,36.895C50,35.296 51.142,34 52.55,34L63.45,34C64.858,34 66,35.296 66,36.894L66,59.304C66.004,59.804 65.827,60.288 65.502,60.668L63.908,62.478C63.244,63.231 63.244,64.452 63.908,65.206L65.502,67.015C65.821,67.377 66,67.868 66,68.379L66,79.106C66,80.704 64.858,82 63.45,82L52.55,82C51.142,82 50,80.704 50,79.106L50,56.696C50,56.185 50.18,55.694 50.498,55.332L52.092,53.522C52.756,52.769 52.756,51.548 52.092,50.794L50.498,48.985C50.173,48.605 49.996,48.121 50,47.621Z" style="fill:rgb(10,45,77);"/>
<path d="M63.45,34C64.858,34 66,35.296 66,36.894L66,59.304C66.004,59.804 65.827,60.288 65.502,60.668L63.908,62.478C63.244,63.231 63.244,64.452 63.908,65.206L65.502,67.015C65.821,67.377 66,67.868 66,68.379L66,79.106C66,80.704 64.858,82 63.45,82L52.55,82C51.142,82 50,80.704 50,79.106L50,56.696C50,56.185 50.18,55.694 50.498,55.332L52.092,53.522C52.756,52.769 52.756,51.548 52.092,50.794L50.498,48.985C50.173,48.605 49.996,48.121 50,47.621L50,36.894C50,35.296 51.142,34 52.55,34L63.45,34ZM63.162,36.054L52.838,36.041C52.434,36.041 52.054,36.421 52.005,36.957L52,37.075L52,47.705C52,47.737 52.007,47.764 52.015,47.783L52.029,47.806L53.7,49.6C55.006,51.003 55.05,53.201 53.835,54.659L53.7,54.812L52.03,56.606C52.02,56.616 52.01,56.637 52.005,56.664L52.001,56.707L52.001,78.925C52.001,79.484 52.354,79.9 52.753,79.953L52.839,79.959L63.163,79.972C63.567,79.972 63.947,79.593 63.996,79.056L64.001,78.939L64.001,68.308C64.001,68.281 63.996,68.255 63.986,68.23L63.972,68.207L62.302,66.413C60.996,65.01 60.952,62.813 62.167,61.355L62.302,61.201L63.972,59.407C63.982,59.397 63.992,59.377 63.997,59.35L64.001,59.306L64.001,37.088C64.001,36.53 63.648,36.113 63.249,36.06L63.163,36.054L63.162,36.054Z" style="fill-opacity:0.4;fill-rule:nonzero;"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="svg" version="1.1" viewBox="0 0 400 400" xmlns="http://www.w3.org/2000/svg"><g id="svgg" fill-rule="evenodd"><path d="m192.97 62.129c-26.656 3.317-47.983 19.882-57.565 44.71-3.853 9.982-4.545 15.747-4.545 37.851v17.306l-6.738 0.232c-14.347 0.494-22.587 5.938-26.729 17.659l-1.103 3.121v29.492c0 32.127 0.031 32.689 2.391 43.3 7.874 35.404 34.139 64.851 68.117 76.367 64.962 22.019 132.51-23.702 137.13-92.819 0.687-10.284 0.297-55.379-0.502-58.008-3.668-12.066-12.845-18.84-25.525-18.84-2.61 0-5.562-0.112-6.558-0.248l-1.813-0.249v-16.507c0-21.046-0.486-25.958-3.516-35.535-9.734-30.76-41.753-51.726-73.046-47.832m15.537 24.046c16.237 2.877 30.363 15.383 35.396 31.336 2.023 6.411 2.192 8.514 2.192 27.267v17.331h-45.899-45.898v-17.331c0-13.608 0.125-18.05 0.582-20.673 4.48-25.69 28.165-42.442 53.627-37.93m-2.898 121.87c16.242 4.187 21.698 24.248 9.976 36.683-4.224 4.481-4.355 4.975-3.637 13.767 0.717 8.774 0.689 10.256-0.241 12.743-3.982 10.643-19.039 10.643-23.021 0-0.93-2.485-0.959-3.97-0.244-12.722 0.716-8.755 0.61-9.191-3.224-13.329-15.541-16.775-1.291-42.732 20.391-37.142" fill="#f4f5f5"/><path d="m66.797 0.623c-34.231 4.974-61.413 32.288-66.186 66.507-0.93 6.668-0.93 259.07 0 265.74 4.796 34.385 32.134 61.723 66.519 66.519 6.668 0.93 259.07 0.93 265.74 0 34.385-4.796 61.723-32.134 66.519-66.519 0.93-6.668 0.93-259.07 0-265.74-4.795-34.376-32.143-61.724-66.519-66.519-6.215-0.867-260.1-0.855-266.07 0.012m147.07 62.252c28.834 6.201 50.351 28.799 55.107 57.871 0.535 3.274 0.698 7.656 0.843 22.669l0.18 18.61 7.091 0.164c13.738 0.317 22.526 6.264 26.147 17.694 1.083 3.416 1.371 60.296 0.341 67.187-9.283 62.11-67.941 102.56-127.69 88.048-42.787-10.389-75.15-47.632-79.396-91.368-0.9-9.268-0.357-61.056 0.672-64.062 3.924-11.473 12.498-17.212 26.144-17.502l7.092-0.15 0.179-18.616c0.281-29.073 2.88-38.928 14.315-54.268 15.529-20.833 43.951-31.661 68.979-26.277m-20.508 23.266c-18.263 2.85-33.014 16.445-37.53 34.59-1.16 4.66-1.519 10.98-1.526 26.828l-6e-3 14.55h45.898 45.899l-6e-3 -14.55c-7e-3 -15.848-0.367-22.168-1.527-26.828-5.762-23.154-28.041-38.204-51.202-34.59m3.259 121.69c-17.389 3.099-23.811 23.765-11.46 36.877 4.079 4.331 4.177 4.691 3.58 13.041-0.882 12.331-0.586 14.057 3.034 17.681 4.868 4.873 11.978 4.873 16.847 0 3.62-3.624 3.916-5.35 3.034-17.681-0.598-8.35-0.499-8.71 3.58-13.041 14.6-15.5 1.959-40.543-18.615-36.877" fill="#1444b4"/><path d="m273.03 307.72-1.346 1.465 1.465-1.346c0.805-0.741 1.464-1.4 1.464-1.465 0-0.299-0.33-0.018-1.583 1.346" fill="#6884c7"/><path d="m150.95 82.129-1.147 1.269 1.269-1.147c1.184-1.069 1.449-1.392 1.148-1.392-0.068 0-0.639 0.572-1.27 1.27m-20.305 64.16c0 8.809 0.051 12.468 0.114 8.132 0.063-4.337 0.063-11.544 0-16.016-0.062-4.472-0.114-0.925-0.114 7.884m139.06 3.32c0 6.983 0.053 9.839 0.118 6.348 0.064-3.491 0.064-9.204 0-12.695-0.065-3.491-0.118-0.635-0.118 6.347" fill="#4c6cc4"/><path d="m274.12 162.4c1.343 0.076 3.54 0.076 4.883 0 1.343-0.077 0.244-0.139-2.441-0.139-2.686 0-3.785 0.062-2.442 0.139m29.892 75.882c0 0.967 0.076 1.363 0.169 0.879 0.093-0.483 0.093-1.274 0-1.758-0.093-0.483-0.169-0.088-0.169 0.879m-109.97 99.495c0.483 0.093 1.274 0.093 1.758 0 0.483-0.093 0.088-0.17-0.879-0.17s-1.362 0.077-0.879 0.17m10.547 0c0.483 0.093 1.274 0.093 1.758 0 0.483-0.093 0.088-0.17-0.879-0.17s-1.363 0.077-0.879 0.17" fill="#8c9ccc"/><path d="m269.67 133.79c-1e-3 1.934 0.065 2.774 0.147 1.867 0.082-0.906 0.083-2.488 2e-3 -3.515s-0.148-0.286-0.149 1.648" fill="#3c62ba"/></g></svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -1,125 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" version="1.1" viewBox="0 0 128 128" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g transform="matrix(1.0638 0 0 1.0684 -29.885 -16.775)">
<clipPath id="_clip1">
<path d="m38.8 34.1v-4.8c0-0.4 0.1-1.1 0.1-1.1l0.2-0.5v-0.2l0.2-0.4 0.1-0.1 0.1-0.2 0.1-0.1v-0.1l0.2-0.2v-0.1l0.7-0.7 0.2-0.1h0.1l0.3-0.2h0.3l0.6-0.3c0.4-0.1 0.7-0.1 1.1-0.1h94.6v9.2h9v-18.4h-103.6c-7.3 0-13.3 6.1-13.3 13.6v4.8h9z"/>
</clipPath>
<g clip-path="url(#_clip1)">
<rect x="30.2" y="14.7" width="117.1" height="12" fill="#898b8d"/>
</g>
<clipPath id="_clip2">
<path d="m38.8 34.1v-4.8c0-0.4 0.1-1.1 0.1-1.1l0.2-0.5v-0.2l0.2-0.4 0.1-0.1 0.1-0.2 0.1-0.1v-0.1l0.2-0.2v-0.1l0.7-0.7 0.2-0.1h0.1l0.3-0.2h0.3l0.6-0.3c0.4-0.1 0.7-0.1 1.1-0.1h94.6v9.2h9v-18.4h-103.6c-7.3 0-13.3 6.1-13.3 13.6v4.8h9z"/>
</clipPath>
<g clip-path="url(#_clip2)">
<clipPath id="_clip3">
<path d="m133.8 27 13.2-7.1 3.7 7.2-13.2 7.1-3.7-7.2z" clip-rule="nonzero"/>
</clipPath>
<g clip-path="url(#_clip3)">
<g transform="matrix(.93998 -0 -0 .93594 28.091 15.7)">
<use transform="scale(.98026 .94825)" x="114.723" y="4.732" width="13.724px" height="15.172px" xlink:href="#_Image4"/>
</g>
</g>
</g>
<clipPath id="_clip5">
<path d="m38.8 34.1v-4.8c0-0.4 0.1-1.1 0.1-1.1l0.2-0.5v-0.2l0.2-0.4 0.1-0.1 0.1-0.2 0.1-0.1v-0.1l0.2-0.2v-0.1l0.7-0.7 0.2-0.1h0.1l0.3-0.2h0.3l0.6-0.3c0.4-0.1 0.7-0.1 1.1-0.1h94.6v9.2h9v-18.4h-103.6c-7.3 0-13.3 6.1-13.3 13.6v4.8h9z"/>
</clipPath>
<g clip-path="url(#_clip5)">
<clipPath id="_clip6">
<path d="m31.9 21.1 10.7 5.8-3.7 7.2-10.7-5.7 3.7-7.3z" clip-rule="nonzero"/>
</clipPath>
<g clip-path="url(#_clip6)">
<g transform="matrix(.93998 -0 -0 .93594 28.091 15.7)">
<use transform="scale(.97267 .99213)" x="1.869" y="5.815" width="13.617px" height="13.89px" xlink:href="#_Image7"/>
</g>
</g>
</g>
<rect x="47.8" y="34.1" width="80.9" height="9.2" fill="#403f41"/>
<rect x="47.8" y="108" width="80.9" height="9.2" fill="#403f41"/>
<clipPath id="_clip8">
<path d="m137.7 117.1v4.9c0 0.4-0.1 1.1-0.1 1.1l-0.2 0.5v0.2l-0.2 0.4-0.1 0.1-0.1 0.2-0.1 0.1v0.1l-0.2 0.2v0.1l-0.5 0.5h-0.1l-0.1 0.1-0.2 0.1-0.1 0.1-0.3 0.2h-0.3l-0.5 0.2c-0.4 0.1-0.7 0.1-1.1 0.1h-94.7v-9.2h-9v18.4h103.6c7.3 0 13.3-6.1 13.3-13.6v-4.8h-9z"/>
</clipPath>
<g clip-path="url(#_clip8)">
<rect x="29.2" y="124.6" width="117.1" height="12" fill="#898b8d"/>
</g>
<clipPath id="_clip9">
<path d="m137.7 117.1v4.9c0 0.4-0.1 1.1-0.1 1.1l-0.2 0.5v0.2l-0.2 0.4-0.1 0.1-0.1 0.2-0.1 0.1v0.1l-0.2 0.2v0.1l-0.5 0.5h-0.1l-0.1 0.1-0.2 0.1-0.1 0.1-0.3 0.2h-0.3l-0.5 0.2c-0.4 0.1-0.7 0.1-1.1 0.1h-94.7v-9.2h-9v18.4h103.6c7.3 0 13.3-6.1 13.3-13.6v-4.8h-9z"/>
</clipPath>
<g clip-path="url(#_clip9)">
<clipPath id="_clip10">
<path d="m42.7 124.4-13.2 7.1-3.7-7.3 13.2-7.1 3.7 7.3z" clip-rule="nonzero"/>
</clipPath>
<g clip-path="url(#_clip10)">
<g transform="matrix(.93998 -0 -0 .93594 28.091 15.7)">
<use transform="scale(.98026 .9616)" x="1.854" y="112.667" width="13.724px" height="15.386px" xlink:href="#_Image11"/>
</g>
</g>
</g>
<clipPath id="_clip12">
<path d="m137.7 117.1v4.9c0 0.4-0.1 1.1-0.1 1.1l-0.2 0.5v0.2l-0.2 0.4-0.1 0.1-0.1 0.2-0.1 0.1v0.1l-0.2 0.2v0.1l-0.5 0.5h-0.1l-0.1 0.1-0.2 0.1-0.1 0.1-0.3 0.2h-0.3l-0.5 0.2c-0.4 0.1-0.7 0.1-1.1 0.1h-94.7v-9.2h-9v18.4h103.6c7.3 0 13.3-6.1 13.3-13.6v-4.8h-9z"/>
</clipPath>
<g clip-path="url(#_clip12)">
<clipPath id="_clip13">
<path d="m144.7 130.2-10.8-5.8 3.7-7.2 10.8 5.7-3.7 7.3z" clip-rule="nonzero"/>
</clipPath>
<g clip-path="url(#_clip13)">
<g transform="matrix(.93998 -0 -0 .93594 28.091 15.7)">
<use transform="scale(.97267 .99213)" x="115.728" y="109.308" width="13.617px" height="13.89px" xlink:href="#_Image14"/>
</g>
</g>
</g>
<rect x="38.8" y="52.6" width="34.6" height="9.2" fill="#58595b"/>
<clipPath id="_clip15">
<path d="m69.7 69.2-31.3-16.8 3.7-7.4 31.4 16.8-3.8 7.4z" clip-rule="nonzero"/>
</clipPath>
<g clip-path="url(#_clip15)">
<g transform="matrix(.93998 -0 -0 .93594 28.091 15.7)">
<use transform="scale(.98266 .99448)" x="11.16" y="31.479" width="37.341px" height="25.856px" xlink:href="#_Image16"/>
</g>
</g>
<rect x="103.1" y="52.6" width="34.6" height="9.2" fill="#58595b"/>
<clipPath id="_clip17">
<path d="m106.8 69.2 31.4-16.8-3.8-7.4-31.3 16.8 3.7 7.4z" clip-rule="nonzero"/>
</clipPath>
<g clip-path="url(#_clip17)">
<g transform="matrix(.93998 -0 -0 .93594 28.091 15.7)">
<use transform="scale(.98266 .99448)" x="81.206" y="31.479" width="37.341px" height="25.856px" xlink:href="#_Image16"/>
</g>
</g>
<rect x="103.1" y="89.5" width="34.6" height="9.2" fill="#58595b"/>
<clipPath id="_clip18">
<path d="m106.8 82.1 31.4 16.8-3.8 7.4-31.3-16.8 3.7-7.4z" clip-rule="nonzero"/>
</clipPath>
<g clip-path="url(#_clip18)">
<g transform="matrix(.93998 -0 -0 .93594 28.091 15.7)">
<use transform="scale(.98266 .99448)" x="81.206" y="71.339" width="37.341px" height="25.856px" xlink:href="#_Image16"/>
</g>
</g>
<rect x="38.8" y="89.5" width="34.6" height="9.2" fill="#58595b"/>
<clipPath id="_clip19">
<path d="m69.7 82.1-31.3 16.8 3.7 7.4 31.4-16.8-3.8-7.4z" clip-rule="nonzero"/>
</clipPath>
<g clip-path="url(#_clip19)">
<g transform="matrix(.93998 -0 -0 .93594 28.091 15.7)">
<use transform="scale(.98266 .99448)" x="11.16" y="71.339" width="37.341px" height="25.856px" xlink:href="#_Image16"/>
</g>
</g><g fill-rule="nonzero">
<path d="m73.4 52.6v9.2l-43.6-23.3v-9.2l43.6 23.3z" fill="url(#_Linear20)"/>
<path d="m103.1 52.6v9.2l43.6-23.3v-9.2l-43.6 23.3z" fill="url(#_Linear21)"/>
<path d="m103.1 98.8v-9.3l43.6 23.3v9.3l-43.6-23.3z" fill="url(#_Linear22)"/>
<path d="m73.4 98.8v-9.3l-43.6 23.3v9.3l43.6-23.3z" fill="url(#_Linear23)"/>
<path d="m103.1 80.3 25.6 13.7v-9.3l-8.3-4.4h26.3v-9.3h-26.3l8.3-4.4v-9.2l-25.6 13.6v9.3z" fill="#e24525"/>
<path d="m47.8 94 25.6-13.7v-9.3l-25.6-13.6v9.2l8.4 4.4h-26.4v9.3h26.3l-8.3 4.4v9.3z" fill="#e24525"/>
</g></g>
<defs>
<image id="_Image4" width="14px" height="16px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAI0lEQVQokWMsLi7+z0AGYCJH00jRyIguQGwoDyE/jmqkhUYAma0EzxtWDhkAAAAASUVORK5CYII="/>
<image id="_Image7" width="14px" height="14px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAPklEQVQokWNkgILi4uL/DCQARnI0MTAwMDCRqgFuIzm2UWQjC6kaent7GUm2EaaJZI3IgGiNyLbRx8YhrBEAaikMHGN+VycAAAAASUVORK5CYII="/>
<image id="_Image11" width="14px" height="16px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAKUlEQVQokWM0Njb+z0AEOHv2LCMyn4kYTdjAqMbhoZGR2JRDNRtHgkYALcwFtyg+QT8AAAAASUVORK5CYII="/>
<image id="_Image14" width="14px" height="14px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAP0lEQVQokWNkQAPGxsb/0cWwASZiFI1UjYzIHGJDlDo2kmIbAwMDAyOpGmCAvqF69uxZRvrZePbsWUYGBgYGAL1XC0kWB9UkAAAAAElFTkSuQmCC"/>
<image id="_Image16" width="38px" height="26px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAaCAYAAADbhS54AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAPElEQVRIie3OsRGAIAAAMWRKPPefQyagSKXFZ4Jc637e8UPz68BJMVVMFVPFVDFVTBVTxVQxVUwVU8XUBl5UAj8RVzT1AAAAAElFTkSuQmCC"/>
<linearGradient id="_Linear20" x2="1" gradientTransform="matrix(43.56,0,0,43.56,29.84,45.5)" gradientUnits="userSpaceOnUse"><stop stop-color="#a6a8ab" offset="0"/><stop stop-color="#a6a8ab" offset=".24"/><stop stop-color="#404040" offset="1"/></linearGradient>
<linearGradient id="_Linear21" x2="1" gradientTransform="matrix(-43.6 5.3395e-15 -5.3395e-15 -43.6 146.7 45.5)" gradientUnits="userSpaceOnUse"><stop stop-color="#a6a8ab" offset="0"/><stop stop-color="#a6a8ab" offset=".24"/><stop stop-color="#404040" offset="1"/></linearGradient>
<linearGradient id="_Linear22" x2="1" gradientTransform="matrix(-43.56 5.3346e-15 -5.3346e-15 -43.56 146.68 606)" gradientUnits="userSpaceOnUse"><stop stop-color="#a6a8ab" offset="0"/><stop stop-color="#a6a8ab" offset=".24"/><stop stop-color="#404040" offset="1"/></linearGradient>
<linearGradient id="_Linear23" x2="1" gradientTransform="matrix(43.53,0,0,43.53,29.9,606)" gradientUnits="userSpaceOnUse"><stop stop-color="#a6a8ab" offset="0"/><stop stop-color="#a6a8ab" offset=".24"/><stop stop-color="#404040" offset="1"/></linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 9.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867"><g fill-rule="evenodd" transform="scale(1.0583)"><circle cx="16" cy="16" r="16" fill="#006149"/><path fill="#fff" fill-rule="nonzero" d="m24.176 17.184-0.797-0.199 0.242-0.97 2.485 0.621-0.62 2.485-0.971-0.242 0.215-0.862-8.872 5.493-9.839-4.916v-3.752l10.224-6.394 9.375 4.573v1.544l-9.759 6.063-7.247-3.593 0.444-0.896 6.749 3.346 8.813-5.476v-0.363l-8.315-4.056-9.283 5.806v2.58l8.787 4.39z"/></g></svg>

Before

Width:  |  Height:  |  Size: 513 B

View File

@ -1,23 +0,0 @@
var feedback = document.forms.feedback
/* Show feedback */
feedback.hidden = false
feedback.addEventListener("submit", function(ev) {
ev.preventDefault()
/* Retrieve page and feedback value */
var page = document.location.pathname
var data = ev.submitter.getAttribute("data-md-value")
/* Send feedback value */
console.log(page, data)
plausible(data)
/* Disable form and show note, if given */
feedback.firstElementChild.disabled = true
var note = feedback.querySelector(
".md-feedback__note [data-md-value='" + data + "']"
)
if (note)
note.hidden = false
})

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