diff --git a/frontend/packages/swarm-ui/src/pages/IssueReportPage.tsx b/frontend/packages/swarm-ui/src/pages/IssueReportPage.tsx index a3c5b860..75045841 100644 --- a/frontend/packages/swarm-ui/src/pages/IssueReportPage.tsx +++ b/frontend/packages/swarm-ui/src/pages/IssueReportPage.tsx @@ -309,6 +309,7 @@ export function IssueReportPage() { ), ariaSort: ariaSortFor("title"), render: (r) => r.title, + filterValue: (r) => r.title, }, { key: "labels", @@ -328,6 +329,14 @@ export function IssueReportPage() { ), ariaSort: ariaSortFor("assignees"), render: (r) => (r.assignees.length ? r.assignees.join(", ") : "—"), + // Text, not `"select"` — a row can carry more than one assignee, + // and `Table`'s select mode matches one whole string per row + // exactly, so a real per-assignee dropdown would need `Table` + // itself to grow multi-value filtering. Substring search over + // the joined string still finds "iris" inside "damocles, iris" + // correctly, which covers the actual gap (no way to filter by + // assignee at all today). + filterValue: (r) => r.assignees.join(", "), }, { key: "blocked", @@ -343,6 +352,13 @@ export function IssueReportPage() { ariaSort: ariaSortFor("blocked"), render: (r) => r.blocked ? : "—", + // A distinct gap from the existing "hide blocked" toggle above: + // that one only *hides* blocked issues, there was no way to see + // *only* the blocked ones. Synthesized two-value string (not the + // raw boolean) — `Table`'s select mode needs a string to match, + // same as `AgentsPage`'s `wanted ?? "no declaration"` pattern. + filterValue: (r) => (r.blocked ? "blocked" : "not blocked"), + filterMode: "select", }, { key: "depended_on_by_count",