Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
818 changes: 326 additions & 492 deletions dashboard.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ Reviewed 2026-10-04. Parked by choice; wiki unchanged since ab1e4fd (2026-09-27)

</details>

## Profiling evidence
## Profiling Results

Choose a project, dataset and model on the interactive board.

Expand Down
11 changes: 2 additions & 9 deletions pulse/board.py
Original file line number Diff line number Diff line change
Expand Up @@ -558,15 +558,8 @@ def render_html(views, now: str | None = None, campaign_data: dict | None = None
content.append(setup_browser.render(snapshot))
if (snapshot.doc or {}).get("version") != 2:
content.append(
f"<p>{_e(name)}: setup catalogue unavailable; original project evidence remains below.</p>"
f"<p>{_e(name)}: setup catalogue unavailable; use the project dashboard for original evidence.</p>"
)
content.append(
'<details class="capture-details"><summary>'
+ _e(name)
+ " · capture, qualification and legacy diagnostics</summary>"
+ _html_detail(snapshot, now)
+ "</details>"
)
return shared.section_layout(
'<!doctype html>\n<html lang="en"><head><meta charset="utf-8">'
'<meta name="viewport" content="width=device-width,initial-scale=1">'
Expand All @@ -578,7 +571,7 @@ def render_html(views, now: str | None = None, campaign_data: dict | None = None
"Profiling dashboard",
navigation=[
{"href": "#campaigns", "label": "Active campaigns"},
{"href": "#evidence", "label": "Profiling evidence"},
{"href": "#evidence", "label": "Profiling Results"},
],
)
+ "<main>"
Expand Down
17 changes: 2 additions & 15 deletions pulse/campaigns.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ def markdown(data: dict) -> str:
)
rows += ["", "</details>", ""]
rows += [
"## Profiling evidence",
"## Profiling Results",
"",
"Choose a project, dataset and model on the interactive board.",
"",
Expand All @@ -180,15 +180,6 @@ def render_html(data: dict, work_links=(), refreshed_at=None) -> str:
def e(value):
return html.escape(str(value), quote=True)

def action(key, title, prompt, review=""):
return (
f'<div class="prompt-action"><button type="button" class="prompt-copy text" data-field="{key}-prompt">{e(title)}</button>{review}'
f'<details id="{key}-details"><summary>Full prompt</summary><label for="{key}-prompt">Edit before copying</label>'
f'<textarea id="{key}-prompt" rows="7">{e(prompt)}</textarea></details></div>'
)

reviewed = str(data.get("last_checkin") or "not recorded yet")
review = f'<span class="review-meta" title="Ledger dates are review dates, not measurement freshness.">Last check-in: {e(reviewed[:10] if data.get("last_checkin") else reviewed)} · review date</span>'
parts = [
marker(data),
theme().orchestration_panel(
Expand All @@ -202,10 +193,6 @@ def action(key, title, prompt, review=""):
refreshed_at=refreshed_at,
refresh_url="https://github.com/PyAutoLabs/PyAutoPulse/actions/workflows/dashboard_refresh.yml",
),
'<section class="controls" aria-label="Profiling actions">',
action("fix", "Fix Profiling Systematically", FIX_PROMPT),
review,
'<span id="copy-status" role="status" aria-live="polite"></span></section>',
'<h2 id="campaigns">Active campaigns</h2><div class="campaign-table"><table><thead><tr><th>Campaign</th><th>Status</th><th>Links</th></tr></thead><tbody>',
]
for c in data["campaigns"]:
Expand Down Expand Up @@ -241,6 +228,6 @@ def action(key, title, prompt, review=""):
'</tbody></table></div><p class="review-meta">Open means tracked, not necessarily running. <a href="'
+ URL
+ 'campaigns.yaml">Full ledger ↗</a></p>',
'<h2 id="evidence">Profiling evidence</h2><p class="muted">Choose a project, dataset and model. Qualification belongs to each recorded setup.</p>',
'<h2 id="evidence">Profiling Results</h2>',
]
return "".join(parts)
56 changes: 29 additions & 27 deletions pulse/setup_browser.css
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
}
.selectors {
display: grid;
grid-template-columns: 1fr 2fr;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 2fr);
gap: 0.8rem;
margin: 1rem 0;
}
Expand Down Expand Up @@ -113,7 +113,7 @@
padding: 0;
}
.metric-row {
padding: 0.65rem 0;
padding: 0.25rem 0;
border-bottom: 1px solid var(--line);
}
.metric-title {
Expand All @@ -131,8 +131,8 @@
font-weight: 700;
}
.bar-track {
height: 0.45rem;
margin: 0.45rem 0;
height: 0.3rem;
margin: 0.2rem 0;
border-radius: 4px;
background: var(--line);
overflow: hidden;
Expand Down Expand Up @@ -217,31 +217,33 @@ button.retry {
padding-top: 0.8rem;
}

.measurement-choices {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
gap: 0.65rem;
.model-choice {
box-sizing: border-box;
text-decoration: none;
}
.measurement-choice {
border: 1px solid var(--line);
border-radius: 8px;
padding: 0.65rem;
.selectors > label {
min-width: 0;
}
.measurement-choice p {
margin: 0.4rem 0 0;
.scale-caption {
margin: 0.4rem 0;
}
.measurement-choice button {
width: 100%;
min-height: 2.75rem;
padding: 0.45rem;
font: inherit;
cursor: pointer;
color: var(--fg);
background: var(--bg);
border: 1px solid var(--line);
border-radius: 6px;
.metric-list {
margin: 0.4rem 0;
}
.model-page header,
.model-page .orchestration-panel,
.model-page .board-nav,
.model-page .board-section:not(.model-section),
.model-page .model-section > summary,
.model-page .model-section > h2,
.model-page #orchestration-pulse {
display: none;
}
.measurement-choice button[aria-pressed="true"] {
border-color: var(--accent);
font-weight: 700;
.model-page .model-section {
border: 0;
padding: 0;
}
.model-page [data-id="results"] {
border: 0;
margin-top: 0;
}
Loading
Loading