{% extends "base.html" %} {% block title %}Refresh Schedule - Admin - craft-dashboard{% endblock %} {% block content %}
Open issues are refreshed on every run (every 10 minutes). Separately, an hourly rotation picks exactly one project/source pair — whichever has gone longest without a full refresh (open + closed issues) — and fully refreshes it. This table shows that rotation order: the top row is up next. Consecutive failure counters track active unbroken failures, while 24h errors reflect recent intermittent issues.
| Project | Source | Last full refresh | Next full refresh | Full failures | Poll failures | Errors (24h) |
|---|---|---|---|---|---|---|
| {{ entry.project }} | {{ entry.source }} | {% if entry.last_refreshed_at %} {% set h = entry.hours_since_last %} {{ entry.last_refreshed_at | local_datetime }} {% if h is not none and h == 0 %} (less than 1 hour ago) {% elif h is not none and h == 1 %} (1 hour ago) {% elif h is not none and h < 48 %} ({{ h }} hours ago) {% else %} ({{ entry.days_since_last }} days ago) {% endif %} {% else %} never {% endif %} | {{ entry.next_refresh_at | local_datetime }} {% if loop.first %} (up next) {% elif entry.next_refresh_hours == 1 %} (in ~1 hour) {% else %} (in ~{{ entry.next_refresh_hours }} hours) {% endif %} | {% if entry.consecutive_failures > 0 %} {{ entry.consecutive_failures }} {% else %} 0 {% endif %} | {% if entry.open_poll_consecutive_failures > 0 %} {{ entry.open_poll_consecutive_failures }} {% else %} 0 {% endif %} | {% if entry.recent_failures_24h > 0 %} {{ entry.recent_failures_24h }} ⚠ {% else %} 0 {% endif %} |
No refresh schedule data. Run a collection first.
{% endif %}