{# Plugin accordion sections — rendered both on initial settings load
and as HTMX swap target when a plugin is toggled or settings change. #}
{% for p in plugins %}
{# update_available is a dict: {name: {current, latest, dist}} — may be absent #}
{% set upd = (update_available or {})[p.name] if update_available is defined else None %}
{% if upd %}
{# Update banner — hidden by JS if this version was dismissed via localStorage #}