From 4937409a45e202a16e85ad44f8ffceb236ce525c Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Wed, 16 Jul 2025 08:01:49 -0700 Subject: [PATCH 1/3] fix: start filepicker in cwd instead of os.Homedir --- internal/app/app.go | 5 +++++ .../components/dialogs/filepicker/filepicker.go | 15 +++++++++++++-- internal/tui/tui.go | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index f15b3361fb1d8117dc8cdac2a24ba66e1fcee69b..654cb87ca643530eb030195f5b45679ee18af8e6 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -92,6 +92,11 @@ func New(ctx context.Context, conn *sql.DB, cfg *config.Config) (*App, error) { return app, nil } +// Config returns the application configuration. +func (app *App) Config() *config.Config { + return app.config +} + // RunNonInteractive handles the execution flow when a prompt is provided via CLI flag. func (app *App) RunNonInteractive(ctx context.Context, prompt string, quiet bool) error { slog.Info("Running in non-interactive mode") diff --git a/internal/tui/components/dialogs/filepicker/filepicker.go b/internal/tui/components/dialogs/filepicker/filepicker.go index aa8956fee9a184a906a4059080fc1557d13414e1..83a7e57236a89f50ae90ecd2e7f25aa217f3d5f4 100644 --- a/internal/tui/components/dialogs/filepicker/filepicker.go +++ b/internal/tui/components/dialogs/filepicker/filepicker.go @@ -45,11 +45,22 @@ type model struct { help help.Model } -func NewFilePickerCmp() FilePicker { +func NewFilePickerCmp(workingDir string) FilePicker { t := styles.CurrentTheme() fp := filepicker.New() fp.AllowedTypes = []string{".jpg", ".jpeg", ".png"} - fp.CurrentDirectory, _ = os.UserHomeDir() + + if workingDir != "" { + fp.CurrentDirectory = workingDir + } else { + // Fallback to current working directory, then home directory + if cwd, err := os.Getwd(); err == nil { + fp.CurrentDirectory = cwd + } else { + fp.CurrentDirectory, _ = os.UserHomeDir() + } + } + fp.ShowPermissions = false fp.ShowSize = false fp.AutoHeight = false diff --git a/internal/tui/tui.go b/internal/tui/tui.go index 811c18122687464d216e33f093aba60bbf5221c1..d7e9f6dbd2a1c9ff3391b7675494ec2c0e38da10 100644 --- a/internal/tui/tui.go +++ b/internal/tui/tui.go @@ -204,7 +204,7 @@ func (a *appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return a, util.CmdHandler(dialogs.CloseDialogMsg{}) } return a, util.CmdHandler(dialogs.OpenDialogMsg{ - Model: filepicker.NewFilePickerCmp(), + Model: filepicker.NewFilePickerCmp(a.app.Config().WorkingDir()), }) // Permissions case pubsub.Event[permission.PermissionRequest]: From 2428334d61c43b360dc14d2197763c7ef1d06eb6 Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Wed, 16 Jul 2025 08:05:06 -0700 Subject: [PATCH 2/3] gofumpt --- internal/tui/components/dialogs/filepicker/filepicker.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/tui/components/dialogs/filepicker/filepicker.go b/internal/tui/components/dialogs/filepicker/filepicker.go index 83a7e57236a89f50ae90ecd2e7f25aa217f3d5f4..3944da7665b6d400c091f4a1282360ed2c638163 100644 --- a/internal/tui/components/dialogs/filepicker/filepicker.go +++ b/internal/tui/components/dialogs/filepicker/filepicker.go @@ -49,7 +49,7 @@ func NewFilePickerCmp(workingDir string) FilePicker { t := styles.CurrentTheme() fp := filepicker.New() fp.AllowedTypes = []string{".jpg", ".jpeg", ".png"} - + if workingDir != "" { fp.CurrentDirectory = workingDir } else { @@ -60,7 +60,7 @@ func NewFilePickerCmp(workingDir string) FilePicker { fp.CurrentDirectory, _ = os.UserHomeDir() } } - + fp.ShowPermissions = false fp.ShowSize = false fp.AutoHeight = false From bb81e3205de45bae00b423512d7e96dd50ec6da7 Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Wed, 16 Jul 2025 13:38:20 -0700 Subject: [PATCH 3/3] update to include the removal commands --- internal/tui/components/chat/editor/editor.go | 2 +- internal/tui/components/chat/editor/keys.go | 3 +++ internal/tui/page/chat/chat.go | 12 ++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/internal/tui/components/chat/editor/editor.go b/internal/tui/components/chat/editor/editor.go index 9a0f5d3d191d722f4be2e48a40b730b255bf01d1..7d6a01b35c7d65812b3eb57e24778dc27d00d0aa 100644 --- a/internal/tui/components/chat/editor/editor.go +++ b/internal/tui/components/chat/editor/editor.go @@ -72,7 +72,7 @@ var DeleteKeyMaps = DeleteAttachmentKeyMaps{ ), DeleteAllAttachments: key.NewBinding( key.WithKeys("r"), - key.WithHelp("ctrl+r+r", "delete all attchments"), + key.WithHelp("ctrl+r+r", "delete all attachments"), ), } diff --git a/internal/tui/components/chat/editor/keys.go b/internal/tui/components/chat/editor/keys.go index ef002436901ed0fbad3bcbd2da7cecc08ef255c1..2f464833bd67b81cd105aeddeb69d2e950971bbe 100644 --- a/internal/tui/components/chat/editor/keys.go +++ b/internal/tui/components/chat/editor/keys.go @@ -42,6 +42,9 @@ func (k EditorKeyMap) KeyBindings() []key.Binding { k.SendMessage, k.OpenEditor, k.Newline, + AttachmentsKeyMaps.AttachmentDeleteMode, + AttachmentsKeyMaps.DeleteAllAttachments, + AttachmentsKeyMaps.Escape, } } diff --git a/internal/tui/page/chat/chat.go b/internal/tui/page/chat/chat.go index c0af5252e7d44b2898cbd8be4ed1263877fdf583..e55e965df2cbe375143a2e9cdf0c2c3252338f95 100644 --- a/internal/tui/page/chat/chat.go +++ b/internal/tui/page/chat/chat.go @@ -838,6 +838,18 @@ func (p *chatPage) Help() help.KeyMap { key.WithKeys("ctrl+v"), key.WithHelp("ctrl+v", "open editor"), ), + key.NewBinding( + key.WithKeys("ctrl+r"), + key.WithHelp("ctrl+r+{i}", "delete attachment at index i"), + ), + key.NewBinding( + key.WithKeys("ctrl+r", "r"), + key.WithHelp("ctrl+r+r", "delete all attachments"), + ), + key.NewBinding( + key.WithKeys("esc"), + key.WithHelp("esc", "cancel delete mode"), + ), }) } shortList = append(shortList,