Skip to content

feat(web): graph search fly-to + collection/status/role filters (TASK-1735) - #703

Merged
xarmian merged 3 commits into
mainfrom
feat/graph-search-filters
Jun 5, 2026
Merged

feat(web): graph search fly-to + collection/status/role filters (TASK-1735)#703
xarmian merged 3 commits into
mainfrom
feat/graph-search-filters

Conversation

@xarmian

@xarmian xarmian commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

Search + filters for the /graph view (PLAN-1730 phase 3, second half):

  • Search fly-to: toolbar type-ahead over the loaded (post-filter) nodes — color dot + ref + title rows, keyboard navigation; picking reuses selectNode() (fly-to + neighborhood highlight + DetailCard).
  • Filters: collection chips (palette dots), status chips, role select (only when roles are present — the endpoint now emits each node's agent-role slug). Filtering subsets the rendered graph (edges need both endpoints), counts show "X of Y", filter changes deselect, workspace switch resets filters.
  • Backend delta is two lines: GraphNode.Role from the ListItems join.

Context

Implements TASK-1735 under PLAN-1730.

Test plan

  • make check — all green (svelte-check 0 errors; Go tests incl. graph handler pass)
  • svelte-autofixer — GraphToolbar clean; page advisories are the documented CONVE-1688 idiom
  • Visual pass post-merge via make install

xarmian added 3 commits June 5, 2026 23:07
…-1735)

Toolbar grows a type-ahead search (ref/title over the post-filter node
list; ArrowUp/Down + Enter picks, Escape closes without stealing the
page's deselect) that routes through the existing selectNode() — same
camera fly-to, highlight, and detail card as a click. Client-side
filters subset the rendered graph: collection chips with palette dots,
status chips, and a role select (hidden when no node carries a role;
the graph endpoint now emits the assigned agent-role slug per node).
Edges survive only when both endpoints do; counts read "X of Y" while
filtered. Workspace switch resets filters; show-completed doesn't.
Filter changes deselect so a vanished node can't strand focus mode.

New GraphToolbar.svelte owns the presentational toolbar; the page owns
authoritative filter state (CONVE-1688 discipline unchanged).

Parent: PLAN-1730.
The dropdown opened on focus/input but only closed on pick or Escape,
leaving stale results floating over the canvas after clicking away.
The result buttons already pick on mousedown+preventDefault, so the
input never blurs mid-pick — a plain onblur close is safe.
…(round 2)

Escape in a focused-but-empty search now falls through to the
page-level deselect instead of being swallowed by the searchOpen flag.
@xarmian
xarmian merged commit 77dcd07 into main Jun 5, 2026
4 checks passed
@xarmian
xarmian deleted the feat/graph-search-filters branch June 5, 2026 23:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant