Stage A: swap CSS tokens to the real Gitea dark palette (accent blue #4183c4); add Jinja formatting filters (humanbytes/duration/relative_time/localtime/shorten_path/thousands), a health status-header, and an inline SVG icon sprite; fix two UI bugs — unthemed action pages (htmx swap into #action-slot with a full-page HX-Request fallback) and polling wiping form input (hx-preserve). Stage B: four read-only panels that degrade to notices (never 500) — host resources (/proc, two-sample CPU%), VMware module health, template inventory (.vmem warn + last backup), and a path-contained file browser; backup card becomes a validated template dropdown; expensive dir-size walk is TTL-cached. Adds operations/inventory.py plus host_resources()/vmware_module_health() in operations/host.py. Stage C: parse_clone_name() adds a Job column (job_id + started) to the VM table; nav gains a Gitea link-out derived from the OIDC issuer origin (no fabricated run URLs); audit page gets action icons, relative time, and a client-side filter. Gates: 989 tests pass, coverage 94.12%, ruff + mypy --strict clean. Stage D (service management) intentionally deferred.
18 lines
488 B
HTML
18 lines
488 B
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}Dashboard - ci-orchestrator{% endblock %}
|
|
|
|
{% block content %}
|
|
{{ super() }}
|
|
{% include "partials/status_header.html" %}
|
|
<div class="dashboard-grid">
|
|
{% include "partials/vms.html" %}
|
|
{% include "partials/cache.html" %}
|
|
{% include "partials/host.html" %}
|
|
{% include "partials/resources.html" %}
|
|
{% include "partials/vmware.html" %}
|
|
{% include "partials/templates.html" %}
|
|
{% include "partials/files.html" %}
|
|
</div>
|
|
{% endblock %}
|