Releases · geek-fun/sqlkit · GitHub
Skip to content

Releases: geek-fun/sqlkit

SqlKit v1.0.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 09:29

✨ 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_file additionally reports the DuckDB storage-format version (header bytes 12..20, mapped to the oldest release that can open the file) and whether a sibling .wal write-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) and create_database_directory. scripts/verify-duckdb-jdbc-urls.sh records 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 + versionLockHorizon are consumed via a new Rust entitlement module (persisted cache, offline tolerance, failure degradation, 5-minute refresh throttle, app.releaseDate <= versionLockHorizon unlock check). Rust command gates return ENTITLEMENT_REQUIRED for 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 the disconnect RPC instead of killing the process. Verified with src-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 with Can'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 in src-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.ts now scans every literal t('…') in src/ and fails when a key does not resolve in enUS or zhCN, so this class of regression is caught by npm test instead of by a screenshot. The same scan surfaced two latent gaps, both fixed: common.cancel (used by the device-replace dialog, now the existing common.buttons.cancel) and the missing zhCN value for components.serverForm.placeholders.encryptionKey.

  • DuckDB database files whose path contains ; were mis-parsed — the DuckDB JDBC driver splits its URL on ;, so jdbc:duckdb:/path/semi;colon.duckdb failed with Invalid URL entry (verified against duckdb_jdbc 1.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 Prefer default; the JDBC bridge now receives no ssl mode for such types instead of injecting ssl=true, which DuckDB's driver rejects as an unknown option; the bridge's property mapper also stops blindly setting ssl=true for drivers without explicit SSL support (H2 and Firebird previously fell into that fallback).

  • Deep-link sign-in on cold start — a sqlkit://auth link 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 via consume_pending_auth once 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...
Read more

SqlKit v0.8.8

Choose a tag to compare

@github-actions github-actions released this 09 Sep 07:32

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

Choose a tag to compare

@github-actions github-actions released this 17 Aug 03:08

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

Choose a tag to compare

@github-actions github-actions released this 11 Aug 03:07

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

Choose a tag to compare

@github-actions github-actions released this 08 Aug 11:08

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

Choose a tag to compare

@github-actions github-actions released this 07 Aug 12:04

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

Choose a tag to compare

@github-actions github-actions released this 03 Aug 04:35

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

Choose a tag to compare

@github-actions github-actions released this 30 Jul 04:15

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

Choose a tag to compare

@github-actions github-actions released this 28 Jul 06:27

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

Choose a tag to compare

@github-actions github-actions released this 27 Jul 12:28

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