Skip to content

v0.7.4 (bêta)

Pre-release
Pre-release

Choose a tag to compare

@gnocent gnocent released this 21 Oct 21:01
· 19 commits to main since this release

TermDevTools v0.7.4 (beta)

Version française : CHANGELOG_fr.md

In one sentence: a cluster's secret can be read from an environment variable or a file instead of being typed at every connection.

What's new

  • Secret without retyping: secret_env: NAME (an environment variable) or secret_file: path (a file, absolute path or ~/), added by hand to a cluster's entry in config.yaml, say where its secret is — password, API key secret or encoded form, Bearer token, client key passphrase, whichever its authentication asks for. The form opens with the field filled in and the focus on "Connect": Enter is enough. The message area names the variable or the file.
  • Never blocking: a variable unset or empty, a file missing, unreadable, empty or larger than 64 KiB, a relative path, both keys on one entry, or a file that isn't a regular UTF-8 text file (a pipe, a device, UTF-16 as > writes it in Windows PowerShell 5.1) — the field stays empty, the message says why, and the secret is typed as before. Nothing is sent before "Connect".
  • The program still writes no secret: config.yaml holds where the secret is, never what it is, and F9 keeps its placeholders. The file is yours to protect: on Linux and macOS, one that other users can read is used all the same, with a warning (chmod 600).
clusters:
  - url: https://es-prod.example.com:9200
    auth_type: basic
    username: svc_devtools
    secret_env: ES_PROD_PW # or secret_file: ~/.es-prod.secret

Fixes

  • Connection form on 80 columns: a new connection's URL, the paths of the client certificate, its key and the CA, and in French the passphrase, ran over the form's frame; these fields are now narrowed to fit inside it, their content scrolling.
  • Secret field after switching authentication: switching to another authentication type and back left the field looking empty while the secret typed was still sent; the field now shows what it holds.
  • Panel switch under PuTTY (#8): the help (F1) and the documentation said Alt+←/→ switches panels on macOS only; it does on every system, and is the way to do it where Ctrl+←/→ doesn't get through, as under PuTTY.

Before upgrading from 0.7.3

  • Nothing to do: a config.yaml without secret_env or secret_file behaves as before — the secret is asked for at every connection.

Checks

  • go vet and go test ./... pass, run on Windows: unit tests and tests of the interface on a simulated 80×24 screen; the secret tests also pass on Linux.
  • Basic Auth, API key and Bearer token connect against a real Elasticsearch 9.5.4 with security on, each with its secret read from a variable and from a file, through the connection form.
  • A security review of the secrets came before the release: no leak of the secret, nothing sent before "Connect". The two points it raised — a pipe or a terminal named by secret_file froze the interface, a UTF-16 file sent a garbled secret — are fixed and covered by tests.
  • govulncheck: no known vulnerability, neither in the dependencies nor in the standard library of Go 1.27.3, which the binaries are built with.
  • No independent external audit was carried out.

Known limits

  • The secret is read when the form opens; F9 doesn't refer to the variable or the file. No OS keychain.
  • A "New connection" typed with the URL of a known cluster replaces its entry and loses the keys written by hand (secret_env, secret_file, proxy…): pick the cluster from the list instead.
  • The limits of 0.7 still apply: see the changelog.

Binaries

One self-sufficient file per platform — no archive and no companion file:

  • termdevtools-linux-amd64 — Linux x86-64 (static binary)
  • termdevtools-windows-amd64.exe — Windows 10/11 x64
  • termdevtools-darwin-arm64 — macOS Apple Silicon
  • SHA256SUMS — SHA-256 checksums of the three files

Download the file for your platform and SHA256SUMS, check it (sha256sum -c SHA256SUMS --ignore-missing on Linux), make it executable (chmod +x, Linux and macOS), run it: termdevtools --version answers termdevtools v0.7.4. The binaries are not signed. Step by step, platform by platform: INSTALL.md (français). go install github.com/gnocent/termdevtools@v0.7.4 works too.