Spaces:
Sleeping
Sleeping
| # Tasks: Interactive Graph View | |
| **Feature**: 002-add-graph-view | |
| **Status**: Pending | |
| **Spec**: [spec.md](spec.md) | |
| ## Phase 1: Setup (Project Initialization) | |
| *Goal: Install dependencies and define core data structures.* | |
| - [x] T001 [P] Install `react-force-graph-2d` dependency in frontend/package.json | |
| - [x] T002 [P] Define Pydantic models (`GraphNode`, `GraphLink`, `GraphData`) in backend/src/models/graph.py | |
| - [x] T003 [P] Define TypeScript interfaces (`GraphNode`, `GraphLink`, `GraphData`) in frontend/src/types/graph.ts | |
| ## Phase 2: Foundational Tasks | |
| *Goal: Establish core backend logic required for all user stories.* | |
| - [x] T004 Update `IndexerService` with `get_graph_data()` method in backend/src/services/indexer.py | |
| - [x] T005 Implement `GET /api/graph` endpoint in backend/src/api/routes/graph.py | |
| - [x] T006 Register graph router in backend/src/api/main.py | |
| - [x] T007 [P] Add `getGraphData` function to frontend/src/services/api.ts | |
| - [x] T008 Create unit tests for graph API in backend/tests/unit/test_graph_api.py | |
| ## Phase 3: User Story 1 - Structural Overview | |
| *Goal: Visualize the note vault structure as an interactive graph.* | |
| - [x] T009 [US1] Create `GraphView` component with basic force-directed graph in frontend/src/components/GraphView.tsx | |
| - [x] T010 [US1] Integrate `getGraphData` hook into `GraphView` to load real data in frontend/src/components/GraphView.tsx | |
| - [x] T011 [US1] Add "Graph View" toggle button and conditional rendering logic in frontend/src/pages/MainApp.tsx | |
| - [x] T012 [US1] Style the graph container to occupy the full center panel in frontend/src/pages/MainApp.tsx | |
| ## Phase 4: User Story 2 - Visual Navigation | |
| *Goal: Enable navigation from the graph to specific notes.* | |
| - [x] T013 [US2] Implement `onNodeClick` handler to trigger `onSelectNote` callback in frontend/src/components/GraphView.tsx | |
| - [x] T014 [US2] Verify node hover tooltips display note titles correctly in frontend/src/components/GraphView.tsx | |
| - [x] T015 [US2] Ensure switching back from Graph View restores the standard Note View in frontend/src/pages/MainApp.tsx | |
| ## Phase 5: User Story 3 - Orphan Identification & Visuals | |
| *Goal: Highlight node connectivity and grouping.* | |
| - [x] T016 [US3] Implement node sizing logic (`val` based on link count) in backend/src/services/indexer.py | |
| - [x] T017 [US3] [P] Implement theme support (Dynamic Light/Dark colors) in frontend/src/components/GraphView.tsx | |
| - [x] T018 [US3] [P] Implement categorical node coloring based on `group` (folder) in frontend/src/components/GraphView.tsx | |
| ## Final Phase: Polish | |
| *Goal: Ensure stability and good UX.* | |
| - [x] T019 Implement loading state spinner in `GraphView` while fetching data in frontend/src/components/GraphView.tsx | |
| - [x] T020 Implement error handling banner in `GraphView` in frontend/src/components/GraphView.tsx | |
| - [x] T021 Implement graph state persistence (zoom/pan) to retain view when toggling in frontend/src/components/GraphView.tsx | |
| ## Dependencies | |
| 1. **Setup (T001-T003)**: Must be done first. | |
| 2. **Foundational (T004-T008)**: Depends on Setup. Required for all US phases. | |
| 3. **US1 (T009-T012)**: Depends on Foundational. | |
| 4. **US2 (T013-T015)**: Depends on US1 (needs GraphView component). | |
| 5. **US3 (T016-T018)**: Partially parallel with US2, but T016 (Backend sizing) is backend-only. T017/T018 modify GraphView. | |
| 6. **Polish (T019-T020)**: Can be done anytime after US1. | |
| ## Parallel Execution Strategy | |
| - **Backend vs Frontend**: Once models (T002/T003) are agreed upon, T004-T006 (Backend) can run parallel to T007-T009 (Frontend). | |
| - **Within US3**: T017 (Theme) and T018 (Group Colors) are independent UI tasks. | |
| ## Implementation Strategy | |
| 1. **MVP**: Complete Phases 1, 2, and 3 (US1). This delivers the core value: seeing the graph. | |
| 2. **Interaction**: Phase 4 adds the critical navigation workflow. | |
| 3. **Visuals**: Phase 5 enhances utility (orphans, importance). | |