{% extends "base.html" %} {% block title %}Dashboard - craft-dashboard{% endblock %} {% macro kpi_delta(delta, testid) %} {% if delta %} {{ delta.text }} {% endif %} {% endmacro %} {% block content %}

Dashboard

Open PR age & response

View more →
Average age of open pull requests and wait time for initial maintainer response
Age of PRs from contributors:
{{ view.velocity.contributor.display_age }} {{ kpi_delta(view.velocity.contributor.delta, "velocity-contributor-delta") }} {{ view.velocity.contributor.count_label }}
Time to 1st response for contributors:
{{ view.velocity.first_response.display_age }} {{ kpi_delta(view.velocity.first_response.delta, "velocity-first-response-delta") }} {{ view.velocity.first_response.count_label }}
Age of all PRs:
{{ view.velocity.overall.display_age }} {{ kpi_delta(view.velocity.overall.delta, "velocity-overall-delta") }} {{ view.velocity.overall.count_label }}

Resolution throughput

View more →
Issues and pull requests resolved in the past 30 days and past year
Last 30 days:
{{ view.throughput.total_30d }} {{ kpi_delta(view.throughput.delta, "throughput-delta") }} ({{ view.throughput.issues_30d }} issues, {{ view.throughput.prs_30d }} PRs)
Last year:
{{ view.throughput.total_365d }} ({{ view.throughput.issues_365d }} issues, {{ view.throughput.prs_365d }} PRs)

Untriaged backlog

View more →
Open items needing maintainer triage
Issues:
{{ view.untriaged.issues.count }} ({{ view.untriaged.issues.new_30d_text }} in 30d)
PRs:
{{ view.untriaged.prs.count }} ({{ view.untriaged.prs.new_30d_text }} in 30d)

All-time volume

View more →
Cumulative open and closed work across all repositories
Issues:
{{ view.volume.issues.total }} ({{ view.volume.issues.net.text }}) / {{ view.volume.issues.closed }} closed
PRs:
{{ view.volume.prs.total }} ({{ view.volume.prs.net.text }}) / {{ view.volume.prs.closed }} closed
Combined Total:
{{ view.volume.combined.total }} ({{ view.volume.combined.net.text }}) / {{ view.volume.combined.closed }} closed

Apps with least-recent releases

View all in Releases →
{% for app in view.least_recent_apps %} {% else %} {% endfor %}
Application Tag Released Cadence
{{ app.project_name }} {% if app.is_fallback %} {{ app.version }} {% else %} {{ app.version }} {% endif %} {{ app.released_display }} {% if app.age_label %} {{ app.age_label }} {% else %} — {% endif %}
No application releases tracked yet.

Aging contributor PRs

View all contributor PRs →
{% for pr in view.aging_prs %} {% else %} {% endfor %}
PR Author Title Age
{{ pr.project_name }} #{{ pr.external_id }} {{ pr.author_display }} {{ pr.title }} {{ pr.display_age }}
No open contributor PRs found.

Need triage (oldest)

View all untriaged issues →
{% for issue in view.needs_triage_issues %} {% else %} {% endfor %}
Issue Author Title Age
{{ issue.project_name }} #{{ issue.external_id }} {{ issue.author_display }} {{ issue.title }} {{ issue.display_age }}
All open issues are triaged!
{% for qw in view.quick_wins %} {% else %} {% endfor %}
Issue Title Quick-Win Score
{{ qw.project_name }} #{{ qw.external_id }} {{ qw.title }} {{ qw.score_label }}
No quick-win candidates currently scored ≥ 50.

Project health

{% macro render_health_table(project_list, testid) %} {% for p in project_list %} {% endfor %}
Project Open Issues Open PRs Untriaged Backlog Latest Release
{{ p.name }} {{ p.open_issues_label }} {% if p.show_prs %} {{ p.open_prs_label }} {% else %} — {% endif %} {{ p.untriaged_label }} {% if p.show_release %} {% if p.release_version %} {{ p.release_version }} {% if p.release_age_label %} {{ p.release_age_label }} {% endif %} {% else %} (none) {% endif %} {% else %} — {% endif %}
{% endmacro %}

Applications

{{ render_health_table(view.application_projects, "project-health-applications") }}

Libraries

{{ render_health_table(view.library_projects, "project-health-libraries") }}

Other

{{ render_health_table(view.other_projects, "project-health-other") }}
{% endblock %} {% block scripts %} {% endblock %}