·
1 commit
to master
since this release
Immutable
release. Only release title and notes can be modified.
Version 0.41.0
Date: 2026-08-27
Tag: v0.41.0
Range: v0.40.0..master
Why this release exists
v0.41.0 is about the first seconds of a session. Opening a connection —
especially a cloud database such as Neon, Turso, Cloudflare D1 or a remote
MySQL server — used to show skeletons for many seconds while the app ran
serial round trips and full-table counts. This release reworks the entire
connection-open path on every engine, so the sidebar and grid paint almost
immediately and the remaining work happens in the background.
Changes
- Connections open in a fraction of the time. Schema introspection no
longer runs exactCOUNT(*)queries at connect time; it returns instantly
with the engine's own estimates while a background task fills in exact
counts and pushes them to the UI when ready. Postgres estimates now come
frompg_class.reltuples, which survives Neon's scale-to-zero compute
restarts — previously a cold Neon open counted every table on cold storage. - Far fewer round trips on every engine. Postgres runs its five catalog
queries pipelined in roughly one round trip. libSQL/Turso introspection
collapsed from ~4 network round trips per table to 4 total. Cloudflare D1
went from 5+ HTTPS requests per table to 2–3 requests total. MySQL and
MariaDB drop a redundant ping and run their catalog queries concurrently
over two pooled connections. SQLite reads its whole schema in four queries
instead of a per-table PRAGMA loop. - First rows race the schema. The data grid fetches the first page of rows
in parallel with schema introspection instead of waiting for it, and the
sidebar paints instantly from the bootstrap cache after a reload. A staged
"Connecting… / Reading schema…" indicator explains any remaining wait while
a suspended cloud database wakes up. - Tables reappear instantly after a restart. The last viewed page of each
table is cached on this device (size-capped, cleared with the connection)
and painted on relaunch while fresh data loads. Controlled by the new
"Remember table contents" setting, and disabled automatically — including
clearing the cache — when Privacy mode is on. - Editing no longer re-reads the whole schema. A cell edit, insert or
delete now patches the cached row count in place instead of invalidating
the entire schema, which previously forced a full re-introspection (and,
on SQLite-family engines, a fresh count of every table) after every edit. - One AI client, and per-provider model memory. The AI providers were
unified behind a single client abstraction with an OpenAI-compatible spec
client, and the Studio now remembers which model you selected for each
provider, so switching providers no longer resets your model choice. - Self-hosted fonts and a polished loading shell. Inter and JetBrains
Mono are bundled with the app instead of loaded via CSS imports, fixing
font rendering under the desktop content-security policy, and lazy views
got a reworked loading shell.
Fixes
- Concurrent schema requests for the same connection no longer run the full
introspection twice. - libSQL schemas no longer report table names in the unique-column list.
- SQL query status polling starts at 20ms instead of 100ms, shaving up to
~100ms off fast queries. - D1 and PostHog connections reuse one HTTP client, so TLS sessions and
keep-alives survive across connect, introspection and queries.
Notes
- Backed by new live-database tests: the collapsed libSQL introspection is
verified against a real sqld server, the Postgres estimate path against
Postgres 17, and the MySQL/MariaDB catalog queries against real servers.