Go to file
Tianyang 7e218b5738 fix: repair build, preserve unsaved edits on save failure, fix search/upload UX gaps
- client.test.ts: use globalThis.fetch instead of global.fetch and drop the
  unused describe import, fixing the broken `npm run build`
- DocumentEditor: separate load-error (replaces view) from save-error (shown
  inline, editor and unsaved content stay mounted so a failed save no longer
  destroys in-progress edits); expose dirty state via onDirtyChange
- App: prompt via window.confirm before switching documents while dirty;
  increment a refreshKey on successful upload so FileExplorer re-fetches the
  tree; track isSearching so the "no results" overlay doesn't flash during
  the search debounce window
- FileExplorer: accept a refreshKey prop to force a root-listing re-fetch
- SearchBar: convert to a controlled component (value prop) so App can clear
  the input after jumping to a search result, fixing input/state desync
- UploadButton: surface upload failures inline instead of swallowing the
  rejected promise, and keep the modal open for retry
2026-08-01 08:59:49 +08:00
backend fix: remove duplicate /health route, escape extracted text, validate uploads, handle binary decode 2026-08-01 08:59:34 +08:00
docs/superpowers Restructure backend plan to FastAPI's official routers/ + dependencies.py layout 2026-08-01 02:01:28 +08:00
frontend fix: repair build, preserve unsaved edits on save failure, fix search/upload UX gaps 2026-08-01 08:59:49 +08:00