{% extends "base.html" %} {% block title %}Runs{% endblock %} {% block style %} .st { display: inline-block; padding: 2px 9px; border-radius: 10px; font-weight: 600; font-size: 12px; background: var(--head); } .st.Done { background: var(--pass-bg); color: var(--pass); } .st.Run-Error, .st.Ended-without-a-record { background: var(--fail-bg); color: var(--fail); } .st.Stopped { background: var(--review-bg); color: var(--review); } .st.Running { background: var(--hilite); color: var(--accent); } td .Pass { color: var(--pass); font-weight: 600; } td .Fail { color: var(--fail); font-weight: 600; } td .Review { color: var(--review); font-weight: 600; } td.bad { color: var(--fail); font-weight: 600; } td.warn { color: var(--review); font-weight: 600; } table.list tbody tr a { color: inherit; display: block; } /* Fixed layout takes the header's widths: the time and the login column must not be cut at 1180 px. */ #runs th.w-start { width: 160px; } #runs th.w-who { width: 100px; } #runs th.w-src { width: 85px; } #runs th.w-mode { width: 80px; } #runs th.w-dur { width: 85px; } #runs th.w-res { width: 135px; } #runs th.w-login { width: 150px; } #runs th.w-cat { width: 125px; } #runs th.w-err { width: 95px; } #runs th.w-warn { width: 80px; } table.list tbody tr a:hover { text-decoration: none; } {% endblock %} {% block content %}

Runs

Every bot run since run tracking started (2026-10-22), newest first: who started it, how long the eCW login took, and what went wrong. Pick a run for its login steps, errors and timeline.

{% if runs %} {% for r in runs %} {% endfor %}
StartedStarted By SourceMode DurationResult Pass / Fail / Review Claim ErrorsWarnings
{{ r.started | usdate }} {{ r.started_by }} {{ r.source | capitalize }} {{ r.mode }} {{ r.duration_s | dur }} {{ r.status }}{% if r.status == "Run Error" %} exit {{ r.exit_code }}{% endif %} {{ r.login_attempts | length }} attempt{{ "" if r.login_attempts | length == 1 else "s" }}{% if r.login_attempts %} ยท {{ r.login_total_s | dur }}{% endif %} {{ r.pass }} / {{ r.fail }} / {{ r.review }} {{ r.claim_errors | length }} {{ r.warnings | length }}
{% else %}
No runs{% if day_from or day_to or status %} match{% else %} tracked yet{% endif %}. Runs from before 2026-10-22 are not tracked; every run from now on is.
{% endif %} {% endblock %} {% block scripts %} {% endblock %}