cd /news/developer-tools/v0-15-0-bring-your-connections-with-… · home topics developer-tools article
[ARTICLE · art-58675] src=tabularis.dev ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

v0.15.0: Bring Your Connections With You — Imports, Nested Groups, and Encrypted Exports

TabularisDB released v0.15.0, adding connection imports from five other SQL clients, nested folder groups, bulk actions, and encrypted exports. The update also introduces ENUM dropdowns for MySQL and PostgreSQL, fixes an EXPLAIN ANALYZE security loophole, and eliminates phantom console windows on Windows.

read10 min views1 publishedJul 14, 2026
v0.15.0: Bring Your Connections With You — Imports, Nested Groups, and Encrypted Exports
Image: Tabularis (auto-discovered)

v0.15.0 follows v0.14.0 and has one clear theme: the Connections page stops being a flat list you retype things into and becomes something you can actually manage. You can now import your saved connections from five other SQL clients, file them into folders inside folders, select twenty of them and act on all twenty, and hand a teammate an export that is actually encrypted instead of a JSON full of plaintext passwords. Around that core: ENUM columns become dropdowns on both MySQL and PostgreSQL, the MCP safety layer closes an EXPLAIN ANALYZE

loophole, and Windows users stop seeing phantom console windows. Fourteen external contributors land in this tag.

Import Connections From the Client You're Leaving #

The biggest friction in trying a new database client is retyping every connection you've accumulated over the years. PR #393 removes it: a new Import dropup next to Add Connection reads saved connections from DBeaver, Beekeeper Studio, TablePlus, DataGrip and Sequel Ace — plus Tabularis's own JSON exports.

Each source is parsed into a neutral envelope, and credentials are decrypted or read from the source client's keychain when you ask for them. Nothing is merged blindly: a preview lists every connection found, flags duplicates against what you already have (keep, replace, or skip — the duplicate's existing name shown so you know what you're replacing), and lets each new connection pick a target group — or create one on the fly, with defaults seeded from the source app's own folder structure.

The feature ships marked beta, with a visible badge and a direct link to file an issue — parsing five other apps' formats across three platforms is exactly the kind of surface where real-world files will find edge cases. One already got fixed before release: Beekeeper payloads containing non-ASCII characters used to abort the whole import on a byte-boundary panic; they now parse or skip gracefully.

Video unavailable

Folders Inside Folders #

Connection groups were single-level since the day they shipped. PR #405, from @p4pupro, makes them a real tree: groups can contain groups, to arbitrary depth, in both grid and list view.

The workflow got the attention the data model change deserved:

Create paths, not just names. Typingclients/acme/staging

in the New Group input creates the whole chain, reusing existing segments case-insensitively — the same/

syntax works in the inline subfolder input on each group header.Drag to re-parent. Dropping a group onto another group's header past one indent step moves it inside; dropping near the left edge keeps the plain reorder. A cycle guard refuses to move a folder into its own descendant, with a clear error rather than silent corruption.Cascade delete. Deleting a group now removes its entire subtree — nested groups and their connections included — instead of quietly orphaning children to the root.Counts that add up. A folder's badge sums directanddescendant connections, so a collapsed tree still tells you what's inside.

Existing connections.json

files keep working unchanged — parent_id

is optional and defaults to root — and the export/import path preserves the hierarchy, demoting any dangling parent reference to root instead of rendering ghost trees.

Video unavailable

Select Many, Act Once #

With imports and folders in place, you need a way to move things around in bulk. PR #468 adds multi-select to the connections list: a checkbox appears on hover, selected cards get a ring, and a pinned action bar shows the count with three actions — Move to group (a submenu built from the nested tree, plus Ungrouped), Delete selected behind a confirmation with the count, and clear.

@pokertour immediately wired the selection into the export flow in PR #469: the action bar gains an Export button that writes only the selected connections. The filtering happens before secrets are resolved, so credentials for unselected connections never leave the keychain, and the exported group list is pruned to just the ancestor chains the retained connections actually need.

Exports That Don't Leak Passwords #

Until now, exporting connections wrote database, SSH and Kubernetes credentials in plaintext behind a single warning dialog. PR #447, also from @pokertour, replaces that with a proper export modal offering three modes:

Encrypted with a password(the default) — the payload is encrypted with** AES-256-GCMunder an Argon2id**-derived key.** Plain text without passwords**— secrets stripped entirely; fine for sharing a topology.** Plain text with all passwords**— the old behavior, with the warning now attached to the option that deserves it.

Import detects the encrypted envelope and prompts for the password before merging. The decryption path is hardened too: the Argon2 parameters read from the envelope are bounded, so a malicious import file can't request unbounded memory or CPU. Plain exports from older versions import unchanged.

ENUM Columns Become Dropdowns — on Both MySQL and PostgreSQL #

Editing an ENUM cell used to mean remembering the allowed values and typing one exactly. Two PRs fix that end to end.

On MySQL, [@fhriz](https://github.com/fhriz) introspected the full `column_type`

from `information_schema`

in PR [#455](https://github.com/TabularisDB/tabularis/pull/455) (closes [#452](https://github.com/TabularisDB/tabularis/issues/452)), so a column shows as `enum('pending','approved','rejected')`

instead of a stripped enum

— and both the inline grid editor and the row sidebar render a dropdown of the allowed values, with a NULL option on nullable columns. SET types get the same treatment, ENUM joins the column-type picker for new tables, and the sidebar now matches column metadata by name rather than position, fixing type mismatches when a query's SELECT order differs from the table's.

PostgreSQL followed in PR #471 (fixes #465), where the problem ran deeper: editing an enum cell failed outright with SQLSTATE 42804 — column is of type X but expression is of type text — because the bound value was never cast to the enum type. The binding layer now wraps enum parameters in a CAST($N AS "schema"."type")

with the qualified type name resolved from pg_catalog

, mirroring the existing temporal/UUID coercions. And since column introspection now aggregates labels from pg_enum

into the same enum('a','b',...) shape MySQL uses, the dropdown editor kicks in for PostgreSQL automatically — grid and sidebar both.

MCP Safety: EXPLAIN ANALYZE Is Not a Read #

The MCP safety layer classifies queries so read-only mode and the write-approval prompt can gate them. Its classifier mapped anything starting with EXPLAIN

to the read-only path — but EXPLAIN ANALYZE DELETE ...

actually executes the DELETE. An AI agent could therefore slip a write past both gates by wrapping it. Thanks to @daniel-mertz for reporting it; PR #456 makes classification option-aware: a plain EXPLAIN

stays a read (it only plans), while the presence of the ANALYZE

option classifies the wrapped statement as if it had been submitted directly. Matching is word-boundary aware — a table named analyze_runs

doesn't trip it — and unbalanced option lists fail closed.

Two more MCP improvements landed alongside it. @erneztox fixed list_connections

to serialize all of a connection's databases instead of collapsing them, and added a dedicated ** list_databases** tool in PR

#426, complete with AI Activity filtering and documentation across all translated READMEs. And the repo now has a

security policydocumenting how to report vulnerabilities privately — with MCP safety-layer bypasses under an untrusted-input threat model explicitly called in scope.

Windows Stops Flashing Terminals #

Two independent contributors fixed the same class of Windows papercut in the same release. Launching a console executable from a GUI app on Windows allocates a visible console window — so an SSH tunnel popped an ssh.exe

terminal, and starting a plugin popped another.

@kennelken fixed the SSH side in PR #418 (fixes #413), spawning ssh.exe

with the CREATE_NO_WINDOW

flag — and went further: SSH child processes used to outlive the app, so the fix also hooks Tauri's exit event to tear down every active tunnel when Tabularis closes. No more orphaned ssh.exe

in Task Manager. @erwin-lovecraft applied the same CREATE_NO_WINDOW treatment to plugin processes in PR #451, keeping the stdin/stdout pipe communication intact.

Grid and Editor Refinements #

Column headers actually stay pinned.@thomaswaslefixed the result grid's sticky header in PR#433— the old implementation fought the virtualizer with a counter-transform that desynced after ~40 rows of scrolling. The grid now uses spacer rows soposition: sticky

works unconditionally, and aSticky column headerstoggle in Settings → Appearance keeps the old behavior available.Hover a header, see the type.@benedettoraviottaadded a DataGrip-style tooltip in PR#436(closes#435) showingname: type

— e.g.id: uuid

— on column header hover, read from metadata already in hand, so it costs no backend round-trip.Set Empty knows its limits. The quick action used to write a single space toanynon-BLOB column, which strongly-typed columns rejected (column is of type uuid but expression is of type text

). PR#442gates it to textual columns, writes a real empty string, and swaps its icon for an eraser.Summon IntelliSense on demand.@GabrielMalavaadded a configurable shortcut in PR#371to force the SQL editor's suggestion widget open (⌘I on macOS, Ctrl+I on Windows, Ctrl+Space on Linux) — remappable in Settings → Keyboard Shortcuts, working in both the editor and notebook cells — plus a new rebindablerefresh table keybinding.Disconnected means disconnected. Disconnecting your last open connection didn't persist the change, so the next launch auto-reconnected and restored its tabs anyway. PR#467persists the session at disconnect time; the saved tab file stays on disk, somanuallyreconnecting later still restores your queries.

Tabularis Speaks Tagalog #

@chriscupas contributed a complete Tagalog locale in PR #457 — 1,574 translated strings, a translated README, and browser-locale detection that maps Filipino (fil

) systems to it automatically. That makes nine UI languages. @pokertour also brought French back to parity in PR #445, adding the 66 keys that had accumulated in English only — triggers, result colors, timezone settings and more.

Finding Tabularis useful? Star it on GitHub — it takes a second and helps more developers discover the project. Star on GitHub## Smaller Things

Typo-tolerant connection search(@Davydhh, PR#444) — the connection search joins the table filters and Quick Navigator on Fuse.js fuzzy matching, sopostgre prod

finds what you meant, ranked by closeness.SSH connections get a Settings tab(PR#441) — saved SSH tunnels are now manageable from Settings, not just from inside the connection-creation modal, and deleting one warns how many database connections still reference it.No more autocorrect in filters(@Necriso, PRs#432and#437) — spellcheck, autocorrect and autocapitalize are off in the table toolbar and filter inputs, where they never belonged.Visual fixes(@math-krish, PR#461) — auto-pagination colors (fixes#448), dropdown menu font (fixes#446), and the save menu that appears on edit.Modal consistency pass(PR#440) — the lastwindow.confirm()

calls replaced with the app's ConfirmModal, Escape now closes the trigger/routine/explain modals like every other one, primary fields autofocus, and a batch of hardcoded strings moved to i18n across all locales.

Thanks #

Fourteen external contributors land in v0.15.0 — the widest tag yet.

** @pokertour** owns the export story: password-encrypted connection exports (

[#447](https://github.com/TabularisDB/tabularis/pull/447)), export-only-the-selection (

[#469](https://github.com/TabularisDB/tabularis/pull/469)), and the French translation catch-up (

[#445](https://github.com/TabularisDB/tabularis/pull/445)).

built nested connection groups (

@p4pupro#405). translated the entire app into Tagalog (

@chriscupas#457). ** @fhriz** brought ENUM dropdown editing to MySQL (

#455). silenced the Windows SSH console window and cleaned up tunnels on exit (

@kennelken#418); did the same for plugin processes (

@erwin-lovecraft#451). fixed the sticky result headers (

[@thomaswasle](https://github.com/thomaswasle)[#433](https://github.com/TabularisDB/tabularis/pull/433)),

**added the column-type tooltip (**

[@benedettoraviotta](https://github.com/benedettoraviotta)[#436](https://github.com/TabularisDB/tabularis/pull/436)), and

added the IntelliSense trigger shortcut (

@GabrielMalava#371). ** @erneztox** fixed multi-database serialization in MCP and added

list_databases

(#426). made the connection search fuzzy (

@Davydhh#444), killed autocorrect in the filters (

[@Necriso](https://github.com/Necriso)[#432](https://github.com/TabularisDB/tabularis/pull/432),

[#437](https://github.com/TabularisDB/tabularis/pull/437)), and

cleaned up pagination colors, the dropdown font and the save menu (

@math-krish#461). And thanks to for responsibly reporting the

@daniel-mertzEXPLAIN ANALYZE safety bypass.If you've been meaning to switch from DBeaver but dreaded retyping thirty connections, if your team shares connection files, or if your database leans on ENUMs — this is the upgrade.

v0.15.0 is available now. Update via the in-app updater, or download from the releases page.

── more in #developer-tools 4 stories · sorted by recency
── more on @tabularisdb 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/v0-15-0-bring-your-c…] indexed:0 read:10min 2026-07-14 ·