{% extends "base.html" %} {% block title %}Refresh Schedule - Admin - craft-dashboard{% endblock %} {% block content %}

Admin

{% include "admin/partials/tabs.html" %}

Refresh schedule

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.

{% if project_refresh_list %} {% for entry in project_refresh_list %} {% endfor %}
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 %}
{% else %}

No refresh schedule data. Run a collection first.

{% endif %}
{% endblock %}