- Complete architectural overhaul of useUnifiedCompletion hook - Unified state management: 8 separate states → single CompletionState interface - Simplified core logic: getWordAtCursor 194 lines → 42 lines (78% reduction) - Fixed infinite React update loops with ref-based input tracking - Smart triggering mechanism replacing aggressive auto-completion - Integrated @agent and @file mention system with system reminders - Added comprehensive agent loading and mention processing - Enhanced Tab/Arrow/Enter key handling with clean event management - Maintained 100% functional compatibility across all completion types Key improvements: • File path completion (relative, absolute, ~expansion, @references) • Slash command completion (/help, /model, etc.) • Agent completion (@agent-xxx with intelligent descriptions) • System command completion (PATH scanning with fallback) • Terminal-style Tab cycling, Enter confirmation, Escape cancellation • Preview mode with boundary calculation • History navigation compatibility • Empty directory handling with user feedback Architecture: Event-driven @mention detection → system reminder injection → LLM tool usage Performance: Eliminated 7-layer nested conditionals, reduced state synchronization issues Reliability: Fixed maximum update depth exceeded warnings, stable state management
1.5 KiB
1.5 KiB
Path Completion Fix Summary
Problem Identified
Users reported that src/ and ./ were not triggering path completion correctly. Only absolute paths starting with / were working properly.
Root Cause
In the getWordAtCursor function (line 127), when a path ended with /, the code was incorrectly hardcoding the prefix to just / instead of using the entire path:
// BUGGY CODE (line 127):
return { type: 'file', prefix: '/', startPos: pathStart, endPos: input.length }
This caused the system to always show root directory contents instead of the intended directory.
Solution Implemented
Changed line 127 to properly capture the entire path as the prefix:
// FIXED CODE:
const fullPath = input.slice(pathStart, input.length)
return { type: 'file', prefix: fullPath, startPos: pathStart, endPos: input.length }
Test Results
All path types now work correctly:
- ✅
src/- Shows contents of src directory - ✅
./- Shows contents of current directory - ✅
../- Shows contents of parent directory - ✅
src- Shows matching files/directories - ✅
/usr/- Shows contents of /usr directory - ✅
~/- Shows contents of home directory - ✅
src/components/- Shows nested directory contents - ✅
.claude/- Shows hidden directory contents - ✅
./src/- Shows src directory via relative path
Impact
This fix restores proper path completion behavior for all relative and absolute paths, making the autocomplete system work as expected in a terminal-like environment.