* feat: markdown file browser sidebar tab (#367)
Add a Files sidebar tab that lets users browse and annotate markdown
files from their project. The project root is shown automatically —
no configuration needed. Users can add extra directories in Settings.
- Server: new /api/reference/files endpoint scans directories for .md
files with broad exclusion list (node_modules, .git, dist, etc.)
- Server: projectRoot sent in /api/plan response (plan + annotate)
- UI: FileBrowser component with per-directory collapsible sections
- UI: useFileBrowser hook manages multi-directory tree state
- UI: Files tab in sidebar (collapsed + expanded), between Versions
and Vault
- UI: Settings integration tab for additional directories
- Wired into linked doc system for annotation support
Closes#367
For provenance purposes, this commit was AI assisted.
* fix: simplify file browser - compute activeDirPath, fix re-fetch bug, dedupe settings logic
- Compute activeDirPath from activeFile + dirs instead of storing as
separate state (removes state setter hack that abused setDirs as a
read accessor)
- Fix auto-fetch not detecting directory changes: compare loaded paths
against configured dirs instead of checking dirs.length === 0
- Extract addDirectory() helper in Settings to eliminate copy-pasted
trim-validate-add-clear logic
- Remove "what" comments that described obvious code
For provenance purposes, this commit was AI assisted.
* fix: file browser prefix match, settings reactivity, and vault→files routing
- Add trailing slash to activeDirPath startsWith check to prevent prefix collisions
- Spread uiPrefs in handleFileBrowserChange so React sees a new reference on each settings edit
- Clear vaultBrowser.activeFile when opening a file browser doc to prevent misrouted links
For provenance purposes, this commit was AI assisted.