feat(tui-go): @ file-reference picker
Typing `@` at a word boundary in the chat input (mid-word `@` stays literal, e.g. emails) opens a workspace file picker: it requests file.list for the session (cached per session), filters as you type, and enter inserts `@path ` at the cursor — back to typing. Renders as a transparent overlay, windowed around the selection. file.list is classified non-rendering in the render-matrix guard. Tests cover token-boundary detection, ref insertion, and filtering. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,7 @@ const (
|
||||
OverlayStats
|
||||
OverlayIdeas
|
||||
OverlaySessions
|
||||
OverlayFiles
|
||||
)
|
||||
|
||||
// RouterEntry is one line in a session's conversation transcript.
|
||||
@@ -306,6 +307,13 @@ type Model struct {
|
||||
paletteFilter string
|
||||
paletteIndex int
|
||||
|
||||
// @ file picker (OverlayFiles) — workspace paths from the file.list reply
|
||||
files []string // all workspace-relative paths for filesFor
|
||||
filesFor string // sessionId the file list belongs to
|
||||
filesLoading bool
|
||||
fileFilter string // the query typed after @ (narrows the list)
|
||||
fileIndex int
|
||||
|
||||
// animation
|
||||
frame int // tick counter; drives spinner + caret blink
|
||||
ticking bool // true while a tick loop is scheduled. The loop is gated on animating()
|
||||
|
||||
Reference in New Issue
Block a user