diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml
index 02c52f102..de070a21f 100644
--- a/.github/workflows/build-pr.yml
+++ b/.github/workflows/build-pr.yml
@@ -111,6 +111,16 @@ jobs:
continue-on-error: true
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
+ build_zimfile:
+ if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build zimfile') }}
+ needs: [submodule, metadata]
+ uses: ./.github/workflows/build-zimfile.yml
+ with:
+ ref: ${{github.event.pull_request.head.ref}}
+ repo: ${{github.event.pull_request.head.repo.full_name}}
+ secrets:
+ RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
+
combine_build:
needs: [build_english, build_i18n, build_blog, build_videos]
if: |
@@ -140,5 +150,5 @@ jobs:
cleanup:
if: ${{ always() }}
- needs: [build_english, build_i18n, build_blog, build_videos]
+ needs: [build_english, build_i18n, build_blog, build_videos, build_zimfile]
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
diff --git a/.github/workflows/build-zimfile.yml b/.github/workflows/build-zimfile.yml
new file mode 100644
index 000000000..d129540eb
--- /dev/null
+++ b/.github/workflows/build-zimfile.yml
@@ -0,0 +1,603 @@
+name: 🥝 Build Zimfile
+
+on:
+ workflow_call:
+ inputs:
+ ref:
+ required: true
+ type: string
+ repo:
+ required: true
+ type: string
+ secrets:
+ RO_DISCOURSE_API_KEY:
+ required: false
+
+permissions:
+ contents: read
+
+env:
+ VIDEOS_SITE_BASE_URL: https://www.privacyguides.org/videos/
+ HOMEPAGE_CTA_ABOUT_LINK: about.html
+ HOMEPAGE_CTA_DONATE_LINK: about/donate.html
+ BUILD_OFFLINE: true
+ PRODUCTION: true
+ CARDS: false
+ GITREVISIONDATE: false
+ GITAUTHORS: false
+
+jobs:
+ package_eng:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+
+ env:
+ LANGUAGE_SWITCHER: false
+ MAIN_SITE_BASE_URL: /en/index.html
+ MAIN_SITE_ABOUT_URL: /en/about.html
+ MAIN_SITE_RECOMMENDATIONS_URL: /en/tools.html
+ MAIN_SITE_KNOWLEDGE_BASE_URL: /en/basics/why-privacy-matters.html
+ ARTICLES_SITE_BASE_URL: /articles/index.html
+
+ steps:
+ - name: Add GitHub Token to Environment
+ run: |
+ echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
+
+ - name: Download Repository
+ uses: actions/checkout@v4
+ with:
+ repository: ${{ inputs.repo }}
+ ref: ${{ inputs.ref }}
+ persist-credentials: "false"
+ fetch-depth: 0
+
+ - name: Download Submodules
+ uses: actions/download-artifact@v4
+ with:
+ pattern: repo-*
+ path: modules
+
+ - name: Move mkdocs-material-insiders to mkdocs-material
+ run: |
+ rmdir modules/mkdocs-material
+ mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
+
+ - name: Move brand submodule to theme/assets/brand
+ run: |
+ rmdir theme/assets/brand
+ mv modules/repo-brand theme/assets/brand
+
+ - name: Install Python (pipenv)
+ uses: actions/setup-python@v5
+ with:
+ cache: "pipenv"
+
+ - name: Install Python Dependencies
+ run: |
+ pip install pipenv
+ pipenv install
+ sudo apt install pngquant
+
+ - name: Generate Donating Members List
+ continue-on-error: true
+ env:
+ DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
+ run: |
+ pip install requests
+ python tools/generate-members.py > includes/members.md
+
+ - name: Build English
+ run: |
+ ./run.sh --build --production --insiders --offline --lang=en
+
+ - name: Delete Unreferenced Assets
+ run: |
+ bash tools/delete-unreferenced.sh
+ env:
+ ASSETS_DIR: site/en/assets
+ SEARCH_DIR: site/en
+
+ - name: Run generate-topics.sh for top posts
+ run: |
+ bash tools/generate-topics.sh \
+ --source='https://discuss.privacyguides.net/top.json?period=weekly' \
+ --tag="top posts" \
+ --destination="./site/en/index.html" \
+ --count=3
+
+ - name: Run generate-topics.sh for latest posts
+ run: |
+ bash tools/generate-topics.sh \
+ --source='https://discuss.privacyguides.net/latest.json' \
+ --tag="latest posts" \
+ --destination="./site/en/index.html" \
+ --count=12
+
+ - name: Build Articles
+ run: |
+ pipenv run mkdocs build --config-file mkdocs.blog.yml
+
+ - name: Delete Unreferenced Assets
+ run: |
+ bash tools/delete-unreferenced.sh
+ env:
+ ASSETS_DIR: site/articles/assets
+ SEARCH_DIR: site/articles
+
+ - name: Remove Duplicate Files
+ run: |
+ cd site && bash ../tools/symlink-duplicates.sh
+ ln -s en/index.html index.html
+ ln -s en/about/notices.html license
+ cd ..
+
+ - name: Set zimfile name
+ run: |
+ echo "ZIMFILE_NAME=privacyguides.org_en_all_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
+
+ - name: Create ZIM File
+ uses: 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 en/assets/brand/logos/png/square/pg-yellow.png \
+ -l eng \
+ -t "Privacy Guides" \
+ -d "Your central privacy and security resource to protect yourself online." \
+ -c "Privacy Guides" \
+ -p "Privacy Guides" \
+ -e "https://www.privacyguides.org" \
+ -n "privacyguides.org_en_all" \
+ /data/site/ /data/${{ env.ZIMFILE_NAME }}
+
+ - name: Upload ZIM File
+ uses: actions/upload-artifact@v4
+ with:
+ path: ${{ env.ZIMFILE_NAME }}
+ name: ${{ env.ZIMFILE_NAME }}
+ compression-level: 0
+
+ - name: Run zimcheck
+ uses: addnab/docker-run-action@v3
+ continue-on-error: true
+ with:
+ image: ghcr.io/openzim/zim-tools:3.1.3
+ options: -v ${{ github.workspace }}:/data
+ run: |
+ zimcheck /data/${{ env.ZIMFILE_NAME }}
+
+ package_eng_kb:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+
+ env:
+ LANGUAGE_SWITCHER: false
+ ARTICLES_SITE_BASE_URL: https://www.privacyguides.org/articles/
+
+ steps:
+ - name: Add GitHub Token to Environment
+ run: |
+ echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
+
+ - name: Download Repository
+ uses: actions/checkout@v4
+ with:
+ repository: ${{ inputs.repo }}
+ ref: ${{ inputs.ref }}
+ persist-credentials: "false"
+ fetch-depth: 0
+
+ - name: Download Submodules
+ uses: actions/download-artifact@v4
+ with:
+ pattern: repo-*
+ path: modules
+
+ - name: Move mkdocs-material-insiders to mkdocs-material
+ run: |
+ rmdir modules/mkdocs-material
+ mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
+
+ - name: Move brand submodule to theme/assets/brand
+ run: |
+ rmdir theme/assets/brand
+ mv modules/repo-brand theme/assets/brand
+
+ - name: Install Python (pipenv)
+ uses: actions/setup-python@v5
+ with:
+ cache: "pipenv"
+
+ - name: Install Python Dependencies
+ run: |
+ pip install pipenv
+ pipenv install
+ sudo apt install pngquant
+
+ - name: Generate Donating Members List
+ continue-on-error: true
+ env:
+ DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
+ run: |
+ pip install requests
+ python tools/generate-members.py > includes/members.md
+
+ - name: Build English
+ run: |
+ ./run.sh --build --production --insiders --offline --lang=en
+
+ - name: Run generate-topics.sh for top posts
+ run: |
+ bash tools/generate-topics.sh \
+ --source='https://discuss.privacyguides.net/top.json?period=weekly' \
+ --tag="top posts" \
+ --destination="./site/en/index.html" \
+ --count=3
+
+ - name: Run generate-topics.sh for latest posts
+ run: |
+ bash tools/generate-topics.sh \
+ --source='https://discuss.privacyguides.net/latest.json' \
+ --tag="latest posts" \
+ --destination="./site/en/index.html" \
+ --count=12
+
+ - name: Delete Unreferenced Assets
+ run: |
+ bash tools/delete-unreferenced.sh
+ env:
+ ASSETS_DIR: site/en/assets
+ SEARCH_DIR: site/en
+
+ - name: Remove Duplicate Files
+ run: |
+ cd site && bash ../tools/symlink-duplicates.sh
+ ln -s en/index.html index.html
+ ln -s en/about/notices.html license
+ cd ..
+
+ - name: Set zimfile name
+ run: |
+ echo "ZIMFILE_NAME=privacyguides.org_en_kb_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
+
+ - name: 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 en/assets/brand/logos/png/square/pg-yellow.png \
+ -l eng \
+ -t "Privacy Guides" \
+ -d "Knowledge base articles and recommendations from Privacy Guides." \
+ -c "Privacy Guides" \
+ -p "Privacy Guides" \
+ -e "https://www.privacyguides.org" \
+ -n "privacyguides.org_en_kb" \
+ /data/site/ /data/${{ env.ZIMFILE_NAME }}
+
+ - name: Upload ZIM File
+ uses: actions/upload-artifact@v4
+ with:
+ path: ${{ env.ZIMFILE_NAME }}
+ name: ${{ env.ZIMFILE_NAME }}
+ compression-level: 0
+
+ - name: Run zimcheck
+ uses: addnab/docker-run-action@v3
+ continue-on-error: true
+ with:
+ image: ghcr.io/openzim/zim-tools:3.1.3
+ options: -v ${{ github.workspace }}:/data
+ run: |
+ zimcheck /data/${{ env.ZIMFILE_NAME }}
+
+ package_eng_articles:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+
+ env:
+ MAIN_SITE_BASE_URL: https://www.privacyguides.org/en/
+ MAIN_SITE_ABOUT_URL: https://www.privacyguides.org/en/about/
+ MAIN_SITE_RECOMMENDATIONS_URL: https://www.privacyguides.org/en/tools/
+ MAIN_SITE_KNOWLEDGE_BASE_URL: https://www.privacyguides.org/en/basics/
+
+ steps:
+ - name: Add GitHub Token to Environment
+ run: |
+ echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
+
+ - name: Download Repository
+ uses: actions/checkout@v4
+ with:
+ repository: ${{ inputs.repo }}
+ ref: ${{ inputs.ref }}
+ persist-credentials: "false"
+ fetch-depth: 0
+
+ - name: Download Submodules
+ uses: actions/download-artifact@v4
+ with:
+ pattern: repo-*
+ path: modules
+
+ - name: Move mkdocs-material-insiders to mkdocs-material
+ run: |
+ rmdir modules/mkdocs-material
+ mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
+
+ - name: Move brand submodule to theme/assets/brand
+ run: |
+ rmdir theme/assets/brand
+ mv modules/repo-brand theme/assets/brand
+
+ - name: Install Python (pipenv)
+ uses: actions/setup-python@v5
+ with:
+ cache: "pipenv"
+
+ - name: Install Python Dependencies
+ run: |
+ pip install pipenv
+ pipenv install
+ sudo apt install pngquant
+
+ - name: Build Articles
+ run: |
+ pipenv run mkdocs build --config-file mkdocs.blog.yml
+
+ - name: Delete Unreferenced Assets
+ run: |
+ bash tools/delete-unreferenced.sh
+ env:
+ ASSETS_DIR: site/articles/assets
+ SEARCH_DIR: site/articles
+
+ - name: Remove Duplicate Files
+ run: |
+ cd site && bash ../tools/symlink-duplicates.sh
+ ln -s articles/index.html index.html
+ cd ..
+
+ - name: Set zimfile name
+ run: |
+ echo "ZIMFILE_NAME=privacyguides.org_en_articles_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
+
+ - name: Create ZIM File
+ uses: 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 articles/assets/brand/logos/png/square/pg-yellow.png \
+ -l eng \
+ -t "Privacy Guides" \
+ -d "Long-form articles from the Privacy Guides team and other contributors." \
+ -c "Privacy Guides" \
+ -p "Privacy Guides" \
+ -e "https://www.privacyguides.org" \
+ -n "privacyguides.org_en_articles" \
+ /data/site/ /data/${{ env.ZIMFILE_NAME }}
+
+ - name: Upload ZIM File
+ uses: actions/upload-artifact@v4
+ with:
+ path: ${{ env.ZIMFILE_NAME }}
+ name: ${{ env.ZIMFILE_NAME }}
+ compression-level: 0
+
+ - name: Run zimcheck
+ uses: addnab/docker-run-action@v3
+ continue-on-error: true
+ with:
+ image: ghcr.io/openzim/zim-tools:3.1.3
+ options: -v ${{ github.workspace }}:/data
+ run: |
+ zimcheck /data/${{ env.ZIMFILE_NAME }}
+
+ build_mul:
+ runs-on: ubuntu-latest
+ continue-on-error: true
+ permissions:
+ contents: read
+
+ env:
+ MAIN_SITE_BASE_URL: /en/index.html
+ MAIN_SITE_ABOUT_URL: /en/about.html
+ MAIN_SITE_RECOMMENDATIONS_URL: /en/tools.html
+ MAIN_SITE_KNOWLEDGE_BASE_URL: /en/basics/why-privacy-matters.html
+ ARTICLES_SITE_BASE_URL: /articles/index.html
+
+ strategy:
+ matrix:
+ lang: [en, es, fr, he, it, nl, ru, zh-Hant]
+
+ steps:
+ - name: Add GitHub Token to Environment
+ run: |
+ echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
+
+ - name: Download Repository
+ uses: actions/checkout@v4
+ with:
+ repository: ${{ inputs.repo }}
+ ref: ${{ inputs.ref }}
+ persist-credentials: "false"
+ fetch-depth: 0
+
+ - name: Download Submodules
+ uses: actions/download-artifact@v4
+ with:
+ pattern: repo-*
+ path: modules
+
+ - name: Move mkdocs-material-insiders to mkdocs-material
+ run: |
+ rmdir modules/mkdocs-material
+ mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
+
+ - name: Move brand submodule to theme/assets/brand
+ run: |
+ rmdir theme/assets/brand
+ mv modules/repo-brand theme/assets/brand
+
+ - name: Copy Translation Files
+ if: matrix.lang != 'en'
+ run: |
+ cp -rl modules/repo-i18n/i18n .
+ cp -rl modules/repo-i18n/includes .
+
+ - name: Install Python (pipenv)
+ uses: actions/setup-python@v5
+ with:
+ cache: "pipenv"
+
+ - name: Install Python Dependencies
+ run: |
+ pip install pipenv
+ pipenv install
+ sudo apt install pngquant
+
+ - name: Generate Donating Members List
+ continue-on-error: true
+ env:
+ DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
+ run: |
+ pip install requests
+ python tools/generate-members.py > includes/members.md
+
+ - name: Build Website
+ run: |
+ ./run.sh --build --production --insiders --offline --lang=${{ matrix.lang }}
+
+ - name: Run generate-topics.sh for top posts
+ if: matrix.lang == 'en'
+ run: |
+ bash tools/generate-topics.sh \
+ --source='https://discuss.privacyguides.net/top.json?period=weekly' \
+ --tag="top posts" \
+ --destination="./site/en/index.html" \
+ --count=3
+
+ - name: Run generate-topics.sh for latest posts
+ if: matrix.lang == 'en'
+ run: |
+ bash tools/generate-topics.sh \
+ --source='https://discuss.privacyguides.net/latest.json' \
+ --tag="latest posts" \
+ --destination="./site/en/index.html" \
+ --count=12
+
+ - name: Delete Unreferenced Assets
+ run: |
+ bash tools/delete-unreferenced.sh
+ env:
+ ASSETS_DIR: site/${{ matrix.lang }}/assets
+ SEARCH_DIR: site/${{ matrix.lang }}
+
+ - name: Build Articles
+ if: matrix.lang == 'en'
+ run: |
+ pipenv run mkdocs build --config-file mkdocs.blog.yml
+
+ - name: Delete Unreferenced Assets
+ if: matrix.lang == 'en'
+ run: |
+ bash tools/delete-unreferenced.sh
+ env:
+ ASSETS_DIR: site/articles/assets
+ SEARCH_DIR: site/articles
+
+ - name: Package Website
+ run: |
+ tar -czf site-zimready-${{ matrix.lang }}.tar.gz site
+
+ - name: Upload Site
+ uses: actions/upload-artifact@v4
+ with:
+ name: site-zimready-${{ matrix.lang }}.tar.gz
+ path: site-zimready-${{ matrix.lang }}.tar.gz
+ retention-days: 1
+ compression-level: 0
+
+ package_mul:
+ runs-on: ubuntu-latest
+ needs: [build_mul]
+ permissions:
+ contents: read
+
+ steps:
+ - name: Download Repository
+ uses: actions/checkout@v4
+ with:
+ repository: ${{ inputs.repo }}
+ ref: ${{ inputs.ref }}
+ persist-credentials: "false"
+ fetch-depth: 0
+
+ - name: Download All Sites
+ uses: actions/download-artifact@v4
+ with:
+ pattern: site-zimready-*
+ merge-multiple: true
+
+ - name: List Files (for debugging)
+ run: |
+ for file in *.tar.gz; do tar -zxf "$file"; done
+ ls -la site/
+
+ - name: Remove Duplicate Files
+ run: |
+ cd site && bash ../tools/symlink-duplicates.sh
+ ln -s en/index.html index.html
+ ln -s en/about/notices.html license
+ cd ..
+
+ - name: Set zimfile name
+ run: |
+ echo "ZIMFILE_NAME=privacyguides.org_mul_all_$(date +%Y)-$(date +%m).zim" >> "$GITHUB_ENV"
+
+ - name: 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 en/assets/brand/logos/png/square/pg-yellow.png \
+ -l mul \
+ -t "Privacy Guides" \
+ -d "Your central privacy and security resource to protect yourself online." \
+ -c "Privacy Guides" \
+ -p "Privacy Guides" \
+ -e "https://www.privacyguides.org" \
+ -n "privacyguides.org_mul_all" \
+ /data/site/ /data/${{ env.ZIMFILE_NAME }}
+
+ - name: Upload ZIM File
+ uses: actions/upload-artifact@v4
+ with:
+ path: ${{ env.ZIMFILE_NAME }}
+ name: ${{ env.ZIMFILE_NAME }}
+ compression-level: 0
+
+ - name: Run zimcheck
+ uses: addnab/docker-run-action@v3
+ continue-on-error: true
+ with:
+ image: ghcr.io/openzim/zim-tools:3.1.3
+ options: -v ${{ github.workspace }}:/data
+ run: |
+ zimcheck /data/${{ env.ZIMFILE_NAME }}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index be92650ff..21a371832 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -193,7 +193,7 @@ jobs:
DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
run: |
pip install requests
- python generate-members.py > includes/members.md
+ python tools/generate-members.py > includes/members.md
- name: Build Website
run: |
@@ -202,7 +202,7 @@ jobs:
- name: Run generate-topics.sh for top posts
if: inputs.lang == 'en'
run: |
- bash generate-topics.sh \
+ bash tools/generate-topics.sh \
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
--tag="top posts" \
--destination="./site/en/index.html" \
@@ -211,7 +211,7 @@ jobs:
- name: Run generate-topics.sh for latest posts
if: inputs.lang == 'en'
run: |
- bash generate-topics.sh \
+ bash tools/generate-topics.sh \
--source='https://discuss.privacyguides.net/latest.json' \
--tag="latest posts" \
--destination="./site/en/index.html" \
@@ -289,47 +289,3 @@ jobs:
name: members.md
path: includes/members.md
retention-days: 1
-
- offline_package:
- if: inputs.config == 'offline' && inputs.lang == 'en'
- needs: build
- runs-on: ubuntu-latest
- continue-on-error: ${{ inputs.continue-on-error }}
- permissions:
- contents: read
-
- steps:
- - uses: actions/download-artifact@v4
- with:
- name: site-offline-en.tar.gz
-
- - run: |
- tar -xzf site-offline-en.tar.gz
- tar -czf offline.tar.gz site/en
- zip -r -q offline.zip site/en
-
- - 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/en /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
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index 3a5b12a81..1cd49a409 100644
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -51,7 +51,7 @@ jobs:
strategy:
matrix:
lang: [en, es, fr, he, it, nl, ru, zh-Hant]
- build: [build, offline]
+ build: [build]
permissions:
contents: read
uses: ./.github/workflows/build.yml
@@ -88,6 +88,17 @@ jobs:
continue-on-error: false
context: production
+ build_zimfile:
+ needs: submodule
+ permissions:
+ contents: read
+ uses: ./.github/workflows/build-zimfile.yml
+ with:
+ repo: ${{ github.repository }}
+ ref: ${{ github.ref }}
+ secrets:
+ RO_DISCOURSE_API_KEY: ${{ secrets.RO_DISCOURSE_API_KEY }}
+
release:
name: Create release notes
needs: build
@@ -98,14 +109,14 @@ jobs:
steps:
- uses: actions/download-artifact@v4
with:
- pattern: offline*
+ pattern: *.zim
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"
+ artifacts: "*.zim"
makeLatest: true
deploy:
diff --git a/.github/workflows/update-discussions.yml b/.github/workflows/update-discussions.yml
index 3cfb99fae..7c2bb2a7e 100644
--- a/.github/workflows/update-discussions.yml
+++ b/.github/workflows/update-discussions.yml
@@ -57,7 +57,7 @@ jobs:
- name: Run generate-topics.sh for top posts
run: |
- bash generate-topics.sh \
+ bash tools/generate-topics.sh \
--source='https://discuss.privacyguides.net/top.json?period=weekly' \
--tag="top posts" \
--destination="./site/en/index.html" \
@@ -65,7 +65,7 @@ jobs:
- name: Run generate-topics.sh for latest posts
run: |
- bash generate-topics.sh \
+ bash tools/generate-topics.sh \
--source='https://discuss.privacyguides.net/latest.json' \
--tag="latest posts" \
--destination="./site/en/index.html" \
diff --git a/blog/posts/digital-provenance.md b/blog/posts/digital-provenance.md
index 0821a8216..b9048f1c7 100644
--- a/blog/posts/digital-provenance.md
+++ b/blog/posts/digital-provenance.md
@@ -14,7 +14,6 @@ preview:
# The Power of Digital Provenance in the Age of AI

-
Photo: Kseniya Lapteva / Pexels | Logo: Content Credentials
With the popularity of generative AI, it's becoming more and more difficult to [distinguish](https://uwaterloo.ca/news/media/can-you-tell-ai-generated-people-real-ones) reality from fiction. Can this problem be solved using cryptography? What are the privacy implications of the currently proposed systems?
diff --git a/blog/posts/welcome-to-privacy-guides.md b/blog/posts/welcome-to-privacy-guides.md
index 27734ecfa..2e0fda349 100644
--- a/blog/posts/welcome-to-privacy-guides.md
+++ b/blog/posts/welcome-to-privacy-guides.md
@@ -19,7 +19,6 @@ schema_type: NewsArticle
# Welcome to Privacy Guides

-
Illustration: Jonah Aragon / Privacy Guides
We are excited to announce the launch of [Privacy Guides](https://www.privacyguides.org/) and [r/PrivacyGuides](https://www.reddit.com/r/PrivacyGuides/), and welcome the privacy community to participate in our crowdsourced software recommendations and share tips and tricks for keeping your data safe online. Our goal is to be a central resource for privacy and security-related tips that are usable by anybody, and to carry on the trusted legacy of PrivacyTools.
diff --git a/docs/about.md b/docs/about.md
index 98fdc5fc1..eb28d8817 100644
--- a/docs/about.md
+++ b/docs/about.md
@@ -37,7 +37,7 @@ The best way to get individual help is from our community on Discourse. If you n
{ align=right }
-Have a tip for us, or need to share some sensitive information? The best way to get in touch with us securely is via `@privacyguides.01` on Signal. This group account is monitored by [Jonah](https://discuss.privacyguides.net/u/jonah), [Niek](https://discuss.privacyguides.net/u/niek-de-wilde), [Em](https://discuss.privacyguides.net/u/ematprivacyguides), and [Jordan](https://discuss.privacyguides.net/u/jordan).
+Have a tip for us, or need to share some sensitive information? The best way to get in touch with us securely is via `@privacyguides.01` on Signal. This group account is monitored by [Jonah](https://discuss.privacyguides.net/u/jonah), [Niek](https://discuss.privacyguides.net/u/niek-de-wilde), [Em](https://discuss.privacyguides.net/u/em), and [Jordan](https://discuss.privacyguides.net/u/jordan).
[:simple-signal: Chat on Signal](https://signal.me/#eu/zg9xcrIv5w-EtXt2FmTJgfWv01LmyTed8rpr7RDv35Mizq8ISZ9NJLmYtzsxI0Z4){ .md-button }
@@ -130,7 +130,7 @@ Our staff are paid to contribute to supplemental content at Privacy Guides, like
:material-text-account: Journalist
- [:material-account: Profile](https://discuss.privacyguides.net/u/ematprivacyguides)
+ [:material-account: Profile](https://discuss.privacyguides.net/u/em)
[:material-github:](https://github.com/EmAtPrivacyGuides "GitHub")
[:material-mastodon:](https://infosec.exchange/@Em0nM4stodon "@Em0nM4stodon@infosec.exchange"){rel=me}
diff --git a/mkdocs.blog.yml b/mkdocs.blog.yml
index ee6f08692..2b6b9eb34 100644
--- a/mkdocs.blog.yml
+++ b/mkdocs.blog.yml
@@ -165,6 +165,7 @@ plugins:
meta: {}
optimize:
enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false]
+ cache_dir: !ENV [OPTIMIZE_CACHE, ".cache/plugin/optimize-articles"]
typeset: {}
social:
cards: !ENV [CARDS, true]
diff --git a/mkdocs.videos.yml b/mkdocs.videos.yml
index 3627d9896..8007280e8 100644
--- a/mkdocs.videos.yml
+++ b/mkdocs.videos.yml
@@ -155,6 +155,7 @@ plugins:
meta: {}
optimize:
enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false]
+ cache_dir: !ENV [OPTIMIZE_CACHE, ".cache/plugin/optimize-videos"]
typeset: {}
social:
cards: !ENV [CARDS, true]
diff --git a/mkdocs.yml b/mkdocs.yml
index 28114f4f0..993d024a6 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -122,10 +122,10 @@ extra:
link: https://matrix.to/#/#privacyguides:matrix.org
- icon: material/information-outline
name: !ENV [HOMEPAGE_CTA_ABOUT_NAME, "Learn more about us"]
- link: about/
+ link: !ENV [HOMEPAGE_CTA_ABOUT_LINK, "about/"]
- icon: material/hand-coin
name: !ENV [HOMEPAGE_CTA_DONATE_NAME, "Donate to Privacy Guides"]
- link: about/donate/
+ link: !ENV [HOMEPAGE_CTA_DONATE_LINK, "about/donate/"]
description:
!ENV [
HOMEPAGE_CTA_DESCRIPTION,
@@ -182,6 +182,7 @@ extra:
- icon: simple/torbrowser
link: http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion/
name: !ENV [SOCIAL_TOR_SITE, "Hidden service"]
+ language_switcher: !ENV [LANGUAGE_SWITCHER, true]
alternate:
- name: English
link: /en/
@@ -318,6 +319,7 @@ plugins:
enable_creation_date: true
optimize:
enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false]
+ cache_dir: !ENV [OPTIMIZE_CACHE, ".cache/plugin/optimize"]
typeset: {}
social:
cards: !ENV [CARDS, true]
diff --git a/run.sh b/run.sh
index d24f3690e..c7796fc67 100755
--- a/run.sh
+++ b/run.sh
@@ -86,6 +86,7 @@ if [ "$language" != "en" ]; then
export BUILD_SITE_DIR="site/$language"
export BUILD_SITE_URL="https://www.privacyguides.org/$language"
export BUILD_THEME_LANGUAGE="$language"
+ export OPTIMIZE_CACHE=".cache/plugin/optimize-$language"
fi
# Source per-language strings
diff --git a/theme/partials/copyright.html b/theme/partials/copyright.html
index f869f893d..998582636 100644
--- a/theme/partials/copyright.html
+++ b/theme/partials/copyright.html
@@ -29,7 +29,7 @@
{{ copyright.note }}
-
+
{% for icon in copyright.license %}
{% include ".icons/" ~ icon ~ ".svg" %}
{% endfor %}
diff --git a/theme/partials/donate.html b/theme/partials/donate.html
index 45548fc8e..dac9fa7c1 100644
--- a/theme/partials/donate.html
+++ b/theme/partials/donate.html
@@ -1,7 +1,7 @@