{% import 'v3/partials/_macros.html' as ui %}

General Settings

Configure general system settings and location information.

{{ ui.settings_filter() }}
{# Marks this post as the whole form, so an unchecked box saves as false. Without it the save endpoint treats absent keys as unchanged (FORM_SECTION_FIELD in api_v3/config.py). #}
{% if auto_update_status and (main_config.auto_update or {}).enabled and auto_update_status.verifier_installed is sameas false %}

{% if auto_update_status.setup_status == 'failed' %} Setting up the update health check failed: {{ auto_update_status.setup_message }} LEDMatrix code updates are paused until it is fixed; plugin updates still run. {% else %} Setting up the update health check. The display service does this when it starts, so it is ready shortly after saving (or once the display is started). LEDMatrix code updates begin after that. {% endif %}

{% endif %} {% if auto_update_status and auto_update_status.verifying %}

An update was just installed and its health check is running.

{% endif %} {% if auto_update_status and (auto_update_status.last_run or auto_update_status.next_due) %}
{% if auto_update_status.last_run %}

Last automatic update: {{ auto_update_status.last_run }} — {{ auto_update_status.summary }}

{% endif %} {% if auto_update_status.next_due %}

Next check: {{ auto_update_status.next_due }} or the first overnight window after it

{% endif %}
{% endif %}
{% set configured_channel = (main_config.auto_update or {}).channel if (main_config.auto_update or {}).channel in ('stable', 'beta') else 'stable' %}
{% if update_channel_status %}

{{ update_channel_status.message }}

{% endif %}

Takes effect at the next update: use Update Code on the Overview tab to apply it now.

Plugin System Settings

Configure the core plugin system behavior.

{% if web_login %}

Security

{% if web_login.enabled %} Login is on. Browsers on your network need the password; integrations use an API token. {% else %} Login is off: anyone on your network can open this page. Set a password to require one. {% endif %}

{# A

{% if web_login.enabled %}
{% endif %}

At least {{ web_login.min_length }} characters. {% if not web_login.enabled %}Write it down: if you lose it, you need SSH access to the Pi (or a browser on the Pi) to turn login off again.{% endif %}

{% if web_login.enabled %}

Turn login off

{% endif %}

API tokens

For Home Assistant, scripts, or the MQTT bridge on another machine, once login is on. Send it as Authorization: Bearer <token>. A token is shown once, when you create it.

{% for token in web_login.tokens %}
{{ token.name }} {{ token.prefix }}… created {{ (token.created_at or '')[:10] }}
{% else %}

No tokens yet.

{% endfor %}
{% endif %}