Repository navigation
Releases: geek-fun/sqlkit
Release list
SqlKit v1.0.0
✨ Added
-
DuckDB failure diagnosis and file-format reporting — DuckDB connection failures are translated into an explanation with the fix attached: file lock held by another process or connection, instance-configuration conflict, and storage-format incompatibility each get their own message, and the two lock cases offer retry as read-only inline in the connection form (the connecting modal shows the same explanation on connect).
probe_database_fileadditionally reports the DuckDB storage-format version (header bytes 12..20, mapped to the oldest release that can open the file) and whether a sibling.walwrite-ahead log is present, both shown under the file path. -
Create DuckDB / SQLite databases from the connection form — the file-based path field is editable again and gains
New…/Open…actions backed by the native save dialog (extension appended automatically), an inline explanation of what will happen on connect (the engine creates a missing file, the file exists, is empty, is read-only, is a folder, is a different engine's file, or the parent folder is missing with a one-click "Create folder"), and a per-engine recent-files list with reveal/remove actions. DuckDB also gets the SQLite-style File / In-Memory tabs; in-memory connections are stored as named instances (memory:<label>) because unnamed DuckDB in-memory databases are private to a single connection and would otherwise give every pooled connection its own empty database. A new read-only access mode (access_mode=READ_ONLY) is meant to let DuckDB share a file with other processes (~is expanded for file-based paths, and opening the same DuckDB file a second time with a conflicting access mode is blocked with "switch to that connection" / "open read-only" choices — read-only needs a bridge build with the HikariCP flag alignment below, and the form explains that until it ships). New Tauri commands:probe_database_file(existence, size, writability, header sniffing) andcreate_database_directory.scripts/verify-duckdb-jdbc-urls.shrecords the DuckDB JDBC semantics these decisions rely on. -
Entitlements & version-lock subscription model (geekfun#56) — client-side implementation of the Ultimate entitlement contract: the two server-computed fields
ultimateExpiresAt+versionLockHorizonare consumed via a new Rust entitlement module (persisted cache, offline tolerance, failure degradation, 5-minute refresh throttle,app.releaseDate <= versionLockHorizonunlock check). Rust command gates returnENTITLEMENT_REQUIREDfor AI (agent loop/step, compaction, LLM validation), the whole Transfer module (import/export/migration/structure execution), SSH tunnel establishment, and the MCP bridge (config/policy save + auto-start). The frontend adds an entitlement store, Geekfun login entry, paid-feature gates with upgrade guidance on Data Studio, Transfer, AI assistant sidebar, ER diagram actions, AI/MCP settings, SSH tunnel option in the connection form, plus an Account & Plan settings tab showing the version-lock state with Geekfun login and logout (logout clears the local entitlement cache so entitlements never outlive the account session). -
Requesty provider preset in AI settings (OpenAI compatible, base URL
https://router.requesty.ai/v1) -
Opper provider preset in AI settings (OpenAI compatible, base URL
https://api.opper.ai/v3/compat) -
API Route provider preset in AI settings (OpenAI compatible, base URL
https://global.api-route.com/v1) -
SSH tunnels for any connection — connect through a bastion, with multi-hop chains, reusable SSH profiles, an optional proxy hop, password or key auth (ED25519/RSA, optional passphrase), and trust-on-first-use host-key pinning plus an unpin command for when a server key changes.
-
Cross-database browsing without reconnecting — table, column, index, foreign-key, view, routine and trigger panels can inspect any database on the server; PostgreSQL and SQL Server route through a short-lived connection instead of asking you to reconnect.
-
Instant result-grid sorting — sorting runs in the frontend over the rows already returned, so clicking a header no longer re-runs the query; primitive columns sort consistently even when one column mixes numbers, dates, booleans and text.
-
Settings report what is happening — JRE/driver installs, provider sync, update checks and other settings actions show pending, success and failure inline with progress and retry, replacing silent no-ops.
🔧 Changed
-
JDBC connections are much faster (DuckDB "Test connection" above all) — measured per connect before: an Adoptium JRE update check (1.4-2.5 s, on every connect), two Maven Central metadata round trips (0.6-0.8 s each), a fresh bridge JVM (DuckDB maps a ~107 MB native library, ~1.4 s) and a new driver class loader per connection. Now: the JRE check is memoised for 6 hours, a cached driver JAR skips the Maven resolution on the Rust side (the Java side follows in the next bridge build), bridge downloads use a shared HTTP client with a bounded connect timeout instead of
reqwest::get(which had none), the bridge process is shared across connections (shared_launcher), and a connection releases only its own pool through thedisconnectRPC instead of killing the process. Verified withsrc-tauri/tests/duckdb_bridge_integration.rs: a warm connect went from ~4.3 s to 5.5 ms with a bridge build that also caches the driver class loader; with the currently released bridge the same test measures ~1.4 s per warm connect. -
Result grids use the available width — data columns stretch to fill spare space and the Actions column stays pinned to the right edge.
🐛 Fixed
-
Editing an AI provider now selects its exact provider preset before falling back to API compatibility.
-
DuckDB read-only mode is rejected by the released JDBC bridge — DuckDB refuses
Connection.setReadOnly(), and HikariCP calls it whenever its own read-only flag disagrees with the opened connection (it defaults to false), so a read-only URL failed withCan't change read-only status on connection level. The bridge now derives HikariCP's flag from the URL (ConnectionManager.isReadOnlyUrl); until a bridge build with that change ships, the connection form explains the limitation and offers retry as read-write. Verified against a patched bridge insrc-tauri/tests/duckdb_bridge_integration.rs. -
Untranslated keys could render in the UI — the new-connection menu displayed
pages.connections.newMenu.*because those strings were added under the wrong node of the locale files;src/__tests__/i18nKeys.test.tsnow scans every literalt('…')insrc/and fails when a key does not resolve inenUSorzhCN, so this class of regression is caught bynpm testinstead of by a screenshot. The same scan surfaced two latent gaps, both fixed:common.cancel(used by the device-replace dialog, now the existingcommon.buttons.cancel) and the missingzhCNvalue forcomponents.serverForm.placeholders.encryptionKey. -
DuckDB database files whose path contains
;were mis-parsed — the DuckDB JDBC driver splits its URL on;, sojdbc:duckdb:/path/semi;colon.duckdbfailed withInvalid URL entry(verified againstduckdb_jdbc1.5.6); such paths are now rejected with an explanation in the connection form and in the backend instead of surfacing a confusing driver error, and read-only mode is never silently dropped for them. -
DuckDB connections fail with "The following options were not recognized: ssl" (issue #158) — embedded/file-based engines (DuckDB, SQLite, SQLCipher, Access) have no SSL settings in the UI, so their stored ssl mode is just the
Preferdefault; the JDBC bridge now receives no ssl mode for such types instead of injectingssl=true, which DuckDB's driver rejects as an unknown option; the bridge's property mapper also stops blindly settingssl=truefor drivers without explicit SSL support (H2 and Firebird previously fell into that fallback). -
Deep-link sign-in on cold start — a
sqlkit://authlink that launches the app no longer drops the token: the payload is parked in a pending-auth slot during startup and the frontend pulls it viaconsume_pending_authonce mounted; running-instance links double-write the same slot, closing the startup window too. -
Complex queries across all four databases — PostgreSQL multi-statement batches keep their result sets and exotic types (arrays, JSON, ranges, geometry); MySQL and SQL Server keep sessions across requests and preserve later or empty result sets, row counts and errors; Oracle keeps PL/SQL definitions and slash delimiters and returns complete DDL. MySQL functional-index crashes and numeric/binary conversion, SQL Server duplicate columns and missing precision, and Oracle JSON, timestamp and object-type conversion are fixed.
-
Statements that start with a comment or end in RETURNING — these were classified as non-row statements, so the UI showed "N row(s) affected" and an empty grid; they now return rows.
-
Numeric column headers line up with their values — headers take the same alignment as their cells, the sort indicator stays after the column name, and sort-priority numbers appear only for multi-column sorts.
-
The DDL panel's close button no longer overlaps Copy — the header reserves the space the dialog close button occupies.
-
AI providers update instead of duplicating — adding an existing provider updates it in place, and a failed model sync reports the error instead of silently leaving the default model list.
-
DuckDB native-load warnings — the bridge JVM starts with native access enabled, so JDK 24+ no longer prints restricted-method warnings into connection error messages.
-
Themed default avatar — accounts without a picture get a deterministic gradient initial derived from the account name instead of the flat ink block.
👥 Contributors
- **A...
SqlKit v0.8.8
See the assets to download this version and install.
👥 Contributors
- blankll (6 commits)
📋 Full Commit History
Changes from v0.8.7 to v0.8.8
- 9639ff5 release: v0.8.8 (blankll, 30 seconds ago)
- 80ed520 deps: bump data-studio-agent to v0.1.8 (blankll, 23 hours ago)
- fa28108 chore(deps): upgrade sqlparser 0.55 to 0.62 (blankll, 6 days ago)
- 162f939 fix(jdbc): execute statements via Statement.execute() instead of keyword sniffing (blankll, 6 days ago)
- b6433ac fix(queries): route WITH-prefixed statements through the query path on MySQL/SQLite (blankll, 6 days ago)
- 29fc28a fix(mcp): detect data-modifying WITH statements in read-only guard (blankll, 6 days ago)
📦 Downloads
See the assets below to download this version and install for your platform:
- macOS: Universal binary (Intel & Apple Silicon)
- Windows: x64 installer
- Linux: x64 AppImage/deb
SqlKit v0.8.7
Added
- DBA capabilities for session, slow-query, and privilege management (#138)
Fixed
- Use Pinia appStore as the single theme source for the editor (#137)
👥 Contributors
- VisionView (1 commit)
- blankll (1 commit)
- seven (2 commits)
📋 Full Commit History
Changes from v0.8.6 to v0.8.7
- ae02a06 release: v0.8.7 (blankll, 54 seconds ago)
- 3df8561 feat(sql): add session/slow-query/privilege DBA capabilities (#138) (seven, 2 days ago)
- 2f56ceb style: optimize the titlebar for Windows compatibility (#136) (VisionView, 5 days ago)
- 2e0d5df fix(theme): use Pinia appStore as single theme source for editor (#137) (seven, 5 days ago)
📦 Downloads
See the assets below to download this version and install for your platform:
- macOS: Universal binary (Intel & Apple Silicon)
- Windows: x64 installer
- Linux: x64 AppImage/deb
SqlKit v0.8.6
Added
- Guide agents to sqlkit tools for database access (#134)
- Advertise a discovery tool per connection in
list_connections(#135)
Changed
- Bump data-studio-agent to v0.1.6
👥 Contributors
- blankll (3 commits)
- seven (2 commits)
📋 Full Commit History
Changes from v0.8.5 to v0.8.6
- ff7d5a5 release: v0.8.6 (blankll, 49 seconds ago)
- 2d73da5 deps: bump data-studio-agent to v0.1.6 (blankll, 5 minutes ago)
- a976db2 feat(mcp): advertise discovery tool per connection in list_connections (#135) (seven, 43 minutes ago)
- 7544574 chore: mcp description improvement (blankll, 19 hours ago)
- da9e2e9 feat(mcp): guide agents to sqlkit tools for database access (#134) (seven, 19 hours ago)
📦 Downloads
See the assets below to download this version and install for your platform:
- macOS: Universal binary (Intel & Apple Silicon)
- Windows: x64 installer
- Linux: x64 AppImage/deb
SqlKit v0.8.5
Added
- Editable query results and empty SELECT rendering (#133)
Fixed
- Resolve saved-but-inactive connections in the MCP bridge (#132)
👥 Contributors
- blankll (1 commit)
- seven (2 commits)
📋 Full Commit History
Changes from v0.8.4 to v0.8.5
- 1acf1b1 release: v0.8.5 (blankll, 10 minutes ago)
- cf340a7 feat: editable query results + empty SELECT rendering (#133) (seven, 4 hours ago)
- bcc756d fix(mcp): resolve saved-but-inactive connections in bridge (#132) (seven, 18 hours ago)
📦 Downloads
See the assets below to download this version and install for your platform:
- macOS: Universal binary (Intel & Apple Silicon)
- Windows: x64 installer
- Linux: x64 AppImage/deb
SqlKit v0.8.4
Added
- Schema-aware autocomplete with dialect switching (#131)
- Primary button opens editor when connected
- Toggle connect button label/icon by connection state
- Disconnect action for connected connection cards
- Database context menu with dismiss on outside click
Fixed
- Use power icon for close connection action
- Label the action 'Close Connection' instead of 'Disconnect'
- Scrollable edit dialogs for wide tables
- Generate executable top-N SQL per database dialect
- Transparently reconnect lost or evicted sessions
👥 Contributors
- blankll (10 commits)
- seven (1 commit)
📋 Full Commit History
Changes from v0.8.3 to v0.8.4
- f3972bf release: v0.8.4 (blankll, 34 seconds ago)
- 5c6ff32 feat(sql-completion): schema-aware autocomplete with dialect switching (#131) (seven, 18 hours ago)
- 0b88342 fix(connections): use power icon for close connection action (blankll, 2 days ago)
- 5e038d2 feat(connections): primary button opens editor when connected (blankll, 2 days ago)
- 26e5afc feat(connections): toggle connect button label/icon by connection state (blankll, 2 days ago)
- 742e8d4 fix(connections): label the action 'Close Connection' instead of 'Disconnect' (blankll, 2 days ago)
- cdb30ff fix(data-view): scrollable edit dialogs for wide tables (blankll, 2 days ago)
- bd27080 feat(connections): add disconnect action to connected connection cards (blankll, 2 days ago)
- 9353509 feat(sidebar): database context menu + dismiss menus on outside click (blankll, 2 days ago)
- 6b16a59 fix(queries): generate executable top-N SQL per database dialect (blankll, 2 days ago)
- 4a7febb fix(connection): transparently reconnect lost or evicted sessions (blankll, 2 days ago)
📦 Downloads
See the assets below to download this version and install for your platform:
- macOS: Universal binary (Intel & Apple Silicon)
- Windows: x64 installer
- Linux: x64 AppImage/deb
SqlKit v0.8.3
See the assets to download this version and install.
👥 Contributors
- blankll (5 commits)
- seven (3 commits)
📋 Full Commit History
Changes from v0.8.2 to v0.8.3
- 37da22d release: v0.8.3 (blankll, 34 seconds ago)
- 3edcbea feat: MCP permission model + unified policy enforcement + settings UI (Phase 4) (#129) (seven, 16 minutes ago)
- 744c09e feat: expose saved connections from sqlkit MCP bridge + bridge tests (#128) (seven, 18 hours ago)
- ab48a97 feat: MCP bridge + settings UI — unified capability types (Phase 1+2) (#127) (seven, 19 hours ago)
- 5a78ab2 fix: address MCP bridge review issues (blankll, 3 days ago)
- 005e411 feat: wire MCP bridge into sqlkit Tauri setup and commands (blankll, 3 days ago)
- fcc1d80 feat: add axum-based MCP bridge HTTP server to sqlkit (blankll, 3 days ago)
- c7fa184 refactor: unify capability types with data-studio-agent (blankll, 4 days ago)
📦 Downloads
See the assets below to download this version and install for your platform:
- macOS: Universal binary (Intel & Apple Silicon)
- Windows: x64 installer
- Linux: x64 AppImage/deb
SqlKit v0.8.2
Added
- Improve default export filename with connection-db-schema-table-timestamp
- Soft-split SQL statements at 2+ blank lines when
;is missing
Fixed
- Match refresh button style to other toolbar icons (ghost)
- Properly separate refresh button from columns dropdown (was nested)
- Change refresh button to outline variant so it's visible
- Use correct icon for refresh button (i-carbon-renew)
- Make table view refresh button visible with text label
- Align SQL execute gutter icon to actual statement start line (#123)
Changed
- Move search/filter icons inside input boxes, remove external icons and separator
👥 Contributors
- blankll (13 commits)
- seven (1 commit)
📋 Full Commit History
Changes from v0.8.1 to v0.8.2
- c761179 release: v0.8.2 (blankll, 30 seconds ago)
- d17575e cleanup (blankll, 2 minutes ago)
- 6af9928 cleanup (blankll, 4 minutes ago)
- b0d4b88 feat: improve default export filename with connection-db-schema-table-timestamp (blankll, 20 hours ago)
- 569b54b fix: match refresh button style to other toolbar icons (ghost) (blankll, 20 hours ago)
- cd07471 refactor: move search/filter icons inside input boxes, remove external icons and separator (blankll, 20 hours ago)
- eed53b6 fix: properly separate refresh button from columns dropdown (was nested) (blankll, 20 hours ago)
- b67be78 fix: change refresh button to outline variant so it's visible (blankll, 20 hours ago)
- b3fd338 fix: use correct icon for refresh button (i-carbon-renew instead of non-existent i-carbon-refresh) (blankll, 20 hours ago)
- 16cf0fc fix: make table view refresh button visible with text label (blankll, 20 hours ago)
- aab0e9e chore: sync version (blankll, 2 days ago)
- f82a6c3 feat: soft-split SQL statements at 2+ blank lines when ; is missing (blankll, 2 days ago)
- b551ffd feat: soft-split SQL statements at 2+ blank lines when ; is missing (blankll, 2 days ago)
- b35b9e8 fix: align SQL execute gutter icon to actual statement start line (#123) (seven, 2 days ago)
📦 Downloads
See the assets below to download this version and install for your platform:
- macOS: Universal binary (Intel & Apple Silicon)
- Windows: x64 installer
- Linux: x64 AppImage/deb
SqlKit v0.8.1
Fixed
- Fix sidebar navigation buttons not responding to clicks (#122)
- Fix DataGrid row selection triggering on cell click instead of checkbox only (#122)
- Fix DataGrid row actions hidden until hover, now always visible (#122)
Changed
- Unify result panel icon styles with editor toolbar — semantic colors, consistent sizing, lucide icons (#122)
👥 Contributors
- blankll (1 commit)
- seven (1 commit)
📋 Full Commit History
Changes from v0.8.0 to v0.8.1
- 03f3445 release: v0.8.1 (blankll, 2 hours ago)
- dbd697b fix: sidebar navigation, result panel icons, DataGrid row selection and actions (#122) (seven, 2 hours ago)
📦 Downloads
See the assets below to download this version and install for your platform:
- macOS: Universal binary (Intel & Apple Silicon)
- Windows: x64 installer
- Linux: x64 AppImage/deb
SqlKit v0.8.0
Added
- Add SQLCipher integration — encrypted SQLite variant with passphrase support (#121)
👥 Contributors
- blankll (1 commit)
- seven (1 commit)
📋 Full Commit History
Changes from v0.7.9 to v0.8.0
- cdc9a79 release: v0.8.0 (blankll, 69 seconds ago)
- ce1e8a6 feat: add SQLCipher integration (encrypted SQLite variant) (#121) (seven, 3 minutes ago)
📦 Downloads
See the assets below to download this version and install for your platform:
- macOS: Universal binary (Intel & Apple Silicon)
- Windows: x64 installer
- Linux: x64 AppImage/deb
