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_results to limit the number of hostnames offered per completion.
Register zsh completion in the managed .zshrc block (fpath and compdef), also when compinit already 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 from netssh hook install and the wizard, replacing unmarked entries of older versions instead of appending.
Add jump host support: ssh.proxy_jump globally, per NetBox instance, and per rule, plus --jump HOST and --no-jump.
Add ssh.host_key_checking (strict, accept-new, off) for netssh connections only.
Add ssh.target: name|hostname so ~/.ssh/config host patterns apply and known_hosts entries belong to the device, and ssh.address_family.
Add ssh.options and ssh.extra_args, and ssh.rules that match by tag, instance, kind, or name pattern.
Add netssh --version / netssh version and netssh --dry-run to print the final ssh command.
- 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_results` to limit the number of hostnames offered per completion.
- Register zsh completion in the managed `.zshrc` block (`fpath` and `compdef`), also when `compinit` already 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 from `netssh hook install` and the wizard, replacing unmarked entries of older versions instead of appending.
- Add jump host support: `ssh.proxy_jump` globally, per NetBox instance, and per rule, plus `--jump HOST` and `--no-jump`.
- Add `ssh.host_key_checking` (`strict`, `accept-new`, `off`) for netssh connections only.
- Add `ssh.target: name|hostname` so `~/.ssh/config` host patterns apply and known_hosts entries belong to the device, and `ssh.address_family`.
- Add `ssh.options` and `ssh.extra_args`, and `ssh.rules` that match by tag, instance, kind, or name pattern.
- Add `netssh --version` / `netssh version` and `netssh --dry-run` to print the final ssh command.
Cobra's generated zsh script spawns a subshell per candidate and sends
every host through _describe, so <Tab> hangs for seconds with thousands
of cached hosts. netssh now ships its own script: subcommands and flags
go through _describe, plain hostnames through compadd. 5000 hosts
complete in ~0.08 s instead of ~4 s.
Add completion.max_results to cap the number of offered hostnames and
sort host candidates for a stable order.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`netssh hook install` and the setup wizard now write the same marked
`# >>> netssh >>>` block as install.sh and replace unmarked entries of
older versions instead of appending duplicates. Uninstall shares the
legacy patterns with the installer (eval/alias/source variants).
For zsh the block adds ~/.zfunc to fpath and calls compdef, so
completion also works when compinit already ran earlier in .zshrc,
e.g. with oh-my-zsh. The installer reports which completion it set up
per shell and how to reset ~/.zcompdump.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add SSH settings that apply only to netssh connections, so
~/.ssh/config does not need global changes:
- proxy_jump (passed as -J; "none" disables an inherited jump host)
- host_key_checking: strict | accept-new | off (off prints a notice)
- target: ip (default) | name | hostname; "name" connects to the
NetBox name with -o HostName=<ip> and -o HostKeyAlias=<name>, so
`Host *.example.com` rules apply and known_hosts entries follow the
device instead of a reused IP
- address_family: any | inet | inet6
- options (-o Key=Value) and extra_args
Settings layer global -> netboxes[].ssh -> ssh.rules (match by tag,
instance, kind, or name glob). Options given on the command line
always win: -o values are inserted after the user's own, and
extra_args before them.
New wrapper flags: --jump HOST, --no-jump, and --dry-run, which prints
the final ssh command instead of connecting. The TUI uses the same
options. The setup wizard keeps all new settings when it saves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`netssh --version` used to be passed to ssh and failed with
"unknown option -- -". Release builds now embed the tag via
-X main.version; other builds fall back to the module build info.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove everything netssh and install.sh set up, also leftovers of
older versions:
- netssh blocks and unmarked legacy lines in bash, zsh, and fish
profiles
- completion files for bash, zsh (incl. the oh-my-zsh cache), fish,
and the command alias; files not generated by netssh are kept
- the cache directory with hosts, aliases, and per-instance caches
- the config file and local notes; the config is first copied to a
private netssh.yaml.backup-<timestamp> because it holds API tokens
- the netssh binary; for protected paths the sudo command is printed
--keep-config keeps config and notes, --dry-run only lists the plan,
and --yes skips the confirmation.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
completion.max_resultsto limit the number of hostnames offered per completion..zshrcblock (fpathandcompdef), also whencompinitalready ran, e.g. with oh-my-zsh. The installer reports which completions it set up.netssh uninstall [--keep-config] [--dry-run] [--yes]to remove the binary, profile entries of all versions, completions, cache, and config (with a private backup).# >>> netssh >>>blocks fromnetssh hook installand the wizard, replacing unmarked entries of older versions instead of appending.ssh.proxy_jumpglobally, per NetBox instance, and per rule, plus--jump HOSTand--no-jump.ssh.host_key_checking(strict,accept-new,off) for netssh connections only.ssh.target: name|hostnameso~/.ssh/confighost patterns apply and known_hosts entries belong to the device, andssh.address_family.ssh.optionsandssh.extra_args, andssh.rulesthat match by tag, instance, kind, or name pattern.netssh --version/netssh versionandnetssh --dry-runto print the final ssh command.netssh versionand--version786768ec53netssh uninstallc2e590bf52