feat(ansible): one strip of tabs, a run list that opens on its verdict, a run page in one line (#5328, #5329, #5330)
- section_tabs macro; Runs · Playbooks · Schedules · Inventory on every Ansible page, replacing each page's own set of header buttons. - Runs: a verdict line (last 30 days, failures first with the latest named, running now, the schedule due next); under each status what the run did across its hosts (ansible/recap.py); a filter bar (playbook, status, who started it) that swaps the table and carries into the scroll paging. - Run page: status, duration, start and who started it in one line; each host's result in words, worst first; the playbook it ran links to it; the log and failures on classes rather than inline colours. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -352,6 +352,13 @@ a.stat-tile:hover { border-color: var(--border-mid); background: var(--bg-elevat
|
||||
.problem-card { border-color: color-mix(in srgb, var(--fs-error) 45%, var(--border)); }
|
||||
.problem-list { list-style: none; display: flex; flex-direction: column; gap: 0.45rem; }
|
||||
.problem-list li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.6rem; overflow-wrap: anywhere; }
|
||||
/* A section's pages as tabs (section_tabs in _macros.html, #5328). It
|
||||
scrolls inside itself on a phone rather than widening the page. */
|
||||
.section-tabs { display: flex; gap: 0.25rem; margin: 0 0 1.25rem; border-bottom: 1px solid var(--border); overflow-x: auto; }
|
||||
.section-tabs a { padding: 0.5rem 0.9rem; margin-bottom: -1px; border-bottom: 2px solid transparent;
|
||||
color: var(--text-muted); font-size: 0.9rem; white-space: nowrap; }
|
||||
.section-tabs a:hover { color: var(--text); }
|
||||
.section-tabs a[aria-current="page"] { color: var(--text); border-bottom-color: var(--accent); }
|
||||
/* A label/value list: <dl class="kv"><dt>…</dt><dd>…</dd></dl>. */
|
||||
.kv { display: grid; grid-template-columns: max-content 1fr; gap: 0.35rem 1.25rem; font-size: 0.88rem; }
|
||||
.kv dt { color: var(--text-muted); }
|
||||
@@ -363,6 +370,11 @@ a.stat-tile:hover { border-color: var(--border-mid); background: var(--bg-elevat
|
||||
font-family: var(--fs-font-mono); font-size: 0.78rem; color: var(--text-muted);
|
||||
max-height: 400px; overflow-y: auto; white-space: pre-wrap;
|
||||
}
|
||||
/* A run's log on its page (ansible/run_detail.html), and what failed. */
|
||||
.run-log { margin: 0; padding: 1rem; background: var(--bg); font-family: var(--fs-font-mono); font-size: 0.78rem;
|
||||
color: var(--text-muted); max-height: 600px; overflow-y: auto; white-space: pre-wrap; }
|
||||
.run-failures { padding: 0.75rem; border-radius: var(--fs-radius-sm); color: var(--red); max-height: 240px; }
|
||||
.run-log-status { margin: 0; padding: 0.5rem 1rem; }
|
||||
/* Monospaced data: ids, limits, tags, paths. */
|
||||
.mono { font-family: var(--fs-font-mono); font-size: 0.85em; }
|
||||
/* The host page's health header (_host_vitals.html). */
|
||||
|
||||
Reference in New Issue
Block a user