store/runHistory#
filterRunHistory()#
Apply the active filters. Exported so the page and its tests share one definition.
Parameters#
| Parameter | Type |
|---|---|
entries |
RunHistoryEntry[] |
filters |
RunHistoryFilters |
Returns#
parseRunHistoryPayload()#
Turn the backend's JSON payload into entries, dropping anything unusable.
Deliberately tolerant: a single malformed record written by an older build must not blank the whole page — that would reproduce the very failure this subsystem exists to prevent.
Parameters#
| Parameter | Type |
|---|---|
payload |
string |
Returns#
clearRunHistoryFilters#
RUN_KINDS#
Durable run history — the renderer half of the job centre.
Lives in its own slice rather than in runtime.ts because it is not runtime
state: the entries come from a file the backend keeps per profile
(repositories/run_history.py) and survive restarts. runtime.scheduleExecutions
is the live view of what is running now; this is the archive of what ran.
The wire payload is a JSON array inside common.StringMessage (the same shape
setAuditLogs uses), so parseRunHistoryPayload — not a generated type — is the
boundary. That keeps the schema free to grow backend-side without a codegen
round-trip, and means every field is validated here rather than assumed.
RUN_OUTCOMES#
runHistory#
runHistoryFailed#
runHistoryRequested#
setRunHistory#
toggleRunKindFilter#
toggleRunOutcomeFilter#
RunHistoryEntry#
Properties#
details#
durationMs#
error#
Full error text, never truncated for display — the user must be able to copy it.
failingStep#
Id of the step that failed, when the backend could attribute the failure.
id#
kind#
label#
outcome#
project#
scheduleId#
startedAt#
Unix ms. The backend stores seconds; conversion happens at the parse boundary.
RunHistoryFilters#
Properties#
kinds#
Empty means "no filter", which is different from "none selected".