Act on a run, and read Home top-down
Docs / docs (push) Successful in 23s
Playwright Tests / test-playwright (1, 2) (push) Successful in 3m18s
Playwright Tests / test-playwright (2, 2) (push) Successful in 1m49s
pre-commit / pre-commit (push) Failing after 2m5s
Test Backend / test-backend (push) Successful in 2m39s
Compose Smoke Test / test-compose (push) Successful in 33s
Playwright Tests / merge-reports (push) Successful in 1m11s

Runs: a run can now be deleted (DELETE /runs/{id}, cancelling a live one
first), exported as csv from the screen's own filters, and its flow label
opens the flow. Its "Parameters" panel became "Inputs" and lists every
input the flow declares, marking the ones that took the flow's own value
rather than the run's — the comparison table resolves the same defaults
instead of printing "unset".

Home reads brain, dashboards, health, flows: the mosaic is one full-width
scrolling strip, and the flows list and the flow-activity rollups merged
into a single left-joined table so a flow's state and its numbers sit on
one row.

Charts take a drag to narrow the x window and a double click or tap to
come back out. UplotChart holds the scale and passes resetScales:false
while a window is held, which is what the old comment said made this
impossible.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LrWVRguqbk33YzfEeUx5W
This commit is contained in:
2026-08-29 08:37:11 +02:00
co-authored by Claude Opus 5
parent 4215e057d1
commit 7e506b26c0
18 changed files with 1082 additions and 365 deletions
@@ -279,6 +279,7 @@ export function ConfirmDelete({
names,
noun,
pending,
description,
onConfirm,
}: {
open: boolean
@@ -286,6 +287,8 @@ export function ConfirmDelete({
names: string[]
noun: string
pending: boolean
/** What is actually lost, when the git-backed answer below is not it. */
description?: string
onConfirm: () => void
}) {
return (
@@ -298,9 +301,14 @@ export function ConfirmDelete({
: `Delete these ${names.length} ${noun}s?`}
</DialogTitle>
<DialogDescription>
{names.length === 1 ? "It goes" : "They go"} from the installation
at once. The store's git history keeps what was there, but nothing
in the app brings {names.length === 1 ? "it" : "them"} back.
{description ?? (
<>
{names.length === 1 ? "It goes" : "They go"} from the
installation at once. The store's git history keeps what was
there, but nothing in the app brings{" "}
{names.length === 1 ? "it" : "them"} back.
</>
)}
</DialogDescription>
</DialogHeader>
<DialogFooter>