v1.4.0 — starting the app is now a pull, not a build
docker compose up no longer builds the image on your machine, and two failures that showed up exactly when you needed the tool are fixed.
Important
Upgrading an existing checkout moves the management database. The default compose path no longer mounts .:/app, so CLI2UI_DB_PATH now points at /data on a named volume. A checkout that had connections saved in the project root will start empty — nothing is deleted, the app is looking somewhere else. Either copy the existing db.sqlite3 into the volume, or copy docker-compose.override.yml.example, which puts the file back in the project root where you can inspect it.
Changed
docker compose upnow pulls a published image instead of building one — the first screen used to be preceded by apt and pip on a laptop that has no reason to compile anything. Compose points atjiniie/cli2ui:latest(amd64 and arm64, pushed onv*tags), so starting the app is a pull;CLI2UI_IMAGEin.envpins a version. Building from source moves todocker-compose.override.yml.example— copy it and you getbuild: .plus the working-tree mount, i.e. the previous behaviour with live reload.- The management database moved to a named volume — see the upgrade note above.
Fixed
- The workspace no longer hangs while a table is locked —
pg_total_relation_size()andpg_table_size()open the relation they measure, so the size and bloat probes tookACCESS SHAREon every table and queued behind anyACCESS EXCLUSIVEholder. Both probes feed the overview and the Health panel, the pages on the way to the Locks panel, so anALTER TABLEwaiting on an idle transaction made the workspace unreachable at exactly the moment you needed it to explain the jam. Measured before the fix:/locksanswered in 0.02s while the connection page never returned. Both probes now run under a 1slock_timeoutand report what happened; each degrades its own card, so Health keeps the cards a lock can't touch. (MySQL is unaffected: its sizes come frominformation_schema.TABLES, which reads the data dictionary.) - "Cancel" is no longer offered where it does nothing — cancel stops a running query, so on a session that isn't running one it reports success and releases nothing. That session is the usual head blocker (
idle in transaction), so the button appeared exactly where it couldn't help. Cancel now renders disabled there, with a note that only kill ends the transaction; sessions waiting on a lock keep it, since a lock wait means a statement is in flight.
Full changelog: https://github.com/MR-TABATA/cli2ui/blob/main/CHANGELOG.md