{# roundtable/templates/settings/index.html #} {% extends "base.html" %} {% block title %}Settings — Fabled Scryer{% endblock %} {% block content %}

Settings

{# ── General ──────────────────────────────────────────────────────────── #}

General

{# ── SMTP ─────────────────────────────────────────────────────────────── #}

Email (SMTP)

{# ── Webhook ──────────────────────────────────────────────────────────── #}

Webhook

{# ── Ansible Sources ──────────────────────────────────────────────────── #}

Ansible Sources

JSON array of source objects. Each requires name, type (git or local), and either url or path.

{# ── Plugins ──────────────────────────────────────────────────────────── #} {% if discovered_plugins %}

Plugins

{% for plugin in discovered_plugins %}
{% for cfg_key, cfg_default in plugin.get('config', {}).items() %} {% if cfg_default is mapping %} {# Nested dict — render each sub-key as its own field #}
{{ cfg_key }}
{% set sub_cfg = plugin._config.get(cfg_key, cfg_default) if plugin._config.get(cfg_key, cfg_default) is mapping else cfg_default %} {% for sub_key, sub_default in cfg_default.items() %}
{% if sub_default is sameas false or sub_default is sameas true %}
{% else %} {% endif %}
{% endfor %}
{% elif cfg_default is sameas false or cfg_default is sameas true %}
{% else %}
{% endif %} {% endfor %}
{% endfor %}
{% endif %}
Changes take effect immediately. Monitor interval, plugin enable/disable require a restart.
{% endblock %}