Releases
v0.73.0
Compare
Sorry, something went wrong.
No results found
Added
VoiceOver navigation of the ER diagram, table by table and column by column, with each table's joins. (#2692 )
Column type, nullability and default changes for SQLite, libSQL and Cloudflare D1, checked against dependent objects.
Column rename and drop alongside a foreign key change in one save.
Foreign key add, remove and edit for SQLite, libSQL and Cloudflare D1, applied as a reviewed table rebuild.
Real constraint names for SQLite foreign keys, in place of a positional placeholder.
Menus of the connection's own tables and columns for a foreign key's Columns, Ref Table and Ref Columns.
The reason Create Table is unavailable, next to the button.
Menu of the engine's own default values on the Structure tab's Default cell, including a Custom editor. (#2688 )
Row-number gutter held at the left edge of the data grid when the table is scrolled sideways. (#2664 )
Shift+Space to widen the grid selection to every row it touches. (#2664 )
Table name proposed from the file name when an import creates the table, with a warning when the name is taken.
Copy To across database engines, with every type approximation listed before the copy runs. (#1491 )
Per-table WHERE and row limit in Copy To. (#1491 )
Server-side INSERT … SELECT when a copy's two sides are one connection. (#1491 )
Tunnel Command transport, with kubectl port-forward and aws ssm start-session presets. (#2520 )
Bar chart column in the EXPLAIN tree, with a Metric menu for self cost, self time and row counts. (#2633 )
Database type change from inside the connection editor.
The reason Save is unavailable, next to the Save button in the connection editor.
Approval setting for MCP connection access, with the list of approved connections and a Forget action. (#2640 )
Typesense driver plugin, with collection browsing, document editing and a REST request console. (#2629 )
Export, Delete and Empty for a Typesense collection. (#2629 )
Typesense API keys in Users & Roles, with the collections and actions each key holds. (#2629 )
Server Dashboard metrics for Typesense, from /metrics.json and /stats.json. (#2629 )
Encoding and byte order mark options for CSV export, with a warning naming what the encoding dropped. (#2534 )
Indexes in an SQL export, written after the data. (#2492 )
Image preview beside the source for a cell holding SVG or a raster image. (#2535 )
DuckDB backup and restore, as one .duckdb file or a folder of Parquet. (#2485 )
Table picker in Backup Dump, everything selected by default. (#2485 )
Backup of several databases into one folder, one file each. (#2485 )
Back Up… on a database selection in the connection tree. (#2485 )
Assistant as its own pane, with View > Show Assistant and Cmd+Option+A.
Inspector fields with the column name and type on one line and the value at full width below.
A BLOB too large to edit whole marked read-only in the inspector, in place of an editable first 10 KB.
Always-visible value menu on every inspector field, with Ctrl+Option+N for NULL and Ctrl+Option+D for DEFAULT.
Tab and Shift+Tab between inspector fields.
Field search and an edited-fields-only filter in the inspector.
Table and row position at the top of the inspector.
Safe Mode, Session Context and Schema submenus in the Database menu.
Show Tables and Show Favorites in the View menu.
Running indicator on the editor tab whose query is executing.
Sort direction setting for the data grid, applied to the default row sort and the first header click. (#2665 )
Transport activity for an SSH tunnel or SOCKS proxy: throughput in the toolbar, bytes in the connection switcher.
Release File Lock on the Database menu and the connections strip, for a DuckDB connection. (#2518 )
Per-connection idle release for DuckDB and MySQL, after a set number of idle minutes. (#2518 )
Open the File Read-Only option for DuckDB, letting several processes share one file. (#2518 )
Changed
Zoom ladder for both diagrams, stepping 5, 10, 25, 33, 50, 67, 75, 100, 150, 200 and 300 per cent. (#2692 )
Fit to Window at whatever scale the diagram needs, instead of stopping at 25%. (#2692 )
Connection editor rebuilt around a four-section sidebar, in place of up to eleven panes.
One Connect via picker for the five transports, in place of five Enable switches.
Save, Cancel and Test Connection on a bottom action bar instead of the titlebar.
Use ~/.pgpass below Username rather than above it.
Tab moves focus out of Startup Commands and Pre-Connect Script instead of inserting a tab.
SQL export writes a materialized view's indexes once the view exists. (#2492 )
Backup Dump as one sheet with scope, format and destination, in place of a picker with a save panel over it. (#2485 )
Inspector shows the selected row as Fields or JSON, with AI Chat moved out of its tab strip.
Structured inspector values expand in place instead of replacing the whole pane.
Object tree context menu regrouped into four groups by intent, with the connection-wide commands off object rows.
Back available with unsaved edits, asking to discard them, in place of standing down until they were saved.
View Options as a control in the sidebar's filter row, in place of an entry on every context menu.
View ER Diagram and New View on the object tree's empty-area menu only.
Keyboard shortcuts shown on sidebar context menu items that have a menu bar equivalent.
Toolbar rebuilt around five icon-only groups, with a centred connection and container control.
Query duration and Stop in the results status bar, in place of the centred toolbar readout.
Safe Mode as a toolbar menu whose icon follows the level.
Window subtitle dropped, with the container named in the toolbar instead.
Toolbar arrangements reset once, to the new default set.
Fixed
Half the ER diagram left unpainted at its fit-to-window zoom, and the query plan's arrows gone below 50%. (#2692 )
A table's relationship with itself drawn underneath the table, hiding a manager_id style foreign key. (#2692 )
Table dragged past the ER diagram's top-left corner disappearing, with the position saved. (#2692 )
ER diagram back at 100% in the top-left corner after leaving its editor tab and returning. (#2692 )
"Unsupported schema operation" when adding a foreign key to a SQLite, libSQL or Cloudflare D1 table.
Add and Remove offered on the Foreign Keys tab for engines that cannot edit foreign keys.
Incomplete foreign keys, indexes and columns reaching the database on Save.
Rows silently renumbered by a SQLite column reorder on a table with no integer primary key.
A modified index or foreign key re-created before the columns it covers are added.
Condition dropped from an index added on SQLite, libSQL and Cloudflare D1, turning a partial index into a full one.
Foreign keys and indexes dropped from a new table when their name was left blank.
Foreign keys never created with a new table on Snowflake and Teradata.
Indexes never created with a new table on SQLite, libSQL, Cloudflare D1, ClickHouse, Snowflake, Trino and Teradata.
Constraint name discarded from a foreign key on SQLite, libSQL and Cloudflare D1.
Invalid REFERENCES table () from a foreign key that named no referenced columns.
Referential actions the engine rejects offered on the Foreign Keys tab.
Foreign key resolved against the wrong schema on SQL Server.
Auto-increment column not made the primary key on SQLite.
Create Table tab closed without a prompt when it held only indexes or foreign keys.
Cmd+Z doing nothing in the Create Table tab.
Column defaults quoted into string literals, from gen_random_uuid() to NOW() to nextval(...). (#2688 )
A MySQL expression default rewritten as a string on any edit to the same column. (#2688 )
A ClickHouse MATERIALIZED or ALIAS column turned into a plain DEFAULT column by an edit to its comment. (#2688 )
Default and Auto Inc cells on Cassandra and ScyllaDB, which CQL has no way to express. (#2688 )
Default cell on Trino, whose generated DDL never carried one. (#2688 )
Column defaults exported from an ER diagram as quoted strings, including SYSDATE and X'0102'. (#2688 )
MySQL numeric, BIT and binary defaults quoted, which rejected b'1' and turned 0x61 into text. (#2688 )
DEFAULT CURRENT_TIMESTAMP read back from MySQL 8 as (CURRENT_TIMESTAMP). (#2688 )
An expression default written without the parentheses MySQL requires, on a copy from MariaDB. (#2688 )
A bare keyword default such as session_user carried unquoted into a copy to another engine. (#2688 )
Missing default badge in the enum cell menu on MySQL. (#2688 )
SQL Server dropping a column's DEFAULT constraint on a type or nullability change and never re-adding it. (#2688 )
A ClickHouse MATERIALIZED, EPHEMERAL or ALIAS column converted by setting a default on it. (#2688 )
%h and the other ~/.ssh/config tokens reaching the connection as literal text. (#2687 )
Trailing comments on a ~/.ssh/config line kept as part of the value. (#2687 )
Host blocks matched against a substituted HostName rather than the host as typed. (#2687 )
%p and %r left unexpanded in a Match exec command. (#2687 )
Match !host and the other negated Match criteria matching every host. (#2687 )
Include lines naming more than one file reading none of them. (#2687 )
Include inside a Host block applying to every connection. (#2687 )
The same file included from a second Host block contributing nothing. (#2687 )
Match final overriding values earlier blocks had already set. (#2687 )
IdentityFile entries from earlier blocks dropped by a later Match block. (#2687 )
Comma-separated Host patterns treated as a list, which Match host alone accepts. (#2687 )
A Match exec command that ignores SIGTERM hanging the connection. (#2687 )
Whole-result copy after Select All ignoring the 50,000-row clipboard limit. (#2667 )
Row-gutter geometry observer left registered every time a data grid was rebuilt. (#2667 )
A jump host's own ProxyJump not being followed, leaving a chained bastion unreachable. (#2687 )
The SSH server and jump hosts missing from the confirmation for a database link. (#2687 )
The SSH username and jump hosts missing from the connection import sheet. (#2687 )
Unsaved cell edits discarded without asking when a column was hidden, shown or reset. (#2667 )
Edited values left on screen with nothing tracking them after discarding to change a value filter. (#2667 )
Discard prompt on applying a value filter that changes nothing. (#2667 )
Unsaved cell edits following the row that took their place after a per-column value filter changed. (#2667 )
Undone cell edits coming back after switching tabs. (#2667 )
Find bar showing another tab's search term, over this tab's match count. (#2667 )
Cell selection cleared by Select All. (#2667 )
Scroll and accessibility observers left registered every time a data grid was rebuilt. (#2667 )
Grid row and cell selection lost on switching editor tabs, result view modes, or moving a tab to a new window. (#2667 )
Connection and database choosers opening between the two toolbar capsules instead of under the one that was pressed.
Raw DuckDB driver text in place of the name of the app holding a locked database file. (#2518 )
DuckDB instance and its worker threads leaked by every failed remote connection attempt.
MySQL statement replayed outside the transaction it was run in after the server dropped the connection.
Query timeout lost after a MySQL reconnect.
Toolbar commands pushed into the overflow menu at 1200pt by a centred item that could not shrink.
Container chooser opening over a session the health monitor had given up on.
No way to change a Snowflake warehouse or role once the window narrowed enough to clip the connection group.
Blank Connection and Status tiles in Customize Toolbar.
Stop advertising the old key after Cancel Query was rebound.
Row count and row inspector reporting one row while Delete and Copy act on every row a cell drag covers.
Cell selection collapsing to the first column or the first row when a drag left the grid past the last one.
Cell selection, copy and paste using columns the pointer never crossed once a column had been reordered or hidden.
Default row sort drawn on a column header as though it had been clicked.
First click on an already default-sorted column skipping straight to descending.
Don't Sort undone by the default row sort on the next load of the table.
Sort fired by a column-header drag the user dropped back where it started.
Shift-clicked second sort column lost when the tab was reused for another table.
Saved sort dropped on relaunch when its column was hidden.
Sort marker moved onto another column after a query returned different columns.
Sorted column silent to VoiceOver.
Sort chevron left on a column after Cancel on Discard Unsaved Changes.
Move Column Up and Down dimmed on the Structure tab after Don't Sort.
Order lost by an MCP browse_table sorting on a column outside its columns list.
Query Live Activity still counting up on the iOS Lock Screen and Dynamic Island after the app was quit mid-query.
Stop leaving an iOS MySQL or Redis query running, with the spinner and the Live Activity stuck behind it.
A stopped iOS query recorded in Query History as successful, including a write that streamed no rows.
Query Live Activity marked interrupted while an iOS query longer than five minutes was still running.
Connection screen stuck on Connecting for good after a cancelled connect on iPhone and iPad.
Edited connection host, port or credentials ignored until relaunch on iPhone and iPad.
SSH tunnel handshake with no timeout on iPhone and iPad, against a server that accepts TCP and then stalls.
Export and Transfer To preselecting a same-named table from another schema, or nothing at all.
Delete queuing a table drop from the menu bar with none of the confirmation the sidebar asks for.
Truncate Table offered from the menu bar for a view, which the server then refuses.
Truncate offered on a sidebar selection that mixes a table with a view.
Import sheet clearing a table without confirmation on a connection set to confirm destructive statements.
Empty destination table picker in the import sheet, with no message and no retry, when the table list failed.
Connection with two transports enabled reaching the database directly, with neither transport applied.
Object list unchanged after toggling Show object icons or Show object comments in Settings.
Delete Connection missing from the connection editor since 0.39.0.
Continue dimmed after filtering the database chooser down to one driver.
Down arrow not reaching the list from the database chooser's search field.
VoiceOver reading a database chooser row's icon before the driver's name.
Animations that played through the Reduce Motion setting when removing a jump host or copying DDL or a query plan.
Icon-only controls with no VoiceOver name or tooltip in the date picker, row inspector and slash command settings.
Inspector picker reading NULL after setting a value on a NULL column, including on every new row.
Edits typed into a hidden inspector field while the JSON view is showing, committed by a later save.
Set NULL, Set DEFAULT, Set EMPTY and SQL functions offered on a PHP-serialized field they cannot round-trip.
Reconnecting or switching connection replacing a connection's remembered Inspector or Assistant choice.
Assistant staying on screen and usable after AI features are turned off.
Inspector opening in place of a remembered Assistant when a connection restores its session.
Auto-show inspector on row select closing the Assistant on every grid click.
Explain with AI and Optimize with AI enabled, and doing nothing, with AI features off.
Tab trapped inside the inspector's field list with no way back to the search field.
Column type missing from inline inspector rows on a read-only result.
Inspector picker reading NULL for a multi-row selection whose values differ.
Structure inspector drawing the Name and Type fields in two different fonts.
Primary key, foreign key and edited markers silent to VoiceOver in the inspector.
Inspector showing the last table's statistics on a tab with no table.
Auto-show inspector on row select doing nothing on a query tab.
Inspector ignoring a column's display format, showing raw where the grid showed JSON or PHP.
AI conversation history read from disk on every connection window, with the assistant never opened.
is_connected reported as true over MCP for a connection that had stopped answering.
Cost badge on every plan node of a query ending in LIMIT, where the share it reads could exceed 100%. (#2633 )
Green "low cost" badge on plans that report no cost at all, such as SQLite and ClickHouse. (#2633 )
Empty Cost, Rows and Actual Time columns in the EXPLAIN tree for engines that report none of them. (#2633 )
Workers Launched: 0 missing from a plan node's details while Workers Planned was shown. (#2633 )
MySQL plans pricing the wrapper query block above every table it contains. (#2633 )
SQL IN, AND, OR, NOT, BY and ON in the editor's plain text colour. (#2634 )
SQL built-in type names, ASC, DESC and function calls unhighlighted in the editor.
SQL numbers, TRUE, FALSE and NULL in the string colour.
No syntax highlighting at all in the MongoDB and Elasticsearch query editors.
JavaScript locals and tags queries that failed to compile against the bundled parser.
JSON true, false and null unhighlighted in the row inspector and the JSON viewer.
Operator and Function theme colours with no effect on the editor.
MCP access prompt with no setting to turn it off, and hidden entirely with AI features off. (#2640 )
MCP access prompt discarding an answer given more than 30 seconds after it appeared. (#2640 )
MCP access prompt returning every 30 minutes, and after each rotation of the bundled bridge's credential. (#2640 )
Repeated MCP access prompts when a client retried a call the user had just denied. (#2640 )
Destructive-operation consent reaching an elicitation-capable MCP client as an internal error instead of a prompt.
ai_policy in list_connections reporting askEachTime whatever the app-wide default was.
Quote menu in the CSV export options untranslated in every localized build. (#2534 )
Line feed instead of the chosen line ending on the table comment of a multi-table CSV export. (#2534 )
Indexes missing from an SQL export on SQLite, LibSQL, Cloudflare D1, SQL Server, Oracle, Dameng and Cassandra. (#2492 )
DuckDB expression index exported as invalid SQL. (#2492 )
DuckDB index whose name contains "primary" reported as the table's primary key and left out of its DDL. (#2492 )
PostgreSQL index left out of an export when a check constraint on the same table shared its name. (#2492 )
PostgreSQL materialized view exported as a CREATE TABLE. (#2492 )
DROP TYPE and DROP SEQUENCE in an SQL export with Drop unticked. (#2492 )
Oracle and ClickHouse views exported as a bare SELECT with no CREATE VIEW. (#2492 )
Bare ; written for an object whose definition the server would not return. (#2492 )
SQL Server reporting every index as clustered. (#2492 )
Unique constraints missing from a SQL Server, Oracle and Dameng CREATE TABLE in an SQL export. (#2492 )
ClickHouse materialized view exported as an ordinary view. (#2492 )
Backup Dump and Restore Dump unusable on SQLite, with an empty database list and a dimmed confirm button. (#2485 )
libSQL backup writing an empty 52-byte file and reporting success. (#2485 )
Restore Dump asking every engine for a file pg_dump wrote. (#2485 )
Cancel doing nothing while a backup's size estimate ran. (#2485 )
Backup size estimate queueing behind a query tab's own work and joining its open transaction. (#2485 )
A narrowed PostgreSQL dump matching nothing when a table name held a capital, a dot or a wildcard. (#2485 )
Redis and Valkey ACL users without permission to run PING refused at connect and dropped by the health check.
Redis database index ignoring the dbN spelling the driver itself publishes.
A Sentinel that rejected the credentials reported as unreachable.
A failed Redis reconnect leaving the connection marked live, with every later command reporting it as not connected.
Security
Redis and Valkey connections signing in as the default user when a username was typed with an empty password.
Redis connections on iOS reported as successful without a single command reaching the server.
You can’t perform that action at this time.