3.5 KiB
3.5 KiB
Changelog
[Unreleased] — 2025-01-31
Fixed
- TUI host list footer now includes
Ctrl+E:edit - New hosts/keys/snippets created via TUI form now get UUID + timestamps (
CreatedAt,UpdatedAt) - Storage layer auto-generates UUID + timestamps on save if empty (defense-in-depth)
- host_form_tab.go: Space/Left/Right keys now passthrough to text input when not on auth type field (fixes typing spaces and cursor navigation)
- tui.go: Key and snippet list tabs now properly refresh after save/delete (mirrors host flow)
- tabs.go: WindowSizeMsg now forwarded to ALL tabs, not just the active one (fixes stale dimensions after resize)
Changed
- All tab footers are now context-specific (no global status bar)
- SFTP browser uses full-width panes (
t.width/2) - sftp_browser_tab.go footer: Added
Enter/→:open,←/Backspace:up - form tabs footer: Added
Shift+Tab:prev,↑↓:nav
Responsive Layout (Done)
- NEW
responsive.go: Shared helpers (wrapFooter,adaptiveSidePad,clampWidth,truncateStr) - Footer auto-wraps to multi-line when terminal is narrow (full labels preserved)
- Box width clamped to terminal width — no more overflow
- Host/key/snippet rows truncated with
…when names are too long; compact row format on narrow screens - SFTP panes stack vertically when terminal < 50 cols
- Tab bar truncates tab names on overflow
- Form contentW minimum lowered from 50 to 30 for mobile (Termux)
- Fixed: key_list_tab & snippet_list_tab were dropping last data row (off-by-one in
rows[:len(rows)-1]) - Fixed: SFTP pane width — lipgloss
Width(n)rendersn+2chars (border extra). halfW nowt.width/2-2to compensate. File names truncate to…within inner text area. Filter line also truncated. - Verified: zero overflow at 80, 60, 50 (side-by-side), 40, 30 cols (stacked)
- Breakpoints: compact (<60), medium (60–100), wide (≥100)
v1.0.0 (2025-01-30)
Added
- Initial release of Hostkeeper SSH/SFTP management tool
- Host management: CRUD operations for SSH hosts (add, list, edit, delete)
- SSH connections: Native SSH (default) and Go SSH direct mode
- TUI interface: Interactive host browser using Bubble Tea
- Export/Import: JSON export and import with merge/replace strategies
- Cross-platform builds: Support for Linux, macOS, Windows, Termux
- Shell completion: Bash, Zsh, Fish, and PowerShell support
- Configuration: File-based credential storage with
0600permissions - Tag and group: Host categorization with tags and groups
- Search and filter: Filter hosts by group, tag, or text search
Commands
hostkeeper add— Add SSH hosts (interactive and flag-based)hostkeeper list— List hosts with table/JSON outputhostkeeper connect— Connect to hosts with custom timeouthostkeeper edit— Edit host configurationshostkeeper delete— Delete hosts with confirmationhostkeeper export— Export data to JSONhostkeeper import— Import data with merge/replacehostkeeper tui— Terminal user interfacehostkeeper completion— Shell completion generationhostkeeper version— Version information
Technical
- Cobra CLI framework for command structure
- Bubble Tea TUI with keyboard navigation
- Go SSH client for direct connections
- Comprehensive test suite with unit and integration tests
- Build automation via Makefile and build.sh
Notes
- Initial MVP release, all core features functional
- Encrypted storage planned for future release
- Interactive shell in Go SSH direct mode not yet available