- Use isInitialized flag to prevent effect re-triggering
- Use gitFilesFetched flag to prevent duplicate git API calls
- Fetch git files and initial files only once on first open
- Only refetch when search query actually changes
- Git files are optional - don't block on empty results
- Logs show initialization state for debugging
- Log all API calls with timing information
- Log cache hits and misses
- Log query changes and effect triggers
- Log response data structure
- Log file counts at each step
- Log errors with elapsed time
- Helps diagnose slow loading and missing files issues
- Handle file.status() errors gracefully (warn instead of error)
- Make git files optional (empty array if endpoint fails)
- Prevent duplicate API calls by tracking last query
- Only fetch git files once (check if cached before fetching)
- Short-circuit when no search query (just show git files)
- Better error messages (warn for git, error for search)
- Change from modal dialog to inline popover (no focus stealing)
- Keep textarea focused while file picker is open
- Fix loading flickering by caching git files
- Debounce file search to prevent rapid refetching
- Escape closes picker without removing @ text
- Enter selects file from picker
- Arrow keys navigate picker when open, history when closed
- Position picker above textarea using absolute positioning
- Mouse hover updates selection index
- Remove blur/focus from picker input
- Create attachment type system with file, text, symbol, and agent sources
- Implement file picker with SDK integration (find.files, file.status)
- Add @ detection in prompt input to trigger file search
- Create attachment chips UI for managing attached files
- Add attachment state management per session
- Update message submission to include attachments
- Implement drag & drop support for adding files
- Show git-modified files first in file picker with +/- indicators
- Filter files as user types after @
- Clear attachments after successful message send