62 Commits

Author SHA1 Message Date
825c534ebe feat(ui): add tabbed forms with height validation
- Implement General/Advanced tabs for add/edit forms
- Add terminal height detection with user-friendly warnings
- Add Ctrl+J/K tab navigation and SSH RemoteCommand/RequestTTY fields
v1.9.0
2025-10-13 21:55:08 +02:00
c1457af73a feat: add support for SSH RemoteCommand and RequestTTY in host configuration and TUI forms
- Allow users to specify a RemoteCommand to execute on SSH connection, both via TUI and config file
- Add RequestTTY option (yes, no, force, auto) to host configuration and forms
- Update config parsing and writing to handle new fields
- Improve TUI forms to support editing and adding these options
- Fix edit form standalone mode to allow proper quit/save via keyboard shortcuts
2025-10-12 20:25:20 +02:00
12d97270f0 feat: reorganize release notes 2025-10-10 22:43:06 +02:00
6ba82b1c97 feat: filter non-SSH files from config parsing
- Skip README, .git, and documentation files during SSH config parsing
- Add QuickHostExists for fast host validation without full parsing
- Prevent errors when Include * encounters non-config files
2025-10-10 21:47:13 +02:00
42e87b6827 feat: add ARM v6/v7 support and version selection to install script
- Support ARM v6/v7 architectures for Raspberry Pi
- Add SSHM_VERSION env var for specific version installation
- Add beta/pre-release version support
- Add version validation and --help flag
- Fix architecture mapping for GoReleaser binaries
2025-10-10 21:22:56 +02:00
d686d97f8c fix: SSH identity file paths with spaces and edit form navigation
- Quote IdentityFile paths containing spaces to prevent SSH config errors
- Fix edit form ESC/Ctrl+C to return to main view instead of quitting
- Improve edit form navigation consistency with add form
- Fix focus management when adding host fields with Ctrl+A
2025-10-09 22:04:36 +02:00
8d5f59fab2 feat: add multi-host block support for SSH config management
- Support "Host server1 server2 server3" syntax in SSH configurations
- Add multi-host editing UI with separate host name inputs
- Implement multi-host block update and deletion operations
- Add comprehensive test coverage
- Maintain backward compatibility with single-host configs
2025-10-09 20:46:10 +02:00
049998c235 docs: update README.md and remove CONFIG.md 1.8.0 2025-10-04 17:02:21 +02:00
Guillaume Archambault
5986659048
Merge pull request #11 from qingfengzxr/main
feat: add configurable key bindings with ESC quit disable option
2025-10-04 17:00:56 +02:00
Guillaume Archambault
abbda54125
Merge pull request #12 from ldreux/support-subsearch
feat: support multiple words search
2025-10-04 16:24:06 +02:00
Loïc Dreux
986017a552 feat: support multiple words search 2025-10-01 12:07:05 +02:00
zxr
120cd6c009 feat: add configurable key bindings with ESC quit disable option
- Add unified application configuration system with JSON config file
- Implement configurable quit keys (default: "q", "ctrl+c")
- Add disable_esc_quit option for vim users to prevent accidental exits
- Auto-create default config file at ~/.config/sshm/config.json
- Maintain backward compatibility (ESC quit enabled by default)
- Include comprehensive tests and documentation
2025-09-29 11:05:26 +08:00
3d746ec49a doc: update installation instructions for Homebrew 2025-09-17 15:24:17 +02:00
f31fe9dacf fix: update Windows install script for GoReleaser format
- Change from sshm-windows-amd64.zip to sshm_Windows_x86_64.zip
- Update architecture mapping (amd64 -> x86_64, 386 -> i386)
- Fix extracted binary name (now just 'sshm.exe')
- Update migration documentation
2025-09-17 14:44:50 +02:00
7b15db1f34 fix: update install script for GoReleaser binary format
- Change from sshm-darwin-arm64.tar.gz to sshm_Darwin_arm64.tar.gz
- Update architecture mapping (amd64 -> x86_64)
- Update OS mapping (darwin -> Darwin)
- Fix extracted binary name (now just 'sshm' instead of platform suffix)
2025-09-17 14:32:31 +02:00
55f3359287 fix: remove discussion_category_name (discussions not enabled) v1.7.0 2025-09-17 14:27:39 +02:00
4efec57a8a fix: make ValidateIdentityFile test robust for CI environments
- Remove assumption that ~/.ssh/id_rsa always exists
- Test tilde path expansion without asserting file existence
v1.7.0-beta
2025-09-17 14:20:08 +02:00
0975ae2fe2 git commit -m "feat: add GoReleaser for automated releases and Homebrew integration
- Replace manual GitHub Actions workflow
- Add automated Formula updates to homebrew-sshm tap
- Support pre-releases with auto-detection
- Standardize cross-platform binary distribution"
2025-09-17 14:14:49 +02:00
ed6ea2939a fix(ci): correct version injection in build workflow
- Change -X flag from cmd.version to cmd.AppVersion
- This fixes version display showing 'dev' instead of actual version
- Binaries will now display correct version when built via GitHub Actions
v1.6.0
2025-09-13 12:20:41 +02:00
45eccabc23 fix: replace Ctrl+Enter with Ctrl+S in forms to avoid terminal conflicts 2025-09-13 11:53:45 +02:00
2425695992 docs: update README 2025-09-13 11:53:45 +02:00
306f38e862 feat: show error when move requires includes but none found 2025-09-13 11:53:45 +02:00
3c627a5d21 feat: add port forwarding history persistence 2025-09-13 11:53:45 +02:00
71bf8ea2bb feat: add direct host connection via sshm <host> with history tracking 2025-09-13 11:53:45 +02:00
8c6f3b01ef feat: centralize history storage in config directory
Automatically migrates existing ~/.ssh/sshm_history.json to platform-appropriate config location
2025-09-13 11:53:45 +02:00
aa6be1d92d fix(cmd): export variables for test accessibility
Export rootCmd->RootCmd and appVersion->AppVersion to fix test compilation errors. Update all references across cmd package and tests.
2025-09-13 11:53:45 +02:00
9bb44da18b build: strip 'v' prefix from version tag for binary
- Remove the 'v' prefix from the Git tag before injecting the version into the built binary
- Ensures the version string in the CLI does not include a leading 'v' (e.g. '1.2.3' instead of 'v1.2.3')
2025-09-13 11:53:45 +02:00
77b2b8fd22 feat: add move command to relocate SSH hosts between config files
- Add 'move' command with interactive file selector
- Implement atomic host moving between SSH config files
- Support for configs with include directives
- Add comprehensive error handling and validation
- Update help screen with improved two-column layout
2025-09-13 11:53:45 +02:00
5c832ce26f feat: add automatic version update checking and notifications
- Add internal/version module for GitHub release checking
- Integrate async version check in Bubble Tea UI
- Display update notification in main interface
- Add version check to --version/-v command output
- Include comprehensive version comparison and error handling
- Add unit tests for version parsing and comparison logic
2025-09-13 11:53:45 +02:00
ef075e74cf test: add comprehensive test suite and fix failing tests
- Fix history tests with proper test isolation using temp files
- Fix CMD tests with proper string contains and simplified assertions
- Add missing test utilities and helper functions
- Improve test coverage across all packages
- Remove flaky tests and replace with robust alternatives"
2025-09-10 08:15:46 +02:00
9bb5d18f8e fix: resolve search behavior when cursor is not at top of list
- Fix search mode not triggering properly after navigation
- Preserve cursor position during filtering operations
- Add comprehensive UI tests for search functionality
- Improve search to include user field filtering
1.5.2
2025-09-08 16:37:25 +02:00
44ffa0c31d fix: correct version injection in build process 1.5.1 2025-09-07 08:37:23 +02:00
edf61049fc fix: update module path to use GitHub URL 1.5.0 2025-09-06 23:48:30 +02:00
67987e6242 refactor: move SSH backups to ~/.config/sshm/backups/ 2025-09-06 23:36:12 +02:00
e1efef4680 ui: reduce search bar width to 25 characters 2025-09-06 17:37:46 +02:00
42387eb1fa feat: add async SSH ping for all hosts with status indicator 2025-09-06 17:20:14 +02:00
6577002e2b feat: add automatic pre-release detection for beta tags 2025-09-06 10:51:08 +02:00
be3dcaa1cd fix: enable editing and management of hosts from included SSH config files
• Add SourceFile field to SSHHost struct to track config file origins
• Implement FindHostInAllConfigs() to locate hosts across all config files
• Fix "host not found" errors when editing/deleting hosts from included files
• Add GetAllConfigFiles() and GetAllConfigFilesFromBase() for config discovery
• Create UpdateSSHHostV2() and DeleteSSHHostV2() for cross-file operations
• Display config file source in edit and info forms for better visibility
• Add intelligent file selector for host addition when multiple configs exist
• Support -c parameter context with proper file resolution
• Exclude .backup files from Include directive processing
• Maintain backward compatibility with existing SSH config workflows

Resolves limitation where hosts from included config files could be viewed
but not edited, deleted, or properly managed through the interface.
1.4.1
2025-09-05 17:04:11 +02:00
b67f5abbbc docs: update README features 1.4.0 2025-09-05 12:46:16 +02:00
b587defabc fix: improve TUI layout responsiveness for large host lists 2025-09-05 12:35:02 +02:00
22586484c7 Merge branch 'main' into feature/tui-refactor 2025-09-05 12:17:30 +02:00
420db56ff5 fix: improve table height calculation for better UI responsiveness 2025-09-05 12:08:52 +02:00
Guillaume Archambault
7600eaaa9b
Merge pull request #3 from yimeng/main
This commit adds comprehensive support for SSH Include directives, 
allowing users to organize SSH configurations across multiple files.

Features:
- Support for Include directives with glob patterns (e.g., Include config.d/*)
- Circular include detection to prevent infinite recursion
- Graceful handling of missing include files
- Wildcard host filtering (ignores Host * patterns)
- Tilde expansion for home directory paths
- Relative path resolution from config file directory

The implementation maintains backward compatibility and includes 
comprehensive test coverage for all edge cases.

Thanks to @yimeng for this excellent contribution!
2025-09-05 11:53:04 +02:00
yimeng
e0dd32993a add ssh config include 2025-09-05 12:43:34 +08:00
1cea3795e4 feat: refactor TUI with read-only info view and optimized layout
- Add new 'i' command for read-only host information display
- Implement info view with option to switch to edit mode (e/Enter)
- Hide User and Port columns to optimize table space usage
- Improve table height calculation for better host visibility
- Add proper message handling for info view navigation
- Interface optimization
2025-09-04 16:47:07 +02:00
2ade315ddc fix: resolve macOS permission errors during SSHM installation
- Replace recursive find with direct file path check to avoid scanning protected directories
- Backup old binary during installation to prevent interference from old version
- Use full path for version verification to ensure new binary is tested
- Fixes 'Operation not permitted' errors on macOS during installation process
2025-09-04 12:30:18 +02:00
2deec405f7 feat: add port forwarding support 1.3.0 2025-09-04 10:34:54 +02:00
21c5d41977 feat: add local binary support to Windows installer 1.2.0 2025-09-03 18:12:01 +02:00
20bc506e36 feat: add Windows platform support 2025-09-03 17:48:58 +02:00
e8c6e602a2 docs: update README.md 1.1.0 2025-09-03 11:57:26 +02:00