hermes - 💡(How to fix) Fix bug(kanban-dashboard): bulk-reassign Select uses onChange/e.target.value but SDK Select fires onValueChange(value) — Apply does nothing [2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#28968Fetched 2026-05-20 04:00:55
View on GitHub
Comments
2
Participants
3
Timeline
7
Reactions
0
Author
Timeline (top)
labeled ×3commented ×2mentioned ×1subscribed ×1

Error Message

Actual: the dropdown visually keeps showing — reassign — no matter what is clicked. The assignee local state stays "" so the inner if (!assignee) return; guard fires and Apply silently no-ops. There is no toast, no error, no console warning.

Root Cause

In plugins/kanban/dashboard/dist/index.js (and presumably the TSX source that builds it) the bulk-reassign Select is wired with the HTML-style onChange: e => setAssignee(e.target.value) pattern:

h(Select, {
  value: assignee,
  onChange: function (e) { setAssignee(e.target.value); },
  className: "h-7 text-xs",
}, ...)

But the SDK's Select is a custom (Radix-style?) component — the bundle even contains a comment a few hundred bytes earlier that documents this:

// The SDK's Select component fires onValueChange(value) directly // API — use it as: h(Select, {..., ...selectChangeHandler(setState), ...})

So e.target.value is undefined (or the event itself doesn't have target), and setAssignee never gets called with a real value. The same file uses the correct onValueChange / selectChangeHandler pattern in several other places (board picker, tenant filter, assignee filter), so the bulk-reassign Select is just an inconsistency.

Fix Action

Fix

In the bulk-bar component (the one that renders the priority input, Set priority button, the assignee dropdown and the Reclaim first checkbox), replace the Select's onChange with onValueChange:

 h(Select, {
   value: assignee,
-  onChange: function (e) { setAssignee(e.target.value); },
+  onValueChange: function (v) { setAssignee(v); },
   className: "h-7 text-xs",
 }, ...)

Verified locally by patching the bundled dist/index.js — Apply now actually reassigns the selected tasks and the dispatcher picks them up.

Code Example

h(Select, {
  value: assignee,
  onChange: function (e) { setAssignee(e.target.value); },
  className: "h-7 text-xs",
}, ...)

---

h(Select, {
   value: assignee,
-  onChange: function (e) { setAssignee(e.target.value); },
+  onValueChange: function (v) { setAssignee(v); },
   className: "h-7 text-xs",
 }, ...)
RAW_BUFFERClick to expand / collapse

Repro

  1. Open Kanban dashboard at /kanban
  2. Click one or more task cards to select them (bulk-bar shows X selected correctly)
  3. In the bulk-bar, use the reassign dropdown — try selecting a profile (e.g. default)
  4. Click Apply

Expected: selected profile is assigned to all selected tasks; dispatcher picks them up on next tick.

Actual: the dropdown visually keeps showing — reassign — no matter what is clicked. The assignee local state stays "" so the inner if (!assignee) return; guard fires and Apply silently no-ops. There is no toast, no error, no console warning.

Root cause

In plugins/kanban/dashboard/dist/index.js (and presumably the TSX source that builds it) the bulk-reassign Select is wired with the HTML-style onChange: e => setAssignee(e.target.value) pattern:

h(Select, {
  value: assignee,
  onChange: function (e) { setAssignee(e.target.value); },
  className: "h-7 text-xs",
}, ...)

But the SDK's Select is a custom (Radix-style?) component — the bundle even contains a comment a few hundred bytes earlier that documents this:

// The SDK's Select component fires onValueChange(value) directly // API — use it as: h(Select, {..., ...selectChangeHandler(setState), ...})

So e.target.value is undefined (or the event itself doesn't have target), and setAssignee never gets called with a real value. The same file uses the correct onValueChange / selectChangeHandler pattern in several other places (board picker, tenant filter, assignee filter), so the bulk-reassign Select is just an inconsistency.

Fix

In the bulk-bar component (the one that renders the priority input, Set priority button, the assignee dropdown and the Reclaim first checkbox), replace the Select's onChange with onValueChange:

 h(Select, {
   value: assignee,
-  onChange: function (e) { setAssignee(e.target.value); },
+  onValueChange: function (v) { setAssignee(v); },
   className: "h-7 text-xs",
 }, ...)

Verified locally by patching the bundled dist/index.js — Apply now actually reassigns the selected tasks and the dispatcher picks them up.

Secondary suggestion (separate, smaller)

The Apply handler silently returns when selectedIds.size === 0. From a user point of view this looks identical to "backend ignored my request". A window.alert(...) or a toast ("select tasks first") would make the failure mode obvious. Happy to file a separate issue for that if useful.

Environment

  • hermes-agent main, commit 9fb40e6a3 (current at time of report)
  • Self-hosted dashboard, hermes dashboard --port 9119 --insecure
  • 1 registered profile (default)
  • Bundle: plugins/kanban/dashboard/dist/index.js

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix bug(kanban-dashboard): bulk-reassign Select uses onChange/e.target.value but SDK Select fires onValueChange(value) — Apply does nothing [2 comments, 3 participants]