Skip to content

feat(web): graph focus interaction — fly-to, neighborhood highlight, detail card (TASK-1734) - #702

Merged
xarmian merged 2 commits into
mainfrom
feat/graph-focus-interaction
Jun 5, 2026
Merged

feat(web): graph focus interaction — fly-to, neighborhood highlight, detail card (TASK-1734)#702
xarmian merged 2 commits into
mainfrom
feat/graph-focus-interaction

Conversation

@xarmian

@xarmian xarmian commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

Focus-mode interaction layer for the /graph view (PLAN-1730 phase 3, first half):

  • Click node → camera fly-to + neighborhood highlight (non-neighbors dim to low-alpha collection color; non-adjacent links fade to near-invisible; adjacent links brighten, blocks stay red).
  • DetailCard (new sibling component): ref/title/status pill/child count/updated-at from the graph payload, priority + assignee lazily fetched via api.items.get (refs resolve server-side), "Open item" button → item page, × to close.
  • Deselect: background click, Escape (gated on active selection), and automatic on workspace switch / show-completed toggle (selected node may vanish from the new payload).
  • CONVE-1688 discipline: selection sets are plain lets read by accessor closures; re-evaluation is explicit graph.refresh(); the only new $state is the card's presentation data, written from handlers only.

Context

Implements TASK-1734 under PLAN-1730. TASK-1737 (blocker-chain tracing) builds on this selection mechanism.

Test plan

  • make check — all green (svelte-check 0 errors)
  • svelte-autofixer — no issues on changed files
  • Visual pass post-merge via make install

xarmian added 2 commits June 5, 2026 22:53
…detail card (TASK-1734)

Clicking a node now enters focus mode instead of navigating away:
the camera flies to the node (800ms, standard distance-ratio pattern
with at-origin guard), its neighborhood (any shared edge type) keeps
full color while everything else dims to low-alpha, adjacent links
brighten and the rest fade hard. A DetailCard slides in from the
right: collection dot + ref + title, status pill (terminal styling),
child count, relative updated-at, plus priority/assignee fetched
lazily via the items API (stale-select token), and the "Open item"
button carrying the old click-through navigation.

Deselect via background click, Escape (only when a selection is
active), or automatically when the workspace/show-completed payload
changes. Selection sets stay plain non-reactive lets per CONVE-1688;
accessor re-evaluation is explicit via graph.refresh().

Parent: PLAN-1730.
…view (round 1)

The force layout mutates link source/target from ref strings into node
objects after ingest, so linkColor's adjacency check against
selectedRef silently failed once the simulation ran. Preserve the raw
refs as sourceRef/targetRef at mapping time and compare those.
@xarmian
xarmian merged commit 1c3db43 into main Jun 5, 2026
4 checks passed
@xarmian
xarmian deleted the feat/graph-focus-interaction branch June 5, 2026 22:57
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