{% extends "base.html" %} {% block title %}Dashboard — Grimoire{% endblock %} {% block nav_dashboard %}active{% endblock %} {% block content %} {# ── Header ────────────────────────────────────────────────────────── #}

Dashboard

{% if last_refresh %}

Last updated {{ last_refresh_ago }}

{% endif %}
Scheduled: {{ refresh_schedule }} {% include "partials/refresh_button.html" %}
{# ── Warnings ──────────────────────────────────────────────────────── #} {% if warnings %}
Some data could not be fetched
{% endif %} {% if repos %} {# ── Stats Bar ─────────────────────────────────────────────────────── #}
Repositories
{{ totals.repos }}
{%- if totals.repos_error %}{{ totals.repos_error }} failing{% endif -%} {%- if totals.repos_error and totals.repos_warning %} · {% endif -%} {%- if totals.repos_warning %}{{ totals.repos_warning }} warning{% endif -%} {%- if (totals.repos_error or totals.repos_warning) and totals.repos_ok %} · {% endif -%} {%- if totals.repos_ok %}{{ totals.repos_ok }} healthy{% endif -%}
Open Issues
{{ totals.open_issues }}
{% if totals.stale_issues %}
{{ totals.stale_issues }} stale
{% endif %}
Open PRs
{{ totals.open_prs }}
{% if totals.stale_prs %}
{{ totals.stale_prs }} stale
{% endif %}
Workflows
{{ totals.total_workflows }}
{%- set wf_passing = totals.total_workflows - totals.workflow_failures -%} {%- if totals.workflow_failures %}{{ totals.workflow_failures }} failing{% endif -%} {%- if totals.workflow_failures and wf_passing %} · {% endif -%} {%- if wf_passing %}{{ wf_passing }} passing{% endif -%}
{% if totals.total_checks %}
Checks
{{ totals.total_checks }}
{%- set checks_passed = totals.total_checks - totals.check_failures - totals.check_warnings -%} {%- if totals.check_failures %}{{ totals.check_failures }} failing{% endif -%} {%- if totals.check_failures and totals.check_warnings %} · {% endif -%} {%- if totals.check_warnings %}{{ totals.check_warnings }} warning{% endif -%} {%- if (totals.check_failures or totals.check_warnings) and checks_passed %} · {% endif -%} {%- if checks_passed %}{{ checks_passed }} passed{% endif -%}
{% endif %}
{# ── Sort & View Controls ──────────────────────────────────────────── #}
Sort by: {% for key, label in sort_labels.items() %} {% endfor %}
{# ── Repo Grid ────────────────────────────────────────────────────── #} {% else %} {# ── Empty State ───────────────────────────────────────────────────── #}
🔮

No repositories yet

Edit config.yaml to add repositories and restart Grimoire.

{% endif %} {% endblock %}