{% extends "base.html" %}
{% block title %}{{ page_title }}{% endblock %}
{% block content %}
{# Outside the scan form, so the form's inherited hx-disabled-elt cannot reach
it. #checks-strip is deliberately not a live region: a health list that
spoke on its own would talk over the scan. #checks-body is the swap target;
#checks-strip is the container that survives every swap. #}
System status
Scan
{# hx-disinherit is mandatory: hx-disabled-elt is inherited, so without it
every select and refresh button in this form would disable Scan for its
own round-trip. method and action make a JavaScript-off submit a POST,
which keeps the title out of the URL. #}
{# Outside the scan form, so it inherits nothing from it. every 20s
retries a first request lost to htmx's timeout, which leaves the element
in place and would otherwise hold Scan for good. hx-sync this:replace
aborts the answer for the previous profile, which would otherwise land
after the profile-change swaps and restore that profile's ticks. #}
{% if lists_loading %}
{% endif %}
{# Fired by a list's hidden retry once the list can be loaded; each asks
again carrying the form's current filter, ticks or choice. hx-sync abort
on the list's id drops a recovery while the profile-change refresh is in
flight: landing first, it would take that refresh's swap target and leave
the old profile's list under the new marker. #}
{% if show_tags %}
{% endif %}
{% if show_correspondent %}
{% endif %}
{# The filter input's own form, so its text never rides with a scan. Adding
hx-params to the scan form instead would be inherited by every control in
it unless hx-disinherit listed it too. #}
{% if show_tags %}
{% endif %}
| Time | Profile | Title | Status |
|---|