Announce an acknowledged node failure on the bus

Clearing a node's last error on the engine published nothing, so a second
browser kept the marker until its next snapshot. One event carries the
qualified node; the receiving client drops the marker without refetching.
This commit is contained in:
2026-08-25 22:33:09 +02:00
parent 36aa933a00
commit c5d6db2dbb
4 changed files with 49 additions and 0 deletions
@@ -167,6 +167,10 @@ export const liveStore = {
getFailure(nodeId: string) {
return failures.get(nodeId)
},
/** Drop the marker for a failure the engine has already been told about. */
clearFailure(nodeId: string) {
if (failures.delete(nodeId)) notify(`failure:${nodeId}`)
},
/**
* Dismiss a node's failure, here and on the engine.
*
@@ -57,6 +57,7 @@ type FlowEvent =
ts?: number
}
| { type: "node_status"; node: string; status: string; error?: string | null }
| { type: "node_error_acknowledged"; node: string; ts?: number }
| ({ type: "node_log" } & LogLine)
| { type: "flow_paused"; flow: string; paused: boolean }
| {
@@ -235,6 +236,11 @@ function connect() {
error: message.error,
})
break
case "node_error_acknowledged":
// Someone dismissed it, here or in another browser. The engine has
// already forgotten it, so drop the marker rather than posting back.
liveStore.clearFailure(message.node)
break
case "node_log":
liveStore.appendLog(message)
break