From 512cf5ce1ff26b9d09ad621b8eac29a9e1998e93 Mon Sep 17 00:00:00 2001 From: swanadiva Date: Tue, 23 Jun 2026 18:15:36 +0700 Subject: [PATCH] fix: add E:edit to footer, generate UUID+timestamps in TUI forms --- pkg/tui/host_form_tab.go | 7 ++++++- pkg/tui/host_list_tab.go | 2 +- pkg/tui/key_form_tab.go | 5 +++++ pkg/tui/snippet_form_tab.go | 5 +++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pkg/tui/host_form_tab.go b/pkg/tui/host_form_tab.go index 1154824..97a8e6c 100644 --- a/pkg/tui/host_form_tab.go +++ b/pkg/tui/host_form_tab.go @@ -4,10 +4,12 @@ import ( "fmt" "strconv" "strings" + "time" "github.com/charmbracelet/bubbles/textinput" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" + "github.com/google/uuid" "git.tukangketik.id/swanadiva/hostkeeper/internal/models" ) @@ -265,6 +267,7 @@ func (t *HostFormTab) submit() (Tab, tea.Cmd) { host.Notes = t.inputs[fieldNotes].Value() } else { host = &models.Host{ + ID: uuid.New().String(), Name: name, Hostname: hostname, Port: port, @@ -273,9 +276,11 @@ func (t *HostFormTab) submit() (Tab, tea.Cmd) { Type: authType, Password: t.inputs[fieldPassword].Value(), }, - Group: t.inputs[fieldGroup].Value(), + Group: t.inputs[fieldGroup].Value(), Tags: tags, Notes: t.inputs[fieldNotes].Value(), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), } } diff --git a/pkg/tui/host_list_tab.go b/pkg/tui/host_list_tab.go index 17e7972..cf6de13 100644 --- a/pkg/tui/host_list_tab.go +++ b/pkg/tui/host_list_tab.go @@ -167,7 +167,7 @@ func (t *HostListTab) View() string { // Footer var footer styledRow - footerText := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit" + footerText := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+E:edit Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit" footer = styledRow{text: SubtitleStyle.Render(footerText), plain: footerText} rows = append(rows, footer) // for widest measurement diff --git a/pkg/tui/key_form_tab.go b/pkg/tui/key_form_tab.go index f50cc72..cb37c47 100644 --- a/pkg/tui/key_form_tab.go +++ b/pkg/tui/key_form_tab.go @@ -3,10 +3,12 @@ package tui import ( "fmt" "strings" + "time" "github.com/charmbracelet/bubbles/textinput" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" + "github.com/google/uuid" "git.tukangketik.id/swanadiva/hostkeeper/internal/models" ) @@ -180,10 +182,13 @@ func (t *KeyFormTab) submit() (Tab, tea.Cmd) { key.Passphrase = t.inputs[keyFieldPassphrase].Value() } else { key = &models.KeyPair{ + ID: uuid.New().String(), Name: name, Type: t.inputs[keyFieldType].Value(), PrivateKey: privateKey, Passphrase: t.inputs[keyFieldPassphrase].Value(), + CreatedAt: time.Now(), + UpdatedAt: time.Now(), } } diff --git a/pkg/tui/snippet_form_tab.go b/pkg/tui/snippet_form_tab.go index a1fc47a..a32b280 100644 --- a/pkg/tui/snippet_form_tab.go +++ b/pkg/tui/snippet_form_tab.go @@ -3,10 +3,12 @@ package tui import ( "fmt" "strings" + "time" "github.com/charmbracelet/bubbles/textinput" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" + "github.com/google/uuid" "git.tukangketik.id/swanadiva/hostkeeper/internal/models" ) @@ -188,10 +190,13 @@ func (t *SnippetFormTab) submit() (Tab, tea.Cmd) { sn.Tags = tags } else { sn = &models.Snippet{ + ID: uuid.New().String(), Name: name, Command: command, Description: t.inputs[snippetFieldDescription].Value(), Tags: tags, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), } }