{# Dashboard widgets from enabled extensions (see
register_thirdparty(dashboard_widget_template=...) in
web/thirdparties/registry.py) — each entry's own template is included
as-is, so the widget's markup/behaviour is entirely up to the
extension; this just provides the slot + consistent spacing
(.browse-provider-block, reused for its margin only — no provider dot
styling implied). Nothing renders here if no extension registered one. #}
{% for widget in dashboard_widgets %}
{# "ignore missing" -- a widget template that was removed/renamed after
being registered (e.g. mid-upgrade) silently disappears instead of
taking down the entire home page for every user. #}
{% include widget.template ignore missing %}