Version one hundred, and still 0.x - v1.0.0 waits for Wails v3 to
leave prerelease, not for the app to feel finished. Between 0.1.0 and
here: opkssh certificate auth, eight dynamic-inventory providers,
userspace WireGuard, five importers, an Android build, and a rather
large number of bugs that only showed up on someone else's machine.
This release is a good example of the last part. Three of its fixes came
from ordinary use rather than from a test: a rename field that would not
let the mouse select text, a second session that opened without a
cursor, and a bookmark that could not be written down because its tunnel
picks a new port on every run.
It also brings proper Linux packages. .deb, .rpm and .pkg.tar.zst
are attached to the release, so installing is one command instead of
downloading a binary and placing it yourself - each one installed,
verified and removed on a real system before it shipped. apt and dnf
repositories are next, which will make upgrades arrive the way every
other package on the machine does.
Added
- Bookmarks on local port forwards. A local (-L) forward could only
be used by copyinglocalhost:<port>into a browser by hand;
bookmarks existed but were reserved for SOCKS proxies. Local forwards
now take them too, in the tunnel popover, the forwards list and the
quick palette. The "Open URL" prompt starts filled in with the
forward's own address rather than a barehttps://. - Bookmarks work on tunnels that pick their own port. A forward set
to port 0 gets a different port on every run, so a saved bookmark
cannot contain the number. Bookmarks now take a{port}placeholder
(and{host}), filled in with the real value each time one is opened;
it is prefilled for you on auto-port forwards. Useful on fixed-port
forwards too, where it means changing the port later does not break
every bookmark that referred to it. - Per-forward browser choice. Each local or dynamic forward picks
how its bookmarks open: your normal browser, a throwaway isolated
profile, or a dedicated profile that remembers logins. The default is
unchanged behaviour for both kinds - your own browser for a local
forward, an isolated one for a SOCKS proxy. The dedicated profile is
the one to choose when two tunnels reach the same software on
different servers and one keeps logging you out of the other. - Local shells start in a sensible directory. New
Start in directorysetting, with a per-connection override on local-shell
connections. Empty means your home directory. - Open several hosts at once from the palette. Ctrl+Enter or
Ctrl+click marks connections in the Ctrl+K palette; Enter then
connects all of them. Marks survive retyping the query, so a set can
be collected across several searches. Hosts are dialled one after
another, because vault, host-key and password prompts are modal and
would otherwise stack up from different hosts at once.
Fixed
- The second session you open gets the cursor. Since v0.97, opening
a connection while another was already up left the new terminal
unfocused - you had to click it before typing. The guard that stops a
background session stealing the keyboard was matching any focused text
field, and xterm's own focus target is a textarea, so every terminal
looked to every other terminal like a field in use. - Switching to the terminal view focuses it. Arriving from Settings
or the toolbar button left the keyboard nowhere. This one was never
wired up rather than broken recently. - Typing in the palette no longer lands in a terminal. Opening a
connection, pressing Ctrl+K again and typing the next host could send
those keystrokes into the session that had just come up. v0.97 fixed
the case where the palette stayed open throughout; this fixes the
rest. A connecting terminal polls for up to 600ms to take the
keyboard, and the palette closes before the connection it started is
dialled, so looking at the document for evidence of typing was never
going to be reliable - with several sessions opening, whichever poll
finished last simply won. Palettes and dialogs now hold the keyboard
explicitly for as long as they are open. - Renaming with F2 lets you select the text. Dragging across the
rename field started dragging the row instead of selecting what you
were trying to overwrite - most annoying right after cloning a
connection, where selecting "Copy of ..." is the entire point. - Local shells no longer open in the install directory. They
inherited the app's working directory, so on Windows a WSL shell
started in/mnt/c/Users/<you>/AppData/Local/Programs/ssh-tool. WSL
needs its own--cdflag for this - a working directory alone cannot
reach the Linux home, since every Windows path maps to some/mnt/...
path.
Packaging
- Linux packages ship with releases.
.deb,.rpmand
.pkg.tar.zstare now built in CI and attached to every release,
named with their version and architecture. Each was installed,
verified and removed on a real system first - Fedora 44, Ubuntu 24.04
and CachyOS. Note the.rpmtargets Fedora: RHEL 10 and its rebuilds
have nowebkitgtk6.0package at all, so it will not install there. - The RPM no longer carries the build machine's hostname. nfpm
stampsos.Hostname()into the header unless told otherwise, so
rpm -qishowed the maintainer's machine name. - One category in the launcher entry. The desktop file listed both
Network and Development as main categories, which can list the app
twice in a menu.
Internal
- apt and dnf repository publishing is wired into the release workflow
and gated on a signing-key secret, so it stays dormant until the key
exists. It serves the same package files the release carries rather
than rebuilding them. Seedocs/TODO.md.