Skip to content

feat(web): graph view enhancements — larger drawer, node detail panel, toggleable legend, bigger cards (TASK-1787) - #724

Merged
xarmian merged 3 commits into
mainfrom
feat/graph-enhancements
Jun 9, 2026
Merged

feat(web): graph view enhancements — larger drawer, node detail panel, toggleable legend, bigger cards (TASK-1787)#724
xarmian merged 3 commits into
mainfrom
feat/graph-enhancements

Conversation

@xarmian

@xarmian xarmian commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

Four UX enhancements to the per-item dependency graph (PLAN-1780):

  1. Larger drawer — opens to min(1500px, 94vw), taking up the majority of the page.
  2. Node detail panel — single-clicking a node selects it and opens a detail card (ref, title, collection chip, status, terminal/child-count) with Open item ↗ and Focus here (re-root) actions. Re-root/open are now explicit panel actions instead of bare-click behaviors, so a stray click can't navigate away.
  3. Toggleable legend — legend entries are buttons that hide/show a collection. Hidden collections (and any edge touching them) drop out via derived filters without recomputing the dagre layout, so node positions stay stable across toggles.
  4. Bigger cards + double-click zoom — node cards are larger (212×60) and show up to two title lines; double-clicking a card zooms/centers on it.

Notes

  • Selection is cleared when a re-root/refetch drops the node from the neighborhood.
  • Drawer width is in the item page; everything else is in ItemGraph.svelte.

Test plan

  • cd web && npm run check — 0 errors (preexisting unrelated warnings only)
  • cd web && npm run build — clean
  • [n/a] go tests — no Go changes

xarmian added 3 commits June 8, 2026 23:52
…, toggleable legend, bigger cards (TASK-1787)

1. Drawer opens wider — min(1500px, 94vw) — to take up the majority of the page.
2. Single-clicking a node selects it and opens a detail panel (ref, title,
   collection, status, terminal/child-count) with "Open item ↗" and "Focus
   here" (re-root) actions. Re-root/open are now explicit panel actions rather
   than bare-click behaviors, so a stray click can't navigate.
3. Legend entries are buttons that toggle a collection's visibility — hidden
   collections (and edges touching them) drop out via derived filters without
   recomputing the dagre layout, so positions stay stable.
4. Bigger node cards (212x60) showing up to two title lines; double-clicking a
   card zooms/centers on it.

Parent: PLAN-1780 (follow-up). Drawer width lives in the item page; the rest in
ItemGraph.svelte. Validated with svelte-check (0 errors) + build.
… per Codex review (round 1)

- onPointerDown ignores presses that land on an interactive overlay (legend,
  detail card, error retry) via a target.closest check, so clicking those
  controls no longer begins a viewport drag / pointer capture. Avoids adding
  pointerdown handlers to static divs (keeps svelte a11y clean); detail card
  role dialog→group (no tabindex requirement, supports aria-label).
- fitView now computes bounds from the currently VISIBLE nodes (falling back to
  full bounds when none visible), so Fit frames what's on screen after hiding
  collections instead of centering on invisible nodes.

Parent: PLAN-1780.
…und 2)

currentBounds() now returns null when no nodes are visible (instead of falling
back to the full graph bounds), so fitView() — including the post-reroot
queueFit — no-ops rather than recentering on the hidden graph. Removed the now
dead full-graph bounds tracking (contentBounds + runLayout bounds computation).

Parent: PLAN-1780.
@xarmian
xarmian merged commit bd16b9b into main Jun 9, 2026
4 checks passed
@xarmian
xarmian deleted the feat/graph-enhancements branch June 9, 2026 00:03
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