Compare commits
68 Commits
2024.11.14
...
kpham42-ge
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5da4264d7 | ||
|
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
|
|||
|
|
2d44ecf8a6
|
||
|
|
bba6ffe74f
|
||
|
|
7025dfccc6
|
||
|
|
37a938be33
|
||
|
7c3424f001
|
@@ -2956,6 +2956,35 @@
|
||||
"business",
|
||||
"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,
|
||||
|
||||
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
|
||||
|
||||
/blog/index.md @jonaharagon @freddy-m
|
||||
/docs/index.md @jonaharagon @dngray
|
||||
/theme/home.html @jonaharagon @dngray
|
||||
@@ -7,14 +33,25 @@
|
||||
/theme/partials/ @jonaharagon
|
||||
/theme/layouts/ @jonaharagon
|
||||
|
||||
# Financial-Related
|
||||
|
||||
/docs/about/donate.md @jonaharagon @SamsungGalaxyPlayer
|
||||
/docs/cryptocurrency.md @jonaharagon @SamsungGalaxyPlayer
|
||||
/docs/financial-services.md @jonaharagon @SamsungGalaxyPlayer
|
||||
/docs/advanced/payments.md @jonaharagon @SamsungGalaxyPlayer
|
||||
|
||||
# Blog authors
|
||||
|
||||
/blog/.authors.yml @jonaharagon @dngray @freddy-m
|
||||
/blog/author/ @jonaharagon @dngray @freddy-m
|
||||
/blog/author/dngray.md @dngray
|
||||
/blog/author/freddy.md @freddy-m
|
||||
/blog/author/jonah.md @jonaharagon
|
||||
/blog/author/niek-de-wilde.md @blacklight447
|
||||
|
||||
# Blog posts
|
||||
|
||||
/blog/posts/ @jonaharagon
|
||||
/blog/posts/firefox-privacy-2021-update.md @dngray
|
||||
/blog/posts/firefox-privacy.md @jonaharagon
|
||||
/blog/posts/hide-nothing.md @freddy-m
|
||||
@@ -27,25 +64,3 @@
|
||||
/blog/posts/the-trouble-with-vpn-and-privacy-review-sites.md @jonaharagon
|
||||
/blog/posts/virtual-insanity.md @freddy-m
|
||||
/blog/posts/welcome-to-privacy-guides.md @jonaharagon
|
||||
|
||||
# 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
|
||||
|
||||
18
.github/workflows/build-blog.yml
vendored
@@ -65,6 +65,10 @@ jobs:
|
||||
with:
|
||||
cache: "pipenv"
|
||||
|
||||
- name: Install Python (no pipenv)
|
||||
if: ${{ !inputs.privileged }}
|
||||
uses: actions/setup-python@v5
|
||||
|
||||
- name: Install Python Dependencies
|
||||
if: inputs.privileged
|
||||
run: |
|
||||
@@ -72,10 +76,22 @@ jobs:
|
||||
pipenv install
|
||||
sudo apt install pngquant
|
||||
|
||||
- name: Build Website
|
||||
- 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.blog.yml
|
||||
|
||||
- name: Build Website (Unprivileged)
|
||||
if: ${{ !inputs.privileged }}
|
||||
run: |
|
||||
BUILD_INSIDERS=false mkdocs build --config-file mkdocs.blog.yml
|
||||
|
||||
- name: Package Website
|
||||
run: |
|
||||
tar -czf site-build-blog.tar.gz site
|
||||
|
||||
31
.github/workflows/build-pr.yml
vendored
@@ -19,12 +19,19 @@ jobs:
|
||||
env:
|
||||
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||
steps:
|
||||
- name: Save PR metadata
|
||||
run: |
|
||||
mkdir -p ./metadata
|
||||
echo ${{ github.event.number }} > ./metadata/NR
|
||||
echo ${{ github.event.pull_request.head.sha }} > ./metadata/SHA
|
||||
|
||||
- name: Set submodules for fork
|
||||
if: env.ACTIONS_SSH_KEY == ''
|
||||
id: submodules-fork
|
||||
run: |
|
||||
echo 'submodules={"repo":["brand","i18n"]}' >> "$GITHUB_OUTPUT"
|
||||
echo "privileged=false" >> "$GITHUB_OUTPUT"
|
||||
echo "false" > ./metadata/PRIVILEGED
|
||||
|
||||
- name: Set submodules for main repo
|
||||
if: env.ACTIONS_SSH_KEY != ''
|
||||
@@ -32,12 +39,7 @@ jobs:
|
||||
run: |
|
||||
echo 'submodules={"repo":["brand","i18n","mkdocs-material-insiders"]}' >> "$GITHUB_OUTPUT"
|
||||
echo "privileged=true" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Save PR metadata
|
||||
run: |
|
||||
mkdir -p ./metadata
|
||||
echo ${{ github.event.number }} > ./metadata/NR
|
||||
echo ${{ github.event.pull_request.head.sha }} > ./metadata/SHA
|
||||
echo "true" > ./metadata/PRIVILEGED
|
||||
|
||||
- name: Upload metadata as artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
@@ -97,13 +99,24 @@ jobs:
|
||||
continue-on-error: true
|
||||
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:
|
||||
needs: [build_english, build_i18n, build_blog]
|
||||
needs: [build_english, build_i18n, build_blog, build_videos]
|
||||
if: |
|
||||
(always() && !cancelled() && !failure()) &&
|
||||
needs.build_english.result == 'success' &&
|
||||
(needs.build_i18n.result == 'success' || needs.build_i18n.result == 'skipped') &&
|
||||
(needs.build_blog.result == 'success' || needs.build_blog.result == 'skipped')
|
||||
(needs.build_blog.result == 'success' || needs.build_blog.result == 'skipped') &&
|
||||
(needs.build_videos.result == 'success' || needs.build_videos.result == 'skipped')
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
@@ -125,5 +138,5 @@ jobs:
|
||||
|
||||
cleanup:
|
||||
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
|
||||
|
||||
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: |
|
||||
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
|
||||
run: |
|
||||
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
|
||||
18
.github/workflows/publish-pr.yml
vendored
@@ -22,6 +22,7 @@ jobs:
|
||||
outputs:
|
||||
pr_number: ${{ steps.metadata.outputs.pr_number }}
|
||||
sha: ${{ steps.metadata.outputs.sha }}
|
||||
privileged: ${{ steps.metadata.outputs.privileged }}
|
||||
|
||||
steps:
|
||||
- name: Download Website Build Artifact
|
||||
@@ -86,6 +87,7 @@ jobs:
|
||||
unzip metadata.zip -d metadata
|
||||
echo "pr_number=$(cat metadata/NR)" >> "$GITHUB_OUTPUT"
|
||||
echo "sha=$(cat metadata/SHA)" >> "$GITHUB_OUTPUT"
|
||||
echo "privileged=$(cat metadata/PRIVILEGED)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
deploy_netlify:
|
||||
needs: metadata
|
||||
@@ -122,6 +124,7 @@ jobs:
|
||||
address: ${{ needs.deploy_garage.outputs.address }}
|
||||
steps:
|
||||
- uses: thollander/actions-comment-pull-request@v2.5.0
|
||||
if: ${{ needs.metadata.outputs.privileged == 'true' }}
|
||||
with:
|
||||
pr_number: ${{ needs.metadata.outputs.pr_number }}
|
||||
message: |
|
||||
@@ -132,3 +135,18 @@ jobs:
|
||||
| <span aria-hidden="true">🔨</span> Latest commit | ${{ needs.metadata.outputs.sha }} |
|
||||
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
|
||||
comment_tag: deployment
|
||||
|
||||
- uses: thollander/actions-comment-pull-request@v2.5.0
|
||||
if: ${{ needs.metadata.outputs.privileged == 'false' }}
|
||||
with:
|
||||
pr_number: ${{ needs.metadata.outputs.pr_number }}
|
||||
message: |
|
||||
### <span aria-hidden="true">✅</span> Your preview is ready!
|
||||
|
||||
| Name | Link |
|
||||
| :---: | ---- |
|
||||
| <span aria-hidden="true">🔨</span> Latest commit | ${{ needs.metadata.outputs.sha }} |
|
||||
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
|
||||
|
||||
Please note that this preview was built from an untrusted source, so it was not granted access to all mkdocs-material features. Maintainers should ensure this PR has been reviewed locally with a full build before merging.
|
||||
comment_tag: deployment
|
||||
|
||||
14
.github/workflows/publish-release.yml
vendored
@@ -74,6 +74,16 @@ jobs:
|
||||
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
|
||||
|
||||
release:
|
||||
name: Create release notes
|
||||
needs: build
|
||||
@@ -95,7 +105,7 @@ jobs:
|
||||
makeLatest: true
|
||||
|
||||
deploy:
|
||||
needs: [build, build_blog]
|
||||
needs: [build, build_blog, build_videos]
|
||||
uses: privacyguides/webserver/.github/workflows/deploy-all.yml@main
|
||||
secrets:
|
||||
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
|
||||
@@ -112,5 +122,5 @@ jobs:
|
||||
|
||||
cleanup:
|
||||
if: ${{ always() }}
|
||||
needs: [build, build_blog]
|
||||
needs: [build, build_blog, build_videos]
|
||||
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:
|
||||
style: "asterisk"
|
||||
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,
|
||||
"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.invisibleCharacters": true,
|
||||
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint",
|
||||
|
||||
@@ -14,7 +14,9 @@
|
||||
<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></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">
|
||||
<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/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>
|
||||
<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>
|
||||
<tfoot>
|
||||
<tr>
|
||||
|
||||
@@ -8,21 +8,34 @@ authors:
|
||||
name: Dan Arel
|
||||
description: Former Team Member
|
||||
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:
|
||||
name: Daniel Gray
|
||||
description: Team Member
|
||||
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:
|
||||
name: Freddy
|
||||
description: Team Member
|
||||
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:
|
||||
name: Jonah Aragon
|
||||
description: Project Director
|
||||
@@ -31,6 +44,7 @@ authors:
|
||||
username: jonah
|
||||
instance: neat.computer
|
||||
twitter: jonaharagon
|
||||
bluesky: jonaharagon.com
|
||||
kaitebay:
|
||||
name: Kai Tebay
|
||||
description: Former Team Member
|
||||
@@ -47,6 +61,13 @@ authors:
|
||||
name: Nate Bartram
|
||||
description: Guest Contributor
|
||||
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:
|
||||
name: Sam Howell
|
||||
description: Guest Contributor
|
||||
|
||||
|
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 |