@@ -7987,8 +8120,9 @@
${escapeHtml(issueTitle)}
`;
- })
- .join("");
+ })
+ .join(""),
+ );
}
function renderAttemptTimeline(lane) {
diff --git a/apps/decodex/src/orchestrator/tests/operator/status/dashboard.rs b/apps/decodex/src/orchestrator/tests/operator/status/dashboard.rs
index f11eda6f..756c86da 100644
--- a/apps/decodex/src/orchestrator/tests/operator/status/dashboard.rs
+++ b/apps/decodex/src/orchestrator/tests/operator/status/dashboard.rs
@@ -234,6 +234,21 @@ fn operator_dashboard_cards_and_accounts_share_running_lane_typography() {
assert!(!response.contains(".account-use-label"));
}
+#[test]
+fn operator_dashboard_patches_active_run_cards_without_replacing_the_list() {
+ let response = dashboard_response();
+
+ assert!(response.contains("function renderStableList(container, html)"));
+ assert!(response.contains("function patchChildNodes(current, next)"));
+ assert!(response.contains("function activeRunRenderKey(run)"));
+ assert!(response.contains("data-render-key=\"${escapeHtml(renderKey)}\""));
+ assert!(response.contains("renderStableList(\n\t\t\t\t\tnodes.activeRuns,"));
+ assert!(!response.contains("nodes.activeRuns.innerHTML = runs"));
+ assert!(response.contains("return node.dataset.renderKey || node.dataset.detailKey || \"\";"));
+ assert!(response.contains("current.closest(\"details.is-animating\")"));
+ assert!(response.contains("width var(--slow) var(--ease),"));
+}
+
#[test]
fn operator_dashboard_child_bucket_rows_split_time_bars_from_event_diagnostics() {
let response = String::from_utf8(