Repository navigation
v0.7.4 (bêta)
Pre-release
Pre-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) orsecret_file: path(a file, absolute path or~/), added by hand to a cluster's entry inconfig.yaml, say where its secret is — password, API key secret orencodedform, Bearer token, client key passphrase, whichever its authentication asks for. The form opens with the field filled in and the focus on "Connect":Enteris 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.yamlholds where the secret is, never what it is, andF9keeps 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.secretFixes
- 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 saidAlt+←/→switches panels on macOS only; it does on every system, and is the way to do it whereCtrl+←/→doesn't get through, as under PuTTY.
Before upgrading from 0.7.3
- Nothing to do: a
config.yamlwithoutsecret_envorsecret_filebehaves as before — the secret is asked for at every connection.
Checks
go vetandgo 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_filefroze 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;
F9doesn'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 x64termdevtools-darwin-arm64— macOS Apple SiliconSHA256SUMS— 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.