# Changelog ## v0.0.22 - Fix shell completion with multiple NetBox instances: typing a hostname without an instance prefix (`fsn1-bx1`) found nothing in bash and zsh, because only `prod/…` 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/…` and `stg/…`. ## 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_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. ## 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/hostname` for 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 NAME` and 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.de` for 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.sh` as a downloadable release asset. - Include the installer in `checksums.txt` alongside 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 `sudo` before 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+E` for 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.