From dc1d1eba0c6a7fa55e336c10c6e53046a75473ae Mon Sep 17 00:00:00 2001 From: Grail Finder Date: Fri, 21 Nov 2025 08:23:14 +0300 Subject: Fix: show last attached img on ctrl+j --- llm.go | 18 +++--------------- tables.go | 2 +- tui.go | 32 ++++++++++++++++---------------- 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/llm.go b/llm.go index f5cc4d5..90e63de 100644 --- a/llm.go +++ b/llm.go @@ -9,29 +9,17 @@ import ( ) var imageAttachmentPath string // Global variable to track image attachment for next message +var lastImg string // for ctrl+j -// SetImageAttachment sets an image to be attached to the next message sent to the LLM and updates UI +// SetImageAttachment sets an image to be attached to the next message sent to the LLM func SetImageAttachment(imagePath string) { imageAttachmentPath = imagePath - // Update the UI to show image is attached (call function from tui.go) - // UpdateImageAttachmentStatus(imagePath) -} - -// SetImageAttachmentWithoutUI sets an image to be attached without UI updates (for internal use where UI updates might cause hangs) -func SetImageAttachmentWithoutUI(imagePath string) { - imageAttachmentPath = imagePath + lastImg = imagePath } // ClearImageAttachment clears any pending image attachment and updates UI func ClearImageAttachment() { imageAttachmentPath = "" - // Update the UI to clear image attachment status (call function from tui.go) - // UpdateImageAttachmentStatus("") -} - -// ClearImageAttachmentWithoutUI clears any pending image attachment without UI updates -func ClearImageAttachmentWithoutUI() { - imageAttachmentPath = "" } type ChunkParser interface { diff --git a/tables.go b/tables.go index 3e58e72..46faec3 100644 --- a/tables.go +++ b/tables.go @@ -838,7 +838,7 @@ func makeFilePicker() *tview.Flex { // For image files, set it as an attachment for the next LLM message // Use the version without UI updates to avoid hangs in event handlers logger.Info("setting image", "file", itemText) - SetImageAttachmentWithoutUI(filePath) + SetImageAttachment(filePath) logger.Info("after setting image", "file", itemText) statusView.SetText("Image attached: " + filePath + " (will be sent with next message)") logger.Info("after setting text", "file", itemText) diff --git a/tui.go b/tui.go index 3345968..32cc550 100644 --- a/tui.go +++ b/tui.go @@ -32,18 +32,18 @@ var ( indexPickWindow *tview.InputField renameWindow *tview.InputField // pages - historyPage = "historyPage" - agentPage = "agentPage" - editMsgPage = "editMsgPage" - indexPage = "indexPage" - helpPage = "helpPage" - renamePage = "renamePage" - RAGPage = "RAGPage" - propsPage = "propsPage" - codeBlockPage = "codeBlockPage" - imgPage = "imgPage" + historyPage = "historyPage" + agentPage = "agentPage" + editMsgPage = "editMsgPage" + indexPage = "indexPage" + helpPage = "helpPage" + renamePage = "renamePage" + RAGPage = "RAGPage" + propsPage = "propsPage" + codeBlockPage = "codeBlockPage" + imgPage = "imgPage" filePickerPage = "filePicker" - exportDir = "chat_exports" + exportDir = "chat_exports" // help text helpText = ` [yellow]Esc[white]: send msg @@ -434,7 +434,7 @@ func init() { }) flex = tview.NewFlex().SetDirection(tview.FlexRow). AddItem(textView, 0, 40, false). - AddItem(textArea, 0, 10, true). // Restore original height + AddItem(textArea, 0, 10, true). // Restore original height AddItem(position, 0, 2, false) editArea = tview.NewTextArea(). SetPlaceholder("Replace msg...") @@ -814,18 +814,18 @@ func init() { } if event.Key() == tcell.KeyCtrlJ { // show image - check for attached image first, then fall back to agent image - if imageAttachmentPath != "" { + if lastImg != "" { // Load the attached image - file, err := os.Open(imageAttachmentPath) + file, err := os.Open(lastImg) if err != nil { - logger.Error("failed to open attached image", "path", imageAttachmentPath, "error", err) + logger.Error("failed to open attached image", "path", lastImg, "error", err) // Fall back to showing agent image loadImage() } else { defer file.Close() img, _, err := image.Decode(file) if err != nil { - logger.Error("failed to decode attached image", "path", imageAttachmentPath, "error", err) + logger.Error("failed to decode attached image", "path", lastImg, "error", err) // Fall back to showing agent image loadImage() } else { -- cgit v1.2.3