Skip to content

Releases: 9LEVEL/pgtower

v0.10.2

Choose a tag to compare

@github-actions github-actions released this 25 Sep 13:00
57d6e47

What's Changed

  • fix(install): hand a sudo-created config dir to the installing user by @kenny-marcante in #7

New Contributors

Full Changelog: v0.10.1...v0.10.2

v0.10.1 — pgtower.dev

Choose a tag to compare

@github-actions github-actions released this 24 Sep 21:56

Changed

  • New project site: pgtower.dev. The in-app Welcome to pgtower notice and the README point to it.
  • Rename instructions: when the binary can't rename itself, the manual steps now use the GitHub installer URL, which works independently of the site.
  • Installer: pinning a version released before the rename (PGTOWER_VERSION=v0.9.1) now falls back to that release's pgtui-* asset instead of failing. (#4)
  • New icon: a control tower with a beacon and radar arcs. (#5)

Upgrade

Use Update now in the app, or run:

curl -fsSL https://raw.githubusercontent.com/9level/pgtower/master/install.sh | sh

Coming from pgtui? The migration is automatic; see the v0.10.0 notes.

Full changelog: v0.10.0...v0.10.1

v0.10.0 — pgtui is now pgtower

Choose a tag to compare

@github-actions github-actions released this 24 Sep 20:22

pgtower

pgtui is now pgtower

The control tower for your Postgres fleet. It's the same tool with the same keys and the same config, under a new name that is actually ours: another Postgres TUI already used "pgtui". New home: https://pgtower.dev

pgtower demo

Upgrading from pgtui: nothing to do

Use Update now in the app, or run the installer:

curl -fsSL https://raw.githubusercontent.com/9level/pgtower/master/install.sh | sh

On first start, pgtower moves everything over and shows a one-time Welcome to pgtower notice:

Before (pgtui) Now (pgtower) What happens
pgtui command pgtower The binary is renamed, and pgtui stays as a symlink so your scripts keep working.
/opt/pgtui, ~/.config/pgtui, /etc/pgtui /opt/pgtower, ~/.config/pgtower, /etc/pgtower Moved, with nothing left behind and nothing overwritten. A directory that can't be moved is still read.
PGTUI_* variables PGTOWER_* The old names are still read as a fallback, and the notice tells you which ones to rename.
application_name = 'pgtui' 'pgtower' Update monitoring filters that used it.
github.com/9level/pgtui github.com/9level/pgtower GitHub redirects the old URLs.

Compatibility copies: this release also ships pgtui-* copies of every binary, so v0.9 in-app updates can find it. These copies will be dropped in v0.12.

Also in this release

  • Reproducible demo: docs/demo/setup.sh creates the throwaway demo clusters, so vhs docs/demo/demo.tape re-records the GIF exactly.

Full changelog: v0.9.1...v0.10.0

v0.9.1 — layout fix + demo

Choose a tag to compare

@github-actions github-actions released this 24 Sep 18:53

pgtui demo

Fixed

  • Header no longer scrolls off the screen. The Locks tab rendered two lines more than its space whenever there were blocked sessions. That pushed the header and tab bar out of the terminal. The bug had been there since before v0.9.
  • Footer stays at the bottom. Tabs with little content (Dashboard, Tuning) left it mid-screen.
  • General guard: every tab is now pinned to exactly the space available, so this can't happen again in any tab.

Docs

  • Demo GIF: the README now has one. It shows the dashboard, sessions, the blocking tree, roles, databases, switching servers, the friendly connection errors and the tuning advisor.
  • Reproducible: docs/demo/ holds everything needed to regenerate it: a VHS tape, a demo server list, and a script that simulates application traffic.

Upgrade

Use Update now in the app, or re-run the installer:

curl -fsSL https://raw.githubusercontent.com/9level/pgtui/master/install.sh | sh

No configuration change from v0.9.0.

Full changelog: v0.9.0...v0.9.1 · PR #2

v0.9.0 — multiple servers, friendly connection errors

Choose a tag to compare

@github-actions github-actions released this 24 Sep 18:30

Highlights

Several servers, one pgtui. Keep all your PostgreSQL clusters in one place and switch between them without restarting: press S (or ctrl+o).

Connection failures you can act on. An unreachable or misconfigured server no longer makes pgtui exit with a raw driver error. It tells you what happened and what to check:

Cannot connect to “db1” — Server did not respond
No answer from 192.168.150.171:5432 within the connect timeout.
What to check: The host may be down, unreachable from this machine (missing route or VPN),
or a firewall is silently dropping port 5432. Check with: nc -vz 192.168.150.171 5432

⚠️ Upgrading from v0.8 or older: automatic, nothing to do

config.yml moves to format 2 (a list of named servers). On the first run of v0.9.0:

  • Backup: your old config.yml (single database_url / host … at the top level) is backed up verbatim to config.yml.v1.bak (mode 0600).
  • Conversion: your connection becomes a server named after its host and is set as the default. Your settings (refresh_seconds, update_check, …) are kept.
  • Legacy .env: a .env left in /opt/pgtui, ~/.config/pgtui or /etc/pgtui is imported and retired to .env.v1.bak. It has been silently ignored since v0.8. A .env in your working directory is never touched.
  • Notice: a one-time notice explains what was done.

Delete the *.v1.bak files once you're sure you won't downgrade. If the new file can't be written (permissions), pgtui runs with the converted settings in memory, tells you so, and finishes the upgrade on the next save.

DATABASE_URL / PG* still work and still take precedence. They now appear as a session-only server named env, which is never saved to the file.

New

  • Servers screen (S). It opens on first run and whenever the startup connection fails.

    Key Action
    enter connect
    a / e / d add / edit / delete
    t test (latency + server version)
    * set default
  • Server settings:

    • Host: a hostname, an IP or a unix-socket directory (/var/run/postgresql, peer auth, no password stored).
    • Password: optional password_env, or leave it empty and use ~/.pgpass.
    • Tags: dev / staging / prod. The header always shows the active server, with PROD in red.
    • Per server: host_ram_mb / host_cpus for the Tuning advisor.
  • CLI: pgtui -s NAME opens a specific server, pgtui --list lists them.

  • Friendly connection errors:

    Group Cases
    Network not responding, refused, no route, unknown host
    Local server missing unix socket, server starting up
    Access bad password, pg_hba rejection, missing database, out of connections
    TLS SSL disabled on the server, certificate verification

    The raw driver error stays available under "Technical details".

  • Background connect: connections open in the background with a visible connecting… state, and esc cancels.

Fixed

  • Stale results after a switch: results arriving after a server switch (a slow query, the previous dashboard's refresh) are dropped instead of rendering under the new server.
  • Failed switch: a failed switch keeps your current session.
  • PGTUI_CONFIG_DIR: it now replaces the config search instead of being prepended. Tests could previously pick up a real /opt/pgtui/config.yml.
  • Alerts: short messages no longer render in a mostly empty full-height box.

Removed / cleanup

  • .env.example: removed, since .env files have not been read since v0.8.
  • Legacy keys: the top-level database_url / host / port / user / password / database / sslmode keys are only read during migration.
  • Installer: install.sh seeds a format-2 config.yml (0600) and, on upgrade, says when a migration will run.

Install / upgrade

curl -fsSL https://raw.githubusercontent.com/9level/pgtui/master/install.sh | sh

Or use Update now in the in-app prompt. Every binary is static (Linux / macOS, amd64 / arm64), and its SHA-256 is in SHA256SUMS.

Full changelog: v0.8.0...v0.9.0 · PR #1

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 09 Aug 00:44

Full Changelog: v0.7.1...v0.8.0

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 09 Aug 00:12

Full Changelog: v0.7.0...v0.7.1

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 09 Aug 00:04

Full Changelog: v0.6.1...v0.7.0

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 08 Aug 19:58

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 08 Aug 19:42

Full Changelog: v0.5.0...v0.6.0