Merge branch 'main' into bb/gui

This commit is contained in:
emozilla
2026-05-18 13:14:46 -04:00
62 changed files with 3494 additions and 1275 deletions
+15 -22
View File
@@ -1548,14 +1548,12 @@
h("div", { className: "flex flex-col gap-1" },
h(Label, { className: "text-xs text-muted-foreground" },
"Orchestrator profile"),
h(Select, {
h(Select, Object.assign({
value: settings.orchestrator_profile || "",
className: "h-8",
onChange: function (e) {
const v = (e && e.target ? e.target.value : e) || "";
saveSettings({ orchestrator_profile: v });
},
},
}, selectChangeHandler(function (v) {
saveSettings({ orchestrator_profile: v });
})),
h(SelectOption, { value: "" },
"(default: " + (settings.active_profile || "default") + ")"),
profileOptions,
@@ -1566,14 +1564,12 @@
h("div", { className: "flex flex-col gap-1" },
h(Label, { className: "text-xs text-muted-foreground" },
"Default assignee"),
h(Select, {
h(Select, Object.assign({
value: settings.default_assignee || "",
className: "h-8",
onChange: function (e) {
const v = (e && e.target ? e.target.value : e) || "";
saveSettings({ default_assignee: v });
},
},
}, selectChangeHandler(function (v) {
saveSettings({ default_assignee: v });
})),
h(SelectOption, { value: "" },
"(default: " + (settings.active_profile || "default") + ")"),
profileOptions,
@@ -1701,7 +1697,7 @@
return h("div", { className: "hermes-kanban-boardswitcher" },
h("div", { className: "hermes-kanban-boardswitcher-inner" },
h("div", { className: "flex flex-col gap-0.5" },
h("div", { className: "text-[11px] uppercase tracking-wider text-muted-foreground" },
h("div", { className: "text-[11px] tracking-wider text-muted-foreground" },
tx(t, "board", "Board")),
h("div", { className: "flex items-center gap-2" },
h(Select, Object.assign({
@@ -2027,11 +2023,10 @@
),
h("div", { className: "hermes-kanban-bulk-reassign",
title: "Reassign selected tasks to a different Hermes profile. Pick a profile (or unassign) and click Apply." },
h(Select, {
h(Select, Object.assign({
value: assignee,
onChange: function (e) { setAssignee(e.target.value); },
className: "h-7 text-xs",
},
}, selectChangeHandler(setAssignee)),
h(SelectOption, { value: "" }, "— reassign —"),
h(SelectOption, { value: "__none__" }, "(unassign)"),
props.assignees.map(function (a) {
@@ -2542,12 +2537,11 @@
className: "h-7 text-xs",
}),
h("div", { className: "flex gap-2" },
h(Select, {
h(Select, Object.assign({
value: workspaceKind,
onChange: function (e) { setWorkspaceKind(e.target.value); },
title: "scratch: isolated temp dir (default). worktree: git worktree on the assignee profile. dir: exact path (required below).",
className: "h-7 text-xs w-28",
},
}, selectChangeHandler(setWorkspaceKind)),
h(SelectOption, { value: "scratch" }, "scratch"),
h(SelectOption, { value: "worktree" }, "worktree"),
h(SelectOption, { value: "dir" }, "dir"),
@@ -2559,12 +2553,11 @@
className: "h-7 text-xs flex-1",
}) : null,
),
h(Select, {
h(Select, Object.assign({
value: parent,
onChange: function (e) { setParent(e.target.value); },
className: "h-7 text-xs",
title: "Optional parent task. A child stays blocked in its current column until the parent is marked done.",
},
}, selectChangeHandler(setParent)),
h(SelectOption, { value: "" }, tx(t, "noParent", "— no parent —")),
(props.allTasks || []).map(function (task) {
return h(SelectOption, { key: task.id, value: task.id },
-5
View File
@@ -465,7 +465,6 @@
.hermes-kanban-section-head {
font-size: 0.72rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.07em;
color: var(--color-muted-foreground);
}
@@ -611,7 +610,6 @@
}
.hermes-kanban-deps-label {
font-size: 0.68rem;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--color-muted-foreground);
min-width: 4rem;
@@ -691,7 +689,6 @@
border: 0;
color: var(--color-muted-foreground);
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 0.05em;
cursor: pointer;
padding: 0;
@@ -869,7 +866,6 @@
.hermes-kanban-run-outcome {
font-family: var(--font-mono, ui-monospace, monospace);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--color-foreground);
}
@@ -929,7 +925,6 @@
.hermes-kanban-run-meta-label {
font-size: 0.65rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--color-muted-foreground);
padding-bottom: 0.15rem;
+4
View File
@@ -224,6 +224,9 @@ def _compute_task_diagnostics(
rule definitions.
"""
from hermes_cli import kanban_diagnostics as kd
from hermes_cli.config import load_config
diag_config = kd.config_from_runtime_config(load_config())
# Build the candidate task list. We need each task's row + its
# events + its runs. Doing N separate queries works but scales
@@ -270,6 +273,7 @@ def _compute_task_diagnostics(
r,
events_by_task.get(tid, []),
runs_by_task.get(tid, []),
config=diag_config,
)
if diags:
out[tid] = [d.to_dict() for d in diags]