Change summary
internal/app/app.go | 5 +++
internal/tui/components/dialogs/filepicker/filepicker.go | 15 ++++++++-
internal/tui/tui.go | 2
3 files changed, 19 insertions(+), 3 deletions(-)
Detailed changes
@@ -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")
@@ -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
@@ -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]: