Compare commits
63 Commits
2024.11.17
...
kpham42-ge
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
11ebcfd7fe | ||
|
b88588bda4
|
|||
|
|
c11661c0be | ||
|
|
2998a56f46
|
||
|
|
272004c2a9
|
||
|
8baf09e913
|
|||
|
87eb01d344
|
|||
|
d6d8332165
|
|||
|
f913f99747
|
|||
|
|
6e47043503
|
||
|
|
e380bf672f | ||
|
|
f6767eaab7
|
||
|
|
1e132c3b72 | ||
|
|
7e5f6ffd8c | ||
|
|
14712bd8cb | ||
|
|
3a6d18e861 | ||
|
|
b4c8aa592e
|
||
|
111ac3be00
|
|||
|
|
8be1fa93c6 | ||
|
|
5ce317abcc
|
||
|
|
546283662f
|
||
|
|
bee2651c68
|
||
|
|
f44a55b03d
|
||
|
|
172f68e2f0
|
||
|
6f38136498
|
|||
|
|
28dc13eeb1 | ||
|
|
58580b39c9 | ||
|
ee9b344fb2
|
|||
|
b0c9e3b55f
|
|||
|
|
9335fd264f
|
||
|
853bb5bb1b
|
|||
|
3bbfa97f26
|
|||
|
22c77cc6b0
|
|||
|
c3e2dc65d8
|
|||
|
d904114f81
|
|||
|
4af33a239b
|
|||
|
|
d5147160d6
|
||
|
|
c2cdb83438
|
||
|
|
6c3ea08ab1 | ||
|
|
2e24a6dff7 | ||
|
|
463d73f044 | ||
|
|
a093b053c2
|
||
|
|
c8dfb160cb
|
||
|
|
17a0706a88
|
||
|
|
d9d35c5f87
|
||
|
|
317a2ee7d3 | ||
|
|
9851037608 | ||
|
|
4273a1880b | ||
|
|
1d437287b8 | ||
|
|
b0830edb4a | ||
|
091a64fbe9
|
|||
|
4d7c331984
|
|||
|
31b89aa9b0
|
|||
|
|
72a2ef5fc9
|
||
|
|
c1fd596841 | ||
|
|
3743a55e0d | ||
|
|
b04fe6a16d
|
||
|
455f18be13
|
|||
|
|
ca0b544251 | ||
|
|
09cb746b93
|
||
|
|
31446987ea
|
||
|
|
10ecb680cd
|
||
|
055c6b6a2b
|
@@ -2956,6 +2956,35 @@
|
|||||||
"business",
|
"business",
|
||||||
"fundingFinding"
|
"fundingFinding"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "bruch-alex",
|
||||||
|
"name": "Alex Bruch",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/173354246?v=4",
|
||||||
|
"profile": "https://github.com/bruch-alex",
|
||||||
|
"contributions": [
|
||||||
|
"translation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "qiyongzheng",
|
||||||
|
"name": "qiyongzheng",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/153378707?v=4",
|
||||||
|
"profile": "https://github.com/qiyongzheng",
|
||||||
|
"contributions": [
|
||||||
|
"doc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "hashcatHitman",
|
||||||
|
"name": "Sam K",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/155700084?v=4",
|
||||||
|
"profile": "https://github.com/hashcatHitman",
|
||||||
|
"contributions": [
|
||||||
|
"doc",
|
||||||
|
"promotion",
|
||||||
|
"question"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"contributorsPerLine": 5,
|
"contributorsPerLine": 5,
|
||||||
|
|||||||
59
.github/CODEOWNERS
vendored
@@ -1,4 +1,30 @@
|
|||||||
|
# Org
|
||||||
|
|
||||||
|
/docs/about/ @jonaharagon
|
||||||
|
CODE_OF_CONDUCT.md @jonaharagon
|
||||||
|
CITATION.cff @jonaharagon
|
||||||
|
LICENSE @jonaharagon @dngray
|
||||||
|
LICENSE-CODE @jonaharagon
|
||||||
|
README.md @jonaharagon @dngray
|
||||||
|
|
||||||
|
# Config
|
||||||
|
|
||||||
|
/mkdocs.yml @jonaharagon
|
||||||
|
/mkdocs.blog.yml @jonaharagon
|
||||||
|
/crowdin.yml @jonaharagon
|
||||||
|
/includes/ @jonaharagon
|
||||||
|
|
||||||
|
# Ops
|
||||||
|
|
||||||
|
Dockerfile @jonaharagon
|
||||||
|
/Pipfile @jonaharagon
|
||||||
|
/Pipfile.lock @jonaharagon
|
||||||
|
/.github/ @jonaharagon
|
||||||
|
/run.sh @jonaharagon
|
||||||
|
/modules/ @jonaharagon
|
||||||
|
|
||||||
# High-traffic pages
|
# High-traffic pages
|
||||||
|
|
||||||
/blog/index.md @jonaharagon @freddy-m
|
/blog/index.md @jonaharagon @freddy-m
|
||||||
/docs/index.md @jonaharagon @dngray
|
/docs/index.md @jonaharagon @dngray
|
||||||
/theme/home.html @jonaharagon @dngray
|
/theme/home.html @jonaharagon @dngray
|
||||||
@@ -7,14 +33,25 @@
|
|||||||
/theme/partials/ @jonaharagon
|
/theme/partials/ @jonaharagon
|
||||||
/theme/layouts/ @jonaharagon
|
/theme/layouts/ @jonaharagon
|
||||||
|
|
||||||
|
# Financial-Related
|
||||||
|
|
||||||
|
/docs/about/donate.md @jonaharagon @SamsungGalaxyPlayer
|
||||||
|
/docs/cryptocurrency.md @jonaharagon @SamsungGalaxyPlayer
|
||||||
|
/docs/financial-services.md @jonaharagon @SamsungGalaxyPlayer
|
||||||
|
/docs/advanced/payments.md @jonaharagon @SamsungGalaxyPlayer
|
||||||
|
|
||||||
# Blog authors
|
# Blog authors
|
||||||
|
|
||||||
/blog/.authors.yml @jonaharagon @dngray @freddy-m
|
/blog/.authors.yml @jonaharagon @dngray @freddy-m
|
||||||
|
/blog/author/ @jonaharagon @dngray @freddy-m
|
||||||
/blog/author/dngray.md @dngray
|
/blog/author/dngray.md @dngray
|
||||||
/blog/author/freddy.md @freddy-m
|
/blog/author/freddy.md @freddy-m
|
||||||
/blog/author/jonah.md @jonaharagon
|
/blog/author/jonah.md @jonaharagon
|
||||||
/blog/author/niek-de-wilde.md @blacklight447
|
/blog/author/niek-de-wilde.md @blacklight447
|
||||||
|
|
||||||
# Blog posts
|
# Blog posts
|
||||||
|
|
||||||
|
/blog/posts/ @jonaharagon
|
||||||
/blog/posts/firefox-privacy-2021-update.md @dngray
|
/blog/posts/firefox-privacy-2021-update.md @dngray
|
||||||
/blog/posts/firefox-privacy.md @jonaharagon
|
/blog/posts/firefox-privacy.md @jonaharagon
|
||||||
/blog/posts/hide-nothing.md @freddy-m
|
/blog/posts/hide-nothing.md @freddy-m
|
||||||
@@ -27,25 +64,3 @@
|
|||||||
/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md @jonaharagon
|
/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md @jonaharagon
|
||||||
/blog/posts/virtual-insanity.md @freddy-m
|
/blog/posts/virtual-insanity.md @freddy-m
|
||||||
/blog/posts/welcome-to-privacy-guides.md @jonaharagon
|
/blog/posts/welcome-to-privacy-guides.md @jonaharagon
|
||||||
|
|
||||||
# Org
|
|
||||||
/docs/about/ @jonaharagon
|
|
||||||
CODE_OF_CONDUCT.md @jonaharagon
|
|
||||||
CITATION.cff @jonaharagon
|
|
||||||
LICENSE @jonaharagon @dngray
|
|
||||||
LICENSE-CODE @jonaharagon
|
|
||||||
README.md @jonaharagon @dngray
|
|
||||||
|
|
||||||
# Config
|
|
||||||
/mkdocs.yml @jonaharagon
|
|
||||||
/mkdocs.blog.yml @jonaharagon
|
|
||||||
/crowdin.yml @jonaharagon
|
|
||||||
/includes/ @jonaharagon
|
|
||||||
|
|
||||||
# Ops
|
|
||||||
Dockerfile @jonaharagon
|
|
||||||
/Pipfile @jonaharagon
|
|
||||||
/Pipfile.lock @jonaharagon
|
|
||||||
/.github/ @jonaharagon
|
|
||||||
/run.sh @jonaharagon
|
|
||||||
/modules/ @jonaharagon
|
|
||||||
|
|||||||
17
.github/workflows/build-pr.yml
vendored
@@ -99,13 +99,24 @@ jobs:
|
|||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||||
|
|
||||||
|
build_videos:
|
||||||
|
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build videos') }}
|
||||||
|
needs: [submodule, metadata]
|
||||||
|
uses: ./.github/workflows/build-videos.yml
|
||||||
|
with:
|
||||||
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
continue-on-error: true
|
||||||
|
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||||
|
|
||||||
combine_build:
|
combine_build:
|
||||||
needs: [build_english, build_i18n, build_blog]
|
needs: [build_english, build_i18n, build_blog, build_videos]
|
||||||
if: |
|
if: |
|
||||||
(always() && !cancelled() && !failure()) &&
|
(always() && !cancelled() && !failure()) &&
|
||||||
needs.build_english.result == 'success' &&
|
needs.build_english.result == 'success' &&
|
||||||
(needs.build_i18n.result == 'success' || needs.build_i18n.result == 'skipped') &&
|
(needs.build_i18n.result == 'success' || needs.build_i18n.result == 'skipped') &&
|
||||||
(needs.build_blog.result == 'success' || needs.build_blog.result == 'skipped')
|
(needs.build_blog.result == 'success' || needs.build_blog.result == 'skipped') &&
|
||||||
|
(needs.build_videos.result == 'success' || needs.build_videos.result == 'skipped')
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
@@ -127,5 +138,5 @@ jobs:
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
needs: [build_english, build_i18n, build_blog]
|
needs: [build_english, build_i18n, build_blog, build_videos]
|
||||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||||
|
|||||||
104
.github/workflows/build-videos.yml
vendored
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
name: 🛠️ Build Videos
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
ref:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
repo:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
context:
|
||||||
|
type: string
|
||||||
|
default: deploy-preview
|
||||||
|
continue-on-error:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
privileged:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: ${{ inputs.continue-on-error }}
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Add GitHub Token to Environment
|
||||||
|
run: |
|
||||||
|
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
- name: Download Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: ${{ inputs.repo }}
|
||||||
|
ref: ${{ inputs.ref }}
|
||||||
|
persist-credentials: "false"
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Download Submodules
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
pattern: repo-*
|
||||||
|
path: modules
|
||||||
|
|
||||||
|
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||||
|
if: inputs.privileged
|
||||||
|
run: |
|
||||||
|
rmdir modules/mkdocs-material
|
||||||
|
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||||
|
|
||||||
|
- name: Move brand submodule to theme/assets/brand
|
||||||
|
run: |
|
||||||
|
rmdir theme/assets/brand
|
||||||
|
mv modules/repo-brand theme/assets/brand
|
||||||
|
|
||||||
|
- name: Install Python (pipenv)
|
||||||
|
if: inputs.privileged
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
cache: "pipenv"
|
||||||
|
|
||||||
|
- name: Install Python (no pipenv)
|
||||||
|
if: ${{ !inputs.privileged }}
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
|
||||||
|
- name: Install Python Dependencies
|
||||||
|
if: inputs.privileged
|
||||||
|
run: |
|
||||||
|
pip install pipenv
|
||||||
|
pipenv install
|
||||||
|
sudo apt install pngquant
|
||||||
|
|
||||||
|
- name: Install Python Dependencies (Unprivileged)
|
||||||
|
if: ${{ !inputs.privileged }}
|
||||||
|
run: |
|
||||||
|
pip install mkdocs-material mkdocs-rss-plugin mkdocs-glightbox mkdocs-macros-plugin
|
||||||
|
sudo apt install pngquant
|
||||||
|
|
||||||
|
- name: Build Website (Privileged)
|
||||||
|
if: inputs.privileged
|
||||||
|
run: |
|
||||||
|
pipenv run mkdocs build --config-file mkdocs.videos.yml
|
||||||
|
|
||||||
|
- name: Build Website (Unprivileged)
|
||||||
|
if: ${{ !inputs.privileged }}
|
||||||
|
run: |
|
||||||
|
BUILD_INSIDERS=false mkdocs build --config-file mkdocs.videos.yml
|
||||||
|
|
||||||
|
- name: Package Website
|
||||||
|
run: |
|
||||||
|
tar -czf site-build-videos.tar.gz site
|
||||||
|
|
||||||
|
- name: Upload Site
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: site-build-videos.tar.gz
|
||||||
|
path: site-build-videos.tar.gz
|
||||||
|
retention-days: 1
|
||||||
18
.github/workflows/build.yml
vendored
@@ -176,6 +176,24 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
eval ./run.sh --build --lang=${{ inputs.lang }} "$EXTRA_FLAGS"
|
eval ./run.sh --build --lang=${{ inputs.lang }} "$EXTRA_FLAGS"
|
||||||
|
|
||||||
|
- name: Run index-generation.sh for top posts
|
||||||
|
if: inputs.lang == 'en'
|
||||||
|
run: |
|
||||||
|
bash index-generation.sh \
|
||||||
|
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||||
|
--tag="top posts" \
|
||||||
|
--destination="./site/en/index.html" \
|
||||||
|
--count=3
|
||||||
|
|
||||||
|
- name: Run index-generation.sh for latest posts
|
||||||
|
if: inputs.lang == 'en'
|
||||||
|
run: |
|
||||||
|
bash index-generation.sh \
|
||||||
|
--source='https://discuss.privacyguides.net/latest.json' \
|
||||||
|
--tag="latest posts" \
|
||||||
|
--destination="./site/en/index.html" \
|
||||||
|
--count=12
|
||||||
|
|
||||||
- name: Package Website
|
- name: Package Website
|
||||||
run: |
|
run: |
|
||||||
tar -czf site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz site
|
tar -czf site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz site
|
||||||
|
|||||||
85
.github/workflows/publish-immediate.yml
vendored
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# Copyright (c) 2021-2025 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
name: 📦 Immediate Releases
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
paths:
|
||||||
|
- "blog/**"
|
||||||
|
- "videos/**"
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: release-deployment
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
deployments: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
submodule:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
repo: [mkdocs-material-insiders, brand]
|
||||||
|
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||||
|
with:
|
||||||
|
repo: ${{ matrix.repo }}
|
||||||
|
secrets:
|
||||||
|
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||||
|
|
||||||
|
build_blog:
|
||||||
|
needs: submodule
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
uses: ./.github/workflows/build-blog.yml
|
||||||
|
with:
|
||||||
|
repo: ${{ github.repository }}
|
||||||
|
ref: ${{ github.ref }}
|
||||||
|
continue-on-error: false
|
||||||
|
|
||||||
|
build_videos:
|
||||||
|
needs: submodule
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
uses: ./.github/workflows/build-videos.yml
|
||||||
|
with:
|
||||||
|
repo: ${{ github.repository }}
|
||||||
|
ref: ${{ github.ref }}
|
||||||
|
continue-on-error: false
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
needs: [build_blog, build_videos]
|
||||||
|
uses: privacyguides/webserver/.github/workflows/deploy-garage.yml@main
|
||||||
|
with:
|
||||||
|
environment: production
|
||||||
|
secrets:
|
||||||
|
PROD_GARAGE_KEY_ID: ${{ secrets.PROD_GARAGE_KEY_ID }}
|
||||||
|
PROD_GARAGE_SECRET_KEY: ${{ secrets.PROD_GARAGE_SECRET_KEY }}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if: ${{ always() }}
|
||||||
|
needs: [build_blog, build_videos]
|
||||||
|
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||||
3
.github/workflows/publish-pr.yml
vendored
@@ -148,6 +148,5 @@ jobs:
|
|||||||
| <span aria-hidden="true">🔨</span> Latest commit | ${{ needs.metadata.outputs.sha }} |
|
| <span aria-hidden="true">🔨</span> Latest commit | ${{ needs.metadata.outputs.sha }} |
|
||||||
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
|
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
|
||||||
|
|
||||||
Please note that this preview was built from an untrusted source, so it was not granted access to all mkdocs-material features.
|
Please note that this preview was built from an untrusted source, so it was not granted access to all mkdocs-material features. Maintainers should ensure this PR has been reviewed locally with a full build before merging.
|
||||||
Maintainers should ensure this PR has been reviewed locally with a full build before merging.
|
|
||||||
comment_tag: deployment
|
comment_tag: deployment
|
||||||
|
|||||||
14
.github/workflows/publish-release.yml
vendored
@@ -74,6 +74,16 @@ jobs:
|
|||||||
ref: ${{ github.ref }}
|
ref: ${{ github.ref }}
|
||||||
continue-on-error: false
|
continue-on-error: false
|
||||||
|
|
||||||
|
build_videos:
|
||||||
|
needs: submodule
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
uses: ./.github/workflows/build-videos.yml
|
||||||
|
with:
|
||||||
|
repo: ${{ github.repository }}
|
||||||
|
ref: ${{ github.ref }}
|
||||||
|
continue-on-error: false
|
||||||
|
|
||||||
release:
|
release:
|
||||||
name: Create release notes
|
name: Create release notes
|
||||||
needs: build
|
needs: build
|
||||||
@@ -95,7 +105,7 @@ jobs:
|
|||||||
makeLatest: true
|
makeLatest: true
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
needs: [build, build_blog]
|
needs: [build, build_blog, build_videos]
|
||||||
uses: privacyguides/webserver/.github/workflows/deploy-all.yml@main
|
uses: privacyguides/webserver/.github/workflows/deploy-all.yml@main
|
||||||
secrets:
|
secrets:
|
||||||
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
|
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
|
||||||
@@ -112,5 +122,5 @@ jobs:
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
needs: [build, build_blog]
|
needs: [build, build_blog, build_videos]
|
||||||
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
||||||
|
|||||||
82
.github/workflows/update-discussions.yml
vendored
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
name: 🔄 Update Discussions
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: "*/30 * * * *"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
environment:
|
||||||
|
name: production
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
persist-credentials: "false"
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Create site/en directory
|
||||||
|
run: mkdir -p site/en
|
||||||
|
|
||||||
|
- name: Update Discussions
|
||||||
|
uses: yakubique/minio-download@v1.1.1
|
||||||
|
with:
|
||||||
|
endpoint: https://${{ vars.PROD_GARAGE_HOSTNAME }}
|
||||||
|
access_key: ${{ secrets.PROD_GARAGE_KEY_ID }}
|
||||||
|
secret_key: ${{ secrets.PROD_GARAGE_SECRET_KEY }}
|
||||||
|
bucket: ${{ vars.PROD_GARAGE_BUCKET }}
|
||||||
|
source: /en/index.html
|
||||||
|
target: ./site/en/
|
||||||
|
|
||||||
|
- name: Run index-generation.sh for top posts
|
||||||
|
run: |
|
||||||
|
bash index-generation.sh \
|
||||||
|
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
|
||||||
|
--tag="top posts" \
|
||||||
|
--destination="./site/en/index.html" \
|
||||||
|
--count=3
|
||||||
|
|
||||||
|
- name: Run index-generation.sh for latest posts
|
||||||
|
run: |
|
||||||
|
bash index-generation.sh \
|
||||||
|
--source='https://discuss.privacyguides.net/latest.json' \
|
||||||
|
--tag="latest posts" \
|
||||||
|
--destination="./site/en/index.html" \
|
||||||
|
--count=12
|
||||||
|
|
||||||
|
- name: Upload modified index
|
||||||
|
uses: yakubique/minio-upload@v1.1.3
|
||||||
|
with:
|
||||||
|
endpoint: https://${{ vars.PROD_GARAGE_HOSTNAME }}
|
||||||
|
access_key: ${{ secrets.PROD_GARAGE_KEY_ID }}
|
||||||
|
secret_key: ${{ secrets.PROD_GARAGE_SECRET_KEY }}
|
||||||
|
bucket: ${{ vars.PROD_GARAGE_BUCKET }}
|
||||||
|
source: ./site/en/index.html
|
||||||
|
target: /en/index.html
|
||||||
@@ -28,3 +28,4 @@ no-hard-tabs: true
|
|||||||
emphasis-style:
|
emphasis-style:
|
||||||
style: "asterisk"
|
style: "asterisk"
|
||||||
no-duplicate-header: false
|
no-duplicate-header: false
|
||||||
|
no-trailing-punctuation: false
|
||||||
|
|||||||
7
.vscode/ltex.dictionary.en-US.txt
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Kinect
|
||||||
|
Scanalytics
|
||||||
|
mmWave
|
||||||
|
TODO
|
||||||
|
MotionScore
|
||||||
|
GaitMetrics
|
||||||
|
Bayometric
|
||||||
1
.vscode/ltex.disabledRules.en-US.txt
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
COMMA_PARENTHESIS_WHITESPACE
|
||||||
8
.vscode/ltex.hiddenFalsePositives.en-US.txt
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QImage Credit: Yipeng Lu\\E$"}
|
||||||
|
{"rule":"CLOSE_SCRUTINY","sentence":"^\\QThis technology can work using only 2D footage and doesn't even require close proximity or high resolution sensors like other forms of biometrics.\\E$"}
|
||||||
|
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QCompanies like TypingDNA claim to be able to identify users by how they type.\\E$"}
|
||||||
|
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QImage Credit: Alireza Bilesan, Saeed Behzadipour, Teppei Tsujita, Shunsuke Komizunai, and Atsushi Konno\\E$"}
|
||||||
|
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QImage Credit: Yousef, R.N., Khalil, A.T., Samra, A.S. et al.\\E$"}
|
||||||
|
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QImage Credit: clockit.io\\E$"}
|
||||||
|
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QExample of finger minutiae including forks (where one line splits into multiple lines), ends (where a line ends), islands (isolated dots), and inclosures (lines that split into two and then reconnect)\\E$"}
|
||||||
|
{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QIllustration: Jonah Aragon / Privacy Guides | Photo: Jair Lázaro / Unsplash\\E$"}
|
||||||
13
.vscode/settings.json
vendored
@@ -20,7 +20,18 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
"git.ignoreLimitWarning": true,
|
"git.ignoreLimitWarning": true,
|
||||||
"ltex.diagnosticSeverity": "hint",
|
"ltex.diagnosticSeverity": {
|
||||||
|
"COMMA_COMPOUND_SENTENCE": "error",
|
||||||
|
"MORFOLOGIK_RULE_EN_US": "information",
|
||||||
|
"HE_VERB_AGR": "hint",
|
||||||
|
"WHETHER": "hint",
|
||||||
|
"MAKE_SINCE": "information",
|
||||||
|
"CLOSE_SCRUTINY": "information",
|
||||||
|
"EN_COMPOUNDS": "warning",
|
||||||
|
"ADMIT_ENJOY_VB": "hint",
|
||||||
|
"ABOUT_WHO_TO": "warning",
|
||||||
|
"default": "hint"
|
||||||
|
},
|
||||||
"editor.unicodeHighlight.ambiguousCharacters": true,
|
"editor.unicodeHighlight.ambiguousCharacters": true,
|
||||||
"editor.unicodeHighlight.invisibleCharacters": true,
|
"editor.unicodeHighlight.invisibleCharacters": true,
|
||||||
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint",
|
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint",
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
<a href="https://github.com/privacyguides/privacyguides.org/stargazers">
|
<a href="https://github.com/privacyguides/privacyguides.org/stargazers">
|
||||||
<img src="https://img.shields.io/github/stars/privacyguides?style=social"></a>
|
<img src="https://img.shields.io/github/stars/privacyguides?style=social"></a>
|
||||||
<a href="https://mastodon.neat.computer/@privacyguides">
|
<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></p>
|
<img src="https://img.shields.io/mastodon/follow/109298532634697668?domain=https%3A%2F%2Fmastodon.neat.computer&label=Follow&style=social"></a>
|
||||||
|
<a href="https://bsky.app/profile/privacyguides.org">
|
||||||
|
<img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpublic.api.bsky.app%2Fxrpc%2Fapp.bsky.actor.getProfile%3Factor%3Dprivacyguides.org&query=%24.followersCount&style=social&logo=bluesky&label=Follow"></a></p>
|
||||||
|
|
||||||
<p><a href="https://github.com/privacyguides/privacyguides.org/pulls">
|
<p><a href="https://github.com/privacyguides/privacyguides.org/pulls">
|
||||||
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org"></a>
|
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org"></a>
|
||||||
@@ -607,6 +609,11 @@ Privacy Guides wouldn't be possible without these wonderful people ([emoji key](
|
|||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/PASSK3YS"><img src="https://avatars.githubusercontent.com/u/54213179?v=4" width="100px;" loading=lazy /><br /><sub><b>Kieran Colfer</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=PASSK3YS" title="Documentation">📖</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/PASSK3YS"><img src="https://avatars.githubusercontent.com/u/54213179?v=4" width="100px;" loading=lazy /><br /><sub><b>Kieran Colfer</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=PASSK3YS" title="Documentation">📖</a></td>
|
||||||
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/SamsungGalaxyPlayer"><img src="https://avatars.githubusercontent.com/u/12520755?v=4" width="100px;" loading=lazy /><br /><sub><b>Justin Ehrenhofer</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=SamsungGalaxyPlayer" title="Documentation">📖</a> <a href="#business-SamsungGalaxyPlayer" title="Business development">💼</a> <a href="#fundingFinding-SamsungGalaxyPlayer" title="Funding Finding">🔍</a></td>
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/SamsungGalaxyPlayer"><img src="https://avatars.githubusercontent.com/u/12520755?v=4" width="100px;" loading=lazy /><br /><sub><b>Justin Ehrenhofer</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=SamsungGalaxyPlayer" title="Documentation">📖</a> <a href="#business-SamsungGalaxyPlayer" title="Business development">💼</a> <a href="#fundingFinding-SamsungGalaxyPlayer" title="Funding Finding">🔍</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/bruch-alex"><img src="https://avatars.githubusercontent.com/u/173354246?v=4" width="100px;" loading=lazy /><br /><sub><b>Alex Bruch</b></sub></a><br /><a href="#translation-bruch-alex" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/qiyongzheng"><img src="https://avatars.githubusercontent.com/u/153378707?v=4" width="100px;" loading=lazy /><br /><sub><b>qiyongzheng</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=qiyongzheng" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hashcatHitman"><img src="https://avatars.githubusercontent.com/u/155700084?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam K</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hashcatHitman" title="Documentation">📖</a> <a href="#promotion-hashcatHitman" title="Promotion">📣</a> <a href="#question-hashcatHitman" title="Answering Questions">💬</a></td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -8,21 +8,34 @@ authors:
|
|||||||
name: Dan Arel
|
name: Dan Arel
|
||||||
description: Former Team Member
|
description: Former Team Member
|
||||||
avatar: https://github.com/danarel.png
|
avatar: https://github.com/danarel.png
|
||||||
niek-de-wilde:
|
|
||||||
name: Niek de Wilde
|
|
||||||
description: Team Member
|
|
||||||
avatar: https://github.com/blacklight447.png
|
|
||||||
mastodon:
|
|
||||||
username: blacklight447
|
|
||||||
instance: mastodon.social
|
|
||||||
dngray:
|
dngray:
|
||||||
name: Daniel Gray
|
name: Daniel Gray
|
||||||
description: Team Member
|
description: Team Member
|
||||||
avatar: https://github.com/dngray.png
|
avatar: https://github.com/dngray.png
|
||||||
|
em:
|
||||||
|
name: Em
|
||||||
|
description: Staff Writer
|
||||||
|
avatar: https://github.com/EmAtPrivacyGuides.png
|
||||||
|
mastodon:
|
||||||
|
username: Em0nM4stodon
|
||||||
|
instance: infosec.exchange
|
||||||
|
kevpham:
|
||||||
|
name: Kevin Pham
|
||||||
|
description: News Intern
|
||||||
|
avatar: https://github.com/kpham42.png
|
||||||
freddy:
|
freddy:
|
||||||
name: Freddy
|
name: Freddy
|
||||||
description: Team Member
|
description: Team Member
|
||||||
avatar: https://github.com/freddy-m.png
|
avatar: https://github.com/freddy-m.png
|
||||||
|
mastodon:
|
||||||
|
username: freddy
|
||||||
|
instance: social.lol
|
||||||
|
twitter: m00ws
|
||||||
|
bluesky: freddy.lol
|
||||||
|
fria:
|
||||||
|
name: fria
|
||||||
|
description: Team Member
|
||||||
|
avatar: https://github.com/friadev.png
|
||||||
jonah:
|
jonah:
|
||||||
name: Jonah Aragon
|
name: Jonah Aragon
|
||||||
description: Project Director
|
description: Project Director
|
||||||
@@ -31,6 +44,7 @@ authors:
|
|||||||
username: jonah
|
username: jonah
|
||||||
instance: neat.computer
|
instance: neat.computer
|
||||||
twitter: jonaharagon
|
twitter: jonaharagon
|
||||||
|
bluesky: jonaharagon.com
|
||||||
kaitebay:
|
kaitebay:
|
||||||
name: Kai Tebay
|
name: Kai Tebay
|
||||||
description: Former Team Member
|
description: Former Team Member
|
||||||
@@ -47,11 +61,14 @@ authors:
|
|||||||
name: Nate Bartram
|
name: Nate Bartram
|
||||||
description: Guest Contributor
|
description: Guest Contributor
|
||||||
avatar: https://gitlab.com/uploads/-/system/user/avatar/8993331/avatar.png
|
avatar: https://gitlab.com/uploads/-/system/user/avatar/8993331/avatar.png
|
||||||
|
niek-de-wilde:
|
||||||
|
name: Niek de Wilde
|
||||||
|
description: Team Member
|
||||||
|
avatar: https://github.com/blacklight447.png
|
||||||
|
mastodon:
|
||||||
|
username: blacklight447
|
||||||
|
instance: mastodon.social
|
||||||
sam-howell:
|
sam-howell:
|
||||||
name: Sam Howell
|
name: Sam Howell
|
||||||
description: Guest Contributor
|
description: Guest Contributor
|
||||||
avatar: https://gitlab.com/uploads/-/system/user/avatar/5349522/avatar.png
|
avatar: https://gitlab.com/uploads/-/system/user/avatar/5349522/avatar.png
|
||||||
fria:
|
|
||||||
name: fria
|
|
||||||
description: Team Member
|
|
||||||
avatar: https://github.com/friadev.png
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 95 KiB |
BIN
blog/assets/images/biometrics-explained/biometrics.webp
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
blog/assets/images/biometrics-explained/capacitve-diagram.webp
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
blog/assets/images/biometrics-explained/finger-minutiae.webp
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
blog/assets/images/biometrics-explained/kinect-skeleton.webp
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
blog/assets/images/biometrics-explained/model-free-gait.webp
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
blog/assets/images/biometrics-explained/optical-diagram.webp
Normal file
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 51 KiB |
BIN
blog/assets/images/biometrics-explained/ultrasonic-diagram.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 1011 KiB |
BIN
blog/assets/images/choosing-the-right-messenger/cover.webp
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/brave1.webp
Normal file
|
After Width: | Height: | Size: 211 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/brave2.webp
Normal file
|
After Width: | Height: | Size: 212 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/brave3.webp
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/brave4.webp
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/brave5.webp
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/brave6.webp
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/chrome1.webp
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/chrome2.webp
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/chrome3.webp
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/chrome4.webp
Normal file
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 636 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/edge1.webp
Normal file
|
After Width: | Height: | Size: 246 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/edge2.webp
Normal file
|
After Width: | Height: | Size: 234 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/edge3.webp
Normal file
|
After Width: | Height: | Size: 99 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/edge4.webp
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/edge5.webp
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/firefox1.webp
Normal file
|
After Width: | Height: | Size: 111 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/firefox2.webp
Normal file
|
After Width: | Height: | Size: 115 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/firefox3.webp
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/firefox4.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/firefox5.webp
Normal file
|
After Width: | Height: | Size: 99 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/firefox6.webp
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/history1.webp
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/history2.webp
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/history3.webp
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
blog/assets/images/clearing-your-browsing-data/safari.webp
Normal file
|
After Width: | Height: | Size: 260 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 127 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-calendar.webp
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-code.webp
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-cover.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-creatingfile.webp
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-deletingfiles.webp
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-diagram.webp
Normal file
|
After Width: | Height: | Size: 168 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-document.webp
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-filetypes.webp
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-form.webp
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-kanban.webp
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-login.webp
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-markdown.webp
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-presentation.webp
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-profile.webp
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-richtext.webp
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-sheet.webp
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-trackingchanges.webp
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
blog/assets/images/cryptpad-review/cryptpad-whiteboard.webp
Normal file
|
After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 607 KiB |
BIN
blog/assets/images/delisting-startpage/cover.webp
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
blog/assets/images/delisting-wire/cover.avif
Normal file
|
After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 955 KiB |
BIN
blog/assets/images/firefox-privacy/cover.webp
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
blog/assets/images/installing-and-using-tails/cover.webp
Normal file
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 253 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 399 KiB |
|
After Width: | Height: | Size: 400 KiB |
|
After Width: | Height: | Size: 402 KiB |
|
After Width: | Height: | Size: 139 KiB |
|
After Width: | Height: | Size: 137 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 67 KiB |