diff --git a/.github/workflows/mkdocs_ci.yml b/.github/workflows/zensical_ci.yml
similarity index 77%
rename from .github/workflows/mkdocs_ci.yml
rename to .github/workflows/zensical_ci.yml
index 126b5b5..90b0af9 100644
--- a/.github/workflows/mkdocs_ci.yml
+++ b/.github/workflows/zensical_ci.yml
@@ -1,88 +1,91 @@
-name: Mkdocs Deploy
-on:
- repository_dispatch:
- types: [maintainerr-release]
- workflow_dispatch:
- inputs:
- versionInput:
- description: 'Input version from Maintainerr release'
- required: true
- isDev:
- description: 'Is this a dev version?'
- required: true
- type: boolean
-
-permissions:
- contents: write
-
-jobs:
- deploy:
- runs-on: ubuntu-latest
- if: github.event.repository.fork == false
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
- ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || github.ref}}
- sparse-checkout: |
- docs
- layouts
-
- - name: Validate Version Input
- run: |
- VERSION="${{ github.event.inputs.versionInput || github.event.client_payload.versionInput }}"
-
- if [[ ! "$VERSION" =~ ^[a-zA-Z0-9._-]+$ ]]; then
- echo "Invalid version format: '$VERSION'"
- echo "Allowed characters: letters, numbers, dots (.), hyphens (-), and underscores (_)"
- exit 1
- fi
- echo "Version format is valid: $VERSION"
-
- - name: Configure Git Credentials
- run: |
- git config user.name github-actions[bot]
- git config user.email 41898282+github-actions[bot]@users.noreply.github.com
-
- - uses: actions/setup-python@v5
- with:
- python-version: 3.x
-
- - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
-
- - uses: actions/cache@v4
- with:
- key: mkdocs-material-${{ env.cache_id }}
- path: .cache
- restore-keys: |
- mkdocs-material-
-
- - run: sudo apt-get install pngquant
- - run: pip install mkdocs-glightbox
- - run: pip install mkdocs-swagger-ui-tag
- - run: pip install "mkdocs-material[imaging]"
- - run: pip install mike
- - run: pip install mkdocs-git-revision-date-localized-plugin
- - run: pip install mkdocs-git-committers-plugin-2
- - run: pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
-
- - name: Deploy Documentation
- run: |
- VERSION="${{ github.event.inputs.versionInput || github.event.client_payload.versionInput }}"
-
- if [ "${{ github.event_name }}" == "repository_dispatch" ]; then
- mike deploy --update-aliases "$VERSION" latest
- else
- if [ "${{ github.event.inputs.isDev }}" == "false" ]; then
- mike deploy --update-aliases "$VERSION" latest
- else
- mike deploy --push --update-aliases "$VERSION" dev
- fi
- fi
-
- - name: Set Default Version to Latest
- if: github.event_name == 'repository_dispatch' || github.event.inputs.isDev == 'false'
- run: mike set-default --push --allow-empty latest
-
- env:
- GH_TOKEN: ${{ secrets.GH_TOKEN }}
+name: Documentation Deploy
+on:
+ repository_dispatch:
+ types: [maintainerr-release]
+ workflow_dispatch:
+ inputs:
+ versionInput:
+ description: 'What version of Maintainerr are these docs for?'
+ required: true
+ isDev:
+ description: 'Is this a dev version?'
+ required: true
+ type: boolean
+
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+jobs:
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ if: github.event.repository.fork == false
+ steps:
+ - uses: actions/configure-pages@v5
+ - uses: actions/checkout@v5
+ with:
+ fetch-depth: 0
+ ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.ref || github.ref}}
+ sparse-checkout: |
+ docs
+ layouts
+
+ - name: Validate Version Input
+ run: |
+ VERSION="${{ github.event.inputs.versionInput || github.event.client_payload.versionInput }}"
+
+ if [[ ! "$VERSION" =~ ^[a-zA-Z0-9._-]+$ ]]; then
+ echo "Invalid version format: '$VERSION'"
+ echo "Allowed characters: letters, numbers, dots (.), hyphens (-), and underscores (_)"
+ exit 1
+ fi
+ echo "Version format is valid: $VERSION"
+
+ - name: Configure Git Credentials
+ run: |
+ git config user.name github-actions[bot]
+ git config user.email 41898282+github-actions[bot]@users.noreply.github.com
+
+ - uses: actions/setup-python@v5
+ with:
+ python-version: 3.x
+
+ - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
+
+ - uses: actions/cache@v4
+ with:
+ key: mkdocs-material-${{ env.cache_id }}
+ path: .cache
+ restore-keys: |
+ mkdocs-material-
+
+ - run: pip install zensical
+ - run: zensical build --clean
+ - uses: actions/upload-pages-artifact@v4
+ with:
+ path: site
+ - uses: actions/deploy-pages@v4
+ - name: Deploy Documentation
+ run: |
+ VERSION="${{ github.event.inputs.versionInput || github.event.client_payload.versionInput }}"
+
+ if [ "${{ github.event_name }}" == "repository_dispatch" ]; then
+ mike deploy --update-aliases "$VERSION" latest
+ else
+ if [ "${{ github.event.inputs.isDev }}" == "false" ]; then
+ mike deploy --update-aliases "$VERSION" latest
+ else
+ mike deploy --push --update-aliases "$VERSION" dev
+ fi
+ fi
+
+ - name: Set Default Version to Latest
+ if: github.event_name == 'repository_dispatch' || github.event.inputs.isDev == 'false'
+ run: mike set-default --push --allow-empty latest
+
+ env:
+ GH_TOKEN: ${{ secrets.GH_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 995082d..6de46b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,49 @@
-.cache
+# System files
+.DS_Store
+Thumbs.db
+desktop.ini
+
+# Python
+__pycache__/
+*.py[cod]
+*$py.class
+*.so
+.Python
+.env
+.venv
+env/
+venv/
+ENV/
+dist/
+build/
+*.egg-info/
+
+# MkDocs/Documentation
+site/
+.cache/
+.temp/
+.doctrees/
+
+# IDE
+.idea/
+.vscode/
+*.swp
+*.swo
+*~
+
+# Project specific
action_execute.sh
-ascii.txt
action_execute_dev.sh
+ascii.txt
+
+# Dependencies
+node_modules/
+package-lock.json
+yarn.lock
+
+# Local development
+*.log
+.coverage
+coverage/
+htmlcov/
+.pytest_cache/
\ No newline at end of file
diff --git a/docs/extensions/preview.py b/docs/extensions/preview.py.bak
similarity index 100%
rename from docs/extensions/preview.py
rename to docs/extensions/preview.py.bak
diff --git a/docs/overrides/partials/integrations/analytics.html b/docs/overrides/partials/integrations/analytics.html.bak
similarity index 97%
rename from docs/overrides/partials/integrations/analytics.html
rename to docs/overrides/partials/integrations/analytics.html.bak
index 0861edb..8b4e9af 100644
--- a/docs/overrides/partials/integrations/analytics.html
+++ b/docs/overrides/partials/integrations/analytics.html.bak
@@ -1,51 +1,51 @@
-
-{% if config.extra.analytics %}
- {% set provider = config.extra.analytics.provider %}
-{% endif %}
-
-
-{% if provider %}
- {% include "partials/integrations/analytics/" ~ provider ~ ".html" %}
-
- {% if config.extra.consent %}
-
- {% endif %}
-{% endif %}
+
+{% if config.extra.analytics %}
+ {% set provider = config.extra.analytics.provider %}
+{% endif %}
+
+
+{% if provider %}
+ {% include "partials/integrations/analytics/" ~ provider ~ ".html" %}
+
+ {% if config.extra.consent %}
+
+ {% endif %}
+{% endif %}
diff --git a/mkdocs.yml b/mkdocs.yml.bak
similarity index 99%
rename from mkdocs.yml
rename to mkdocs.yml.bak
index 9da9d20..ae54089 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml.bak
@@ -261,4 +261,3 @@ nav:
- API.md
- Walkthroughs:
- blog/index.md
-
diff --git a/toml_example.toml.bak b/toml_example.toml.bak
new file mode 100644
index 0000000..81eb973
--- /dev/null
+++ b/toml_example.toml.bak
@@ -0,0 +1,304 @@
+# ============================================================================
+#
+# The configuration produced by default is meant to highlight the features
+# that Zensical provides and to serve as a starting point for your own
+# projects.
+#
+# ============================================================================
+
+[project]
+
+# The site_name is shown in the page header and the browser window title
+#
+# Read more: https://zensical.org/docs/setup/basics/#site_name
+site_name = "Documentation"
+
+# The site_description is included in the HTML head and should contain a
+# meaningful description of the site content for use by search engines.
+#
+# Read more: https://zensical.org/docs/setup/basics/#site_description
+site_description = "A new project generated from the default template project."
+
+# The site_author attribute. This is used in the HTML head element.
+#
+# Read more: https://zensical.org/docs/setup/basics/#site_author
+site_author = ""
+
+# The site_url is the canonical URL for your site. When building online
+# documentation you should set this.
+# Read more: https://zensical.org/docs/setup/basics/#site_url
+#site_url = "https://www.example.com/"
+
+# The copyright notice appears in the page footer and can contain an HTML
+# fragment.
+#
+# Read more: https://zensical.org/docs/setup/basics/#copyright
+copyright = """
+Copyright © 2025 The authors
+"""
+
+# Zensical supports both implicit navigation and explicitly defined navigation.
+# If you decide not to define a navigation here then Zensical will simply
+# derive the navigation structure from the directory structure of your
+# "docs_dir". The definition below demonstrates how a navigation structure
+# can be defined using TOML syntax.
+#
+# Read more: https://zensical.org/docs/setup/navigation/
+# nav = [
+# { "Get started" = "index.md" },
+# { "Markdown in 5min" = "markdown.md" },
+# ]
+
+# With the "extra_css" option you can add your own CSS styling to customize
+# your Zensical project according to your needs. You can add any number of
+# CSS files.
+#
+# The path provided should be relative to the "docs_dir".
+#
+# Read more: https://zensical.org/docs/customization/#additional-css
+#
+#extra_css = ["assets/stylesheets/extra.css"]
+
+# With the `extra_javascript` option you can add your own JavaScript to your
+# project to customize the behavior according to your needs.
+#
+# The path provided should be relative to the "docs_dir".
+#
+# Read more: https://zensical.org/docs/customization/#additional-javascript
+#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 = "classic"
+
+# Zensical allows you to override specific blocks, partials, or whole
+# templates as well as to define your own templates. To do this, uncomment
+# the custom_dir setting below and set it to a directory in which you
+# keep your template overrides.
+#
+# Read more:
+# - https://zensical.org/docs/customization/#extending-the-theme
+#
+#custom_dir = "overrides"
+
+# With the "favicon" option you can set your own image to use as the icon
+# browsers will use in the browser title bar or tab bar. The path provided
+# must be relative to the "docs_dir".
+#
+# Read more:
+# - https://zensical.org/docs/setup/logo-and-icons/#favicon
+# - https://developer.mozilla.org/en-US/docs/Glossary/Favicon
+#
+#favicon = "assets/images/favicon.png"
+
+# Zensical supports more than 60 different languages. This means that the
+# labels and tooltips that Zensical's templates produce are translated.
+# The "language" option allows you to set the language used. This language
+# is also indicated in the HTML head element to help with accessibility
+# and guide search engines and translation tools.
+#
+# The default language is "en" (English). It is possible to create
+# sites with multiple languages and configure a language selector. See
+# the documentation for details.
+#
+# Read more:
+# - https://zensical.org/docs/setup/language/
+#
+language = "en"
+
+# Zensical provides a number of feature toggles that change the behavior
+# of the documentation site.
+features = [
+ # Zensical includes an announcement bar. This feature allows users to
+ # dismiss it then they have read the announcement.
+ # https://zensical.org/docs/setup/header/#announcement-bar
+ "announce.dismiss",
+
+ # If you have a repository configured and turn feature this on, Zensical
+ # will generate an edit button for the page. This works for common
+ # repository hosting services.
+ # https://zensical.org/docs/setup/repository/#code-actions
+ #"content.action.edit",
+
+ # If you have a repository configured and turn feature this on, Zensical
+ # will generate a button that allows the user to view the Markdown
+ # code for the current page.
+ # https://zensical.org/docs/setup/repository/#code-actions
+ #"content.action.view",
+
+ # Code annotations allow you to add an icon with a tooltip to your
+ # code blocks to provide explanations at crucial points.
+ # https://zensical.org/docs/authoring/code-blocks/#code-annotations
+ "content.code.annotate",
+
+ # This feature turns on a button in code blocks that allow users to
+ # copy the content to their clipboard without first selecting it.
+ # https://zensical.org/docs/authoring/code-blocks/#code-copy-button
+ "content.code.copy",
+
+ # Code blocks can include a button to allow for the selection of line
+ # ranges by the user.
+ # https://zensical.org/docs/authoring/code-blocks/#code-selection-button
+ "content.code.select",
+
+ # Zensical can render footnotes as inline tooltips, so the user can read
+ # the footnote without leaving the context of the document.
+ # https://zensical.org/docs/authoring/footnotes/#footnote-tooltips
+ "content.footnote.tooltips",
+
+ # If you have many content tabs that have the same titles (e.g., "Python",
+ # "JavaScript", "Cobol"), this feature causes all of them to switch to
+ # at the same time when the user chooses their language in one.
+ # https://zensical.org/docs/authoring/content-tabs/#linked-content-tabs
+ "content.tabs.link",
+
+ # TODO: not sure I understand this one? Is there a demo of this in the docs?
+ # https://zensical.org/docs/authoring/tooltips/#improved-tooltips
+ "content.tooltips",
+
+ # With this feature enabled, Zensical will automatically hide parts
+ # of the header when the user scrolls past a certain point.
+ # https://zensical.org/docs/setup/header/#automatic-hiding
+ # "header.autohide",
+
+ # Turn on this feature to expand all collapsible sections in the
+ # navigation sidebar by default.
+ # https://zensical.org/docs/setup/navigation/#navigation-expansion
+ # "navigation.expand",
+
+ # This feature turns on navigation elements in the footer that allow the
+ # user to navigate to a next or previous page.
+ # https://zensical.org/docs/setup/footer/#navigation
+ "navigation.footer",
+
+ # When section index pages are enabled, documents can be directly attached
+ # to sections, which is particularly useful for providing overview pages.
+ # https://zensical.org/docs/setup/navigation/#section-index-pages
+ "navigation.indexes",
+
+ # When instant navigation is enabled, clicks on all internal links will be
+ # intercepted and dispatched via XHR without fully reloading the page.
+ # https://zensical.org/docs/setup/navigation/#instant-navigation
+ "navigation.instant",
+
+ # With instant prefetching, your site will start to fetch a page once the
+ # user hovers over a link. This will reduce the perceived loading time
+ # for the user.
+ # https://zensical.org/docs/setup/navigation/#instant-prefetching
+ "navigation.instant.prefetch",
+
+ # In order to provide a better user experience on slow connections when
+ # using instant navigation, a progress indicator can be enabled.
+ # https://zensical.org/docs/setup/navigation/#progress-indicator
+ #"navigation.instant.progress"
+
+ # When navigation paths are activated, a breadcrumb navigation is rendered
+ # above the title of each page
+ # https://zensical.org/docs/setup/navigation/#navigation-path
+ "navigation.path",
+
+ # When pruning is enabled, only the visible navigation items are included
+ # in the rendered HTML, reducing the size of the built site by 33% or more.
+ # https://zensical.org/docs/setup/navigation/#navigation-pruning
+ #"navigation.prune",
+
+ # When sections are enabled, top-level sections are rendered as groups in
+ # the sidebar for viewports above 1220px, but remain as-is on mobile.
+ # https://zensical.org/docs/setup/navigation/#navigation-sections
+ "navigation.sections",
+
+ # When tabs are enabled, top-level sections are rendered in a menu layer
+ # below the header for viewports above 1220px, but remain as-is on mobile.
+ # https://zensical.org/docs/setup/navigation/#navigation-tabs
+ #"navigation.tabs",
+
+ # When sticky tabs are enabled, navigation tabs will lock below the header
+ # and always remain visible when scrolling down.
+ # https://zensical.org/docs/setup/navigation/#sticky-navigation-tabs
+ #"navigation.tabs.sticky",
+
+ # A back-to-top button can be shown when the user, after scrolling down,
+ # starts to scroll up again.
+ # https://zensical.org/docs/setup/navigation/#back-to-top-button
+ "navigation.top",
+
+ # When anchor tracking is enabled, the URL in the address bar is
+ # automatically updated with the active anchor as highlighted in the table
+ # of contents.
+ # https://zensical.org/docs/setup/navigation/#anchor-tracking
+ "navigation.tracking",
+
+ # When search highlighting is enabled and a user clicks on a search result,
+ # Zensical will highlight all occurrences after following the link.
+ # https://zensical.org/docs/setup/search/#search-highlighting
+ "search.highlight",
+
+ # When anchor following for the table of contents is enabled, the sidebar
+ # is automatically scrolled so that the active anchor is always visible.
+ # https://zensical.org/docs/setup/navigation/#anchor-following
+ # "toc.follow"
+
+ # When navigation integration for the table of contents is enabled, it is
+ # always rendered as part of the navigation sidebar on the left.
+ # https://zensical.org/docs/setup/navigation/#navigation-integration
+ #"toc.integrate"
+]
+
+# ----------------------------------------------------------------------------
+# In the "palette" subsection you can configure options for the color scheme.
+# You can configure different color # schemes, e.g., to turn on dark mode,
+# that the user can switch between. Each color scheme can be further
+# customized.
+#
+# Read more:
+# - https://zensical.org/docs/setup/colors/
+# ----------------------------------------------------------------------------
+[[project.theme.palette]]
+scheme = "default"
+toggle.icon = "lucide/sun"
+toggle.name = "Switch to dark mode"
+
+[[project.theme.palette]]
+scheme = "slate"
+toggle.icon = "lucide/moon"
+toggle.name = "Switch to light mode"
+
+# ----------------------------------------------------------------------------
+# In the "font" subsection you can configure the fonts used. By default, fonts
+# are loaded from Google Fonts, giving you a wide range of choices from a set
+# of suitably licensed fonts. There are options for a normal text font and for
+# a monospaced font used in code blocks.
+# ----------------------------------------------------------------------------
+#[project.theme.font]
+#text = "Inter"
+#code = "Jetbrains Mono"
+
+# ----------------------------------------------------------------------------
+# You can configure your own logo to be shown in the header using the "logo"
+# option in the "icons" subsection. The logo can be a path to a file in your
+# "docs_dir" or it can be a path to an icon.
+#
+# Likewise, you can customize the logo used for the repository section of the
+# header. Zensical derives the default logo for this from the repository URL.
+# See below...
+#
+# There are other icons you can customize. See the documentation for details.
+#
+# Read more:
+# - https://zensical.org/docs/setup/logo-and-icons
+# - https://zensical.org/docs/authoring/icons-emojis/#search
+# ----------------------------------------------------------------------------
+#[project.theme.icon]
+#logo = "lucide/smile"
+#repo = "lucide/smile"
+
+# ----------------------------------------------------------------------------
+# The "extra" section contains miscellaneous settings.
+# ----------------------------------------------------------------------------
+#[[project.extra.social]]
+#icon = "fontawesome/brands/github"
+#link = "https://github.com/user/repo"
diff --git a/zensical.toml b/zensical.toml
new file mode 100644
index 0000000..88a086c
--- /dev/null
+++ b/zensical.toml
@@ -0,0 +1,260 @@
+
+# Copyright (c) 2016-2024 Martin Donath
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions=
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+
+# Project information
+[project]
+site_name = "Maintainerr Documentation"
+site_url = "https://docs.maintainerr.info/"
+site_author = "ydkmlt84"
+site_description = "Documentation for the wildly popular Maintainerr project."
+use_directory_urls = true
+# Repository
+repo_name = "maintainerr/maintainerr"
+repo_url = "https://github.com/maintainerr/maintainerr"
+copyright = "Copyright © Jorenn92"
+# Extras
+extra_css = ["docs/assets/stylesheets"]
+# extra_javascript = ["docs/assets/javascripts/swagger-ui-bundle.js"]
+
+# Configuration
+## Theme Setup
+[project.theme]
+font.text = "Roboto"
+font.code = "Roboto Mono"
+favicon = "images/favicon.ico"
+logo = "images/logo_icon.svg"
+language = "en"
+features = [
+ "content.code.annotate",
+ "content.code.copy",
+ "content.tooltips",
+ "content.footnote.tooltips",
+ "content.tabs.link",
+ # - header.autohide
+ # - navigation.expand
+ "navigation.indexes",
+ #- navigation.instant
+ # - navigation.instant.prefetch
+ #- navigation.instant.progress
+ # - navigation.instant.preview
+ # - navigation.path
+ # - navigation.prune
+ "navigation.sections",
+ "navigation.tabs",
+ "navigation.tabs.sticky",
+ "navigation.top",
+ # - navigation.tracking
+ "search.highlight",
+ "search.share",
+ "toc.follow",
+ # - toc.integrate
+]
+[project.theme.pallete]
+primary = "grey"
+accent = "orange"
+[project.theme.icon]
+repo = "material/github"
+[[project.theme.palette]]
+media = "(prefers-color-scheme= light)"
+scheme = "default"
+toggle.icon = "material/weather-sunny"
+toggle.name = "Switch to dark mode"
+[[project.theme.palette]]
+media = "(prefers-color-scheme= dark)"
+scheme = "slate"
+toggle.icon = "material/weather-night"
+toggle.name = "Switch to light mode"
+
+
+# plugins=
+# - blog=
+# categories_slugify= !!python/object/apply=pymdownx.slugs.slugify
+# kwds=
+# case= lower
+# - mike=
+# alias_type= symlink
+# redirect_template= null
+# canonical_version= null
+# css_dir= docs/stylesheets
+# javascript_dir= docs/assets/javascripts
+# - git-revision-date-localized=
+# type= date
+# - git-committers=
+# repository= ydkmlt84/Maintainerr_docs
+# branch= main
+# - social=
+# cards_layout= custom_card
+# cards_layout_dir= layouts
+# - glightbox
+# - swagger-ui-tag
+# - optimize
+# hooks=
+# - docs/overrides/hooks/shortcodes.py
+# - docs/overrides/hooks/translations.py
+# extra=
+# annotate=
+# json= [.s2]
+
+#[project.extra.analytics]
+#provider = "matomo"
+#property = "docs"
+[project.extra.analytics.feedback]
+title = "Was this page helpful?"
+[[project.extra.analytics.feedback.ratings]]
+icon = "fontawesome/solid/thumbs-up"
+name = "This page was helpful"
+note = """
+ Thanks for your feedback!
+ """
+[[project.extra.analytics.feedback.ratings]]
+icon = "fontawesome/solid/thumbs-down"
+name = "This page could be improved"
+note = """
+ Thanks for your feedback! Help us improve this page by
+ submitting an issue to the docs repo. Docs Repo New Issue
+ """
+[project.extra.consent.cookies]
+analytics = "Maintainerr's self-hosted analytics system (Matomo)."
+[project.extra.consent]
+actions = ["accept", "reject"]
+[[project.extra.social]]
+icon = "fontawesome/brands/github"
+link = "https://github.com/maintainerr/maintainerr"
+name = "Github"
+[[project.extra.social]]
+icon = "fontawesome/brands/docker"
+link = "https://hub.docker.com/r/jorenn92/maintainerr/"
+name = "Docker Hub"
+[[project.extra.social]]
+icon = "fontawesome/brands/discord"
+link = "https://discord.maintainerr.info"
+name = "Discord"
+[[project.extra.social]]
+icon = "material/cookie-cog"
+link = "#__consent"
+name = "Cookie Settings"
+[[project.extra.social]]
+icon = "material/gavel"
+link = "https://github.com/Maintainerr/Maintainerr/blob/main/LICENSE"
+name = "License"
+
+[project.extra.status]
+new = "Recently Added"
+deprecated = "Deprecated"
+recent = "New Updates"
+# version=
+# provider= mike
+# default= latest
+
+## Extensions
+[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]
+permalink = true
+
+## Markdown Extensions
+[project.markdown_extensions.pymdownx.arithmatex]
+generic = true
+[project.markdown_extensions.pymdownx.caret]
+[project.markdown_extensions.pymdownx.details]
+[project.markdown_extensions.pymdownx.emoji]
+[project.markdown_extensions.pymdownx.highlight]
+line_spans = "__span"
+[project.markdown_extensions.pymdownx.inlinehilite]
+[project.markdown_extensions.pymdownx.keys]
+[project.markdown_extensions.pymdownx.mark]
+[project.markdown_extensions.pymdownx.smartsymbols]
+[project.markdown_extensions.pymdownx.snippets]
+[project.markdown_extensions.pymdownx.superfences]
+custom_fences = [
+ { name = "mermaid", class = "mermaid", format = "!!python/name=pymdownx.superfences.fence_code_format" },
+]
+[project.markdown_extensions.pymdownx.tabbed]
+#[project.markdown_extensions.pymdownx.tabbed.slugify]
+#kwds = { case = "lower" }
+#object = "pymdownx.slugs.slugify"
+[project.markdown_extensions.pymdownx.tasklist]
+custom_checkbox = true
+[project.markdown_extensions.pymdownx.tilde]
+
+
+#nav=
+# - Home= index.md
+#- Getting started=
+#- Installation.md
+#- Configuration.md
+#- Works.md
+#- Common.md
+#- ReverseProxy.md
+#- Rules=
+#- Rules.md
+#- Glossary.md
+#- Collections= - Collections.md
+#- Test-Media.md
+#- Notifications=
+#- Notifications.md
+#- Community=
+#- Introduction.md
+#- Contributing.md
+#- Testing.md
+#- Changelog.md
+#- API=
+#- API.md - Walkthroughs=
+#- blog/index.md
+
+#link = '#__consent'title = "Help us, help you! (consent to cookies)"
+# Site navigation
+# These fields are all optional; the defaults are as below...
+#deploy_prefix = ''
+#version_selector = true
+#enable_creation_date = true
+#separator = '[\s\u200b\-_,=!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])'
+# Hooks
+# Additional configuration
+#data = 1
+#data = 0
+#description = """
+# We use cookies to recognize your repeated visits and preferences, as well
+# as to measure the effectiveness of our documentation. With your consent, you're helping us to
+# make our documentation better. Privacy Policy
+# """
+# Extensions
+#permalink = true
+#- material.extensions.preview=
+# targets=
+# include=
+# - changelog/index.md
+# - customization.md
+# - insiders/changelog/*
+# - docs/extensions/*
+#generic = true
+#anchor_linenums = true
+#pygments_lang_class = true
+#normalize_issue_symbols = true
+#repo_url_shorthand = true
+#auto_append=
+# - includes/mkdocs.md
+#url_download = true
+#alternate_style = true