Add the hostname resolver strategy. It connects by the NetBox name instead of an IP, with resolver.hostname_domain appended to names without a dot. Its position in the chain decides whether it is always used or only as a fallback (e.g. [primary_ip, hostname]); names that are not valid DNS hostnames fall through to the next strategy. Add static hosts under hosts: for machines that are not in NetBox, with address, user, port, tags, and their own SSH options. They are checked before NetBox (by name or shortcut), never expire, survive cache refresh and clear, and work without any NetBox configured. The cache overlays them after every load and stores only their last use, so they appear in completion, aliases, the TUI and its recent list. SSH options merge global, static host, then rules; rules can match kind: static. Manage them with netssh hosts list|add|remove and in netssh configure, which can now also continue without NetBox. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8.6 KiB
8.6 KiB
Changelog
v0.0.23
netssh configurenow covers every setting: after the instances, a menu opens with SSH defaults, SSH options (jump host, host key checking, connection target, address family, extra arguments,-ooptions), SSH rules (add, edit, remove by tag, instance, kind, name pattern), resolver & cache (including the cache file), shortcuts & command alias, and completion (max_results). SSH options can also be set per NetBox instance from the instance list.- Fix
netssh configuredropping global SSH options,ssh.rules, andcompletion.max_resultsfrom the config file when saving. - The configurator validates SSH options and rules before writing the config.
- Add
shortcuts.rewrites: regex rules that shorten hostnames, e.g.^([a-z]+)[0-9]+-→$1turnsfsn1-bx1.hoster.deintofsnbx1. Shortcuts work for connecting, shell aliases, and Tab completion (offered when the full name does not match), and can be edited innetssh configure. - Add
netssh alias --test HOSTNAMEto show the shortcut of a name and the cached hosts it matches. - Add
netssh sftpandnetssh scp: host lookup, shortcuts, instances, default user and port, SSH options and rules, jump host,--dry-run, and completion work as for ssh. IPv6 addresses are bracketed for host:path. - Add named port forwards (
ssh.forwardsglobally, per instance, and per rule),netssh tunnel HOST NAME|SPEC...(ssh -N with ExitOnForwardFailure), andnetssh --forward NAME. Forwards are editable innetssh configureand completed in the shell. - TUI:
Ctrl+Oopens SFTP,Ctrl+Tstarts a tunnel with configured or ad hoc forwards. - Add the
hostnameresolver strategy: connect by the NetBox name (plus optionalresolver.hostname_domain) instead of an IP, always or as a fallback afterprimary_ip. - Add static hosts (
hosts:) for machines that are not in NetBox, with user, port, tags, and SSH options, managed withnetssh hosts list|add|removeand innetssh configure. They are found before NetBox, work offline and without any NetBox, and support shortcuts, rules (kind: static), completion, aliases, sftp, scp, tunnels, and the TUI. - Fix options added by netssh landing after
--(netssh --no-jump -- host), where ssh read them as the destination.
v0.0.22
- Fix shell completion with multiple NetBox instances: typing a hostname without an instance prefix (
fsn1-bx1<Tab>) found nothing in bash and zsh, because onlyprod/…was offered. Hostnames that are unique across all instances are now offered without the prefix; connecting to them still checks every instance for ambiguous names. - zsh also accepts instance-qualified matches for the typed hostname, so names that exist in several instances are offered as
prod/…andstg/….
v0.0.21
- Ship a zsh completion script built for large caches: 5000 hosts complete in under 0.1 s instead of hanging for seconds with Cobra's generated script.
- Add
completion.max_resultsto limit the number of hostnames offered per completion. - Register zsh completion in the managed
.zshrcblock (fpathandcompdef), also whencompinitalready ran, e.g. with oh-my-zsh. The installer reports which completions it set up. - Add
netssh uninstall [--keep-config] [--dry-run] [--yes]to remove the binary, profile entries of all versions, completions, cache, and config (with a private backup). - Write marked
# >>> netssh >>>blocks fromnetssh hook installand the wizard, replacing unmarked entries of older versions instead of appending. - Add jump host support:
ssh.proxy_jumpglobally, per NetBox instance, and per rule, plus--jump HOSTand--no-jump. - Add
ssh.host_key_checking(strict,accept-new,off) for netssh connections only. - Add
ssh.target: name|hostnameso~/.ssh/confighost patterns apply and known_hosts entries belong to the device, andssh.address_family. - Add
ssh.optionsandssh.extra_args, andssh.rulesthat match by tag, instance, kind, or name pattern. - Add
netssh --version/netssh versionandnetssh --dry-runto print the final ssh command.
v0.0.20
- Configure multiple named NetBox instances and search them together in parallel.
- Add, edit, and remove instances in the interactive setup wizard while retaining legacy single-instance configuration support.
- Display instance-qualified hostnames and support
instance/hostnamefor SSH, completion, aliases, and notes. - Keep credentials, IP resolution, comments, cache entries, and local notes tied to the correct instance.
- Preserve partial interactive search results with an outage warning; reject incomplete full refreshes and ambiguous direct connections.
- Add
cache refresh --instance NAMEand isolate caches when configured endpoints change. - Add regression tests covering duplicate names and IDs across instances, outages, SSH routing, notes, aliases, and configuration round trips.
v0.0.19
- Update Ultraviolet to commit
a45b7c8.
v0.0.18
- Require Go 1.27.3 and migrate Bubbles, Bubble Tea, Huh, and Lip Gloss to their v2 modules under
charm.land. - Update TUI rendering and keyboard events for Bubble Tea v2 while preserving alternate-screen behavior.
- Route paste events to the focused editor, size input fields explicitly, and keep host lists within the terminal height.
- Reject ambiguous cached shortcuts and skip duplicate hostnames during cache refresh.
- Use paginated, unambiguous host lookups for SSH connections.
- Accept shortcut domains with or without a leading dot during cold lookups.
- Parse combined SSH options and preserve explicit users and ports supplied through
-o. - Merge cache changes under a file lock to preserve updates from concurrent processes.
- Honor configured resolver strategies during refresh and remove entries that no longer resolve safely.
- Check the host kind before reusing a cached IP for a TUI selection.
v0.0.17
- Update Go module dependencies to the latest versions within their existing module paths, including used transitive test dependencies.
- Remove obsolete indirect requirements and refresh module checksums with
go mod tidy.
v0.0.16
- Enable Bash, Zsh, and Fish completion for the configured command alias, such as
j. - Update or remove generated alias completion files when the command alias changes.
v0.0.15
- Use
https://git.zb-server.defor release download links and API requests instead of the runner's internal Gitea service URL.
v0.0.14
- Enable Renovate updates for indirect Go modules as well as direct dependencies and CI actions.
- Enable Go version updates and keep Go module metadata tidy after dependency updates.
- Correct direct and indirect dependency declarations in
go.mod. - Include
install.shas a downloadable release asset. - Include the installer in
checksums.txtalongside the platform binaries. - Link the installation command in release notes directly to the release's installer asset.
- Generate a change list from commits since the previous version tag for every release.
v0.0.13
- Translate the remaining German setup message and test example into English.
- Correct the connection editor comment to reference
Ctrl+E.
v0.0.12
- Support updating an existing installation by running the installer again.
- Remove the installer's Python dependency.
- Require valid SHA-256 checksums before replacing the binary.
- Check required programs before downloading and list missing dependencies.
- Check for
sudobefore downloading when the installation directory requires elevated permissions. - Consolidate legacy shell hooks and aliases in Bash, Zsh, and Fish profiles.
- Back up changed profiles and preserve symlinks and file permissions.
- Regenerate aliases and completions during installation and updates.
- Add a configurable command alias, such as
j, to the setup wizard. - Refresh or remove the generated command alias when its configuration changes.
v0.0.11
- Add multiline local server notes and optional NetBox comments in the TUI.
- Add CLI commands to show, replace, and append server notes.
- Keep local notes separate from the host cache, with private permissions and atomic writes.
- Use NetBox ETags for comment conflict protection when supported by the server.
- Correct authentication for NetBox v2 tokens.
- Fix environment variable overrides for configuration keys.
- Preserve usage history when refreshing cached hosts.
- Discard stale TUI search results and use
Ctrl+Efor connection editing. - Validate port overrides and preserve an explicit port 22.
- Resolve stale and live TUI selections through the configured resolver chain.
- Reject incomplete full cache refreshes and avoid marking filtered refreshes as full refreshes.
- Stop interpreting remote command flags as SSH options when applying defaults.