{% extends "base.html" %} {% block title %}{{ tracker.canonical_url }} — {{ app_name }}{% endblock %} {% block content %}

← {{ t('back') }}

{{ tracker.canonical_url }}

{{ tracker.current_status }} · {{ t('score') }}: {% if metrics.score is not none %}{{ metrics.score }}{% else %}{{ t('score_insufficient') }}{% endif %} {% if metrics.provisional %}{{ t('provisional') }}{% endif %}

{{ t('uptime_24h') }} {{ metrics.uptime_24h|pct }}
{{ t('uptime_7d') }} {{ metrics.uptime_7d|pct }}
{{ t('uptime_30d') }} {{ metrics.uptime_30d|pct }}
{{ t('latency_med_7d') }} {{ metrics.latency_median_7d|ms }}
{{ t('latency_p95') }} {{ metrics.latency_p95_7d|ms }}
{{ t('valid_rate') }} {{ metrics.valid_rate_7d|pct }}
{{ t('measurements') }} {{ metrics.measurement_count }}
{{ t('tracking') }} {{ '%.1f'|format(metrics.tracking_days) }} {{ t('days') }}
{% if spark %} {% set mx = spark|max if spark|max > 0 else 1 %} {% for v in spark %} {% set x = loop.index0 * (240 / ([spark|length - 1, 1]|max)) %} {% set y = 38 - (v / mx * 34) %} {% if not loop.first %} {% set px = (loop.index0 - 1) * (240 / ([spark|length - 1, 1]|max)) %} {% set py = 38 - (spark[loop.index0 - 1] / mx * 34) %} {% endif %} {% endfor %} {% endif %}

{{ t('sources') }}

{{ t('dns') }}

{{ t('terminal_cname') }}: {{ tracker.terminal_cname or '—' }}

{{ t('infra_fp') }}: {{ tracker.infrastructure_fingerprint or '—' }}

{{ t('asn') }}: {% if tracker.asn %}AS{{ tracker.asn }} {{ tracker.network_name or '' }}{% else %}{{ t('unknown') }}{% endif %} · {{ t('country') }}: {{ tracker.country_code or t('unknown') }}

{% if aliases %}

{{ t('shared_infra') }}

{{ t('shared_infra_blurb') }}

{% endif %}

{{ t('recent_history') }}

{% for p in probes %} {% else %} {% endfor %}
{{ t('when') }}{{ t('col_status') }}{{ t('th_latency') }}{{ t('valid') }}{{ t('error') }}
{{ p.checked_at|dt }} {{ p.status }} {{ p.latency_ms|ms }} {{ t('yes') if p.response_valid else t('no') }} {% if p.error_kind %}{{ p.error_kind }}{% if p.error_detail %}: {{ p.error_detail }}{% endif %}{% else %}—{% endif %}
{{ t('no_probes') }}
{% endblock %}