github fpenezic/ssh-tool v0.100.0

latest releases: v1.1.0-rc2, v1.1.0-rc1, v1.0.1...
one month ago

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 copying localhost:<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 bare https://.
  • 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 directory setting, 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 --cd flag 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, .rpm and
    .pkg.tar.zst are 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 .rpm targets Fedora: RHEL 10 and its rebuilds
    have no webkitgtk6.0 package at all, so it will not install there.
  • The RPM no longer carries the build machine's hostname. nfpm
    stamps os.Hostname() into the header unless told otherwise, so
    rpm -qi showed 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. See docs/TODO.md.

Don't miss a new ssh-tool release

NewReleases is sending notifications on new releases.