hoppr 0.2.0
hoppr v0.2.0
An SSH session manager for the terminal. Edits your real ssh_config in
place, finds the keys scattered around your disk, and tells you what is
about to break.
Install:
go install github.com/SarthakShrivastav-a/hoppr/cmd/hoppr@v0.2.0Or download a binary below.
Changelog
- 34bc5c9 chore(deps): add bubbletea, bubbles, and lipgloss
- 8578475 chore(deps): add cobra for the command surface
- 04a9c3c chore(deps): add golang.org/x/crypto for ssh key parsing
- 1ab48fa ci: add goreleaser config for cross-platform binaries
- 18f0899 ci: auto-release the next semver on every push to main
- a45a157 ci: test on Windows, macOS, and Linux
- a4c3708 feat(cli): add hoppr forward
- aadd537 feat(cli): add keys and doctor commands
- 9420740 feat(cli): add ls, add, import, rm, and connect
- 2690c6c feat(cli): add the root command and open the TUI by default
- 1124d56 feat(cli): complete host aliases in the shell
- 5b775f7 feat(cmd): add the hoppr entry point
- 6fd288b feat(connect): launch through the system ssh binary
- b9d8d8a feat(connect): parse an ad-hoc ssh command into a host entry
- c845fc3 feat(connect): tokenize pasted commands from either shell
- 0a63d48 feat(connect): write a parsed spec into ssh_config
- 1e59004 feat(doctor): diagnose the failures with unhelpful error messages
- 4249a51 feat(forward): model local, remote, and dynamic forwards
- feed895 feat(forward): supervise tunnels with backoff and jitter
- 7b7e270 feat(history): remember what was connected to, and when
- 38f280b feat(host): add fzf-style fuzzy matching over aliases, targets, and tags
- 2545111 feat(host): model connectable hosts, excluding pattern-only stanzas
- 3913b92 feat(host): rank the unfiltered list by what you actually use
- 2b4cc80 feat(keys): adopt stray keys into a managed directory
- 68a9ca6 feat(keys): audit and repair key permissions per platform
- c1d7b93 feat(keys): inspect private keys by content, not by extension
- 0924b6b feat(keys): map keys to the hosts that use them, and back
- 0d0245f feat(keys): scan the filesystem for stray keys
- 9074c60 feat(paths): resolve ssh paths, and write tilde paths back out
- 4100ae7 feat(probe): check host reachability concurrently
- 2660dca feat(sshconfig): add SetArgs for keywords that take two arguments
- c374dbb feat(sshconfig): add a lossless AST for ssh_config files
- 17cbade feat(sshconfig): add tokenizer for keywords, separators, and quoting
- 0ee7071 feat(sshconfig): edit host blocks in place without reformatting them
- d419c8b feat(sshconfig): parse files into blocks without discarding trivia
- e2e5b0f feat(sshconfig): render the AST back out and save atomically
- df6022b feat(sshconfig): resolve Include so hosts in conf.d are visible
- 26bd5e9 feat(sshconfig): store tags and notes as in-band comment annotations
- a54baf1 feat(tui): add host form, import, keys, doctor, and help panes
- 4c5d5b0 feat(tui): add the application model and async commands
- 23a685a feat(tui): bind vim motions alongside arrows
- c61ab33 feat(tui): define an adaptive palette and status glyphs
- 8166308 feat(tui): fix the Windows console before drawing anything
- 4b66b06 feat(tui): handle input, and hand the terminal over to ssh cleanly
- d5e9877 feat(tui): render the host list, degrading instead of refusing
- 7c4aec1 feat(version): resolve the version from build info when ldflags are absent
- 8f677da fix(keys): resolve a bare key name to where the key actually is
- b8d79fa fix(mod): retract v0.1.0
- 687aec5 test(connect): cover the paste cases that actually occur
- 51d24e6 test(doctor): cover duplicate aliases, missing keys, CRLF, and the fix path
- 15dc133 test(forward): cover spec parsing, config keywords, and jitter bounds
- 61486cf test(history): a corrupt cache must not be fatal
- f9c424c test(host): cover pattern exclusion, alias lookup, and match ranking
- 5927c22 test(host): pin recency ordering, including the never-used tail
- 9a1fbbd test(keys): cover detection, scanning, indexing, and adoption
- 15189dc test(keys): cover locating a key named only by its file name
- 78a0db6 test(paths): pin tilde rewriting, which keeps configs portable
- 6c43b77 test(probe): cover reachability against real listeners
- 042fd47 test(sshconfig): cover editing, annotations, and Include resolution
- 245c4fd test(sshconfig): pin the round trip against a hostile config
- bd0cdb7 test(tui): a small terminal must degrade, never refuse