feat(graph): navigation & UX — deep-link, depth, PNG, rich panel (PR D) #134

Merged
chaim merged 1 commits from worktree-graph-nav into main 2026-06-08 04:56:26 +00:00
Owner

PR D — האחרון בסדרת גרף-הקורפוס. מחבר את הגרף לזרימת-העבודה של היו״ר ומשלים את האינטראקציות בסגנון Obsidian.

Backend: cap עומק neighborhood 2→3 (חסום ב-NODE_CAP_MAX).

Frontend:

  • Deep-link /graph?focus=cl:<id> — נקרא ב-mount ונכתב בשינוי focus (router.replace, scroll:false). <Suspense> סביב GraphView (דרישת useSearchParams ב-Next 16).
  • כפתור "הצג בגרף" בדף הפסיקה → /graph?focus=cl:<id>.
  • סליידר עומק 1–3 ב-overlay הממוקד.
  • ייצוא PNG מה-canvas (toDataURL→הורדה); כשל → toast (UI4).
  • פאנל עשיר: נקודות-פסיקה מושכות headnote/summary דרך usePrecedent (Skeleton + error מוצג, UI4).
  • מקרא קשתות (ציטוט / נושא-תחום / יומון).

נדחה לפעם הבאה: הרחבה-במקום, חיפוש→מרכוז-מצלמה.

build+lint עוברים. Invariants: G2 · UI4. npm run api:types אחרי deploy.

🤖 Generated with Claude Code

PR D — האחרון בסדרת גרף-הקורפוס. מחבר את הגרף לזרימת-העבודה של היו״ר ומשלים את האינטראקציות בסגנון Obsidian. **Backend:** cap עומק neighborhood 2→3 (חסום ב-NODE_CAP_MAX). **Frontend:** - **Deep-link** `/graph?focus=cl:<id>` — נקרא ב-mount ונכתב בשינוי focus (`router.replace`, scroll:false). `<Suspense>` סביב GraphView (דרישת `useSearchParams` ב-Next 16). - כפתור **"הצג בגרף"** בדף הפסיקה → `/graph?focus=cl:<id>`. - **סליידר עומק 1–3** ב-overlay הממוקד. - **ייצוא PNG** מה-canvas (toDataURL→הורדה); כשל → toast (UI4). - **פאנל עשיר**: נקודות-פסיקה מושכות headnote/summary דרך `usePrecedent` (Skeleton + error מוצג, UI4). - **מקרא קשתות** (ציטוט / נושא-תחום / יומון). נדחה לפעם הבאה: הרחבה-במקום, חיפוש→מרכוז-מצלמה. build+lint עוברים. Invariants: G2 · UI4. `npm run api:types` אחרי deploy. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-08 04:56:19 +00:00
Final corpus-graph PR. Connects the graph to the chair's workflow and rounds
out the Obsidian-grade interactions.

Backend (web/graph_api.py): neighborhood depth cap 2 → 3 (still bounded by
NODE_CAP_MAX).

Frontend:
- URL deep-link: /graph?focus=cl:<id> is read on mount and written on focus
  change (router.replace, scroll:false). GraphView wrapped in <Suspense> per
  Next 16's useSearchParams requirement.
- "הצג בגרף" button on the precedent detail page → /graph?focus=cl:<id>.
- Depth slider (1–3) in the focused overlay → useNodeNeighborhood(id, depth).
- Export PNG: grabs the rendered <canvas> from the area ref → toDataURL →
  download; failures surface a toast (UI4).
- Rich node panel: precedent nodes fetch headnote/summary via the existing
  usePrecedent hook (Skeleton while pending, error surfaced — UI4).
- Edge-type legend (ציטוט / נושא-תחום / יומון) added under the node legend.

Deferred (noted for a later pass): expand-in-place merge, search→camera-center.

web-ui build + lint pass. Invariants: G2 (depth change is read-only), UI4
(PNG + detail errors surfaced, not swallowed). api:types post-deploy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit b022cc7a97 into main 2026-06-08 04:56:26 +00:00
chaim deleted branch worktree-graph-nav 2026-06-08 04:56:26 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#134