Pond knowledge graph view (Obsidian-like) #112
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#112
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
An interactive per-pond graph: pages as nodes, resolved wikilinks as edges, phantom targets as dashed nodes — force layout with zoom/pan, click to open a page. Rendering must be fully self-contained (hard zero-external-request rule).
Scope
d3-forceinapps/web/package.json(bundled likelucide-react; ~10 kB gz incl. transitived3-quadtree/d3-dispatch/d3-timer; no DOM or network deps). Nod3-zoom/d3-selection— zoom/pan hand-rolled./p/:pondSlug/graphinapps/web/src/App.tsx(static segment ranked above:pageSlug, same documented reserved-slug gap astrash/settings) + an entry point in the sidebar.apps/web/src/graph/GraphView.tsx(new dir): SVG renderer — simulation ticks into React state; wheel zoom + pointer pan on a<g transform>; node drag pinning optional; node click navigates to/p/<pond>/<slug>.POST /ponds/:id/pageswith the slug's title), after which the node renders solid (phantom resolution is existing server behavior).color(fallbackDEFAULT_LABEL_COLOR), legend listing the labels present in the pond.graph(de+en).data-testidon every node for e2e.Acceptance criteria
GET /ponds/:pondId/links; zoom/pan and click-to-open work.Technical notes
/ponds/:id/links; nodes'labelIdscome with the payload.Dependencies
Requires #111.
Size
~2 days.
Implemented in
dbbe229./p/:pondSlug/graph(static segment, same reserved-slug gap as trash/settings) renders the pond graph: label-colored nodes with a legend, wikilink edges, dashed phantom nodes whose click creates the page. The renderer is a self-contained SVG force graph — onlyd3-forceis bundled (~11 kB gz, no d3 DOM/zoom modules, zero external requests), synchronous layout, pointer-math zoom/pan/drag, and a data-testid per node for the e2e pack. 500-node cap notice; sidebar footer links every member to the graph. Verified live including the phantom-create flow.