All checks were successful
CD / Build and push images (push) Successful in 4m2s
CD / Deploy to Test (push) Successful in 9s
CI / Lint, typecheck, test (push) Successful in 4m28s
CI / Build container images (push) Has been skipped
CD / Smoke tests against Test (push) Successful in 1m13s
CD / Promote to Int (push) Successful in 11s
CI / Auth e2e pack (push) Successful in 6m42s
CI / Import/export fidelity gate (push) Successful in 49s
Release / Build release images and notes (push) Successful in 1m7s
Release / Release-candidate operations QA (push) Successful in 42s
Prod deploy / Deploy the released images to Prod (push) Successful in 21s
The force layout used to run once (tick(250)) and freeze; dragging moved a single node with no reaction from its neighbors. The simulation now stays alive: React renders the SVG structure (testids, edge/ring classes — the e2e contract is unchanged) while each tick writes positions imperatively into the element refs, and it settles to rest via alpha decay, which also keeps Playwright's stability wait happy. Dragging pins the node (fx/fy) and reheats the physics, so the neighborhood gets pulled along; a plain click still just opens the page. Surviving nodes keep their positions across data refreshes, e.g. when a phantom becomes a real page. The graph page gains four sliders — attraction, repulsion, node size, font size — persisted per pond (ui.graph.settings.<pondId>) with a reset; the inner view is keyed by pond id because usePersistentState reads its key only on mount (#108 trap). The local panel adopts those settings (no second set of sliders) and swaps the two fixed hop buttons for a 1–5 depth slider. Fixes #123 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fb2VzvcoBPHkjh8bZ6PzQn
24 lines
885 B
JSON
24 lines
885 B
JSON
{
|
|
"title": "Knowledge graph",
|
|
"link": "Graph",
|
|
"hint": "Click a page to open it, drag nodes to rearrange, scroll to zoom.",
|
|
"counts": "{{pages}} pages · {{links}} links",
|
|
"empty": "No pages yet — the graph appears once pages link to each other.",
|
|
"tooLarge": "This pond has more than {{max}} pages — the graph view is capped.",
|
|
"legend": "Labels",
|
|
"unlabeled": "No label",
|
|
"phantomLegend": "Missing page (wikilink target)",
|
|
"createPhantom": "Create the page “{{slug}}”? The wikilinks pointing at it will resolve.",
|
|
"localTitle": "Local graph",
|
|
"localHops_one": "Neighborhood: {{count}} hop",
|
|
"localHops_other": "Neighborhood: {{count}} hops",
|
|
"localHopsLabel": "Neighborhood depth",
|
|
"controls": {
|
|
"attraction": "Attraction",
|
|
"repulsion": "Repulsion",
|
|
"nodeRadius": "Node size",
|
|
"fontSize": "Font size",
|
|
"reset": "Reset"
|
|
}
|
|
}
|