{# Reusable Jinja macros for the dashboard template. Pattern: any HTML the template repeats more than twice belongs here. The macros are imported into index.html with {% import "_macros.html" as m %} and used as `{{ m.section_header("plans", "12 plans") }}` etc. Keep these macros narrow — they should each render one well-defined block, not a whole section. #} {# section header with the standard "title · count" shape #} {% macro section_header(title, count="") %}
collector failed: {{ payload._error }}
{% endif %} {% endmacro %} {# Short timestamp cell: hh:mm UTC + an age tooltip. Used by every recent-activity table where the full iso is overkill. #} {% macro time_cell(iso) %} {% if iso %} {{ iso[11:16] }} · {{ iso | human_age }} {% else %} — {% endif %} {% endmacro %} {# Click-to-expand `{{ body }}
{% if truncated %}
… body truncated at the dashboard cap.
{% endif %}