Skip to content

v0.7.3 (bêta)

Pre-release
Pre-release

Choose a tag to compare

@gnocent gnocent released this 21 Oct 18:08
· 23 commits to main since this release

TermDevTools v0.7.3 (beta)

Version française : CHANGELOG_fr.md

In one sentence: a production cluster can be protected — the requests that write are confirmed or refused, and a banner says so.

What's new

  • Per-cluster protection, chosen in the connection form, right under the URL, and saved in config.yaml (protection:):
    • "writes need confirmation" (confirm): a request that writes opens a popup naming the cluster and the request, with the focus on "Cancel" — Enter pressed out of habit or Esc sends nothing. "Send" sends the request as it was resolved on Ctrl+E.
    • "read-only" (read_only): a request that writes is refused, nothing is sent, and the status bar says how to allow it.
    • "none" (none), the default: nothing changes for existing clusters.
  • What writes: any PUT, any DELETE, and any POST missing from a list of known reads (_search, _count, _msearch, _mget, _field_caps, _analyze, _explain, pipeline simulations…) — _bulk and _delete_by_query, but also _refresh, _flush or _forcemerge, which act on the cluster. GET requests go through, except _refresh, _flush and OpenSearch's SQL or PPL. The request is classified as it is sent, after ${name} variables are substituted.
  • Banner across the top of a protected cluster's main screen: red with confirmation, yellow with read-only, with an optional label ("PROD · read-only"). A cluster without protection keeps exactly the layout of earlier versions.
  • Cluster history: the protection shows under the URL of each protected cluster.

The level is set at connection: to change it, connect again. It is a safety net against slips, not security — anyone who can run the tool can remove it. To really prevent writing, use an account with no write privilege on the cluster.

Fixes

  • The status bar's message is no longer cut from its first word on an 80-column terminal: a realistic URL and user name left it a few columns. It now comes first — the user gives way, then the URL is cut short, then the cluster.

Before upgrading from 0.7.2

  • Nothing to do: a config.yaml without protection: loads as before, with no protection and no banner.

Checks

  • go vet and go test ./... pass, run on Windows: unit tests and tests of the interface on a simulated 80×24 screen.
  • The protection is checked against a real Elasticsearch 9.5.4 and OpenSearch 3.9.0: deleting an index is refused in read-only, doesn't happen while the confirmation is cancelled, and happens once confirmed.
  • A security review of the protection came before the release; the bypasses it found 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 list of reads can't be extended: a read missing from it is confirmed, or refused in read-only, for nothing.
  • 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.3. The binaries are not signed. Step by step, platform by platform: INSTALL.md (français). go install github.com/gnocent/termdevtools@v0.7.3 works too.