From 483f000036abbbcab4d4c124c9d4ba7c2b01a4d2 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Mon, 17 Nov 2025 19:55:25 +0100 Subject: [PATCH 01/38] Switch from mkdocs-material to zensical Signed-off-by: yubiuser --- .devcontainer/Dockerfile | 2 +- mkdocs.yml | 2 -- netlify.toml | 2 +- package.json | 4 ++-- requirements.txt | 7 +++---- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 9e2e9d0a7..88c4498a7 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -10,6 +10,6 @@ RUN apk add --no-cache \ ENV USER node USER ${USER} -# python packages (as mkdocs) are installed in the user's home directory +# python packages (as zensical) are installed in the user's home directory # but we need them to be accessible from ${PATH} ENV PATH="${PATH}:/home/${USER}/.local/bin" diff --git a/mkdocs.yml b/mkdocs.yml index e5c157fdc..8676d19ba 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -94,8 +94,6 @@ markdown_extensions: auto_append: - docs/abbreviations.md # Include files in other documents like {!some/dir/in/docs/filename.md!} - - markdown_include.include: - base_path: docs # Metadata support in pages # (https://squidfunk.github.io/mkdocs-material/extensions/metadata/) - meta diff --git a/netlify.toml b/netlify.toml index 48742a5aa..eed0088b2 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,7 +1,7 @@ [build] base = "/" publish = "site/" -command = "mkdocs build --clean --strict" +command = "zensical build --clean --strict" [build.environment] PYTHON_VERSION = "3.14" diff --git a/package.json b/package.json index 22fb3f751..7a4bcf88f 100644 --- a/package.json +++ b/package.json @@ -16,12 +16,12 @@ }, "homepage": "https://docs.pi-hole.net/", "scripts": { - "build": "mkdocs build --clean --strict", + "build": "zensical build --clean --strict", "markdownlint": "markdownlint-cli2 \"**/*.md\" \"!**/node_modules/**\"", "linkinator": "linkinator site --recurse --silent --skip \"^(?!http://localhost)\"", "pretest": "npm run build", "test": "npm run markdownlint && npm run linkinator", - "serve": "mkdocs serve --dev-addr 0.0.0.0:8000", + "serve": "zensical serve --dev-addr 0.0.0.0:8000", "start": "npm run serve" }, "devDependencies": { diff --git a/requirements.txt b/requirements.txt index f2848bd54..424e52032 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ -mkdocs==1.6.1 -mkdocs-git-revision-date-localized-plugin==1.5.2 -mkdocs-material==9.7.6 -mkdocs-redirects==1.2.3 +zensical==0.0.8 +mkdocs-git-revision-date-localized-plugin==1.5.0 +mkdocs-redirects==1.2.2 markdown-include==0.8.1 From bc38b415d714c858c0a78060c16a318fa586469a Mon Sep 17 00:00:00 2001 From: yubiuser Date: Mon, 17 Nov 2025 20:07:20 +0100 Subject: [PATCH 02/38] Remove markdown-include and use snippets instead Signed-off-by: yubiuser --- docs/api/auth.md | 1 - docs/api/index.md | 1 - docs/guides/vpn/openvpn/android-client.md | 4 +++- docs/guides/vpn/openvpn/clients.md | 4 +++- docs/guides/vpn/openvpn/dual-VPN.md | 4 +++- docs/guides/vpn/openvpn/dual-operation.md | 4 +++- docs/guides/vpn/openvpn/dynDNS.md | 4 +++- docs/guides/vpn/openvpn/firewall.md | 4 +++- docs/guides/vpn/openvpn/index.md | 4 +++- docs/guides/vpn/openvpn/installation.md | 4 +++- docs/guides/vpn/openvpn/only-dns-via-vpn.md | 4 +++- docs/guides/vpn/openvpn/setup-openvpn-server.md | 4 +++- docs/guides/vpn/openvpn/troubleshooting.md | 4 +++- mkdocs.yml | 4 ---- requirements.txt | 1 - 15 files changed, 33 insertions(+), 18 deletions(-) diff --git a/docs/api/auth.md b/docs/api/auth.md index 18f9b70ff..70bf4df06 100644 --- a/docs/api/auth.md +++ b/docs/api/auth.md @@ -418,4 +418,3 @@ Session-based authentication, while convenient and widely used, does have severa Remember, no security measure is foolproof, but by understanding the potential risks and the multiple layers of defense your Pi-hole implemented against these risks, you can make an informed decision about how to use the Pi-hole API securely in the context of your own scripts. Always use the secure transmission method (HTTPS) offered by your Pi-hole to access the API. The strong encryption will prevent attackers from eavesdropping on your requests and makes stealing your session ID basically impossible. -{!abbreviations.md!} diff --git a/docs/api/index.md b/docs/api/index.md index f3d291589..7b8c2b493 100644 --- a/docs/api/index.md +++ b/docs/api/index.md @@ -200,4 +200,3 @@ Code | Description | Interpretation We recommend writing code that gracefully handles all possible API exceptions. The Pi-hole API is designed to support this by standardized error messages and human-readable hints for errors. -{!abbreviations.md!} diff --git a/docs/guides/vpn/openvpn/android-client.md b/docs/guides/vpn/openvpn/android-client.md index 87699d6be..128e75ca3 100644 --- a/docs/guides/vpn/openvpn/android-client.md +++ b/docs/guides/vpn/openvpn/android-client.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- - Install the official OpenVPN App from the [App Store](https://play.google.com/store/apps/details?id=net.openvpn.openvpn) diff --git a/docs/guides/vpn/openvpn/clients.md b/docs/guides/vpn/openvpn/clients.md index c3fd90f1d..56686986e 100644 --- a/docs/guides/vpn/openvpn/clients.md +++ b/docs/guides/vpn/openvpn/clients.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- ## Create a client config file (`.ovpn`) diff --git a/docs/guides/vpn/openvpn/dual-VPN.md b/docs/guides/vpn/openvpn/dual-VPN.md index 1b9757cc3..ff4b2810a 100644 --- a/docs/guides/vpn/openvpn/dual-VPN.md +++ b/docs/guides/vpn/openvpn/dual-VPN.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- ### Dual VPN Setup - Separate DNS and VPN Traffic diff --git a/docs/guides/vpn/openvpn/dual-operation.md b/docs/guides/vpn/openvpn/dual-operation.md index 3facb2959..e93af3a4a 100644 --- a/docs/guides/vpn/openvpn/dual-operation.md +++ b/docs/guides/vpn/openvpn/dual-operation.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- **Up until now, this wiki has been about a server set up on a cloud host, available on the public Internet. This section is aimed at a server set up in a private network like on a Raspberry Pi.** diff --git a/docs/guides/vpn/openvpn/dynDNS.md b/docs/guides/vpn/openvpn/dynDNS.md index ebcdb5bc5..b54842740 100644 --- a/docs/guides/vpn/openvpn/dynDNS.md +++ b/docs/guides/vpn/openvpn/dynDNS.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- If you operate your Pi-hole + OpenVPN at home, you are likely sitting behind a NAT / dynamically changing IP address. In this case, you should set up a dynamic DNS record, which allows you to reach your server. You can exchange the address that has been configured during the setup of OpenVPN like this: diff --git a/docs/guides/vpn/openvpn/firewall.md b/docs/guides/vpn/openvpn/firewall.md index cb24905da..e4bc466f2 100644 --- a/docs/guides/vpn/openvpn/firewall.md +++ b/docs/guides/vpn/openvpn/firewall.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- ### (optional) Secure the server with firewall rules (`iptables`) diff --git a/docs/guides/vpn/openvpn/index.md b/docs/guides/vpn/openvpn/index.md index 64eba7fa9..8671c2d3b 100644 --- a/docs/guides/vpn/openvpn/index.md +++ b/docs/guides/vpn/openvpn/index.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- This tutorial is tailored for setting up OpenVPN on a cloud-hosted virtual server. If you wish to have this working on your home network, you will need to tailor Pi-hole to listen on `eth0` (or similar), which we explain in [this section of the tutorial](dual-operation.md). diff --git a/docs/guides/vpn/openvpn/installation.md b/docs/guides/vpn/openvpn/installation.md index dc85e0c5e..d27c5ac1d 100644 --- a/docs/guides/vpn/openvpn/installation.md +++ b/docs/guides/vpn/openvpn/installation.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- ## Install an operating system diff --git a/docs/guides/vpn/openvpn/only-dns-via-vpn.md b/docs/guides/vpn/openvpn/only-dns-via-vpn.md index f7c64b68c..3873a10b2 100644 --- a/docs/guides/vpn/openvpn/only-dns-via-vpn.md +++ b/docs/guides/vpn/openvpn/only-dns-via-vpn.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- ### Optional: Only route DNS via VPN diff --git a/docs/guides/vpn/openvpn/setup-openvpn-server.md b/docs/guides/vpn/openvpn/setup-openvpn-server.md index 15876f66b..bf9df979c 100644 --- a/docs/guides/vpn/openvpn/setup-openvpn-server.md +++ b/docs/guides/vpn/openvpn/setup-openvpn-server.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- ### Change OpenVPN's resolvers diff --git a/docs/guides/vpn/openvpn/troubleshooting.md b/docs/guides/vpn/openvpn/troubleshooting.md index 40deeec5f..580d84c48 100644 --- a/docs/guides/vpn/openvpn/troubleshooting.md +++ b/docs/guides/vpn/openvpn/troubleshooting.md @@ -1,4 +1,6 @@ -{!guides/vpn/openvpn/deprecation_notice.md!} +--8<-- +docs/guides/vpn/openvpn/deprecation_notice.md +--8<-- ### CRL expired diff --git a/mkdocs.yml b/mkdocs.yml index 8676d19ba..bfb8a2a8a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -85,15 +85,11 @@ markdown_extensions: # Adds the ability to define abbreviations (https://squidfunk.github.io/mkdocs-material/reference/tooltips/) - abbr - attr_list - # Include files in other documents like {!some/dir/in/docs/filename.md!} - - markdown_include.include: - base_path: docs - pymdownx.snippets: # auto_append abbreviations.md to every file # https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary auto_append: - docs/abbreviations.md - # Include files in other documents like {!some/dir/in/docs/filename.md!} # Metadata support in pages # (https://squidfunk.github.io/mkdocs-material/extensions/metadata/) - meta diff --git a/requirements.txt b/requirements.txt index 424e52032..a42315137 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ zensical==0.0.8 mkdocs-git-revision-date-localized-plugin==1.5.0 mkdocs-redirects==1.2.2 -markdown-include==0.8.1 From 88865d608dfa4eda2c16719652f8c522ec0e6705 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Mon, 17 Nov 2025 23:11:47 +0100 Subject: [PATCH 03/38] Port mkdocs.yml to zensical.toml Signed-off-by: yubiuser --- docs/CNAME | 1 - mkdocs.yml | 285 ----------------------------------------------- requirements.txt | 2 - zensical.toml | 140 +++++++++++++++++++++++ 4 files changed, 140 insertions(+), 288 deletions(-) delete mode 100644 docs/CNAME delete mode 100644 mkdocs.yml create mode 100644 zensical.toml diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index 297dda3c2..000000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -docs.pi-hole.net diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index bfb8a2a8a..000000000 --- a/mkdocs.yml +++ /dev/null @@ -1,285 +0,0 @@ -site_name: 'Pi-hole documentation' -site_url: 'https://docs.pi-hole.net/' -repo_url: 'https://github.com/pi-hole/pi-hole' -edit_uri: '../docs/blob/master/docs/' -copyright: -remote_branch: gh-pages -validation: - links: - anchors: warn -theme: - name: 'material' - custom_dir: overrides -# icon: -# repo: fontawesome/brands/github-alt - favicon: 'images/favicon.ico' - logo: 'images/logo.svg' - language: 'en' - font: - text: 'Source Sans Pro' - code: 'Roboto Mono' - features: - - navigation.top - - navigation.instant - - navigation.indexes - - search.suggest - - search.highlight - - search.share - - content.action.edit - - content.code.copy - palette: - - # Light mode - - media: "(prefers-color-scheme: light)" - scheme: default - primary: indigo - accent: indigo - toggle: - icon: material/lightbulb-outline - name: Switch to dark mode - - # Dark mode - - media: "(prefers-color-scheme: dark)" - scheme: slate - primary: indigo - accent: indigo - toggle: - icon: material/lightbulb - name: Switch to light mode - -markdown_extensions: - # Code highlighting in ``` ``` blocks, superseeds codehilite - - pymdownx.highlight - # allows for the nesting of code blocks inside other blocks - - pymdownx.superfences - - pymdownx.inlinehilite - # Table of Contents - # https://python-markdown.github.io/extensions/toc/ - - toc: - permalink: true - # block-styled side content - # https://squidfunk.github.io/mkdocs-material/reference/admonitions/ - - admonition - # https://squidfunk.github.io/mkdocs-material/setup/extensions/python-markdown-extensions/#details - - pymdownx.details - - # linkifies URL and email links without having to wrap them in Markdown syntax. Also, allows shortens repository issue, pull request, and commit links. - - pymdownx.magiclink - # Task lists (https://facelessuser.github.io/pymdown-extensions/extensions/tasklist/) - - pymdownx.tasklist: - custom_checkbox: true - # Highlight words with ==mark me== - - pymdownx.mark - # Adds support for deletion ~~Delete me~~ and subscript text~a\ subscript~ - - pymdownx.tilde - # This extension is a convenience extension which includes many pymdownx extensions - # (https://facelessuser.github.io/pymdown-extensions/extensions/extra/) - - pymdownx.extra - - # Tabbed provides a syntax to easily add tabbed Markdown content. - # https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/ - - pymdownx.tabbed: - alternate_style: true - # Adds syntax for defining footnotes in Markdown documents (https://squidfunk.github.io/mkdocs-material/reference/footnotes/) - - footnotes - # Adds the ability to define abbreviations (https://squidfunk.github.io/mkdocs-material/reference/tooltips/) - - abbr - - attr_list - - pymdownx.snippets: - # auto_append abbreviations.md to every file - # https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary - auto_append: - - docs/abbreviations.md - # Metadata support in pages - # (https://squidfunk.github.io/mkdocs-material/extensions/metadata/) - - meta - # Tabbed provides a syntax to easily add tabbed Markdown content. - # (https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/) - - pymdownx.tabbed - # InlineHilite is an inline code highlighter inspired by CodeHilite. - # (https://facelessuser.github.io/pymdown-extensions/extensions/inlinehilite/) - - pymdownx.inlinehilite - - pymdownx.arithmatex: - generic: true - -nav: - - 'About Pi-hole': - - 'About Pi-hole': index.md - - 'Contact Us': main/contact.md - - 'Pi-hole Origins': main/origins.md - - 'On the Web': main/coverage.md - - 'Getting Started': - - 'Getting Started': main/index.md - - 'Prerequisites': main/prerequisites.md - - 'Installation': main/basic-install.md - - 'Post-Install': main/post-install.md - - 'Updating': main/update.md - - 'Uninstalling': main/uninstall.md - - 'The  pihole  Command': main/pihole-command.md - - 'Databases': - - 'Databases': database/index.md - - 'Query Database': database/query-database.md - - 'Domain Database': - - 'Domain Database': database/domain-database/index.md - - 'Group Management': database/domain-database/groups.md - - 'Database Recovery': database/domain-database/recovery.md - - 'Pi-hole API': - - 'Pi-hole API': api/index.md - - 'Authentication': api/auth.md - - 'TLS/SSL': api/tls.md - - 'FTLDNS': - - 'FTLDNS': ftldns/index.md - - 'Configuration': ftldns/configfile.md - - 'Interfaces': ftldns/interfaces.md - - 'DNS cache': ftldns/dns-cache.md - - 'DNS resolver': ftldns/dns-resolver.md - - 'Blocking mode': ftldns/blockingmode.md - - 'Privacy levels': ftldns/privacylevels.md - - 'dnsmasq warnings': ftldns/dnsmasq_warn.md - - 'Webserver': ftldns/webserver.md - - 'Advanced': - - 'Install from source': ftldns/compile.md - - 'Signals': 'ftldns/signals.md' - - 'Cache dump': ftldns/cache_dump.md - - 'Packet dump': ftldns/package_dump.md - - 'Debugging': - - 'gdb': ftldns/gdb.md - - 'valgrind': ftldns/valgrind.md - - 'Group Management': - - 'Group Management': group_management/index.md - - 'Examples': group_management/example.md - - 'RegEx Blocking': - - "Regex Blocking": regex/index.md - - "Testing": regex/testmode.md - - "Tutorial": regex/tutorial.md - - "Pi-hole extensions": regex/pi-hole.md - - "Approximate matching": regex/approximate.md - - 'Docker': - - 'Docker': docker/index.md - - 'Configuration': docker/configuration.md - - 'Upgrading': - - 'Upgrading': docker/upgrading/index.md - - 'Upgrading from v5.x': docker/upgrading/v5-v6.md - - 'Building': docker/build-image.md - - 'DHCP': docker/DHCP.md - - 'Tips and Tricks': docker/tips-and-tricks.md - - 'Contributing': - - 'Contributing': guides/github/index.md - - 'Developer Certificate of Origin (DCO)': guides/github/dco.md - - 'How to sign-off commits': guides/github/how-to-signoff.md - - 'How to fork and rebase': guides/github/how-to-fork-rebase.md - - 'Guides': - - 'DNS': - - 'unbound': guides/dns/unbound.md - - 'cloudflared (DoH)': guides/dns/cloudflared.md - - 'dnscrypt-proxy (DoH)': guides/dns/dnscrypt-proxy.md - - 'Upstream DNS Providers': guides/dns/upstream-dns-providers.md - - 'VPN': - - 'WireGuard': - - 'Wireguard': guides/vpn/wireguard/index.md - - 'Concept': guides/vpn/wireguard/concept.md - - 'Install server': guides/vpn/wireguard/server.md - - 'Add client(s)': guides/vpn/wireguard/client.md - - 'Optional extra features': - - 'Make local devices accessible': guides/vpn/wireguard/internal.md - - 'Tunnel all Internet traffic': guides/vpn/wireguard/route-everything.md - - 'Troubleshooting': guides/vpn/wireguard/faq.md - - 'OpenVPN': - - 'OpenVPN': guides/vpn/openvpn/index.md - - 'Installation': guides/vpn/openvpn/installation.md - - 'Setup OpenVPN Server': guides/vpn/openvpn/setup-openvpn-server.md - - 'Firewall Configuration': guides/vpn/openvpn/firewall.md - - 'Connecting clients': - - 'General': guides/vpn/openvpn/clients.md - - 'Android': guides/vpn/openvpn/android-client.md - - 'Optional: Only route DNS via VPN': guides/vpn/openvpn/only-dns-via-vpn.md - - 'Optional: Dual operation: LAN & VPN at the same time': guides/vpn/openvpn/dual-operation.md - - 'Optional: Full and DNS-only': guides/vpn/openvpn/dual-VPN.md - - 'Optional: Dynamic DNS': guides/vpn/openvpn/dynDNS.md - - 'Troubleshooting': guides/vpn/openvpn/troubleshooting.md - - 'Misc': - - 'Home Assistant': guides/misc/homeassistant.md - - 'Benchmarking': guides/misc/benchmark.md - - 'Tor & Pi-hole': - - 'Tor & Pi-hole': guides/misc/tor/index.md - - 'Basic Setup': guides/misc/tor/setup.md - - 'Using Tor': guides/misc/tor/using-tor.md - - 'Performance and other issues': guides/misc/tor/performance-issues.md - - 'Using DNSSEC': guides/misc/tor/dnssec.md - - 'Allowlist and Denylist editing': guides/misc/allowlist-denylist.md - - 'Network Time Protocol': guides/misc/ntp.md - - 'Router setup': - - 'ASUS router': routers/asus.md - - 'Fritz!Box (EN)': routers/fritzbox.md - - 'Fritz!Box (DE)': routers/fritzbox-de.md - - 'Nokia G-240W-B': routers/nokia-G240WB.md - - 'OPNsense': routers/OPNsense.md - - 'TP-Link': routers/tp-link.md - - 'Ubiquiti USG': routers/ubiquiti-usg.md - - 'FAQ': main/faq.md - - 'Community Projects': main/projects.md - -not_in_nav: | - /abbreviations.md - /guides/vpn/openvpn/deprecation_notice.md - -extra: - social: - - icon: fontawesome/solid/earth-americas - link: https://pi-hole.net/ - name: Website - - icon: fontawesome/brands/github - link: https://github.com/pi-hole - name: GitHub - -extra_css: - - extra.css - -plugins: - - search - - git-revision-date-localized: - fallback_to_build_date: true - enable_parallel_processing: false - - redirects: - redirect_maps: - 'ftldns/database.md': database/index.md - 'main/presentations.md': index.md - 'main/prerequesites.md': main/prerequisites.md - 'guides/unbound.md': guides/dns/unbound.md - 'guides/upstream-dns-providers.md': guides/dns/upstream-dns-providers.md - 'guides/dns-over-https.md': guides/dns/cloudflared.md - 'guides/vpn/overview.md': guides/vpn/openvpn/index.md - 'guides/vpn/installation.md': guides/vpn/openvpn/installation.md - 'guides/vpn/setup-openvpn-server.md': guides/vpn/openvpn/setup-openvpn-server.md - 'guides/vpn/firewall.md': guides/vpn/openvpn/firewall.md - 'guides/vpn/clients.md': guides/vpn/openvpn/clients.md - 'guides/vpn/android-client.md': guides/vpn/openvpn/android-client.md - 'guides/vpn/only-dns-via-vpn.md': guides/vpn/openvpn/only-dns-via-vpn.md - 'guides/vpn/dual-operation.md': guides/vpn/openvpn/dual-operation.md - 'guides/vpn/dual-VPN.md': guides/vpn/openvpn/dual-VPN.md - 'guides/vpn/dynDNS.md': guides/vpn/openvpn/dynDNS.md - 'guides/vpn/troubleshooting.md': guides/vpn/openvpn/troubleshooting.md - 'guides/benchmark.md': guides/misc/benchmark.md - 'guides/tor/overview.md': guides/misc/tor/index.md - 'guides/tor/setup.md': guides/misc/tor/setup.md - 'guides/tor/using-tor.md': guides/misc/tor/using-tor.md - 'guides/tor/performance-issues.md': guides/misc/tor/performance-issues.md - 'guides/tor/dnssec.md': guides/misc/tor/dnssec.md - 'guides/whitelist-blacklist.md': guides/misc/allowlist-denylist.md - 'ftldns/regex/index.md': regex/index.md - 'ftldns/regex/overview.md': regex/index.md - 'ftldns/regex/tutorial.md': regex/tutorial.md - 'database/gravity/example.md': group_management/example.md - 'core/pihole-command.md': main/pihole-command.md - 'database/ftl.md': database/query-database.md - 'database/gravity/index.md': database/domain-database/index.md - 'database/gravity/recovery.md': database/domain-database/recovery.md - 'database/gravity/groups.md': database/domain-database/groups.md - 'group_management/groups.md': group_management/index.md - 'regex/overview.md': regex/index.md - 'guides/vpn/wireguard/overview.md': guides/vpn/wireguard/index.md - 'guides/vpn/openvpn/overview.md': guides/vpn/openvpn/index.md - 'guides/misc/tor/overview.md': guides/misc/tor/index.md - 'guides/github/contributing.md': guides/github/index.md - 'guides/misc/whitelist-blacklist.md': guides/misc/allowlist-denylist.md - 'ftldns/debugging.md': ftldns/gdb.md diff --git a/requirements.txt b/requirements.txt index a42315137..26d72fd9a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1 @@ zensical==0.0.8 -mkdocs-git-revision-date-localized-plugin==1.5.0 -mkdocs-redirects==1.2.2 diff --git a/zensical.toml b/zensical.toml new file mode 100644 index 000000000..ca0397253 --- /dev/null +++ b/zensical.toml @@ -0,0 +1,140 @@ +# ---------------------------------------------------------------------------- +# Global options section +# ---------------------------------------------------------------------------- + +[project] +site_name = "Pi-hole documentation" +site_url = "https://docs.pi-hole.net/" +site_description = "A black hole for Internet advertisements" +site_author = "Pi-hole Team" +repo_url = "https://github.com/pi-hole/pi-hole" + +edit_uri = "../docs/blob/master/docs/" + +docs_dir = "docs" + +# This is overwritten by orverrides/partials/copyright.html +# see https://zensical.org/docs/customization/?h=over#overriding-partials +copyright = "" + +extra_css = ["extra.css"] +#extra_javascript = ["assets/javascript/extra.js"] + +# ---------------------------------------------------------------------------- +# Section for configuring theme options +# ---------------------------------------------------------------------------- +[project.theme] + +# change this to "classic" to use the traditional Material for MkDocs look. +variant = "modern" + +custom_dir = "overrides" +favicon = "images/favicon.ico" +logo = "images/logo.svg" +language = "en" + +# Zensical provides a number of feature toggles that change the behavior +# of the documentation site. +features = [ + #"announce.dismiss", + "content.action.edit", + #"content.action.view", + #"content.code.annotate", + "content.code.copy", + #"content.code.select", + #"content.footnote.tooltips", + "content.tabs.link", + #"content.tooltips", + # "header.autohide", + # "navigation.expand", + #"navigation.footer", + "navigation.indexes", + "navigation.instant", + "navigation.instant.prefetch", + #"navigation.instant.progress", + #"navigation.path", + #"navigation.prune", + #"navigation.sections", + #"navigation.tabs", + #"navigation.tabs.sticky", + "navigation.top", + #"navigation.tracking", + "search.highlight", + # "toc.follow", + #"toc.integrate", +] + +# Palette toggle for light mode +[[project.theme.palette]] +scheme = "default" +media = "(prefers-color-scheme: light)" +palette.primary = "indigo" +palette.accent = "indigo" +toggle.icon = "lucide/sun" +toggle.name = "Switch to dark mode" + +# Palette toggle for dark mode +[[project.theme.palette]] +scheme = "slate" +media = "(prefers-color-scheme: dark)" +palette.primary = "indigo" +palette.accent = "indigo" +toggle.icon = "lucide/moon" +toggle.name = "Switch to light mode" + +[project.theme.font] +text = "Source Sans Pro" +code = "Roboto Mono" + +# ---------------------------------------------------------------------------- +# Section for markdown extensions +# ---------------------------------------------------------------------------- + +[project.markdown_extensions.abbr] +[project.markdown_extensions.attr_list] +[project.markdown_extensions.footnotes] +[project.markdown_extensions.toc] +permalink = "true" +permalink_title = "Anchor link to this section" + +[project.markdown_extensions.admonition] +[project.markdown_extensions.pymdownx.details] +[project.markdown_extensions.pymdownx.superfences] + +[project.markdown_extensions.pymdownx.highlight] +anchor_linenums = true +line_spans = "__span" +pygments_lang_class = true + +[project.markdown_extensions.pymdownx.inlinehilite] + +[project.markdown_extensions.pymdownx.snippets] +auto_append = ["abbreviations.md"] + +[project.markdown_extensions.pymdownx.tabbed] +alternate_style = "true" + +[project.markdown_extensions.pymdownx.tilde] + +# ---------------------------------------------------------------------------- +# Section for configuring extra options +# ---------------------------------------------------------------------------- + +[[project.extra.social]] +icon = "fontawesome/solid/earth-americas" +link = "https://pi-hole.net/" +name = "Website" + +[[project.extra.social]] +icon = "fontawesome/brands/github" +link = "https://github.com/pi-hole" +name = "GitHub" + +# ---------------------------------------------------------------------------- +# Navigation section +# ---------------------------------------------------------------------------- + +# nav = [ +# { "Get started" = "index.md" }, +# { "Markdown in 5min" = "markdown.md" }, +# ] From 9dd084b6e490a4de8a1bea11977e241906999c21 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 18 Nov 2025 08:42:46 +0100 Subject: [PATCH 04/38] Update Readme Signed-off-by: yubiuser --- .devcontainer/Dockerfile | 2 +- .editorconfig | 2 +- .github/workflows/codespell.yml | 2 +- README.md | 20 ++++++-------------- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 88c4498a7..320ab762b 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -7,7 +7,7 @@ RUN apk add --no-cache \ py3-pip \ tzdata -ENV USER node +ENV USER=node USER ${USER} # python packages (as zensical) are installed in the user's home directory diff --git a/.editorconfig b/.editorconfig index c5cd13007..f47550771 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,7 +16,7 @@ trim_trailing_whitespace = true tab_width = 2 [*.md] -tab_width = 2 +tab_width = 4 trim_trailing_whitespace = false [*.json] diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml index 870c372ce..720ca8166 100644 --- a/.github/workflows/codespell.yml +++ b/.github/workflows/codespell.yml @@ -17,4 +17,4 @@ jobs: uses: codespell-project/actions-codespell@8f01853be192eb0f849a5c7d721450e7a467c579 #v2.2 with: ignore_words_file: .codespellignore - skip: ./docs/routers/fritzbox-de.md,./mkdocs.yml,./package.json,./package-lock.json,./.markdownlint.json,./requirements.txt, ./MathJax-es5/* + skip: ./docs/routers/fritzbox-de.md,./zensical.toml,./package.json,./package-lock.json,./.markdownlint.json,./requirements.txt diff --git a/README.md b/README.md index 90b4ce398..845c56d7c 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ This repo is the source for the official [Pi-hole documentation](https://docs.pi ### How to contribute -To add a new link on the navigation panel you need to edit the `mkdocs.yml` file in the root of the repo. There is a guide for building the navbar [on the mkdocs wiki](https://www.mkdocs.org/user-guide/configuration/#nav) +To add a new link on the navigation panel you need to edit the `zensical.toml` file in the root of the repo. There is a guide for building the navbar [on the zensical documentation](https://zensical.org/docs/setup/navigation/) To add a new document or guide. @@ -26,7 +26,7 @@ To add a new document or guide. ### Testing your changes -When working on this repo, it is advised that you review your changes locally before committing them. The `mkdocs serve` command can be used to live preview your changes (as you type) on your local machine. +When working on this repo, it is advised that you review your changes locally before committing them. The `zensical serve` command can be used to live preview your changes (as you type) on your local machine. Please make sure you fork the repo and change the clone URL in the example below for your fork: @@ -51,7 +51,7 @@ Please make sure you fork the repo and change the clone URL in the example below - Running the docs server: ```bash - mkdocs serve --dev-addr 0.0.0.0:8000 + zensical serve --dev-addr 0.0.0.0:8000 ``` - Fedora Linux instructions (tested on Fedora Linux 28): @@ -66,20 +66,12 @@ Please make sure you fork the repo and change the clone URL in the example below - Running the docs server: ```bash - mkdocs serve --dev-addr 0.0.0.0:8000 + zensical serve --dev-addr 0.0.0.0:8000 ``` -- Docker instructions: - - One-shot run: +- Docker devcontainer instructions: + - We provide a `devcontainer.json` and a dockerfile which will setup the required development environment for an easy deployment. Devcontainers can be used with various editors, e.g. VS Code - ```bash - docker run -v `pwd`:/opt/app/ -w /opt/app/ -p 8000:8000 -it nikolaik/python-nodejs:python3.7-nodejs16 \ - sh -c "pip install --user -r requirements.txt && \ - /root/.local/bin/mkdocs build && \ - npm ci && \ - npm test && \ - /root/.local/bin/mkdocs serve --dev-addr 0.0.0.0:8000" - ``` After these commands, the current branch is accessible through your favorite browser at From bbee61f5b148c151417d896f38598bfbc9edb753 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 18 Nov 2025 10:02:01 +0100 Subject: [PATCH 05/38] Change ToC title Signed-off-by: yubiuser --- zensical.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/zensical.toml b/zensical.toml index ca0397253..48abe9ac7 100644 --- a/zensical.toml +++ b/zensical.toml @@ -94,6 +94,7 @@ code = "Roboto Mono" [project.markdown_extensions.attr_list] [project.markdown_extensions.footnotes] [project.markdown_extensions.toc] +title = "Table of contents" permalink = "true" permalink_title = "Anchor link to this section" From 6cbde6c67116d2d792730ed6115e1a5d1e89632b Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 18 Nov 2025 12:22:11 +0100 Subject: [PATCH 06/38] Port navigation to zensical.toml Signed-off-by: yubiuser --- .editorconfig | 3 + docs/database/domain-database/groups.md | 4 - docs/database/domain-database/index.md | 4 - docs/docker/DHCP.md | 6 - docs/index.md | 5 - docs/main/contact.md | 6 - docs/main/coverage.md | 6 - docs/main/origins.md | 6 - docs/main/prerequisites.md | 6 - docs/main/projects.md | 6 - zensical.toml | 154 ++++++++++++++++++++++-- 11 files changed, 148 insertions(+), 58 deletions(-) diff --git a/.editorconfig b/.editorconfig index f47550771..e3bc703b9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,6 +15,9 @@ trim_trailing_whitespace = true [*.yml] tab_width = 2 +[*.toml] +tab_width = 2 + [*.md] tab_width = 4 trim_trailing_whitespace = false diff --git a/docs/database/domain-database/groups.md b/docs/database/domain-database/groups.md index 1368ece90..fb635ad6b 100644 --- a/docs/database/domain-database/groups.md +++ b/docs/database/domain-database/groups.md @@ -1,7 +1,3 @@ ---- -title: Group Management ---- - Groups are defined in the `group` table and can have an optional description in addition to the mandatory name of the group. Label | Type | Uniqueness enforced | Content diff --git a/docs/database/domain-database/index.md b/docs/database/domain-database/index.md index 25888b725..0c67a427e 100644 --- a/docs/database/domain-database/index.md +++ b/docs/database/domain-database/index.md @@ -1,7 +1,3 @@ ---- -title: Domain Database ---- - Pi-hole uses the well-known relational database management system SQLite3 for managing the various domains that are used to control the DNS filtering system. The database-based domain management has been added with Pi-hole v5.0. The ability to subscribe to external *allow*lists has been added with Pi-hole v6.0. ## Priorities diff --git a/docs/docker/DHCP.md b/docs/docker/DHCP.md index 366343bee..7f5f8e78d 100644 --- a/docs/docker/DHCP.md +++ b/docs/docker/DHCP.md @@ -1,9 +1,3 @@ ---- -title: Docker DHCP and Network Modes -description: Setting up DHCP for Docker Pi-hole -last_updated: Sat Feb 09 00:00:00 2019 UTC ---- - # Docker DHCP and Network Modes Docker runs in a separate network by default called a docker bridge network, which makes DHCP want to serve addresses to that network and not your LAN network where you probably want it. This document details why Docker Pi-hole DHCP is different from normal Pi-hole and how to fix the problem. diff --git a/docs/index.md b/docs/index.md index 088a613fa..77fc9e188 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,8 +1,3 @@ ---- -title: Overview of Pi-hole -description: Brief overview of Pi-hole ---- -

Pi-hole diff --git a/docs/main/contact.md b/docs/main/contact.md index a24ad50b1..03e946ed2 100644 --- a/docs/main/contact.md +++ b/docs/main/contact.md @@ -1,9 +1,3 @@ ---- -title: Getting in touch -description: Pi-hole contacts and social media -last_updated: Sun Jan 13 18:33:27 2019 UTC ---- - While we are primarily reachable on our [Discourse User Forum](https://discourse.pi-hole.net/), we can also be found on a variety of social media outlets. **Please be sure to check the FAQ's** before starting a new discussion, as we do not have the spare time to reply to every request for assistance. - [Frequently Asked Questions](https://discourse.pi-hole.net/c/faqs) diff --git a/docs/main/coverage.md b/docs/main/coverage.md index efa0ee9cb..24bf07340 100644 --- a/docs/main/coverage.md +++ b/docs/main/coverage.md @@ -1,9 +1,3 @@ ---- -title: Pi-hole News and Blogs -description: Sites and articles about Pi-hole -last_updated: Sun Jan 13 19:20:35 2019 UTC ---- - ## YouTube/Twit/Video - [Security Now Netcast: Pi-hole](https://www.youtube.com/watch?v=p7-osq_y8i8&t=100m26s) _Oct 13, 2015_ diff --git a/docs/main/origins.md b/docs/main/origins.md index b9fd10cf3..2048ef338 100644 --- a/docs/main/origins.md +++ b/docs/main/origins.md @@ -1,9 +1,3 @@ ---- -title: Pi-hole Origins -description: Software packages used in Pi-hole -last_updated: Sun Jan 13 18:35:14 2019 UTC ---- - Pi-hole being a **advertising-aware DNS/Web server**, makes use of the following technologies: - [`dnsmasq`](https://www.thekelleys.org.uk/dnsmasq/doc.html) - a lightweight DNS and DHCP server diff --git a/docs/main/prerequisites.md b/docs/main/prerequisites.md index 685f8f784..883c019d6 100644 --- a/docs/main/prerequisites.md +++ b/docs/main/prerequisites.md @@ -1,9 +1,3 @@ ---- -title: Prerequisites -description: Operating system and network requirements -last_updated: May 25 2020 ---- - ## Hardware Pi-hole is very lightweight and does not require much processing power diff --git a/docs/main/projects.md b/docs/main/projects.md index 0b75197fb..df3097a07 100644 --- a/docs/main/projects.md +++ b/docs/main/projects.md @@ -1,9 +1,3 @@ ---- -title: Community Projects -description: Things built with Pi-hole -last_updated: Sun Sep 06 14:28:14 2020 UTC ---- - - [The Big Blocklist Collection](https://firebog.net/) - [Pi-Hole in the cloud](https://blog.codybunch.com/2015/07/28/Pi-Hole-in-the-cloud/) - [Minibian Pi-hole](https://munkjensen.net/wiki/index.php/See_my_Pi-Hole#Minibian_Pi-hole) diff --git a/zensical.toml b/zensical.toml index 48abe9ac7..7c49734e9 100644 --- a/zensical.toml +++ b/zensical.toml @@ -20,6 +20,151 @@ copyright = "" extra_css = ["extra.css"] #extra_javascript = ["assets/javascript/extra.js"] +# ---------------------------------------------------------------------------- +# Navigation section +# ---------------------------------------------------------------------------- + + nav = [ + {"About Pi-hole" = [ + {"About Pi-hole" = "index.md"}, + {"Getting in touch" = "main/contact.md"}, + {"Pi-hole Origins" = "main/origins.md"}, + {"On the Web" = "main/coverage.md"} + ]}, + {"Getting Started" = [ + {"Getting Started" = "main/index.md"}, + {"Prerequisites" = "main/prerequisites.md"}, + {"Installation" = "main/basic-install.md"}, + {"Post-Install" = "main/post-install.md"}, + {"Updating" = "main/update.md"}, + {"Uninstalling" = "main/uninstall.md"} + ]}, + {"The  pihole  Command" = "main/pihole-command.md"}, + {"Databases" = [ + {"Databases" = "database/index.md"}, + {"Query Database" = "database/query-database.md"}, + {"Domain Database" = [ + {"Domain Database" = "database/domain-database/index.md"}, + {"Group Management" = "database/domain-database/groups.md"}, + {"Database Recovery" = "database/domain-database/recovery.md"} + ]}, + ]}, + {"Pi-hole API" = [ + {"Pi-hole API" = "api/index.md"}, + {"Authentication" = "api/auth.md"}, + {"TLS/SSL" = "api/tls.md"} + ]}, + {"FTLDNS" = [ + {"FTLDNS" = "ftldns/index.md"}, + {"Configuration" = "ftldns/configfile.md"}, + {"Interfaces" = "ftldns/interfaces.md"}, + {"DNS cache" = "ftldns/dns-cache.md"}, + {"DNS resolver" = "ftldns/dns-resolver.md"}, + {"Blocking mode" = "ftldns/blockingmode.md"}, + {"Privacy levels" = "ftldns/privacylevels.md"}, + {"dnsmasq warnings" = "ftldns/dnsmasq_warn.md"}, + {"Webserver" = "ftldns/webserver.md"}, + {"Advanced" = [ + {"Install from source" = "ftldns/compile.md"}, + {"Signals" = "ftldns/signals.md"}, + {"Cache dump" = "ftldns/cache_dump.md"}, + {"Packet dump" = "ftldns/package_dump.md"}, + {"Debugging" = [ + {"gdb" = "ftldns/gdb.md"}, + {"valgrind" = "ftldns/valgrind.md"}, + ]}, + ]}, + ]}, + {"Group Management" = [ + {"Group Management" = "group_management/index.md"}, + {"Examples" = "group_management/example.md"} + ]}, + {"RegEx Blocking" = [ + {"Regex Blocking" = "regex/index.md"}, + {"Testing" = "regex/testmode.md"}, + {"Tutorial" = "regex/tutorial.md"}, + {"Pi-hole extensions" = "regex/pi-hole.md"}, + {"Approximate matching" = "regex/approximate.md"} + ]}, + {"Docker" = [ + {"Docker" = "docker/index.md"}, + {"Configuration" = "docker/configuration.md"}, + {"Upgrading" = [ + {"Upgrading" = "docker/upgrading/index.md"}, + {"Upgrading from v5.x" = "docker/upgrading/v5-v6.md"} + ]}, + {"Building" = "docker/build-image.md"}, + {"DHCP" = "docker/DHCP.md"}, + {"Tips and Tricks" = "docker/tips-and-tricks.md"}, + ]}, + {"Contributing" = [ + {"Contributing" = "guides/github/index.md"}, + {"Developer Certificate of Origin (DCO)" = "guides/github/dco.md"}, + {"How to sign-off commits" = "guides/github/how-to-signoff.md"}, + {"How to fork and rebase" = "guides/github/how-to-fork-rebase.md"} + ]}, + {"Guides" = [ + {"DNS" = [ + {"unbound" = "guides/dns/unbound.md"}, + {"cloudflared (DoH)" = "guides/dns/cloudflared.md"}, + {"dnscrypt-proxy (DoH)" = "guides/dns/dnscrypt-proxy.md"}, + {"Upstream DNS Providers" = "guides/dns/upstream-dns-providers.md"} + ]}, + {"VPN" = [ + {"WireGuard" = [ + {"Wireguard" = "guides/vpn/wireguard/index.md"}, + {"Concept" = "guides/vpn/wireguard/concept.md"}, + {"Install server" = "guides/vpn/wireguard/server.md"}, + {"Add client(s)" = "guides/vpn/wireguard/client.md"}, + {"Optional extra features" = [ + {"Make local devices accessible" = "guides/vpn/wireguard/internal.md"}, + {"Tunnel all Internet traffic" = "guides/vpn/wireguard/route-everything.md"} + ]}, + {"Troubleshooting" = "guides/vpn/wireguard/faq.md"} + ]}, + {"OpenVPN" = [ + {"OpenVPN" = "guides/vpn/openvpn/index.md"}, + {"Installation" = "guides/vpn/openvpn/installation.md"}, + {"Setup OpenVPN Server" = "guides/vpn/openvpn/setup-openvpn-server.md"}, + {"Firewall Configuration" = "guides/vpn/openvpn/firewall.md"}, + {"Connecting clients" = [ + {"General" = "guides/vpn/openvpn/clients.md"}, + {"Android" = "guides/vpn/openvpn/android-client.md"} + ]}, + {"Optional: Only route DNS via VPN" = "guides/vpn/openvpn/only-dns-via-vpn.md"}, + {"Optional: Dual operation: LAN & VPN at the same time" = "guides/vpn/openvpn/dual-operation.md"}, + {"Optional: Full and DNS-only" = "guides/vpn/openvpn/dual-VPN.md"}, + {"Optional: Dynamic DNS" = "guides/vpn/openvpn/dynDNS.md"}, + {"Troubleshooting" = "guides/vpn/openvpn/troubleshooting.md"} + ]} + ]}, + {"Misc" = [ + {"Home Assistant" = "guides/misc/homeassistant.md"}, + {"Benchmarking" = "guides/misc/benchmark.md"}, + {"Tor & Pi-hole" = [ + {"Tor & Pi-hole" = "guides/misc/tor/index.md"}, + {"Basic Setup" = "guides/misc/tor/setup.md"}, + {"Using Tor" = "guides/misc/tor/using-tor.md"}, + {"Performance and other issues" = "guides/misc/tor/performance-issues.md"}, + {"Using DNSSEC" = "guides/misc/tor/dnssec.md"}, + ]}, + {"Allowlist and Denylist editing" = "guides/misc/allowlist-denylist.md"}, + {"Network Time Protocol" = "guides/misc/ntp.md"} + ]} + ]}, + {"Router setup" = [ + {"ASUS router" = "routers/asus.md"}, + {"Fritz!Box (EN)" = "routers/fritzbox.md"}, + {"Fritz!Box (DE)" = "routers/fritzbox-de.md"}, + {"Nokia G-240W-B" = "routers/nokia-G240WB.md"}, + {"OPNsense" = "routers/OPNsense.md"}, + {"TP-Link" = "routers/tp-link.md"}, + {"Ubiquiti USG" = "routers/ubiquiti-usg.md"} + ]}, + {"FAQ" = "main/faq.md"}, + {"Community Projects" = "main/projects.md"} + ] + # ---------------------------------------------------------------------------- # Section for configuring theme options # ---------------------------------------------------------------------------- @@ -130,12 +275,3 @@ name = "Website" icon = "fontawesome/brands/github" link = "https://github.com/pi-hole" name = "GitHub" - -# ---------------------------------------------------------------------------- -# Navigation section -# ---------------------------------------------------------------------------- - -# nav = [ -# { "Get started" = "index.md" }, -# { "Markdown in 5min" = "markdown.md" }, -# ] From 723e14d12b55632f8fb7132a445ec0674a7693fc Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 18 Nov 2025 12:37:00 +0100 Subject: [PATCH 07/38] Enable footnote tooltips, navigation tracking and toc follow Signed-off-by: yubiuser --- zensical.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zensical.toml b/zensical.toml index 7c49734e9..49daffaad 100644 --- a/zensical.toml +++ b/zensical.toml @@ -187,7 +187,7 @@ features = [ #"content.code.annotate", "content.code.copy", #"content.code.select", - #"content.footnote.tooltips", + "content.footnote.tooltips", "content.tabs.link", #"content.tooltips", # "header.autohide", @@ -203,9 +203,9 @@ features = [ #"navigation.tabs", #"navigation.tabs.sticky", "navigation.top", - #"navigation.tracking", + "navigation.tracking", "search.highlight", - # "toc.follow", + "toc.follow", #"toc.integrate", ] From 5ad5b2f939ccbb78b7d42b08518b717dfc3ffad2 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Wed, 19 Nov 2025 11:26:25 +0100 Subject: [PATCH 08/38] Fix abbreviations from glossary. Zensical recommends to place the file outside of `docs` which we should also consider Signed-off-by: yubiuser --- zensical.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zensical.toml b/zensical.toml index 49daffaad..fb014ae02 100644 --- a/zensical.toml +++ b/zensical.toml @@ -255,7 +255,7 @@ pygments_lang_class = true [project.markdown_extensions.pymdownx.inlinehilite] [project.markdown_extensions.pymdownx.snippets] -auto_append = ["abbreviations.md"] +auto_append = ["docs/abbreviations.md"] [project.markdown_extensions.pymdownx.tabbed] alternate_style = "true" From 3c2ab3daded23f96950e2fe3acef0fcba5217f53 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Thu, 20 Nov 2025 17:43:07 +0100 Subject: [PATCH 09/38] Update to zensical 0.0.9 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 26d72fd9a..148c848d5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.8 +zensical==0.0.9 From a32785a0803d989452a40e641ba20118999ece80 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Wed, 26 Nov 2025 08:47:04 +0100 Subject: [PATCH 10/38] Update zensical to 0.0.10 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 148c848d5..7063ca3c7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.9 +zensical==0.0.10 From f2ae2541a8fa1099243841faed7f7967d87e4a96 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Wed, 3 Dec 2025 21:44:06 +0100 Subject: [PATCH 11/38] Update zensical to 0.0.11 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 7063ca3c7..0c02ed9d2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.10 +zensical==0.0.11 From bb14100c8f9cbcd7bd7eecca2dd55bcd17fe5a85 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sat, 6 Dec 2025 11:58:32 +0100 Subject: [PATCH 12/38] Update package-lock.json Signed-off-by: yubiuser --- package-lock.json | 63 ++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index f04d67d46..b1ed4d441 100644 --- a/package-lock.json +++ b/package-lock.json @@ -152,9 +152,9 @@ } }, "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { @@ -278,6 +278,19 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -323,9 +336,9 @@ } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -474,19 +487,6 @@ "entities": "^6.0.0" } }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", @@ -701,6 +701,19 @@ "markdown-it": "bin/markdown-it.mjs" } }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/markdownlint": { "version": "0.40.0", "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.40.0.tgz", @@ -1372,9 +1385,9 @@ } }, "node_modules/mime": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.6.tgz", - "integrity": "sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", + "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", "dev": true, "funding": [ "https://github.com/sponsors/broofa" @@ -1563,9 +1576,9 @@ } }, "node_modules/srcset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-5.0.1.tgz", - "integrity": "sha512-/P1UYbGfJVlxZag7aABNRrulEXAwCSDo7fklafOQrantuPTDmYgijJMks2zusPCVzgW9+4P69mq7w6pYuZpgxw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-5.0.2.tgz", + "integrity": "sha512-pucR5KmXL7uWI59sXE2nuodomLsfnIQDa5Fck0TooiyxsIx+JYGiFm+wFO7aaDvvl/43ipjUjAb5je7dcAwlzQ==", "dev": true, "license": "MIT", "engines": { From 351188fdbfd9496ab6955819970ece3510c16787 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sat, 20 Dec 2025 08:44:53 +0100 Subject: [PATCH 13/38] Update zensical to 0.0.13 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 0c02ed9d2..2c89e4e3c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.11 +zensical==0.0.13 From 750ef49d4dddf2716b5852c30c7c710bc6cfc847 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sun, 21 Dec 2025 18:08:44 +0100 Subject: [PATCH 14/38] Update zensical to 0.0.14 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2c89e4e3c..d4b997cea 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.13 +zensical==0.0.14 From 0349494d88fe74d862c90f7c3c50bee7d302cee2 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Thu, 25 Dec 2025 23:52:39 +0100 Subject: [PATCH 15/38] Update zensical to 0.0.15 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d4b997cea..768cfb342 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.14 +zensical==0.0.15 From 562576d8a3ae09d3e30727f86163a4a5262a5f96 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Thu, 15 Jan 2026 17:11:32 +0100 Subject: [PATCH 16/38] Update zensical to 0.0.16 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 768cfb342..dc35dba9e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.15 +zensical==0.0.16 From 4cf7a7a701a6cf6b761f7363119daa10452c156b Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 20 Jan 2026 10:04:02 +0100 Subject: [PATCH 17/38] Update zensical to 0.0.17 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index dc35dba9e..bad63c321 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.16 +zensical==0.0.17 From bc03fd74d091b20ff1283443bb85cf35d01d705d Mon Sep 17 00:00:00 2001 From: yubiuser Date: Mon, 26 Jan 2026 14:28:58 +0100 Subject: [PATCH 18/38] Update zensical to 0.0.19 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index bad63c321..b811d0ad3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.17 +zensical==0.0.19 From 22968414bf0799fda245fc2cd5cff260e381a1e7 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sat, 31 Jan 2026 12:37:32 +0100 Subject: [PATCH 19/38] Update zensical to 0.0.20 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b811d0ad3..97f8a6e10 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.19 +zensical==0.0.20 From 8b91f4afddd982d999f1c07542e63d92afb3d10d Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sat, 7 Feb 2026 16:49:37 +0100 Subject: [PATCH 20/38] Udpate zensical to 0.0.21 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 97f8a6e10..9b319f9b4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.20 +zensical==0.0.21 From 2d43a3af3d5b02ff7c0ccecbfa6ec5e4d837cfe1 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Thu, 12 Feb 2026 09:05:48 +0100 Subject: [PATCH 21/38] Update zensical to 0.0.23 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 9b319f9b4..1fd9ee4e0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.21 +zensical==0.0.23 From 2694bd510582af8eeb93329f09bcf7bd6d6fa6ac Mon Sep 17 00:00:00 2001 From: yubiuser Date: Thu, 26 Feb 2026 20:11:14 +0100 Subject: [PATCH 22/38] Update to 0.0.24 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1fd9ee4e0..32b234e83 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.23 +zensical==0.0.24 From 1762303e619bd77f1d0fce222e1921bcdd650351 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Thu, 12 Mar 2026 10:15:33 +0100 Subject: [PATCH 23/38] Update zensical to 0.0.26 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 32b234e83..11d6d8e8d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.24 +zensical==0.0.26 From 795a6bbb65456e7f9b6925ffa722edb74e941915 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Fri, 13 Mar 2026 23:17:39 +0100 Subject: [PATCH 24/38] Update zensical to 0.0.27 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 11d6d8e8d..22d152b1e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.26 +zensical==0.0.27 From 4d95b1cb396165b4ae53d04baca30bf04c29ef1e Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sat, 21 Mar 2026 14:11:47 +0100 Subject: [PATCH 25/38] Udpate zensical to 0.0.28 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 22d152b1e..095370411 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.27 +zensical==0.0.28 From 8d14f3b75e52141f0bfe9d084ff9817c43faf185 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Wed, 25 Mar 2026 11:41:05 +0100 Subject: [PATCH 26/38] Update zensical to 0.0.29 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 095370411..d91c01a0b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.28 +zensical==0.0.29 From ec133fe892ba9aeb7cb2ee06bd16faea0312bfd9 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sun, 29 Mar 2026 10:20:18 +0200 Subject: [PATCH 27/38] Update zensical to 0.0.30 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d91c01a0b..a07715357 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.29 +zensical==0.0.30 From 6e46cc2db206ca0b98f5c3158dc297448436dcde Mon Sep 17 00:00:00 2001 From: yubiuser Date: Wed, 1 Apr 2026 19:58:04 +0200 Subject: [PATCH 28/38] Update zensical to 0.0.31 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a07715357..4d2bf9665 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.30 +zensical==0.0.31 From 00c9902036f36ad4de8ab02e1252eadf23493434 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 7 Apr 2026 20:27:08 +0200 Subject: [PATCH 29/38] Update zensical to 0.0.32 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4d2bf9665..8f405362b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.31 +zensical==0.0.32 From ed27db3f17e7b8771b045a08e4fbea3be42af544 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 14 Apr 2026 17:26:42 +0200 Subject: [PATCH 30/38] Update to zensical 0.0.33 and include default enabled Extensions Signed-off-by: yubiuser --- requirements.txt | 2 +- zensical.toml | 33 +++++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/requirements.txt b/requirements.txt index 8f405362b..4a51f3fd2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.32 +zensical==0.0.33 diff --git a/zensical.toml b/zensical.toml index fb014ae02..2b9003f90 100644 --- a/zensical.toml +++ b/zensical.toml @@ -236,16 +236,29 @@ code = "Roboto Mono" # ---------------------------------------------------------------------------- [project.markdown_extensions.abbr] +[project.markdown_extensions.admonition] [project.markdown_extensions.attr_list] +[project.markdown_extensions.def_list] [project.markdown_extensions.footnotes] +[project.markdown_extensions.md_in_html] + [project.markdown_extensions.toc] title = "Table of contents" permalink = "true" permalink_title = "Anchor link to this section" -[project.markdown_extensions.admonition] +[project.markdown_extensions.pymdownx.arithmatex] +generic = true + +[project.markdown_extensions.pymdownx.betterem] +smart_enable = "all" + +[project.markdown_extensions.pymdownx.caret] [project.markdown_extensions.pymdownx.details] -[project.markdown_extensions.pymdownx.superfences] + +[project.markdown_extensions.pymdownx.emoji] +emoji_generator = "zensical.extensions.emoji.to_svg" +emoji_index = "zensical.extensions.emoji.twemoji" [project.markdown_extensions.pymdownx.highlight] anchor_linenums = true @@ -253,15 +266,23 @@ line_spans = "__span" pygments_lang_class = true [project.markdown_extensions.pymdownx.inlinehilite] - -[project.markdown_extensions.pymdownx.snippets] -auto_append = ["docs/abbreviations.md"] +[project.markdown_extensions.pymdownx.keys] +[project.markdown_extensions.pymdownx.mark] +[project.markdown_extensions.pymdownx.smartsymbols] +[project.markdown_extensions.pymdownx.superfences] [project.markdown_extensions.pymdownx.tabbed] -alternate_style = "true" +alternate_style = true + +[project.markdown_extensions.pymdownx.tasklist] +custom_checkbox = true [project.markdown_extensions.pymdownx.tilde] +[project.markdown_extensions.pymdownx.snippets] +auto_append = ["docs/abbreviations.md"] + + # ---------------------------------------------------------------------------- # Section for configuring extra options # ---------------------------------------------------------------------------- From 78cf55f257d0b20d428914bfcc05be9483f2b6fb Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 21 Apr 2026 22:34:51 +0200 Subject: [PATCH 31/38] Update zensical to 0.0.34 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4a51f3fd2..295cb04d5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.33 +zensical==0.0.34 From 33fbd90107e9c562e3f9a93105eda4ecd4732ae2 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sun, 26 Apr 2026 11:02:48 +0200 Subject: [PATCH 32/38] Update zensical to 0.0.36 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 295cb04d5..4a815ff98 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.34 +zensical==0.0.36 From f75f04867795cf561d76497d3f2c4375682c1dfc Mon Sep 17 00:00:00 2001 From: yubiuser Date: Thu, 30 Apr 2026 17:21:58 +0200 Subject: [PATCH 33/38] Update to zensical 0.0.38 and fix issues with link validation Signed-off-by: yubiuser --- docs/docker/configuration.md | 2 +- docs/main/coverage.md | 1 - requirements.txt | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/docker/configuration.md b/docs/docker/configuration.md index ed042dac1..f3656a840 100644 --- a/docs/docker/configuration.md +++ b/docs/docker/configuration.md @@ -59,7 +59,7 @@ An example of how some of these variables may look in your compose file | :--- | :--- | | `TZ` | Set your [timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) to make sure logs rotate at local midnight instead of at UTC midnight. | | `FTLCONF_webserver_api_password` | To set a specific password for the web interface (per the quick-start example).

If this variable is not detected, and you have not already set one previously inside the container via `pihole setpassword` or `pihole-FTL --config webserver.api.password`, then a random password will be assigned on startup, and will be printed to the log.

You can find this password by running `docker logs pihole` and looking for "random password". See [Setting the Web Interface Password](#setting-the-web-interface-password) below for usage examples. | -| `FTLCONF_dns_upstreams` | Upstream DNS server(s) for Pi-hole to forward queries to, separated by a semicolon

Supports non-standard ports with #[port number] e.g `127.0.0.1#5053;8.8.8.8;8.8.4.4`

Supports [Docker service names and links](https://docs.docker.com/compose/networking/) instead of IPs e.g `upstream0;upstream1` where upstream0 and upstream1 are the service names of or links to docker services | +| `FTLCONF_dns_upstreams` | Upstream DNS server(s) for Pi-hole to forward queries to, separated by a semicolon

Supports non-standard ports with #\[port\] number e.g `127.0.0.1#5053;8.8.8.8;8.8.4.4`

Supports [Docker service names and links](https://docs.docker.com/compose/networking/) instead of IPs e.g `upstream0;upstream1` where upstream0 and upstream1 are the service names of or links to docker services | ## Setting the Web Interface Password {: #setting-the-web-interface-password } diff --git a/docs/main/coverage.md b/docs/main/coverage.md index 24bf07340..52448dfcc 100644 --- a/docs/main/coverage.md +++ b/docs/main/coverage.md @@ -5,7 +5,6 @@ - [Foolish Tech Show](https://www.youtube.com/watch?v=bYyena0I9yc&t=2m4s) _Dec 23, 2015_ - [Digital Trends: 5 Fun, Easy Projects You Can Try With a $35 Raspberry Pi](https://www.youtube.com/watch?v=QwrKlyC2kdM&t=1m42s) _Mar 22, 2016_ - [Adafruit: Raspberry Pi Quick Look at Pi Hole ad blocking server with Tony D](https://www.youtube.com/watch?v=eg4u2j1HYlI) _Jun 20, 2016_ -- [The Defrag Show: Endoscope USB Camera, The Final \[HoloLens\] Vote, Adblock Pi and more](https://channel9.msdn.com/Shows/The-Defrag-Show/Defrag-Endoscope-USB-Camera-The-Final-HoloLens-Vote-Adblock-Pi-and-more#time=20m39s) _Jan 27, 2016_ - [Know How 355: Killing ads with a Raspberry Pi-Hole!](https://www.twit.tv/shows/know-how/episodes/355) _Nov 9, 2017_ - [Linus Tech Tips: Block EVERY Online Ad with THIS](https://www.youtube.com/watch?v=KBXTnrD_Zs4) _Aug 28, 2019_ diff --git a/requirements.txt b/requirements.txt index 4a815ff98..92a678f53 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.36 +zensical==0.0.38 From f006cffe08089f5179465a958d7319c716915fb0 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Fri, 1 May 2026 19:05:26 +0200 Subject: [PATCH 34/38] Update zensical to 0.0.39 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 92a678f53..b1419a7b6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.38 +zensical==0.0.39 From d79dba911b4ea03297e7f874021c5683b67df05b Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 5 May 2026 19:24:56 +0200 Subject: [PATCH 35/38] Update zensical to 0.0.40 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b1419a7b6..fbaafef2b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.39 +zensical==0.0.40 From 0941ffb84c69d80c6645a24bf3a0b86c52e394a3 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Sat, 9 May 2026 16:39:21 +0200 Subject: [PATCH 36/38] Update zensical to 0.0.41 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fbaafef2b..3e4a2e791 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.40 +zensical==0.0.41 From a0b502bf49446fb514c5f22ddb46f7308c88f1d9 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Fri, 15 May 2026 13:09:17 +0200 Subject: [PATCH 37/38] Update zensical to 0.0.42 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 3e4a2e791..2cefade4e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.41 +zensical==0.0.42 From 28812897af54d3767686cbef0ecc064ab1820360 Mon Sep 17 00:00:00 2001 From: yubiuser Date: Tue, 19 May 2026 20:56:37 +0200 Subject: [PATCH 38/38] Update zensical to 0.0.43 Signed-off-by: yubiuser --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2cefade4e..0823f99c5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -zensical==0.0.42 +zensical==0.0.43