Skip to content

Commit eac8f34

Browse files
committed
Code browsing UI, security hardening, prompt builder fix (v1.5.0)
Replace graph visualization with dedicated Code browsing section: file list → symbol detail → edges/relations. Security fixes: upload filename validation, relation schema limits, edges endpoint encapsulation. Prompt builder: allow toggling empty graphs.
1 parent 7e994df commit eac8f34

49 files changed

Lines changed: 850 additions & 899 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
## UI
6666

6767
- [UI Architecture](ui-architecture.md) — React + MUI + FSD stack, routing, auth flow
68-
- [UI Features](ui-features.md) — all pages: dashboard, kanban, graph viz, prompt generator, etc.
68+
- [UI Features](ui-features.md) — all pages: dashboard, kanban, code browser, prompt generator, etc.
6969
- [UI Patterns](ui-patterns.md) — FSD conventions, page patterns, hooks, state management, WebSocket, ACL
7070

7171
## Development

docs/api-rest.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,11 @@ See [Authentication](authentication.md) for details on auth middleware.
100100
| GET | `/api/projects/:id/skills/:skillId/attachments/:filename` | Download attachment |
101101
| DELETE | `/api/projects/:id/skills/:skillId/attachments/:filename` | Delete attachment |
102102

103-
## Search endpoints (docs/code/files)
103+
## Search endpoints (docs/files)
104104

105105
| Method | Path | Description |
106106
|--------|------|-------------|
107107
| GET | `/api/projects/:id/docs/search?q=...` | Search docs |
108-
| GET | `/api/projects/:id/code/search?q=...` | Search code symbols |
109108
| GET | `/api/projects/:id/files` | List files (query: `directory`, `extension`, `language`, `filter`, `limit`) |
110109
| GET | `/api/projects/:id/files/search?q=...` | Search files by path |
111110

@@ -115,11 +114,15 @@ See [Authentication](authentication.md) for details on auth middleware.
115114
|--------|------|-------------|
116115
| GET | `/api/projects/:id/team` | List team members |
117116

118-
## Graph export
117+
## Code endpoints
119118

120119
| Method | Path | Description |
121120
|--------|------|-------------|
122-
| GET | `/api/projects/:id/graph?scope=...` | Export graph for visualization (scope: `knowledge`, `tasks`, `docs`, `code`, `files`, `skills`, `all`) |
121+
| GET | `/api/projects/:id/code/files` | List indexed code files |
122+
| GET | `/api/projects/:id/code/files/:fileId/symbols` | List symbols for a file |
123+
| GET | `/api/projects/:id/code/symbols/:symbolId` | Get symbol detail |
124+
| GET | `/api/projects/:id/code/symbols/:symbolId/edges` | Get edges for a symbol (imports, contains, extends, implements) |
125+
| GET | `/api/projects/:id/code/search?q=...` | Search code symbols |
123126

124127
## Tools explorer
125128

docs/architecture.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ src/
158158
docs.ts # Docs search routes
159159
code.ts # Code search routes
160160
files.ts # Files REST routes
161-
graph.ts # Graph export endpoint
162161
tools.ts # Tools explorer REST routes
163162
websocket.ts # WebSocket server
164163
embed.ts # POST /api/embed endpoint
@@ -276,7 +275,6 @@ Read-only tools (list, get, search) run without queueing — Graphology's in-mem
276275
| `react` + `react-dom` | UI framework (v19) |
277276
| `react-router-dom` | Client-side routing (v7) |
278277
| `@mui/material` + `@mui/icons-material` | Component library (v7) |
279-
| `cytoscape` | Graph visualization |
280278
| `react-markdown` + `remark-gfm` | Markdown rendering |
281279
| `@uiw/react-md-editor` | Markdown editor |
282280
| `vite` | Build tool + dev server (v8) |

docs/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
| **Multi-project** | One process manages multiple projects with independent graphs |
2424
| **Workspaces** | Share knowledge/tasks/skills across related projects (e.g. microservices) |
2525
| **REST API** | Express-based HTTP API for all CRUD operations |
26-
| **Web UI** | React 19 + MUI 7 dashboard with kanban board, graph visualization, search |
26+
| **Web UI** | React 19 + MUI 7 dashboard with kanban board, code browsing, search |
2727
| **Real-time updates** | WebSocket push events on every mutation |
2828
| **Authentication** | Password-based login with JWT cookies, API keys for programmatic access |
2929
| **Access control** | 4-level ACL: graph > project > workspace > server > default |

docs/ui-architecture.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
| React | 19 | UI framework |
1010
| Material UI (MUI) | 7 | Component library |
1111
| React Router DOM | 7 | Client-side routing |
12-
| Cytoscape.js | 3.33 | Graph visualization |
1312
| Vite | 8 | Build tool + dev server |
1413
| react-markdown + remark-gfm || Markdown rendering |
1514
| @uiw/react-md-editor || Markdown editor |
@@ -29,10 +28,10 @@ ui/src/
2928
│ ├── tasks/ # Kanban board + drag-drop + detail/edit/new
3029
│ ├── skills/ # Skill management + triggers + usage
3130
│ ├── docs/ # Browse documentation + detail view
31+
│ ├── code/ # Code browser + symbol detail
3232
│ ├── files/ # File browser + search + detail
3333
│ ├── prompts/ # AI prompt generator
3434
│ ├── search/ # Cross-graph unified search
35-
│ ├── graph/ # Cytoscape.js visualization
3635
│ ├── tools/ # MCP tools explorer
3736
│ ├── help/ # Searchable documentation
3837
│ └── login/ # Email + password login
@@ -50,7 +49,6 @@ ui/src/
5049
│ ├── file/ # FileInfo type, API
5150
│ ├── doc/ # searchDocs API
5251
│ ├── code/ # searchCode API
53-
│ └── graph/ # GraphNode, GraphEdge, exportGraph API
5452
├── content/
5553
│ ├── help/ # Help articles (markdown, bundled via ?raw)
5654
│ └── prompts/ # Prompt templates (roles, styles, scenarios, graphs)
@@ -90,10 +88,11 @@ All routes are scoped to a project: `/:projectId/...`
9088
| `/:projectId/skills` | SkillsPage |
9189
| `/:projectId/skills/:skillId` | Skill detail |
9290
| `/:projectId/docs` | DocsPage |
91+
| `/:projectId/code` | CodePage |
92+
| `/:projectId/code/:symbolId` | CodeDetailPage |
9393
| `/:projectId/files` | FilesPage |
9494
| `/:projectId/prompts` | PromptsPage |
9595
| `/:projectId/search` | SearchPage |
96-
| `/:projectId/graph` | GraphPage |
9796
| `/:projectId/tools` | ToolsPage |
9897
| `/:projectId/help` | HelpPage |
9998

docs/ui-features.md

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
| **Tasks** | Kanban board with drag-drop |
1010
| **Skills** | Recipe/procedure management |
1111
| **Docs** | Browse indexed documentation |
12+
| **Code** | Code browser with symbol navigation |
1213
| **Files** | File browser with search |
1314
| **Prompts** | AI prompt generator |
1415
| **Search** | Cross-graph unified search |
15-
| **Graph** | Interactive graph visualization |
1616
| **Tools** | MCP tools explorer |
1717
| **Help** | Built-in documentation |
1818
| **Login** | Email + password authentication |
@@ -58,10 +58,17 @@ Stats cards showing counts for each graph (notes, tasks, skills, docs, code, fil
5858
## Docs
5959

6060
- **File list** — browse all indexed markdown files
61-
- **Table of contents** — heading hierarchy for each file
61+
- **Table of contents** — heading hierarchy for each file with content snippets
6262
- **Detail view** — rendered markdown content with syntax highlighting
6363
- **Search** — semantic search across documentation
6464

65+
## Code
66+
67+
- **File list** — browse indexed code files with symbol counts per file
68+
- **Expandable symbols** — each file expands to show symbols with kind chips (function, class, interface, etc.) and signature snippets
69+
- **Semantic search** — hybrid search across code symbols
70+
- **Detail page** — view source code, relations, and edges (imports, contains, extends, implements)
71+
6572
## Files
6673

6774
- **Directory navigation** — breadcrumb path, click to navigate
@@ -89,16 +96,6 @@ Unified semantic search across all 6 graphs:
8996
- Score-based ranking within each group
9097
- Click results to navigate to detail views
9198

92-
## Graph
93-
94-
Interactive force-directed graph visualization using Cytoscape.js:
95-
96-
- **Scope filter** — view knowledge, tasks, skills, docs, code, files, or all
97-
- **Force-directed layout** — nodes automatically position based on connections
98-
- **Node inspector** — click a node to see its details
99-
- **Zoom/pan** — mouse wheel zoom, drag to pan
100-
- **Color coding** — different colors per graph type
101-
10299
## Tools
103100

104101
MCP tools explorer for testing and debugging:
@@ -145,7 +142,6 @@ All data pages react to WebSocket events:
145142
- **Tasks** — kanban board updates on create/update/delete/move
146143
- **Skills** — skill list updates on create/update/delete
147144
- **Dashboard** — stats and recent activity refresh
148-
- **Graph** — visualization updates when indexer processes files
149145

150146
## Responsive design
151147

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@graphmemory/server",
3-
"version": "1.4.1",
3+
"version": "1.5.0",
44
"description": "MCP server for semantic graph memory from markdown files",
55
"main": "dist/cli/index.js",
66
"bin": {

site/docs/getting-started/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Graph Memory is an [MCP (Model Context Protocol)](https://modelcontextprotocol.i
3131
| **Hybrid search** | BM25 keyword + vector cosine similarity with graph expansion |
3232
| **Real-time** | File watching + WebSocket push to UI |
3333
| **Multi-project** | One process manages multiple projects from a single config |
34-
| **Web UI** | Dashboard, kanban board, graph visualization, search, prompt builder |
34+
| **Web UI** | Dashboard, kanban board, code browser, search, prompt builder |
3535

3636
## How it works
3737

site/docs/getting-started/quick-start.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,4 @@ Graph Memory creates six interconnected graphs from your project:
8585

8686
- [Configuration](./configuration) — customize with `graph-memory.yaml`
8787
- [MCP Tools](/docs/mcp-tools) — explore all 58 tools
88-
- [Web UI](/docs/web-ui) — dashboard, kanban, graph visualization
88+
- [Web UI](/docs/web-ui) — dashboard, kanban, code browser, search

0 commit comments

Comments
 (0)