Start Pro Trial

VisuaLeaf v1.0.2416 Release Notes

October 1, 2026

VisuaLeaf v1.0.2416 Release Notes

Release Date: September 30 2026

Covers 1.0.2362 – 1.0.2413.


Headline: A Real Query Profiler, Tab Groups, a Faster Data Grid, Editable Tables on Four More Engines

Four things change how a day in the app feels. The Query Profiler is rebuilt — slow queries now
roll up into one row per query shape, with the collection scans and the missing indexes called out
for you. Tabs can be grouped — by connection, by database, or by hand — named, coloured,
collapsed, dragged as a block and popped into their own window. **Table Management is an editor on
SQLite, DuckDB and ClickHouse**, not a read-only screen, with undo on grid edits and a way to edit
tables the engine gives no key for. And the data grid scrolls up to 6× faster: fast scrolling
on a wide table no longer leaves the screen blank while it catches up.

Also shipping: full-screen tasks and task folders, Microsoft DocumentDB as a connection type,
Snowflake as a connection type, **XML and
Excel as export targets, guided in-app tutorials, schema awareness** in the places that still assumed there was only one, and a
much larger MCP surface for driving the app from an AI assistant.


The Query Profiler, Rebuilt

The old profiler showed you a list of slow operations. The new one answers the question you actually
have: which query is costing me, and what do I do about it?

What you can see

  • One row per query, not per execution. Group by operation, by query shape — the same query with
  • different values collapses into one row — or by the exact command. Count, mean, max, total time,
    docs examined against docs returned, and the plan each one used.

  • Counts that mean what they say. "Count 368" means 368 operations happened, not "368 is as many
  • as we managed to download". The totals are computed across everything that matched your filter.

  • Collection scans flagged. Any query group that scanned instead of using an index is marked, and
  • a scan-efficiency figure shows how much of what was read got returned.

  • An index suggestion per group — with the number of queries it would help, so you see *"47
  • queries need this index"* instead of 47 separate warnings.

  • A scatter plot of time against duration, coloured by collection and operation. Click a point to
  • open the full query behind it.

  • Stable colours. A collection keeps its colour when the time window changes, when a new
  • namespace appears, and between the chart and the table below it.

  • A clear empty state. If profiling is off, the panel says so and offers to turn it on rather
  • than showing you a blank screen.

What you can do

  • Filter by collection, operation and time window — the chart and the table always agree,
  • because they are built from the same filter.

  • Drill into a group and see the real operations behind it, including the raw profiler entry.
  • Set the profiler level, the slow threshold and the sample rate from the panel, without the
  • shell.

  • Watch what is running right now and kill a stuck operation in one click.

Tab Groups

The tab strip was flat, and a workspace with fifteen tabs across four connections read as fifteen
unrelated things.

What you can do

  • Organize automatically. The tab strip's ▾ menu gets an Organize row — None,
  • Connection, Database. Pick one and tabs that belong together sit together behind a group
    header showing the engine logo, the name and a count.

  • Or group by hand. Right-click a tab → Add to New Group, then rename it, give it a colour, and
  • drag other tabs in. Custom groups and automatic grouping coexist; switching between them loses
    neither your colours nor which groups were collapsed.

  • Collapse a group to a single ▸ Name (n) chip. Pick a tab from the dropdown that lives inside
  • a collapsed group and it expands itself to show you.

  • Move a whole group. Drag the header and the entire block lands where the indicator showed, in
  • its original internal order. Drag it out of the window and the whole group pops into a window of
    its own, still grouped.

  • Close or pop out a group from the header's hover buttons, or Ungroup and keep every tab
  • open.

  • Everything survives a reload and a restart — the grouping, the collapse state, the colours and
  • the order you dragged them into.

Tabs with no single connection — Data Sync, Compare, User Management — collect in a trailing
Other group instead of scattering.

Alongside it, the tab right-click menu grew: Clone Tab, Reveal in Sidebar, Split Right /
Split Down, Close Tabs to the left / right / others / all, and **Return All Tabs to Main
Window** from a popout.


A Faster Data Grid

Both the MongoDB table view and the SQL grid were rebuilt for scrolling, and the tree view got the
same treatment.

  • Up to 6× faster scrolling on wide tables. Scrolling sideways across 150 columns used to cost
  • about three frames per step. It now fits in one.

  • Fast scrolling fills in as you go. A quick fling down a big table used to leave most of the
  • grid blank until you stopped. Now the grid keeps drawing the whole way, and at most a thin strip
    at the leading edge is ever empty.

  • Reordering columns no longer lags on tables with many rows on screen. Holding a column still
  • over the header costs nothing.

  • The tree view scrolls smoothly on large result sets. Scrolling through thousands of documents
  • no longer stutters as rows come into view.

  • Resizing rows is smooth. Dragging the row height used to redraw every cell for every pixel
  • the mouse moved. It now keeps up with the pointer, even on a full screen of data.

  • Resizing a column no longer draws the table's right border through the last column.

Table Management Is Now an Editor — SQLite, DuckDB and ClickHouse

Until now these three engines showed you their table structure and refused to change it. All three
can be edited, and each one tells you exactly what it can and cannot do rather than failing at Save.

  • DuckDB — add, drop, rename and retype columns, change nullability, defaults and comments,
  • rename the table.

  • SQLite — the same editing surface, on an engine whose own ALTER TABLE does not have most of
  • these operations. Existing indexes, triggers and views are preserved through the change, and a
    failed edit leaves the original table exactly as it was.

  • ClickHouse — column and table changes, comments and check constraints. A **type change is
  • checked before anything is run**: if any row could not be converted, the edit is refused up front
    with the number of rows that would have failed. This matters more on ClickHouse than anywhere
    else, because a half-applied retype there leaves a table that cannot be read at all.

  • What an engine cannot do is greyed out with a reason — primary keys, foreign keys, partitions
  • — instead of being offered and then rejected.

Editing rows on tables with no key

  • Nominate the columns that identify a row. For a table the engine gives no primary key for — a
  • view, a Snowflake table, a ClickHouse MergeTree — you can tell VisuaLeaf which combination of
    columns identifies a row, and the grid becomes editable.

  • The dialog is honest about what you are promising. Nothing validates uniqueness; if the
  • combination is not unique an edit touches more rows than you meant, and it says so in the first
    sentence. Columns that cannot work as a key — nullable ones, floating-point ones, blobs — cannot
    be picked, each with its own reason.

  • A nominated key is never presented as a real one. Export jobs, ERD diagrams, mock-data
  • generation and schema views keep treating the table as keyless, so nothing silently starts
    building upserts on a promise.

  • On a shared connection, only someone with write access can nominate a key. Everyone who
  • edits through that connection relies on it, so a read-only collaborator cannot set one.

Undo on grid edits

  • Ctrl/⌘-Z after a cell edit, an insert or a delete now reverses it against the database.
  • Editing a primary key column and then undoing works — the revert targets the row where it
  • actually is now, not where it used to be.


Snowflake

  • Snowflake is a selectable connection type, with its tree, metadata, query execution, explain
  • and table editing wired through the same paths as every other engine.

  • A fresh Snowflake connection shows your databases, not the account's internals. Snowflake's own
  • ~20 internal schemas no longer fill the tree ahead of your data.

  • Snowflake has its own logo in the engine picker, the connection lists and tab breadcrumbs,
  • instead of the generic grey database icon.

ClickHouse also moves to a newer driver: table primary keys are reported correctly (so the grid
lets you edit), and opening a connection no longer stalls for around thirty seconds before the
database list appears. ClickHouse tables sorted by an expression are editable. A table whose
key uses something like toDate(order_time) used to open with every column read-only. Now only the
key columns are locked, which ClickHouse itself will not let you change. **Results of your own SQL
on ClickHouse can be edited too.** They used to
open read-only whenever the table lived in a database other than the one the connection opened on.


Microsoft DocumentDB, and Recognising Which DocumentDB You Have

Microsoft DocumentDB (the open-source engine that also runs Cosmos DB vCore) is now its own
connection type, separate from Amazon DocumentDB. The two share a name and a protocol but are
unrelated engines with different limits, and the app now treats each one by its own rules.

What you can see

  • Compatibility warnings that match your engine. Index types, pipeline stages and collection
  • options are marked by what your server supports. On Microsoft DocumentDB, text, hashed and
    geospatial indexes, $text, $setWindowFields, $unionWith and more are no longer flagged,
    because Microsoft's engine supports them where Amazon's does not.

  • A clear answer where a feature cannot work. Microsoft DocumentDB has no profiler and no server
  • metrics, so the Query Profiler and server monitoring explain that up front instead of showing an
    empty screen.

  • Each DocumentDB has its own logo in the connection lists, the engine picker and tab
  • breadcrumbs.

What you can do

  • Pick Microsoft DocumentDB in the New Connection form's engine picker.
  • Let the app notice for you. Microsoft DocumentDB, Amazon DocumentDB, MongoDB and Cosmos DB
  • accept the same connection strings, so it is easy to save one as another. When a connection saved
    as MongoDB turns out to be Microsoft DocumentDB, you are asked once whether to switch. Answer
    either way and you are not asked again. Close the prompt and it asks next time.

  • See it in Test Connection too. If the server or its hostname doesn't match the type you picked
  • in the form, the result says "This looks like …" with a one-click Switch button.

  • Nothing changes without you. Other Mongo-compatible servers are never mislabelled, and a type
  • you chose yourself is never questioned.


Guided Tutorials

  • A Tutorials playlist listing every guided tour the app ships, with how many steps each one
  • takes and which ones you have already finished.

  • Tours coach rather than drive. A step that teaches an action waits for you to do it and then
  • moves on by itself — the control is the lesson, not a Next button — but Next is always there if
    you would rather read than click, and Escape ends a tour from anywhere.

  • The app gets out of your way. A tour opens the sidebar and expands the tree to whatever it is
  • about to point at, so you are never hunting for the thing being explained.

  • The Getting Started window is clearer. It has two paths side by side: Explore a demo (a
  • MongoDB and a SQLite sample, each saying what's inside) or Connect your database, with the
    engine logos showing that it isn't MongoDB-only. Once this machine has used its free trial, the
    trial offer becomes a sign-in option instead.

  • Tutorials for features your plan does not include stay visible, marked, so you can see what
  • exists rather than concluding it does not.


Schemas, Everywhere They Were Missing

Several parts of the app stopped at connection → database and assumed whatever schema the engine
looked in first. On PostgreSQL, Oracle, SQL Server and DB2 that is a silent wrong answer, not an
error.

  • SQL scripts remember their schema. A new editor asks for it, keeps it, and autocompletes
  • against it.

  • Tasks, Export Data and Import Data address a table as connection → database → schema → table.
  • An export that used to quietly read public.customers now reads the table you picked.

  • The Mock Data generator writes into the schema you chose — creating the tables there, pointing
  • foreign keys there, and reading the existing schema from there. It also applies the blueprint's
    database, which it previously ignored entirely.

  • Sequences and Procedures are schema-scoped rather than showing everything on the connection.
  • The SQL query builder qualifies tables properly, so a query built against staging runs
  • against staging.


XML and Excel Export

  • Export to XML and Excel (.xlsx) wherever CSV was already offered — one-off exports and
  • scheduled jobs, from both MongoDB and SQL sources, with the same field mapping, progress,
    pause/cancel and resume you already had.

  • Excel gets real cells, not text. Numbers sort and sum, dates are dates. Very large exports cost
  • no more memory than small ones, and a source with more rows than a sheet can hold continues onto
    further sheets rather than stopping at the limit.

  • XML keeps your structure. Sub-documents and arrays nest as elements instead of being flattened
  • into a string.


AI Assistant Control (MCP)

MCP shipped last release as a first cut. This release roughly doubles what an assistant can do with
it, and fixes the thing that annoyed everyone first.

  • The switch stays where you put it. Turning MCP on — and, more importantly, turning it off —
  • now survives a restart.

  • It can open any panel the app has, not the handful that were hand-listed: the JSON Schema tab,
  • the index manager, table statistics, create-table, the view and procedure managers, and the rest.
    It can also ask which kinds of panel this build offers.

  • It can look at your schema before writing a query — list the tables in a SQL database or the
  • collections in a Mongo one, read one table's columns, types and keys, and pull a handful of real
    rows.

  • It can hand you a pipeline to edit. Ask for an aggregation and it opens the builder with the
  • stages already in it, editable, rather than pasting text at you.

  • It can build up scheduled work properly — not just create a task, but add, change and remove
  • the jobs inside it, set a schedule, and read or adjust the run queue's settings.

  • It can open the collection stats panel, the create-collection form and the mock data builder,
  • pre-filled as far as it can get.

  • It can work with ER diagrams. It can list, open, generate from a database, edit, auto-arrange,
  • save, export (as DDL and more) and delete saved diagrams. Deleting removes the drawing only, never
    a table or a collection.

  • It can compare two collections and read or show the differences. Applying those differences
  • writes to a database, so it has its own permission switch, separate from comparing.

  • It can change the app's appearance, such as theme, interface font and default result view,
  • just like Settings → Appearance.

  • It can fill in a New Connection form for you. It cannot save one. The assistant picks the
  • engine and types the host, port, database and user. The form shows a banner saying an AI agent
    filled it in, and nothing is stored until you check it and press Save. A password it passes goes
    into the form's password field only. It is never stored, logged or read back.

  • Tabs it opens come out right. A SQL table opened by the assistant now has its real name, the
  • connection's name in the breadcrumb, the right engine (a MySQL or ClickHouse tab no longer
    generates PostgreSQL), and the schema it asked for. A SQLite table no longer opens blank.

  • It is told what actually happened. If a panel was already open and got focused instead, or
  • lives in another window, the assistant hears that. Before, it was told the panel had opened.

  • Opening a panel that reads from a database counts as reading data, not as navigation — so
  • "let it arrange my tabs" can never become a way around "don't let it look at my data".

  • MCP is a licensed feature. If your licence does not include it, the settings panel and the
  • status bar say so instead of offering a switch. If you downgrade with MCP switched on, it shows as
    off, and your setting comes back when you upgrade again.

  • Your plan applies to the assistant too. A tool whose feature your licence does not cover is
  • refused for the same reason the screen would refuse it.


Improvements

SQL Editor & Data Grid

  • SQLite and DuckDB editors no longer freeze on "Execution started…". The query had run and the
  • rows had come back; the tab never heard about it. Stop did nothing for the same reason. Fixed —
    and it also fixes the rarer case of the same freeze on a fast connection to any engine.

  • Expand a JSON column recursively. One action opens the whole subtree instead of its first
  • level, with sensible limits so a deeply nested document does not produce a thousand columns.

  • Import and Export buttons in the toolbar of both the SQL grid and the Mongo collection view.
  • They were reachable only by right-clicking before. A read-only result or a view still exports — it
    just cannot be written to.

  • Selecting rows in the SQL tree view reaches the toolbar's batch actions again.
  • Run a SQL script straight from a connection (SOZO-1553). An editor opened on a connection with
  • no database picked had Run, Run All and Run at Cursor greyed out, even though the query would run
    fine against the connection's default database. They are enabled now. Saving DDL still asks for
    a database.

  • Explain has Plan, SQL and JSON tabs. Next to the visual plan you can read the exact statement
  • that was explained and the engine's raw plan output, and copy either with one click.

  • Expanding a field in aggregation results expands only that row. Results with no _id, or
  • with a null or compound one (a $group, say), used to share one identity: expanding a field on
    one row expanded it on every row, and search jumped to the first document instead of the match.

  • Explain works on ClickHouse. Every Explain on every ClickHouse connection used to come back as
  • the engine's own syntax error; the plan now renders like any other engine's.

Tasks

  • Open a task or a folder full screen. Click its name, or use the expand button or the
  • right-click menu, and the Task Manager shows just that task or folder.

  • A breadcrumb walks you back (Task Manager › folder › task). Each part goes up one level, and
  • Esc exits.

  • Step through tasks with Previous / Next (Alt+← / Alt+→) without going back to the list, with a
  • position counter (3 / 12).

  • The Task Manager remembers where you were. Switching to Monitor or History and back keeps the
  • task or folder you had open, your search and your scroll position.

  • Folder header buttons have proper tooltips. Sort buttons show the current direction and say
  • that clicking reverses it.

  • Choosing a target database type is searchable. Type to filter the engine list instead of
  • scrolling a long dropdown.

Connections

  • Test Connection tells you what is missing (SOZO-1552). With a required field left blank, it
  • used to do nothing. It now names the missing fields and highlights them. The test result also
    scrolls into view, so a failure is never hidden above the fold.

  • The Projects count in the sidebar is right (SOZO-1555). Three projects no longer show as
  • (30).

User Management

  • Connections show their real engine logo in the user management list. SQL connections used to
  • get a generic database icon.

Query Profiler

  • The profiler's scrollbars match dark mode. The desktop app used to show a bright white scroll
  • track beside the table.

Workspaces & Tabs

  • Changing the theme updates every window at once. Popout windows used to keep the old theme
  • until they were reloaded.

  • The data viewer is part of your workspace. Its tabs come back after a reload or a restart like
  • everything else.

  • Panels opened in the background announce themselves instead of looking stuck.

Licensing

  • The trial-expired dialog reads correctly in light mode.

Notifications

  • Quick confirmations are solid coloured pills again. Copy, undo/redo and document
  • insert/update/delete confirmations in the bottom-right corner can be read at a glance.

Cluster & Sharding

  • The sharding and cluster overview screens were reworked for readability — the same information,
  • laid out so the state of the cluster reads at a glance.

Query Builder

  • Text in the query builder is sharp again on every zoom level and on high-DPI displays.

Infrastructure

  • System objects are classified from the engine's own metadata rather than from lists of names
  • written per engine, so a new engine's internal schemas are recognised without a code change and a
    user schema is never hidden for having an unlucky name.

  • Test databases for development now seed a multi-schema fixture on PostgreSQL, Oracle and SQL
  • Server, so schema-related behaviour is exercised rather than assumed.

  • Expanded automated coverage across the new engine strategies, tab grouping and drag behaviour,
  • virtual keys (including a guard that keeps a nominated key out of anything that reports what the
    database says), export writers and the SQL type layer, including tests that run against the real
    SQLite, DuckDB and ClickHouse engines.


Notes

  • ClickHouse connections download a newer driver on first connect after upgrading. An offline
  • machine that has only the previous driver cached can still select it on the connection.

  • Snowflake connections pin a compatibility option in their connection string. Leave it in place;
  • without it, connections open and the tree browses fine but every query fails.

  • Tab grouping needs both the app and the backend on this version. Against an older backend the
  • grouping works until you reload and then silently resets.

  • Don't downgrade below this version after saving a Microsoft DocumentDB connection. Older
  • versions do not know the new type and may fail to load your connection list. This version and
    later read an unknown type as MongoDB instead.

  • MCP now needs a licence that includes it. A plan without it cannot connect an assistant, and
  • the MCP settings say so.

  • Treat your MCP token like a password. Anyone holding it can drive that window.

See the full release history