• prod-v0.6.0-initial 1781f12f6e

    Knowledge graph: live Obsidian-like simulation with tunable physics
    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

    fable-5 released this 2026-07-15 11:29:03 +02:00 | 169 commits to main since this release

    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.) 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

    Downloads