Fix: show last attached img on ctrl+j

This commit is contained in:
Grail Finder
2025-11-21 08:23:14 +03:00
parent e8413ce613
commit dc1d1eba0c
3 changed files with 20 additions and 32 deletions

18
llm.go
View File

@@ -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 {

View File

@@ -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)

8
tui.go
View File

@@ -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 {