Skip to content

Release 2.2.5 - #99

Merged
broisnischal merged 77 commits into
masterfrom
release/2.2.5
Oct 6, 2026
Merged

broisnischal merged 77 commits into
masterfrom
release/2.2.5

Conversation

@broisnischal

@broisnischal broisnischal commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Patch release 2.2.5. Merging with release:patch bumps the version, folds .changeset/release-2-2-5.md into CHANGELOG.md, tags v2.2.5 and runs the release builds.

New

Terminal tab

The connection's own command-line client runs in a tab: psql, mysql or mariadb, sqlite3, sqlcmd and redis-cli, signed in with the saved connection (Ctrl+` opens it and goes back).

  • The password goes through the environment variable each client reads, never the command line, and the connection's SSH tunnel is reused.
  • Bytes travel over a per-session WebSocket on 127.0.0.1 with a random token, not Tauri IPC. Over IPC every keystroke waited on the GTK main loop on Linux and typing lagged; over the socket an echo comes back in about 1ms.
  • Suggestions for the client's commands, tables, columns and keywords, with translations between dialects (show databases in psql offers \l).
  • Enter runs a statement that looks finished and types the ;, Shift+Enter starts a new line, and the footer says when a statement is still open.
  • psql prints wide results one record per block (expanded=auto) with box lines and ∅ for NULL; mysql switches to vertical output; sqlite3 uses box mode.
  • Error, warning and notice lines are coloured. Editor keys work (Ctrl+Backspace, Ctrl+A, Ctrl+Z, Home, End), and the app's own shortcuts (Ctrl+K, Ctrl+W) still reach the app.
  • When a client is missing, the tab shows the install command for the system.

SQL editor

  • Colour themes for every code view.
  • Errors in plain words, with a one-click fix for a mistyped table, column or keyword.
  • Revert for a single UPDATE, DELETE or INSERT, and for schema changes such as CREATE TABLE or ADD COLUMN.
  • Completion that follows the grammar.

Background updates

Updates download while the app runs and install on quit. The status bar offers Restart once one is ready, and a What's new dialog follows each update. .deb, .rpm and Scoop installs still ask.

Fixes

  • Rows dropping off after an insert. With page size All, the page limit is the row count from before the insert, so the new row went in at the top and the last row fell off. The grid no longer matched the table until a refresh; duplicating a row and inserting it was where it showed. The page now grows by the row (pageWithInsertedRow, tested). When an insert has to reload a view of every row, the toast offers Show, which goes to the row at the end.
  • Tables lost on disconnect. A SQLite or DuckDB connection saved without a file opened a temporary database that was deleted on disconnect, with every table in it. Both now refuse an empty path, and the connection form has New to create a file.
  • Infinite scroll. A row added from the grid vanished on the next load and the following load skipped a row. It now reloads.
  • Rows affected. A SELECT run in the console no longer reports its row count as rows affected.

Changes

  • The new tab page names the database it is on, with compact tiles that include Terminal and Search.
  • Command palette shortcuts show Ctrl on Windows and Linux instead of macOS glyphs, and its group labels are plain case.

Checked

  • cargo test --lib: 208 passed, 0 failed
  • npx vitest run: 1113 passed
  • npx svelte-check: 0 errors
  • npm run build: clean
  • Terminal end to end against real psql 18 with Postgres 16, the MariaDB 12 client with MySQL 8.4, and sqlite3 3.53.
  • The insert fix in the real grid: duplicate a row, Ctrl+Enter, Ctrl+Enter. The new row is at the top and every other row stays.

Not checked

  • The terminal on Windows (ConPTY) and macOS. Built and tested on Linux only.
  • Installing a downloaded update on quit. That needs two signed releases to prove.

An empty filename is not an error to SQLite: it opens a private temporary
database and deletes it when the connection closes, so tables made in a
connection saved without a file were gone after the next disconnect.
An empty path opened an in-memory database, which loses everything on
disconnect the same way. In-memory stays available as `:memory:`.
psql, mysql or mariadb, sqlite3, sqlcmd and redis-cli: where the binary is
(the user's PATH and the usual install folders), its version, and the
arguments and environment that point it at a saved connection. The
password goes in the environment variable the client reads, never argv.
Bytes travel over a per-session WebSocket on 127.0.0.1 with a random
token, not Tauri IPC: on Linux every invoke and Channel message waits on
the GTK main loop, and typing lagged behind the echo.
xterm.js in the SQL editor's font on the theme's colours, with
suggestions, Enter that runs a finished statement, editor keys sent as
readline keystrokes, and the app's Ctrl shortcuts handed back to it.
The input layer treated xterm's hidden textarea as a text field and took
Ctrl+Backspace and Ctrl+Z before the terminal saw them.
@broisnischal broisnischal added the release:patch Bump patch version (0.0.x) label Oct 6, 2026
A fixed-size page keeps its size when a row goes in at the top; page size All grows by the row instead of being cut to the count from before the insert.
With All, the page limit is the row count from before the insert, so the splice cut the page back to it: the new row went in at the top and the last row dropped off, and the grid no longer matched the table until a refresh. Duplicating a row and inserting it was where it showed.
When an insert reloads a view that holds every row (All, windowed), the new row is at the end in the table's own order; the toast now goes straight to it.
@broisnischal
broisnischal merged commit c1f0817 into master Oct 6, 2026
1 check passed
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release:patch Bump patch version (0.0.x)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant