File Browser¶
The read-only file browser lets you inspect any file in a project directly from the dashboard. It never writes — all edits go through the Claude chat panel or the runner agents.
Opening the browser¶
Click the folder-tree icon in the topbar. The browser opens as an overlay. On desktop it uses a split-pane layout (tree on left, preview on right). On mobile it uses a drill-down navigation pattern.
Navigation¶
The left pane shows the directory tree for the project root. Folders can be expanded and collapsed. Files with noisy or hidden markers are shown but dimmed. Click a file to open its preview.
The current path is shown in a breadcrumb above the preview. Click any segment to jump up the tree.
Preview types¶
| Extension / Content | Preview |
|---|---|
.md |
Rendered markdown with full styling |
.ts, .tsx, .js, .jsx, .py, .rs, .go, etc. |
Syntax-highlighted code with language detection |
.json, .toml, .yaml, .yml |
Syntax-highlighted |
.png, .jpg, .gif, .webp, .svg |
Inline image |
.pdf |
Inline PDF viewer |
| Binary files | "Binary file — raw download" message |
Text files are previewed up to 1 MB. PDF files stream up to 64 MB. Files exceeding these caps show a truncated preview with a download link.
Path safety¶
All file paths are validated server-side before reading. The server resolves the path relative to the project's repo_root and rejects any path that would escape the project directory (path traversal protection). Symlinks are followed only within the project tree.
Design constraint¶
The file browser is strictly read-only by design. The API routes (/api/projects/{slug}/tree and /api/projects/{slug}/file) only accept GET requests. There are no write, create, or delete endpoints. This constraint is enforced at the routing level — it is not possible to accidentally expose a write path.
If you need to edit a file, use the chat panel: describe the change to the Claude agent and it will write the file for you.