{# One row per discovered alias. Empty produced/consumed columns are normal — a node hasn't advertised events until we've heard a P/C Identified from it. #}
{% if discover_notice %}
{{ discover_notice }}
{% endif %} {% if not nodes %}

No nodes discovered yet. Click Refresh to broadcast a Verify NID probe.

{% else %} {% for n in nodes %} {% endfor %}
Alias Node ID Identity Protocols Events Last heard
{{ n.alias }} {{ n.node_id or '—' }} {% if n.snip %}
{{ n.snip.user_name or n.snip.model or '—' }}
{{ n.snip.manufacturer }}{% if n.snip.model and n.snip.user_name %} · {{ n.snip.model }}{% endif %}
{% else %} not probed {% endif %}
{% if n.pip %} {% for name in n.pip.names %} {{ name }} {% else %} (none) {% endfor %} {% else %} not probed {% endif %} {% if n.produced_events or n.consumed_events %}
producer × {{ n.produced_events | length }}
consumer × {{ n.consumed_events | length }}
{% else %} — {% endif %}
{% set sec_ago = n.seconds_ago if 'seconds_ago' in n else none %} {% if sec_ago is none %} — {% elif sec_ago < 60 %} {{ '%.0f' | format(sec_ago) }}s {% elif sec_ago < 3600 %} {{ '%.0f' | format(sec_ago / 60) }}m {% else %} {{ '%.1f' | format(sec_ago / 3600) }}h {% endif %}
{% endif %}