{# Vendor-Assets über asset()-Helper -- siehe index.html für Details. #} {# Frontend i18n bridge -- same pattern as index.html. #}
{# Known-keys section: bekannte Settings mit Hint-Text. #}

{{ t('Known keys') }}

{% for key in known_keys %} {# These keys have dedicated widgets in the AI-agent cards #} {# below; claude_auto_mode is the legacy boolean replaced by #} {# claude_permission_mode. None is shown as free text here. #} {% if key not in ('claude_auto_mode', 'claude_permission_mode', 'claude_open_terminal', 'default_agent', 'opencode_auto') and not key.endswith('_bin') %}
{% if hints.get(key) %}
{{ hints[key] }}
{% endif %} {% if (field_choices | default({})).get(key) %} {# Enum setting -- radio group, saved on change (like the #} {# permission-mode / default-agent widgets). #} {% for opt in field_choices[key] %} {% endfor %} {# Fields without a default option (e.g. language) fall back #} {# to the app's automatic behaviour when unset -- offer a #} {# reset so the user can leave the en/de radios again. #} {% if key not in (field_defaults | default({})) %} {% endif %} {% elif key == 'claude_idle_seconds' %} {# Numeric setting -- number input with a unit affordance. #}
{{ t('seconds') }}
{% else %} {# Free-text setting (paths, shell command). #}
{% endif %} {# CAVE: `d-block` via :class instead of fixed -- Bootstrap sets #} {# `.d-block { display: block !important }` which would override #} {# AlpineJS x-show's `style="display: none"` (same bug as the #} {# projects_dir banner). Only assign d-block when an error exists. #}
{% endif %} {% endfor %}
{# AI agent integration: common settings shared by every agent. #}

{# Default agent for new tasks. #}

{# Open terminal immediately -- common to every agent run. #}
{# Per-agent integration cards (Claude / OpenCode / Pi): availability, #} {# agent-specific run options, and the /task install status. Read-only #} {# status -- installs go through the `ntasker agent install` CLI. #} {# All settings (read-only listing, includes ad-hoc keys). #}

{{ t('All settings (DB content)') }}

{{ t('Key') }} {{ t('Value') }} {{ t('updated') }}

{{ t('No settings configured.') }}

{{ t('Configure a known key above, or set one via CLI:') }} ntasker config set <key> <value>.

{# House keeping: server restart (service-only) + database compaction. #}

{{ t('House keeping') }}

{% if can_restart %} {# Restart only recovers under an installed systemd/launchd unit. #}

{{ t('Restart the ntasker service -- needed to pick up a new version or apply changes that require a fresh start.') }}


{% endif %}

{{ t('Compact the database: reclaim the space left by deleted and archived tasks and refresh the query optimizer.') }}

{# Toast container -- reuses Tabler toast styling. #}