<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Monghoul release notes</title><description>Every Monghoul release, newest first.</description><link>https://monghoul.com/</link><language>en-us</language><item><title>Monghoul 1.11.0</title><link>https://monghoul.com/releases/v1.11.0/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.11.0/</guid><description>Monghoul 1.11.0 release notes. This release is about the query editor knowing MongoDB. Autocomplete was improved to cover every 8.x operator and to answer…</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This release is about the query editor knowing MongoDB. Autocomplete was improved to cover every 8.x operator and to answer with what the cursor position actually accepts, down to an operator&amp;#39;s own options and their permitted values. Alongside it, AI Access grows a mode that returns results without touching your workspace, write protection closes the paths that got around it, and the interface stops breaking in a narrow or short window. There are fixes here for silent failures: a confirmed write that did nothing, an import that duplicated rows, a timeout reported as something you had cancelled.&lt;/p&gt;
&lt;h2&gt;Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autocomplete knows MongoDB 8.x&lt;/strong&gt; — all 49 pipeline stages, every expression, accumulator and window operator, and each operator&amp;#39;s own options with their permitted values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suggestions match the position&lt;/strong&gt; — a &lt;code&gt;$match&lt;/code&gt; predicate, a &lt;code&gt;$project&lt;/code&gt; value and an options bag each get the family MongoDB accepts there, and nothing else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hybrid search is in the editor&lt;/strong&gt; — &lt;code&gt;$rankFusion&lt;/code&gt;, &lt;code&gt;$scoreFusion&lt;/code&gt; and &lt;code&gt;$score&lt;/code&gt;, with working templates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An assistant can query without opening tabs&lt;/strong&gt; — and can see which connections are write-protected before it asks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write protection covers more paths&lt;/strong&gt; — collection validators, sibling databases, and the write stages that used to slip past it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The interface holds together in a small window&lt;/strong&gt; — panels, drawers, modals and dialogs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An import no longer duplicates rows&lt;/strong&gt; — one document without an &lt;code&gt;_id&lt;/code&gt; used to turn its whole batch into plain inserts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Every MongoDB 8.x operator is suggested&lt;/strong&gt; — autocomplete now covers all 49 pipeline stages, every expression, accumulator and window operator, the geospatial shapes and the array update modifiers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hybrid search is in the editor&lt;/strong&gt; — &lt;code&gt;$rankFusion&lt;/code&gt;, &lt;code&gt;$scoreFusion&lt;/code&gt; and &lt;code&gt;$score&lt;/code&gt; are offered with working templates, in the code editor and in the visual pipeline builder.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The shell&amp;#39;s database helpers work&lt;/strong&gt; — &lt;code&gt;getCollection&lt;/code&gt;, &lt;code&gt;getSiblingDB&lt;/code&gt;, &lt;code&gt;getCollectionNames&lt;/code&gt;, &lt;code&gt;getCollectionInfos&lt;/code&gt;, &lt;code&gt;runCommand&lt;/code&gt;, &lt;code&gt;adminCommand&lt;/code&gt;, &lt;code&gt;version&lt;/code&gt; and &lt;code&gt;getName&lt;/code&gt; are on &lt;code&gt;db&lt;/code&gt;, and are awaited rather than read directly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write protection covers validators and siblings&lt;/strong&gt; — changing a collection&amp;#39;s validator on a protected connection asks first, because a validator is a guard on the data; and &lt;code&gt;db.getSiblingDB()&lt;/code&gt; is scoped by that database&amp;#39;s own settings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An assistant can see what is write-protected&lt;/strong&gt; — listing connections now reports which ones are protected and what the protection covers, so it can say a query will need your approval instead of springing one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An assistant can query without opening tabs&lt;/strong&gt; — a new AI Access setting returns results straight to it and leaves the workspace alone. Queries needing approval, and destructive ones on a protected connection, still open a tab.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Close all the tabs an AI client opened&lt;/strong&gt; — a tab&amp;#39;s context menu counts every tab an MCP client left behind, across the whole window, and closes them in one action.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Improved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;First run asks for one thing&lt;/strong&gt; — it opened with four switches and a dropdown; it now asks only about anonymous analytics, with what is and is not collected stated in full rather than on hover.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autocomplete goes a level deeper&lt;/strong&gt; — an operator&amp;#39;s own options are offered inside it, required first, and so are their fixed values, a &lt;code&gt;$jsonSchema&lt;/code&gt;&amp;#39;s keywords, Atlas Search clause keys and &lt;code&gt;$meta&lt;/code&gt;&amp;#39;s metadata.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controls in a row are set alike&lt;/strong&gt; — one filled control per row and it is the one that acts, a &lt;code&gt;md&lt;/code&gt; field no longer renders two pixels under the button beside it, and a control&amp;#39;s outline stops going near-white in dark themes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Pro control offers the upgrade&lt;/strong&gt; — the Chart view and Show Diff responded only from the small PRO badge inside them, and picking a Pro authentication method did nothing at all: no message, no upgrade path.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Empty states say what to do next&lt;/strong&gt; — a run that matched nothing says so and whether an index was used, the empty workspace offers the new-tab control, and the command palette states emptiness once rather than three ways.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document Diff steps through the differences&lt;/strong&gt; — it counts them and gives you arrows, instead of leaving you to scroll a mostly-identical document; and two documents with the same &lt;code&gt;_id&lt;/code&gt; are told apart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Panels, drawers and modals use their width&lt;/strong&gt; — the pipeline builder, query plan and monitor sat in narrow centred columns, two docked drawers shredded the sidebar&amp;#39;s labels, and a modal&amp;#39;s tab bar and pickers ran past their edges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A new query tab leaves room for its results&lt;/strong&gt; — the editor took 60% of the tab before anything was typed; it takes a third now, and the pipeline builder keeps more. A tab you have resized is untouched.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The tier badge warns before a limit blocks you&lt;/strong&gt; — nothing said anything between &amp;quot;fine&amp;quot; and &amp;quot;that failed&amp;quot;, so the first sign of a full quota was a save being refused.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Accessibility&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Collapsible sections say whether they are open&lt;/strong&gt; — three hand-built toggles across the export, connection and schema dialogs announced nothing, and the schema one signalled by colour alone. All three are keyboard-operable now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modal tabs are reachable by keyboard as tabs&lt;/strong&gt; — arrow keys move along General / Security / Advanced instead of Tab stepping through each one, and a screen reader says which is selected.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fixed&lt;/h2&gt;
&lt;h3&gt;AI Access&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A damaged access scope denies rather than grants&lt;/strong&gt; — an AI Access scope the app could not have written was read as unrestricted, handing an assistant every connection; it now reaches nothing until you pick one again.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The approval shortcut reaches a waiting request&lt;/strong&gt; — pressing it before the queue had loaded did nothing at all, which is exactly the case for an approval restored when the window opened.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deleting a connection through an assistant closes it&lt;/strong&gt; — its open socket, its SSH tunnel and its remembered password all survived the delete for the rest of the session.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Write protection&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Write stages can no longer slip past protection&lt;/strong&gt; — &lt;code&gt;$out&lt;/code&gt; and &lt;code&gt;$merge&lt;/code&gt; were judged by the collection being READ, so writing into a protected collection from an unprotected one went through; so did a database-level &lt;code&gt;db.aggregate()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;db.admin()&lt;/code&gt; works again on unprotected databases&lt;/strong&gt; — with protection enabled for some other database it returned nothing instead of the admin handle.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Connections&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A confirmed write survives its panel closing&lt;/strong&gt; — a confirmed drop, delete or clear did nothing at all when the sidebar was hidden with the dialog still open, and a licence the server had accepted reported &amp;quot;Something went wrong: Aborted&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A failed connection says why&lt;/strong&gt; — a wrong CA certificate path came back as an opaque TLS failure naming neither the file nor the setting, and a pasted URI lost its authentication database to &lt;code&gt;authSource=admin&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An empty database filter hides nothing&lt;/strong&gt; — a connection set to &amp;quot;show only these&amp;quot; with nothing picked yet listed every database in the sidebar and none in the query tab.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Users and roles&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A user&amp;#39;s most powerful role is always shown&lt;/strong&gt; — the table prints four role badges and rolls the rest into &lt;code&gt;+N&lt;/code&gt;, in server order, so a &lt;code&gt;root&lt;/code&gt; grant in fifth place was invisible; the strongest come first now.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Query editor&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Suggestions match the position&lt;/strong&gt; — a &lt;code&gt;$match&lt;/code&gt; predicate, a &lt;code&gt;$project&lt;/code&gt; value, a nested &lt;code&gt;$or&lt;/code&gt;, an options bag and a replacement document each offered a family MongoDB rejects there; a pipeline position listed expressions too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stages appear only where they are legal&lt;/strong&gt; — &lt;code&gt;$geoNear&lt;/code&gt;, &lt;code&gt;$search&lt;/code&gt; and thirteen more are offered only at a pipeline&amp;#39;s first position, &lt;code&gt;$documents&lt;/code&gt; only on &lt;code&gt;db.aggregate()&lt;/code&gt;, and &lt;code&gt;$out&lt;/code&gt; and &lt;code&gt;$merge&lt;/code&gt; never in a sub-pipeline that rejects them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Field names come from the right collection&lt;/strong&gt; — the &lt;code&gt;db.orders&lt;/code&gt; shorthand resolved to no collection, so fields came from every collection at once; a dotted prefix re-offered the top level; and five stages named fields the documents do not have.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autocomplete stops going silent&lt;/strong&gt; — an apostrophe inside a regex, a template literal, a half-typed &lt;code&gt;$&lt;/code&gt; and a query inside a &lt;code&gt;${ … }&lt;/code&gt; hole each suppressed what followed; and typing &lt;code&gt;$&lt;/code&gt; in a comment offered the whole operator list.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Only calls the driver has complete&lt;/strong&gt; — &lt;code&gt;collection.stats()&lt;/code&gt; and &lt;code&gt;cursor.noCursorTimeout()&lt;/code&gt; were suggested and threw when used, eight more calls opened all 255 operators, and chained cursor methods vanished at the first keystroke.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Valid code stops being underlined as broken&lt;/strong&gt; — &lt;code&gt;db.command()&lt;/code&gt;, &lt;code&gt;db.aggregate()&lt;/code&gt; and ten more &lt;code&gt;db&lt;/code&gt; methods, and every stage in the pipeline builder when the editor&amp;#39;s language support loaded a moment late.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explain answers about the query on screen&lt;/strong&gt; — it read the tab&amp;#39;s last saved code, so a query typed and explained without running first was explained stale or empty; and every index it suggested was called compound.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Import&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Upsert stays an upsert for the whole file&lt;/strong&gt; — a single document without an &lt;code&gt;_id&lt;/code&gt; turned its entire 1,000-document batch into plain inserts, so importing the same file twice could duplicate rows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;quot;Insert Only (Skip duplicates)&amp;quot; skips them&lt;/strong&gt; — documents the server refused as already present were counted and reported as failures, so re-importing a partly imported file read as a broken import.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Cluster monitor&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The cluster monitor leads with what matters&lt;/strong&gt; — nine equal cards became four lead metrics with threshold bars, a compact band behind them, and lifetime totals folded away; every rate shows its trend.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concurrency tickets read right on MongoDB 7.0+&lt;/strong&gt; — both ticket bars showed &lt;code&gt;0 / 128 free&lt;/code&gt; in full red on any healthy server, because the counters moved in 7.0 and a missing value was read as none free.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Query results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Truncated document values can be read in full&lt;/strong&gt; — the tree view clipped keys and values with no tooltip behind them, so a value wider than its column had no way to be read at all.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A &lt;code&gt;.skip()&lt;/code&gt; no longer disables the result limit&lt;/strong&gt; — a skip with no limit counted as the user&amp;#39;s own cap, so the result limit was skipped and every remaining document was materialized.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your work survives a re-run and a failure&lt;/strong&gt; — pressing Run while configuring a chart closed the wizard and discarded the settings, and an error reset the result view, losing column widths, expanded rows and a chart in progress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decimal128 and Long fields plot their values&lt;/strong&gt; — a money or 64-bit integer column reached the chart wrapped, so every point read as zero and the chart drew a flat line under a correct axis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The readouts report what happened&lt;/strong&gt; — a query answering zero said &amp;quot;Run a query to see results&amp;quot;, a timeout reported &amp;quot;Operation cancelled&amp;quot;, the pager read &amp;quot;of 60&amp;quot; under a header reading &amp;quot;60+&amp;quot;, and a tiny percentage rounded to &amp;quot;0%&amp;quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Interface&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A dialog taller than the window can be scrolled&lt;/strong&gt; — a short window cut the bottom off the licence dialog and the Pro lock panel with no way to reach it, and the part below the cut was the Upgrade button.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A new tab opens in the focused panel&lt;/strong&gt; — in a split layout every tab from the sidebar, the command palette, a favorite or the log window landed in the original panel instead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deleting a sidebar folder asks first&lt;/strong&gt; — it was one hover-button click with no confirmation and no undo, and it flattens a level of organisation that has to be rebuilt by hand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A cloned tab is its own query&lt;/strong&gt; — the copy stayed linked to the original&amp;#39;s saved favorite, so renaming the copy renamed that favorite.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Themes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rose Pine tells strings and dates apart&lt;/strong&gt; — both drew in the same colour in the result viewer, so a date and a quoted string read as one type.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.10.0</title><link>https://monghoul.com/releases/v1.10.0/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.10.0/</guid><description>Monghoul 1.10.0 release notes. This release is mostly about AI access: letting an assistant work with your databases without letting it work unsupervised…</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This release is mostly about AI access — letting an assistant work with your databases without letting it work unsupervised. You choose what it can reach before you switch it on, anything permanent stops and asks you first, and everything it has done is kept in a trail you can read after a restart. A query an assistant writes opens in an ordinary tab, so you can read and edit it before it runs. The rest of the release went to Ctrl+K, which now previews what you are about to open, to dragging tabs into splits, and to keyboard and screen-reader support across the app. Servers older than MongoDB 4.4 no longer connect, so check yours before you update.&lt;/p&gt;
&lt;h2&gt;Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;You choose what an assistant can reach&lt;/strong&gt; — In AI Access you pick the connections, the tool groups and the individual tools it may use. A new setup starts with nothing selected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permanent actions stop and ask&lt;/strong&gt; — Deleting a connection, copying a database or running query code waits for your approval, names what it will touch, and declines itself if you ignore it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An assistant&amp;#39;s query opens in a tab&lt;/strong&gt; — Read it, edit it, and approve exactly what is on screen. Declining leaves you an ordinary tab to keep working in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A trail of everything an assistant did&lt;/strong&gt; — The AI Activity window keeps the newest 1,000 calls with their arguments, outcomes and your decisions, and survives a restart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl+K shows what you are about to open&lt;/strong&gt; — A preview pane beside the list, plus &lt;code&gt;&amp;gt;&lt;/code&gt; for commands, &lt;code&gt;@&lt;/code&gt; to jump to a collection and &lt;code&gt;#&lt;/code&gt; to a database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drag a tab to an edge to split&lt;/strong&gt; — The half the new panel will take is previewed and named before you let go.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bold text is bold again&lt;/strong&gt; — Every font weight in the app had been rendering as normal, so headings, labels and buttons all came out without emphasis.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Before you update&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Two actions start asking for approval&lt;/strong&gt; — Saving or testing a connection now counts as reaching your databases. Neither destroys anything, but both dial, and store credentials for, an address the assistant supplied.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MongoDB 4.2 and older servers are no longer supported&lt;/strong&gt; — The MongoDB driver Monghoul ships was updated, and it refuses a server below 4.4, so connecting to one now fails with an error instead of opening.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Permanent actions ask first&lt;/strong&gt; — Monghoul sorts every tool into read, reversible or permanent, and the permanent ones wait for your approval. Reads always run, and reversible changes are allowed by default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Access sets what an assistant can reach&lt;/strong&gt; — Its settings open as a three-step flow: pick the connections and tools an assistant may reach, copy its configuration, start access. A new setup starts with nothing selected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The AI panel&lt;/strong&gt; — A panel docked beside your workspace holding what is waiting for your decision, a live feed of what an assistant is doing, and which assistants are connected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An assistant&amp;#39;s query opens in a tab&lt;/strong&gt; — The tab names what is waiting, and approving runs exactly what is on screen at that moment. Declining leaves you an ordinary tab.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An AI Activity window&lt;/strong&gt; — The newest 1,000 calls an assistant made, filtered by tool, outcome, connection or time and kept across restarts, with links to the operation log and the tab a call opened.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A write-protected connection needs an override&lt;/strong&gt; — An assistant&amp;#39;s request against one always asks, whatever your permissions say, and Approve stays unavailable until you separately tick the override beside it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Allow a tool for the rest of a session&lt;/strong&gt; — Approving the fourth clone in a row means &amp;quot;stop interrupting me&amp;quot;, not &amp;quot;you may do this forever&amp;quot;. The grant ends with the assistant and never reaches disk.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You choose what the trail keeps&lt;/strong&gt; — By default it records the connection, the collection and the query text, credentials redacted. A metadata-only level drops the query text for anyone whose queries carry values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drag a tab to an edge to split&lt;/strong&gt; — Rest on the left, right, top or bottom edge and the panel divides, with the side you aimed at previewed and named before you let go.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl+K previews what you will open&lt;/strong&gt; — The pane beside the list shows a tab&amp;#39;s code, a collection&amp;#39;s size and indexes, or a database&amp;#39;s collections, and Ctrl/Cmd+Y hides it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl+K runs commands and jumps by prefix&lt;/strong&gt; — Type &lt;code&gt;&amp;gt;&lt;/code&gt; for keyboard commands, &lt;code&gt;@&lt;/code&gt; for a collection or &lt;code&gt;#&lt;/code&gt; for a database, and the footer lists what the selected row can do.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI-authored work is marked&lt;/strong&gt; — A tab an assistant opened carries a badge in the tab strip and in a detached window&amp;#39;s titlebar, and a notification it sends is marked as its own.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Improved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Permissions replace the Review Mode switch&lt;/strong&gt; — One row per kind of change instead of a single toggle: changing the workspace, deleting things in Monghoul, and reaching your databases are each Ask first or Allow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Switch off one tool, or a whole group&lt;/strong&gt; — A tool you switch off is refused if an assistant asks for it, including one already connected, and any single tool can be set to always ask or never ask.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Activity names what a tool touched&lt;/strong&gt; — Rows for closing a tab, deleting a theme or removing a sidebar entry said only &amp;quot;a tab&amp;quot; or &amp;quot;an item&amp;quot;; they now name it, as the approval card already did.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It is called AI now, not MCP&lt;/strong&gt; — The status-bar control says AI, its panel is AI Activity, its settings are AI Access. MCP is still named in the connection snippets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A tab&amp;#39;s connection colour stays readable&lt;/strong&gt; — Running a query used to pulse the very dot that names the connection, and selecting a tab tinted the whole thing. Running now sweeps the top edge instead, and selection is one colour everywhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dragging a tab shows where it will land&lt;/strong&gt; — A caret marks the slot it will take, the receiving panel dims, and the tab you are holding leaves the strip rather than leaving a hole behind it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notifications appear at the bottom centre&lt;/strong&gt; — Not the bottom-right corner, which is the far side of the window and the same corner a wide result table puts its scrollbar into.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dialogs and forms are consistent&lt;/strong&gt; — One set of widths and text sizes across every dialog, a text field, a filter box, a multi-line box and the dropdown beside them built the same way, and a disabled field you can still read.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generating data reads as a list of fields&lt;/strong&gt; — Each field&amp;#39;s settings sit in their own well, delete is quiet until you point at it, and past eight fields the tree opens collapsed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Destructive buttons are red again&lt;/strong&gt; — The small Delete on the Logs window&amp;#39;s selection bar, and the one on a result view&amp;#39;s selected rows, had been rendering in the ordinary text colour.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Accessibility&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bold text is bold again&lt;/strong&gt; — Every font weight in the app had been rendering as normal, so headings, labels, buttons and emphasis all came out flat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dialogs open in the first field&lt;/strong&gt; — The cursor used to land on the close button, so the first thing typed into Create Collection went nowhere and Enter closed the dialog.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The tab strip works from the keyboard&lt;/strong&gt; — Tab reaches it once, arrow keys move, Delete closes and F2 renames. A screen reader hears one set of tabs with the selected one named.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus rings and control names came back&lt;/strong&gt; — Checkboxes showed no focus at all when tabbed to, and the AI Access controls and filter boxes across the app announced themselves without saying what they governed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Waiting requests are reachable from the keyboard&lt;/strong&gt; — Mod+Shift+A opens the AI panel on the first request waiting for you, and a new one is announced without taking focus.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fixed&lt;/h2&gt;
&lt;h3&gt;Workspace and navigation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enter opens the best match&lt;/strong&gt; — Any open tab that matched at all, even loosely, took the selection away from an exact collection match, so Enter opened the wrong thing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;quot;Recent&amp;quot; is actually recent&lt;/strong&gt; — It filled its slots with open tabs first, in the order you created them, so a recently closed tab or a favourite could not appear at all. It is one list ordered by last use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A dragged tab lands where you dropped it&lt;/strong&gt; — Moving a tab to another panel sent it to the end of the strip every time, wherever you aimed. Dropping between two tabs now puts it between them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A dragged collection only offers drops that work&lt;/strong&gt; — Folders lit up and insertion lines appeared for a drag that only ever meant &amp;quot;copy this somewhere&amp;quot;, and every one of them swallowed the drop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Closing a split panel keeps its tabs&lt;/strong&gt; — Closing a panel that still held tabs could fail outright and leave the panel open, in any layout built by splitting and closing panels rather than a fresh one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clicking a collection stays where you clicked&lt;/strong&gt; — The first click into the tree scrolled it to whatever your active tab was on, so a different row slid under the pointer and opened instead.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Query and results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;db&lt;/code&gt; is defined the moment a tab opens&lt;/strong&gt; — The session&amp;#39;s first tab could underline its own query with &lt;code&gt;Cannot find name &amp;#39;db&amp;#39;&lt;/code&gt; until some other tab loaded a schema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The tree view keeps your place&lt;/strong&gt; — Expanding or collapsing left every row below reporting its old position, so clicks landed away from the pointer and your focused row was lost.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shortcut hints name a key your keyboard has&lt;/strong&gt; — The aggregation builder&amp;#39;s Undo and Redo and the editor&amp;#39;s Format button showed the macOS ⌘ key on Windows and Linux, and a stage&amp;#39;s Run button named a shortcut that does not exist.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Generating and copying data&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generating into a unique index works&lt;/strong&gt; — A second run rebuilt the first run&amp;#39;s values one for one so every insert was rejected, and one collision reported the whole run as failed even when most documents landed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Polygon collection can be generated into&lt;/strong&gt; — MongoDB refused every generated document before, for Polygon, MultiPolygon and MultiLineString fields alike.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copying into a protected connection asks first&lt;/strong&gt; — A connection you had marked protected accepted a collection copy or a whole database duplicate without a word. Copying out of one is untouched.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Dialogs and windows&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Settings survive a quit made right after the change&lt;/strong&gt; — Resizing the sidebar, a table column, the tree&amp;#39;s key column or the window itself and quitting within half a second lost the change. It is written before the window closes now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A failing dialog no longer blanks the window&lt;/strong&gt; — An error inside any dialog left a blank window with nothing on it, not even a crash screen. The dialog that failed is replaced by a message you can dismiss.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reading the pricing keeps what you were doing&lt;/strong&gt; — The PRO badge opened the License dialog on top of the one you were in, tearing it down, so tapping PRO mid-setup came back to an empty form.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Settings and startup&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lapsed Pro shows AI access as off&lt;/strong&gt; — The switch was drawn on over a server that had stopped. It reads off, and says the setting is kept and starts again when Pro is restored.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The port field can be typed into&lt;/strong&gt; — It validated on every keystroke, so typing &lt;code&gt;8080&lt;/code&gt; dropped each digit as you went. It commits when you leave the field, and tells you the range.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A port you pinned stays pinned&lt;/strong&gt; — If the saved port was taken at startup, Monghoul fell back to an OS-assigned one and overwrote your setting with it. It keeps your choice and warns you instead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A damaged AI Access setting denies instead of allowing&lt;/strong&gt; — If the stored list of what an assistant may reach became unreadable, it was treated as &amp;quot;everything&amp;quot;. It now reaches nothing until you pick again.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deleting the active theme no longer forces dark&lt;/strong&gt; — It fell back to a dark theme by name, which put a light-mode user in the dark. It now clears the setting and follows your system appearance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A damaged setting no longer blocks startup&lt;/strong&gt; — One stored setting holding invalid data meant the app would not start at all. It falls back to its default now, and a damaged window layout or theme is rebuilt rather than lost.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;For MCP client authors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;pending_approval&lt;/code&gt; replaces &lt;code&gt;pending_review&lt;/code&gt;&lt;/strong&gt; — The status a query awaiting your approval reports has been renamed. A client matching on the old literal needs updating.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Split tools take a &lt;code&gt;placement&lt;/code&gt;&lt;/strong&gt; — &lt;code&gt;split_panel&lt;/code&gt; and &lt;code&gt;split_and_move_tab&lt;/code&gt; accept an optional side for the new panel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;get_tab_result&lt;/code&gt; returns &lt;code&gt;logs&lt;/code&gt; and &lt;code&gt;explainStats&lt;/code&gt;&lt;/strong&gt; — Anything a query wrote with &lt;code&gt;console.log&lt;/code&gt; or &lt;code&gt;print&lt;/code&gt; now comes back, along with the query plan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools honour or refuse their arguments&lt;/strong&gt; — &lt;code&gt;execute_query&lt;/code&gt; ignored &lt;code&gt;resultLimit&lt;/code&gt; on approval and reported the default back; eight more answered success for input they never applied.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.9.2</title><link>https://monghoul.com/releases/v1.9.2/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.9.2/</guid><description>Monghoul 1.9.2 release notes. Improved. A detached window respects the interface zoom: a tab detached while the interface was at 125% opened a window at…</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Improved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A detached window respects the interface zoom&lt;/strong&gt; — a tab detached while the interface was at 125% opened a window at 100%, with no zoom keyboard shortcut and no scroll gesture to change it. Zoom is one app-wide level now: a detached window opens at the level in effect, can change it, and the other open windows follow.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A collection can be opened from the keyboard&lt;/strong&gt; — Space on the focused row in the connection tree opens it in a query tab, the same action a double click performs. Enter still expands and collapses. The sidebar&amp;#39;s most-used action needed a mouse until now.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monghoul gives back the disk it stopped using&lt;/strong&gt; — the app database never returned deleted pages to the filesystem and its write-ahead log never shrank once it had grown, so a long-running install could reach hundreds of megabytes while holding a couple of megabytes of actual data. Startup now caps the log and compacts the database when it is overwhelmingly empty space. An ordinary database is left untouched.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The theme you get on a fresh install is now yours to keep&lt;/strong&gt; — Monghoul picked light or dark from the system on first launch and then never wrote the choice down, so it re-derived it at every start: changing the operating system&amp;#39;s appearance later silently moved the app with it, even though the theme picker offers concrete themes and no &amp;quot;System&amp;quot; entry. The first launch records the theme it picked, and it stays until you change it in the app.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Performance&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Switching to a query tab opens its connection ahead of the first query&lt;/strong&gt; — the connection was established by the query itself, so on a remote server the first run of the day paid a TLS handshake and authentication on top of its own time. That now happens in the background when you switch to the tab. It only runs on a deliberate switch, so reopening a saved workspace still connects to nothing until you ask it to, and a connection waiting on its session password is left alone rather than prompting because you clicked a tab.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A large JSON import no longer has to fit in memory&lt;/strong&gt; — importing JSON read the entire file into a string and then into a document array, which cost roughly ten times the file size in memory and made the app refuse anything over 500 MB. It is streamed now: memory stays flat at about 120 MB whether the file is 150 MB, 300 MB or 600 MB, where before a 300 MB dump peaked at 3.1 GB and a 600 MB one was refused outright. JSON arrays, NDJSON, concatenated JSON and gzipped dumps all stream; progress counts bytes of the file instead of documents, and a document that will not parse is now skipped and counted rather than failing the whole import. Excel imports are unchanged and still read the whole workbook.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A large CSV import no longer has to fit in memory&lt;/strong&gt; — importing a CSV read the entire file into memory first, so the largest file Monghoul could import was bounded by RAM rather than by patience. It is streamed now: memory stays flat at about 140 MB whether the file is 230 MB or 464 MB, where before it tracked the file size. Excel imports are unchanged and still read the whole workbook. The progress bar counts bytes of the file instead of documents, since a streaming read cannot know the row total without reading the file twice.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Interface&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Search matches are one colour everywhere, and it is no longer the selection colour&lt;/strong&gt; — the table and tree result views drew a match in the same colour as a selected row, so a match inside a selection was nearly invisible; the sidebar, command palette and logs modal drew it in the warning colour instead. All five now use a dedicated highlight colour that custom themes can set. A theme that does not set it keeps the colour it had.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Accessibility&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The tab strip&amp;#39;s &amp;quot;all tabs&amp;quot; button has a name&lt;/strong&gt; — the &lt;code&gt;⋯&lt;/code&gt; button that lists every open tab was an icon with no label, so a screen reader announced only &amp;quot;button&amp;quot; and the one route to a tab scrolled out of view was unidentifiable. It is named now, and reports whether its menu is open.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fixed&lt;/h2&gt;
&lt;h3&gt;Safety&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A crash during startup now leaves its reason in the log file&lt;/strong&gt; — the log was opened in the background, so a failure that happened before that finished wrote nothing at all and then printed an unrelated internal error on top of the real one. Exactly the report that is hardest to diagnose lost the one line that explained it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Write protection is enforced at the database driver, not just read off the query text&lt;/strong&gt; — the check was a scan for &lt;code&gt;.deleteMany(&lt;/code&gt; and similar spellings in the code, so a destructive call the scan could not see ran without a word: bracket notation, a method reached through an alias or a variable, or a raw &lt;code&gt;db.command({ drop: … })&lt;/code&gt;. Those are refused when they run now, naming the operation, the target and the connection. A raw &lt;code&gt;db.command&lt;/code&gt; on a protected target is limited to commands known to be reads.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The aggregation builder&amp;#39;s stage preview honours write protection on the server&lt;/strong&gt; — it asked before previewing a pipeline ending in &lt;code&gt;$out&lt;/code&gt; or &lt;code&gt;$merge&lt;/code&gt;, but the answer never left the app: the sidecar ran whatever it was sent, so a preview on a protected connection wrote whether or not you agreed. Cancelling now stops the write on both sides, and confirming is what allows it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A protected collection can no longer be emptied through a preview&lt;/strong&gt; — &lt;code&gt;Preview&lt;/code&gt; and &lt;code&gt;Explain&lt;/code&gt; ran their code with no write-protection check at all.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Exporting a query&amp;#39;s results honours write protection&lt;/strong&gt; — the export re-runs the query&amp;#39;s code, and it was the one path that skipped the check, on the assumption that the code had already run once as a query. It had not necessarily: exporting does not require the query to have been run, so a query written but never executed — which is what the AI assistant&amp;#39;s review mode produces — would execute on Export. Reads export exactly as before.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Interaction&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The keyboard position in the connection tree survives clicking a chevron&lt;/strong&gt; — expanding a row with the mouse cleared the keyboard cursor even though focus was still inside the tree, so the next arrow key jumped back to the first row. Arrow keys resume where you were.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Middle-clicking a tab no longer leaves the autoscroll cursor behind&lt;/strong&gt; — closing a tab with the wheel button started the browser&amp;#39;s scroll-drag cursor at the same time, because the suppression ran a moment too late. The tab closes and nothing else happens.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Export&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A CSV export opens correctly in Excel&lt;/strong&gt; — exported files carried no encoding marker, so Excel decoded them in the system codepage and any accented or non-Latin value opened as mojibake: &lt;code&gt;Львів&lt;/code&gt; became &lt;code&gt;ÐÑÐ²ÑÐ²&lt;/code&gt;. The data on disk was always right, which made it look like an export bug when it was a reading one. CSV exports now begin with a UTF-8 byte-order mark, and the collection-export dialog has a switch to leave it out for tools that read it as part of the first column name. A gzipped CSV carries it inside the archive, and Monghoul&amp;#39;s own import reads it back unchanged.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Import&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A large integer no longer arrives off by one&lt;/strong&gt; — importing Extended JSON, a &lt;code&gt;$numberLong&lt;/code&gt; above 9,007,199,254,740,992 was read as an ordinary JavaScript number and stored rounded: an id or a counter written as 9007199254740993 landed as 9007199254740992, with nothing to indicate it. Those values now arrive exactly, and a field written as &lt;code&gt;$numberLong&lt;/code&gt; is stored as a 64-bit integer rather than widened to a float. Ordinary integers in ordinary JSON are unchanged.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A huge JSON file in a dump directory no longer takes the app down without a word&lt;/strong&gt; — importing a whole directory read each JSON file into memory with no size limit, so one oversized file killed the sidecar mid-import. Single-collection imports already refused a file over 500 MB; both paths share that limit now, a compressed &lt;code&gt;.gz&lt;/code&gt; is measured by what it inflates to rather than its size on disk, and the message says what to do instead of recommending NDJSON, which was read the same way and hit the same wall.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A JSON or CSV file that starts with a byte-order mark now imports&lt;/strong&gt; — files written by Notepad, by PowerShell&amp;#39;s &lt;code&gt;Out-File&lt;/code&gt; / &lt;code&gt;Set-Content -Encoding utf8&lt;/code&gt;, or exported from Excel as &amp;quot;CSV UTF-8&amp;quot; begin with an invisible marker character. A JSON import refused the file outright with a parse error naming a character nothing displays. A CSV import was quieter and worse: it succeeded, reported every row imported, and named the first column with the marker still attached — a field that looks exactly like &lt;code&gt;id&lt;/code&gt; on screen and that no query for &lt;code&gt;id&lt;/code&gt; will ever match. The marker is stripped on read now, in both formats and in a gzipped file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A failed import no longer empties the collection it was going to fill&lt;/strong&gt; — under the drop-then-insert strategy the collection was cleared before the file was opened, so a missing, corrupt or oversized file left you with neither the old data nor the new. The file is read first now, in every format.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Query and Results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A chart that plots the same field twice draws two series instead of one broken one&lt;/strong&gt; — picking one field in two Y-axis rows collapsed both into a single series carrying twice as many points as there were labels, which also silently disabled &amp;quot;sort by value&amp;quot; and left a dual-axis assignment pointing at a series that no longer existed. The two are told apart now, the second labelled &lt;code&gt;field (2)&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Editing a value inside a nested array now updates the row you edited&lt;/strong&gt; — a cell in an array of arrays saved to the database and reported &amp;quot;Saved&amp;quot;, but the table and tree went on showing the old value until the next run of the query. The two halves of the save disagreed about how to read the path: the update named the right field, the on-screen refresh looked for a field whose name contained the brackets and found nothing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Searching a result no longer redraws the rows it is drawing attention to&lt;/strong&gt; — with a search term active, a matched cell rendered a different value than the same cell renders unsearched: an object collapsed from its inline preview to &lt;code&gt;Object{3}&lt;/code&gt;, a date lost its display format and its relative suffix for a raw timestamp, a string lost its quotes, and both lost their type colours. Matches are now marked inside the normal rendering, in the table and the tree, which also means a match inside an object preview is highlighted for the first time.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Cluster Monitor&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A Cluster Monitor tab explains itself after a downgrade instead of looking broken&lt;/strong&gt; — when a Pro subscription ends with a monitor tab still open, the tab showed &amp;quot;Failed to fetch server status&amp;quot; with a Retry button that could never succeed, and kept retrying in the background. It now says the feature is Pro, offers to upgrade, and stops polling.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Themes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A theme file saved by a text editor now imports&lt;/strong&gt; — importing a theme whose file begins with a byte-order mark failed with &amp;quot;Failed to import: Unexpected token&amp;quot;, pointing at a character that renders as nothing. Notepad and PowerShell both write one by default, so a theme exported from Monghoul and then edited by hand could stop importing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;AI (MCP)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;An AI-initiated query can no longer reach the network&lt;/strong&gt; — query code runs with &lt;code&gt;fetch&lt;/code&gt; available, so a document whose contents were written to be read as instructions could turn &amp;quot;read this collection&amp;quot; into &amp;quot;read this collection and post it somewhere&amp;quot;. A query the assistant runs itself no longer has &lt;code&gt;fetch&lt;/code&gt; at all; calling it says so and points at review mode. Queries you run yourself are unchanged.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review mode is on when you first enable the MCP server&lt;/strong&gt; — it started off, so the act of switching MCP on handed an assistant the ability to run query code against every saved connection with nobody reading it first. A new installation now asks you to approve each query until you turn that off. An installation that already has a setting keeps it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;An AI naming a connection that does not exist is told so in review mode too&lt;/strong&gt; — the check ran only on the path that executes immediately, so in review mode a query was filed against a missing connection and reported as awaiting your approval.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The MCP token no longer has to travel in the URL&lt;/strong&gt; — every generated client config put it in &lt;code&gt;?token=&lt;/code&gt;, which is a bearer secret in shell history, in a config file that gets committed, and in any proxy log on the way. The setup snippets now send it as an &lt;code&gt;Authorization&lt;/code&gt; header for every client that supports one; the URL Monghoul shows you carries no token at all. Codex has no flag for a request header, so its snippet still uses the URL and says so. An existing config keeps working — the query form is still accepted.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The MCP port no longer answers to any website you happen to have open&lt;/strong&gt; — it replied to every request with a wildcard cross-origin header, so a page that guessed the port could read its responses; and because that header is not a gate, such a page could issue a write and simply not read the reply. Requests from a browser are now accepted only from Monghoul itself and from localhost, and the token is compared in constant time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;An assistant is told when it names a connection that does not exist&lt;/strong&gt; — &lt;code&gt;pin_collection&lt;/code&gt; and &lt;code&gt;save_favorite_query&lt;/code&gt; passed the unknown id through to the database and surfaced its raw &lt;code&gt;FOREIGN KEY constraint failed&lt;/code&gt;; &lt;code&gt;unpin_collection&lt;/code&gt; deleted nothing and reported &amp;quot;Collection unpinned&amp;quot;; &lt;code&gt;create_query_tab&lt;/code&gt; built a tab bound to the missing connection and left it in the workspace for you to close. The five sidebar tools — the three &lt;code&gt;navigate_to_*&lt;/code&gt; and &lt;code&gt;expand_in_sidebar&lt;/code&gt; / &lt;code&gt;collapse_in_sidebar&lt;/code&gt; — answered &amp;quot;Navigated to collection&amp;quot; without looking anything up at all. All nine now name the connection they could not find, which is what every other tool already did.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.9.1</title><link>https://monghoul.com/releases/v1.9.1/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.9.1/</guid><description>Monghoul 1.9.1 release notes. Fixed. Query and Results. A diff shows the differences: Document Diff and the Operation Logs query comparison drew both…</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Fixed&lt;/h2&gt;
&lt;h3&gt;Query and Results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A diff shows the differences&lt;/strong&gt; — Document Diff and the Operation Logs query comparison drew both documents side by side with nothing marked as changed, whatever the two documents were: the installed build could not start the editor&amp;#39;s diff engine, so there was never a diff to draw. Word-based completions and clickable links in the editors were casualties of the same fault.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.9.0</title><link>https://monghoul.com/releases/v1.9.0/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.9.0/</guid><description>Monghoul 1.9.0 release notes. New. Lifetime licences include every future update: A lifetime licence used to cover two years of updates from the date of…</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lifetime licences include every future update&lt;/strong&gt; — A lifetime licence used to cover two years of updates from the date of purchase, after which the app would not activate on newer builds. That limit is gone, retroactively: every lifetime licence, however old, receives all future versions with nothing to renew.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Passwords you would rather not store&lt;/strong&gt; — Username/password and SCRAM connections have a &amp;quot;Save password&amp;quot; checkbox. With it off nothing is written to disk: Monghoul asks the first time you connect and remembers it until you quit, so one prompt covers every query, sync and expand for the session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atlas service accounts&lt;/strong&gt; — Atlas is moving from project API keys to programmatic service accounts, and a project that had already turned keys off could not connect at all. The credential dialog now takes either, and warns within thirty days of a service-account secret&amp;#39;s expiry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atlas users can be scoped to a cluster&lt;/strong&gt; — An Atlas database user can be restricted to specific clusters, data lakes or streams from the user form; leaving the list empty means the whole project, which is Atlas&amp;#39;s own default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What a role can actually do, and who has it&lt;/strong&gt; — Selecting a role opens a pane with its effective privileges, flattened across the whole inheritance chain and marked as granted here or inherited, so a role assembled out of built-ins finally reads as something. Underneath it, the reverse lookup nobody could do before: which users hold the role, and which other roles inherit it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The shell command behind the form&lt;/strong&gt; — Create User and Create Role show the equivalent &lt;code&gt;mongosh&lt;/code&gt; command, live off whatever is in the form and copyable. The password is &lt;code&gt;passwordPrompt()&lt;/code&gt; rather than the one you typed, so the clipboard never holds a credential.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Current operations&lt;/strong&gt; — The footer&amp;#39;s task indicator now lists everything the app is doing — queries, explains and previews, connection attempts, statistics reads, sidebar refreshes and inline edits, alongside exports, imports, copies and generation — each labelled with its kind and connection, and cancellable where the work can be stopped.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zoom in the status bar&lt;/strong&gt; — Zoom was keyboard- and scroll-only and invisible after the first tip, so a window that came back at 80% just looked wrong. The status bar carries the percentage now, and clicking it opens step buttons, presets from 50% to 200%, and a reset.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rename a favourite&lt;/strong&gt; — A favourite could only be renamed by opening it, editing the tab title and saving over it. Hovering a favourite in the sidebar now shows a rename button beside the remove one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arctic Light&lt;/strong&gt; — A new built-in theme: cool blue-gray with steel-teal accents, the light counterpart to Midnight Ocean, for people who find the cream-toned light themes too warm.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Improved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Exporting results asks one question instead of six&lt;/strong&gt; — The menu listed JSON, CSV and Excel twice, once under each scope heading. Pick the scope on a one-line toggle, then a format from a single list, with a line underneath saying what that combination will actually write — including that &amp;quot;All matching&amp;quot; re-runs the query with your &lt;code&gt;.limit()&lt;/code&gt;, &lt;code&gt;.skip()&lt;/code&gt; and the result cap dropped.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The aggregation builder&amp;#39;s Generate Schema banner appears in builder mode&lt;/strong&gt; — Its stage editors read the same collection schemas the code editor&amp;#39;s autocomplete does — field pickers, &lt;code&gt;$group&lt;/code&gt; keys, &lt;code&gt;$project&lt;/code&gt; paths — so a missing schema limits the builder in the same way, and the banner&amp;#39;s Generate button was the only way to ask for one from the editor panel. It was shown in code mode only. Alongside it, the Generated Code toggle no longer stays highlighted at a width too narrow to show the panel: it is disabled there, and says why.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A folded aggregation stage says what it does&lt;/strong&gt; — Collapsed cards read the operator&amp;#39;s generic description, identical for every &lt;code&gt;$match&lt;/code&gt; in the pipeline; they show the stage&amp;#39;s own body now, so a folded pipeline can be scanned. A one-line stage also takes one line of room rather than four.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A failed stage preview leads with the cause&lt;/strong&gt; — MongoDB wraps the part you need in machinery and the preview printed the whole chain on one clipped line, so the half that says what is wrong was usually off the right edge. The root cause is the headline now, with the original message one click away, and the misspelt-stage, memory-limit, timeout and permission cases each get a line saying what to do about it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A syntax error reads as part of the stage&lt;/strong&gt; — It was small red text floating in the editor&amp;#39;s padding, truncated, recoverable only by hovering; it is a tinted strip flush with the card now, and it shows on a collapsed stage too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A markdown tab opens in the editor&lt;/strong&gt; — An empty note opened in preview, which renders nothing, so every note began with a trip to the Edit button. A tab that arrives with content still opens in preview.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A note behaves like a tab, not like a lesser one&lt;/strong&gt; — Markdown tabs already carried working favourite buttons, but &lt;code&gt;Ctrl/Cmd+Shift+S&lt;/code&gt; did nothing on one and &amp;quot;Clone Tab&amp;quot; was not offered. Both work now; &lt;code&gt;Ctrl/Cmd+D&lt;/code&gt; correspondingly stops cloning a cluster monitor, which the menu never offered either.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The sidebar filter&amp;#39;s match count counts what it highlighted&lt;/strong&gt; — Searching for a connection name reported &lt;code&gt;0&lt;/code&gt; matches beside a tree that was plainly showing the connection, and searching for a database name reported that database&amp;#39;s whole collection list — 50 matches for one hit — because matching a database reveals all of its children.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Operation Logs collection filter lists every collection&lt;/strong&gt; — It was built from the rows currently loaded, so a collection that first appeared on page 3 could not be filtered for from page 1. It also narrows with the other filters, and matches the collection you picked rather than every name containing it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Performance&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A tab&amp;#39;s results appear as soon as the tab does&lt;/strong&gt; — Opening the app fetched 7.4 MB of JavaScript before it could draw a single row, and none of it started loading until the workspace had finished. A tab now needs 213 KB to show its results and starts fetching them while the workspace is still loading; the editor and the charting library follow in the background.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A faster, smaller backend&lt;/strong&gt; — The local server every query goes through starts in about 190 ms instead of 270 ms, and settles roughly 30 MB smaller.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The aggregation builder&amp;#39;s parser leaves the startup path&lt;/strong&gt; — The JavaScript parser the builder uses to work out which fields each stage sees was loaded before the window could paint, on every launch, whether or not you opened the builder.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A large generated-document schema stops re-rendering on every keystroke.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A large export stops holding the whole file in memory&lt;/strong&gt; — The writers pushed every document at the file as fast as the cursor produced them and never waited for the disk to keep up, so the backlog piled up in memory: a 200,000-document JSON export peaked at 599 MB of it. It peaks at 150 MB now, and an export is not reported finished until the file on disk is closed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Interface&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Every built-in theme meets WCAG AA, and cannot silently drift below it again&lt;/strong&gt; — An audit of all eleven themes found a long tail of colour pairs below the accessibility floor, the worst of them the dimmest text tier that carries most of the app&amp;#39;s small labels, so field labels, metric captions and section headings were genuinely hard to read rather than just subtle. Corrections adjust lightness only, so each theme keeps its own hue and character, and a new test measures every theme on every run.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A new Accent colour, so a PRO badge stops looking like an alert&lt;/strong&gt; — The licence badge, upgrade badge and tier chip used the same blue as &amp;quot;new activity&amp;quot;, so in the footer the PRO badge sat next to the MCP unread dot in exactly that colour. They use a tunable Accent colour now, and &amp;quot;Enabled&amp;quot; states stop using success green, which claimed an outcome that never happened.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The schema sample sizes the free tier cannot use are shown as such&lt;/strong&gt; — The 1K, 5K and 10K chips stayed clickable and quietly selected 500 instead, so no chip lit up and nothing said why. They are disabled now, and say what they need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three theme colours that did nothing now do&lt;/strong&gt; — The action, focus and pressed colours were settable in the theme editor and read by nothing; they drive filled buttons, the focus ring and the held-down state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The page-size field says what it accepts, and clamps instead of ignoring you&lt;/strong&gt; — It took anything up to 10,000 — ten times the largest preset, and enough rows to make the view crawl — and silently reverted anything outside that range to the previous size, which reads as a field that ignored what you typed. A number above the ceiling is now clamped to it, and the clamped number is what the field shows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The plan comparison stops listing two free features as Pro&lt;/strong&gt; — Multi-panel layout and sidebar folders are available on the free tier and were in the Pro column of the upgrade dialog&amp;#39;s table. They are gone from it, and user and role management — which is genuinely Pro and was missing — is in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Text fields have a visible edge&lt;/strong&gt; — An unfocused input, select or checkbox had a border too faint to meet the accessibility floor on any theme, over a fill near-identical to the page behind it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Small labels are cased by what they are, and stop mangling your data&lt;/strong&gt; — Every small label was set in lowercase, which reads as a typo where the label is really a heading; headings above a group are small caps now, and the sidebar&amp;#39;s section titles read as headings rather than dimmed lowercase monospace. More importantly, several of these were not labels at all and were being case-folded with the rest — aggregation stage names, your own &lt;code&gt;$facet&lt;/code&gt; branch names, BSON type names, your connection names and the &lt;code&gt;COLLSCAN&lt;/code&gt; marker all render verbatim now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colours stop coming from the wrong palette&lt;/strong&gt; — The aggregation builder&amp;#39;s stage families were coloured from your chart series colours, so re-theming charts re-coloured the builder and in the default theme made every &lt;code&gt;$out&lt;/code&gt; and &lt;code&gt;$merge&lt;/code&gt; read as an error; chart field-type badges had it in reverse, so &amp;quot;Date&amp;quot; appeared as a success and &amp;quot;Boolean&amp;quot; as a warning. Both use the MongoDB value-type colours now, and an index&amp;#39;s descending toggle stops turning the app&amp;#39;s warning amber.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A failed insert or update is not reported in green&lt;/strong&gt; — The result panel for Insert One, Insert Many and Update painted its success accent unconditionally, so an operation whose own subtitle read &amp;quot;Operation Failed&amp;quot; arrived in success green.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pickers and menus stay where you can reach them&lt;/strong&gt; — Colour and font pickers opened off the bottom or top of the window, a colour picker stayed put while the row it belonged to scrolled away, and &amp;quot;Add stage&amp;quot; could flip above its button and off the top of a short window.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The JSON viewer and the sidebar&amp;#39;s spinner follow your theme&lt;/strong&gt; — Both had colours hardcoded outside the theme system: the viewer&amp;#39;s frame was fixed dark grey, unreadable under the light themes, and the spinner was a lime green that appears nowhere else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A query error looks like part of the result panel&lt;/strong&gt; — When a query failed, the header that replaced the result header was taller and a different shade of grey, and set the error icon in a red tinted tile right beside a differently tinted error-type pill, so the panel visibly changed shape on the way to reading the message. It is the same band as the result header now, with a plain icon, and a long error scrolls inside the panel instead of stretching it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Accessibility&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The connections tree announces itself as a tree&lt;/strong&gt; — It has behaved like one from the keyboard for a long time, but every row was an anonymous container, so a screen reader could not say what it was on, how deep it was, or whether it could open. Rows are tree items now, with their depth, expanded state and selection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The result table announces its rows, columns and sort order&lt;/strong&gt; — The app&amp;#39;s main data surface said nothing about itself; it is a grid now, with each row&amp;#39;s number and selected state and each cell&amp;#39;s column. Four mouse-only affordances came with it: the row tick box, the search in the row-number header, sorting by clicking a header, and the nested viewer&amp;#39;s &amp;quot;show more&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Form labels name the field they sit above&lt;/strong&gt; — Visible labels were decorative captions not attached to the control beneath them, so a screen reader read the input as an unnamed box and clicking the label did nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Click-only controls are buttons&lt;/strong&gt; — Favourite and pinned-collection rows, sidebar section headers and folder rows, the tab strip&amp;#39;s close ✕, the licence copy links, help bubbles, a theme&amp;#39;s delete control and whole menu rows were plain containers with a click handler: unreachable without a mouse and unannounced.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dividers move from the keyboard&lt;/strong&gt; — The query tree&amp;#39;s Key/Value divider, the list/detail split in Operation Logs and Snippets, and the document preview&amp;#39;s divider were drag-only; arrows move them, Shift jumps, Home and End go to the ends, and each reports where it is.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Landmarks and regions&lt;/strong&gt; — The workspace, sidebar and status bar are landmarks a screen reader can jump to, the drawers, theme editor and plan view are real regions, and the get-started screen is main content rather than navigation. The window also declares its language, so the interface is announced in English rather than whatever voice the reader defaulted to.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dialogs, dropdowns and menus announce themselves&lt;/strong&gt; — Every &amp;quot;are you sure&amp;quot; was an unnamed box, giving no indication a dialog had opened or what it was asking, and every &lt;code&gt;Select&lt;/code&gt; rendered its options as anonymous rows. A menu item&amp;#39;s shortcut is also introduced as one, so &amp;quot;Copy Ctrl+C&amp;quot; is no longer read as a single phrase.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decorative graphics stop being announced, and a loading spinner starts being&lt;/strong&gt; — Spinners, the animated logo, expand chevrons and the arrow between explain stages were read out as unlabelled images; the loading indicator they sit inside says &amp;quot;Loading&amp;quot; instead, which nothing did before.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The connections tree can be reached, and opened, from the keyboard&lt;/strong&gt; — Tabbing into it landed on an invisible per-row drop target rather than the tree, and the tree itself showed no cursor on arrival, so the arrow keys appeared to do nothing and there was no way to expand a connection without a mouse. Tab now puts the cursor on a row — the one you last opened, or the first — with the arrow keys expanding and collapsing from there, and Enter opens a collection&amp;#39;s indexes and schema, which previously only the chevron could do.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The sidebar&amp;#39;s hover preview follows the keyboard&lt;/strong&gt; — Walking the tree with the arrow keys showed nothing about the row you were on: the preview card, with its size and index counts, only appeared under the pointer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fit Column Width is in the column menu&lt;/strong&gt; — Auto-sizing a column was only possible by double-clicking the thin line between two headers, so it was invisible unless you found it by accident and impossible without a mouse.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fixed&lt;/h2&gt;
&lt;h3&gt;Query and Results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Code editors open&lt;/strong&gt; — A packaging fault in the 1.8.2 build could stop any code editor from opening — a query tab, Validation Rules, Snippets, the log viewer — from the first time one was needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;db.orders.find()&lt;/code&gt; works, and the editor agrees&lt;/strong&gt; — The shell&amp;#39;s collection shorthand, which is what most people type first, came back as an error that read like a broken app rather than an unsupported spelling; it resolves to the collection now, and the editor stops underlining it in red and offers your collections as completions on &lt;code&gt;db.&lt;/code&gt; with their sampled document types. A collection sharing its name with a driver method (&lt;code&gt;stats&lt;/code&gt;, &lt;code&gt;admin&lt;/code&gt;, &lt;code&gt;command&lt;/code&gt;) still needs &lt;code&gt;db.collection(&amp;#39;stats&amp;#39;)&lt;/code&gt;, in the editor as at runtime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A shell-style projection is refused, not ignored&lt;/strong&gt; — &lt;code&gt;find({}, { name: 1 })&lt;/code&gt; is shell syntax, and the query editor runs the Node driver, where a projection in that position is silently dropped — so the query looked like it had worked and returned every field. It now says so, and names both spellings that do work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A script runs all of its statements&lt;/strong&gt; — Two writes pasted one under the other performed only the first, and reported success; every statement runs now, in order, and the query is not reported finished until the operations it started have. A query can also end in a line comment, which used to fail the run.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A comment can no longer switch off the result cap&lt;/strong&gt; — Mentioning &lt;code&gt;.limit(&lt;/code&gt; anywhere in the query, a comment or string included, disabled the automatic cap and read the whole collection into memory — the exact thing the cap exists to prevent. What counts now is the limit the query actually applies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An aggregation that writes is not run a second time&lt;/strong&gt; — Explain re-runs a query to collect its plan and skips &lt;code&gt;$out&lt;/code&gt; and &lt;code&gt;$merge&lt;/code&gt; pipelines, but decided that from the query text, so a pipeline that assembled the stage as it ran was explained anyway and wrote twice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editing a document keeps its types&lt;/strong&gt; — Saving an inline edit could narrow the document&amp;#39;s other Long and Decimal128 fields to plain doubles, and a 64-bit &lt;code&gt;_id&lt;/code&gt; lost its last digits — enough that Edit and Delete built a filter matching nothing. Large integers survive the trip intact now, and a value the field&amp;#39;s type cannot hold is refused rather than written as something else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A mistyped cell value is refused instead of quietly changed&lt;/strong&gt; — Entering something that is not a number into a numeric cell stored a truncated or zeroed value and reported success; each case is refused now, naming the value it could not read, and a number too large for its type is refused rather than wrapping. Clearing a required date is refused too, instead of saving null.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit and delete work on any &lt;code&gt;_id&lt;/code&gt;&lt;/strong&gt; — On a row whose &lt;code&gt;_id&lt;/code&gt; is a Decimal128, a UUID or a compound key, both generated a filter MongoDB rejected the moment it ran; a UUID &lt;code&gt;_id&lt;/code&gt; also reads as a UUID in the delete confirmation rather than as raw base64.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The result grid no longer empties itself a moment after the query finished&lt;/strong&gt; — A request the window had already sent could answer after the run completed and overwrite the result that had just arrived, so the grid went blank with nothing to explain it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;quot;Filter by value&amp;quot; on an empty cell finds the documents missing the field&lt;/strong&gt; — It generated a filter that matches nulls, so the rows it found were not the rows you clicked from.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A single-document result behaves like any other&lt;/strong&gt; — On a &lt;code&gt;findOne&lt;/code&gt;, Expand All silently did nothing and search never highlighted anything even when the term was right there. A result that was one ObjectId, Decimal128, Long or Timestamp was also labelled by the JavaScript type it had been decoded into, so an ObjectId read &amp;quot;String&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Double-clicking a column edge fits the column to what it draws&lt;/strong&gt; — Widths were measured from a different string than the table renders, in the wrong typeface, with the header measured in capitals it is not drawn in — so an object or array column came out about a fifth of the width it needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A duplicated tab keeps how it was set up, and a moved one keeps its selection&lt;/strong&gt; — Duplicating lost the tree column width, sticky header, split position and full-screen state; moving a tab to another panel cleared the selected rows and the Shift anchor with them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tree view shortcuts follow the Hotkeys modal&lt;/strong&gt; — Search, copy, select-all, edit-document and toggle-preview were fixed chords whatever you had rebound them to, so the Hotkeys modal listed five shortcuts the tree ignored.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Closing a tab stops everything it started, not just its query&lt;/strong&gt; — A stage preview, an explain or a schema analysis left running when its tab closed kept reading, kept its cursor open on the server and kept its row in the footer with nothing left to cancel it from.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The editor stops offering timers the query cannot use&lt;/strong&gt; — &lt;code&gt;clearTimeout&lt;/code&gt;, &lt;code&gt;setInterval&lt;/code&gt; and &lt;code&gt;clearInterval&lt;/code&gt; were autocompleted and then threw &lt;code&gt;ReferenceError&lt;/code&gt; when the query ran. All four timers work now, and any the query leaves running are cleaned up when it ends.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run is disabled on an empty editor&lt;/strong&gt; — It stayed enabled and sent an empty query to the server, which is a round trip that can only come back empty; Explain had the check all along.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editing a document whose &lt;code&gt;_id&lt;/code&gt; is &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;&lt;/strong&gt; — All three are legal identifiers and all three were read as &amp;quot;no &lt;code&gt;_id&lt;/code&gt;&amp;quot;, so Edit Document opened a statement with a placeholder comment where the filter should be.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl/Cmd+F no longer opens the browser&amp;#39;s find bar&lt;/strong&gt; — Outside a result table the key fell through to the WebView, whose own find bar searched only the rows on screen, fought the result viewer&amp;#39;s highlights, and could not be closed from anywhere in the app.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Aggregation Builder&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Auto Preview says how long it waits&lt;/strong&gt; — Its tooltip promised two seconds against a wait of one and a half.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Opening the builder no longer replaces your query&lt;/strong&gt; — Switching a tab into the builder rewrote its code with an empty pipeline whenever the code was not already an &lt;code&gt;aggregate(…)&lt;/code&gt; call — which is every tab that opens with a &lt;code&gt;find()&lt;/code&gt; — and saved the rewrite, so the query was gone on the way back.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The formatted query survives the switch back to the editor&lt;/strong&gt; — &amp;quot;Switch to editor&amp;quot; formats the pipeline and saves it, but the save lost a race with the mode change, so the stored query reverted to the unformatted text and a reopened tab showed something different from the editor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stage previews no longer outlive the pipeline they belong to&lt;/strong&gt; — A stage&amp;#39;s preview is the pipeline run down to that stage, so anything above it is part of the answer, but inserting, reordering, deleting or switching off an upstream stage left the cards below showing the previous pipeline&amp;#39;s results, doc count and timing included, with nothing to say they were out of date. Each edit now discards the previews below the point it changed and keeps the ones above.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A broken &lt;code&gt;$out&lt;/code&gt; or &lt;code&gt;$merge&lt;/code&gt; stage shows its error&lt;/strong&gt; — The syntax-error marker shared a slot with the destructive-stage warning and always lost it, so a collapsed stage with a broken body looked fine.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Explain and Charts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Index suggestions are complete&lt;/strong&gt; — A suggestion dropped the equality or range you had filtered on whenever the chosen index had already absorbed it, so explaining &lt;code&gt;find({region: &amp;#39;eu&amp;#39;, amount: {$gt: 10}}).sort({createdAt: 1})&lt;/code&gt; offered an index that no longer covered the filter; suggestions are the full ESR index now. A &lt;code&gt;$lookup&lt;/code&gt; also always suggests its join index, a suggestion for another collection is judged by that collection&amp;#39;s indexes, and a partial or sparse index no longer suppresses the suggestion you need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The aggregation pipeline shows its per-stage numbers&lt;/strong&gt; — Rows and time per stage were read from the wrong place in MongoDB&amp;#39;s output, so every stage but the initial cursor showed nothing and the four pipeline insights could never appear. The version card is filled in again too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explain follows the code and the collection you just typed&lt;/strong&gt; — It stayed greyed out on a new tab until you ran the query once, and editing a query to target another collection kept the previous collection&amp;#39;s indexes and suggestions on screen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A chart that cannot be drawn offers you the way back&lt;/strong&gt; — The &amp;quot;Chart rendering failed / Reconfigure&amp;quot; message was unreachable, so a configuration ECharts could not express took the result panel down with it; it appears where it was meant to now, with the toolbar and its Configure button still there.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The field pickers offer fields worth charting&lt;/strong&gt; — A field holding an object plotted as a single &lt;code&gt;[object Object]&lt;/code&gt; bar, and a field whose name merely ends in &amp;quot;at&amp;quot; — &lt;code&gt;format&lt;/code&gt;, &lt;code&gt;chat&lt;/code&gt;, &lt;code&gt;heartbeat&lt;/code&gt; — was offered as a Date and produced an empty chart with no obvious way out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chart colours follow a light theme again&lt;/strong&gt; — A custom theme whose background is written as &lt;code&gt;#fff&lt;/code&gt; rendered charts with the dark theme&amp;#39;s tooltips and grid lines, and one written as &lt;code&gt;rgb(…)&lt;/code&gt; did the reverse.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Connections&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One unreadable saved password no longer hides every connection&lt;/strong&gt; — A connection whose stored secret could not be decrypted with this machine&amp;#39;s key made the whole sidebar list fail, healthy connections and all, and it could be neither deleted nor edited because both read it first. An unreadable secret is now simply a missing one: the list renders, the field is blank, and the connection behaves like any other.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cancel really cancels&lt;/strong&gt; — Cancelling a connection test only reset the dialog while the backend kept dialling for the full timeout, and pressing Test again started a second attempt alongside the first. A hanging attempt now appears in Current operations and can be cancelled, a timed-out test closes its attempt instead of leaving it and its SSH tunnel retrying all session, and a query can be stopped while its connection is being checked.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turning a form into a connection string asks first&lt;/strong&gt; — Switching to &amp;quot;Connection String&amp;quot; with X.509, LDAP, Kerberos or AWS-IAM silently discarded those credentials on save, while the string on screen looked complete.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atlas detection reads the host, not the whole connection string&lt;/strong&gt; — A database named &lt;code&gt;mongodb.net&lt;/code&gt;, that string in a URI parameter or password, or a lookalike domain were all treated as Atlas and offered credential setup they could not use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kerberos host canonicalization is what it was set to&lt;/strong&gt; — Monghoul turned it on with a value the driver does not accept, so the host was canonicalized by CNAME instead of the intended forward-and-reverse lookup — which against a KDC that issues principals off the reverse name is the difference between a handshake that works and one that does not.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Expanding a connection that does not store its password asks for it&lt;/strong&gt; — Only the Connect action knew how to ask, so the first thing most people do to such a connection — opening it in the tree — reported &amp;quot;This connection does not store its password&amp;quot; as a plain failure with nothing to click, or, more often, said nothing at all: the row opened onto an empty list, the spinner cleared and no message appeared anywhere. Expanding now opens the same prompt Connect does and loads the databases once you have answered. Every other operation that opens a connection — syncing collections or indexes, collection statistics, schema analysis, monitoring, user management — asks the same way.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema overrides can be set back to Default&lt;/strong&gt; — Once &amp;quot;Auto Schema Analysis&amp;quot; or &amp;quot;Schema Sample Size&amp;quot; had been changed, every later save kept the old value, so a connection switched to &amp;quot;Off&amp;quot; never analysed a schema again with no way back.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cancelling a refresh keeps the details it had cached&lt;/strong&gt; — Cancelling &amp;quot;Syncing indexes&amp;quot; was ignored: the read ran to the end and blanked every index&amp;#39;s size and usage statistics while the row reported &amp;quot;Cancelled&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pasting a replica-set connection string into Individual Fields does something&lt;/strong&gt; — &lt;code&gt;mongodb://a:27017,b:27017/db?replicaSet=rs0&lt;/code&gt; — the case where the replica-set fields matter most — could not be read at all, and the paste was ignored without a word: the fields kept their old values. The first host is filled in now, the rest are named as dropped, and a string that genuinely cannot be read says so.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;quot;Show only these databases&amp;quot; with nothing listed stays that way&lt;/strong&gt; — Saving it turned the filter into &amp;quot;hide admin, config and local&amp;quot; — the opposite question — and removing all three from the ignore list put them straight back.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deleting a connection closes it&lt;/strong&gt; — Its open socket, its SSH tunnel and the password typed for this session all outlived the connection they belonged to, for the rest of the session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copying a collection to another connection picks a database that exists there&lt;/strong&gt; — Changing the target connection left the previous one&amp;#39;s database selected, creating a database of that name on the target server when the copy ran.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Databases and Collections&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Renaming a database keeps what its collections were set up with&lt;/strong&gt; — MongoDB has no rename command, so a rename is a copy, and it was copying only the documents and the indexes: a validated collection came out with no validator, a capped one came out uncapped, a view was flattened into an ordinary collection, and collation, TTL and time-series settings went the same way. All of it is carried across now, index options included, a database containing a view can be renamed at all, and collections stream in batches rather than being read into memory whole.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write protection covers the actions in the connection tree&lt;/strong&gt; — It only ever covered queries, so a write-protected connection dropped a database, dropped or cleared a collection, renamed either, or rebuilt an index from its own context menus with the same one-click confirmation as an unprotected one — while the identical &lt;code&gt;dropDatabase()&lt;/code&gt; typed into a query tab was refused. Those actions are protected now, and the backend refuses one that arrives without the confirmation, so a second window cannot go around the dialog.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An index list refreshes when the indexes change&lt;/strong&gt; — Creating, dropping or rebuilding an index re-read the indexes and stored them, then told nobody, so the list kept its old rows — in the window that made the change as much as in any other. A sync run from a second window, or by an MCP client, left every other copy of the tree stale the same way, and Rebuild now keeps every option the index had.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A database containing a view can be duplicated&lt;/strong&gt; — Duplicate failed outright with &lt;code&gt;cannot write to &amp;lt;db&amp;gt;.system.views&lt;/code&gt;, the same way Rename used to; views are now recreated as views on the copy rather than flattened into ordinary collections, and a database export stops writing a &lt;code&gt;system.views&lt;/code&gt; file no import can use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validation rules save and clear properly&lt;/strong&gt; — Clearing the validator and saving closed the modal as if the rules were gone while leaving them on the collection, &amp;quot;Insert $jsonSchema Template&amp;quot; produced a validator MongoDB refuses outright, and Remove Validation from the sidebar left the rules dialog still showing them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Import, Export and Background Tasks&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A collection copy keeps the validator, the cap and the collation&lt;/strong&gt; — Copying a collection, or duplicating a database, created each target implicitly by inserting into it, so it arrived with server defaults: a copy of a validated collection accepted the writes the original refused, and a copy of a capped one grew without bound. Neither showed up until long after the copy. The same fix means an empty collection now reaches the target at all, where a document copy alone never produced one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A copy says how many documents the target refused&lt;/strong&gt; — &amp;quot;Insert — append all documents&amp;quot; over a target that already holds some of those &lt;code&gt;_id&lt;/code&gt;s skips them, and the count was calculated and then thrown away, so a copy that landed half its rows read as a plain success.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exporting all matching documents asks first, and really ignores every limit&lt;/strong&gt; — The scope re-runs your query without your &lt;code&gt;.limit()&lt;/code&gt;, &lt;code&gt;.skip()&lt;/code&gt; or the loaded-result cap, so it can read an unbounded number of documents; that was a tooltip, and only a query that looked like it might modify data was confirmed. One dialog now covers both, before the save location is chosen. It also drops a limit written as &lt;code&gt;find({}, { limit: 10 })&lt;/code&gt;, which used to survive and write exactly ten documents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A CSV or Excel export keeps the fields that only some documents have&lt;/strong&gt; — Both took their columns from the very first document, so a later document&amp;#39;s extra field never appeared in the file — no warning, and a document count that still said everything was exported. Columns now come from a sample of the export, and a field that turns up after that sample is reported rather than dropped.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A document with &lt;code&gt;type&lt;/code&gt; and &lt;code&gt;value&lt;/code&gt; fields exports whole&lt;/strong&gt; — Exporting a query result mistook any document carrying both of those names for an internal wrapper and wrote out its &lt;code&gt;value&lt;/code&gt; alone, dropping every other field including &lt;code&gt;_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An empty object or array keeps its column&lt;/strong&gt; — A field holding &lt;code&gt;{}&lt;/code&gt; or &lt;code&gt;[]&lt;/code&gt; contributed no column at all to a CSV or Excel export, so an empty field was indistinguishable from an absent one. Dates are no longer flattened away either: a date field, at any depth, exports as its ISO string.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A headerless CSV imports into named fields&lt;/strong&gt; — With the header checkbox off, every document arrived with its fields called &lt;code&gt;&amp;quot;0&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;1&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;2&amp;quot;&lt;/code&gt; — the column indices, as strings. They are &lt;code&gt;field1&lt;/code&gt;, &lt;code&gt;field2&lt;/code&gt;, &lt;code&gt;field3&lt;/code&gt; now. The Auto-convert Types checkbox also stops promising ObjectIds, which it never produced; what it does convert is numbers, booleans, nulls, ISO dates and inline JSON.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The same file imports the same way, one collection or a whole database&lt;/strong&gt; — The two import paths carried separate copies of their type inference and had drifted: importing one collection read &lt;code&gt;1e5&lt;/code&gt; and &lt;code&gt;0x10&lt;/code&gt; as numbers, left an inline &lt;code&gt;{&amp;quot;a&amp;quot;:1}&lt;/code&gt; cell as text, turned any 24-hex string into an ObjectId, and read any Excel number between 25569 and 50000 as a date — so a quantity of 30000 was stored as a day in 2052. All of it silent, and none of it what the Auto-convert checkbox describes. Both paths now run one implementation, and a row with a stray extra cell no longer fails a whole database import.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A CSV column of identifiers stays text&lt;/strong&gt; — With type inference on, values like &lt;code&gt;order-1&lt;/code&gt;, &lt;code&gt;sku-2&lt;/code&gt; and &lt;code&gt;Q1-2024&lt;/code&gt; were read as years and imported as dates; a real date column is still detected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cancelling a task actually stops it, and is recorded as stopped&lt;/strong&gt; — Cancel only muted the progress row: the export, import, copy or generation ran to the end, so a &amp;quot;cancelled&amp;quot; export still read everything and left the complete file on disk. The work is terminated now, a cancelled export removes its incomplete file, and the operation log records the cancellation and how much made it across rather than filing a success.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A drop-then-insert import asks before it drops a write-protected collection&lt;/strong&gt; — It was the one destructive path in the app that went around write protection entirely: no confirmation, no refusal from the backend, just a red note in the form shown whether or not the target was protected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A failed export no longer deletes the file it was going to overwrite&lt;/strong&gt; — When an export failed before it had written anything, the cleanup removed the target anyway — a file the user had picked in the overwrite dialog and that this export never touched.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A background task no longer takes the backend down with it&lt;/strong&gt; — Each of these writes a log entry and records telemetry when it finishes, and a failure in that bookkeeping could stop the local server, so the app went unresponsive — with its window still open — over a task that had actually completed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A failed or silent task reports itself&lt;/strong&gt; — A failed database export or duplication reported nothing at all: the bar emptied, the row kept saying it was running, and it vanished when the row expired. A task whose worker exited without reporting left its row at &amp;quot;running&amp;quot; for the rest of the session, with the modal waiting on it never closing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A finished task stops offering Cancel&lt;/strong&gt; — A completed export lingers ten seconds so you can see its verdict and kept a Cancel button the whole time, which rewrote the task as &amp;quot;Cancelled by user&amp;quot; and contradicted the file on disk. Finished rows show a Done badge, the footer counts only what is running, and a task that finishes in under half a second no longer leaves its progress dialog on a stuck bar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generating a schema from the editor shows up in the footer&lt;/strong&gt; — The &amp;quot;autocomplete is limited&amp;quot; banner runs a real sampling analysis per collection, and it ran invisibly: no progress and no way to stop it. Each collection is a footer operation now, named after the collection and cancellable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Operation Logs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The free tier&amp;#39;s 250-entry limit is the limit it advertises&lt;/strong&gt; — The cap was applied to the page size the modal asks for, which is 50, so it never once bit: a free user paged back through every stored entry beneath a label reading &amp;quot;Free: max 250 entries&amp;quot;. How far the list reads is what changed — nothing is deleted, and your own retention setting still decides what is kept.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log trimming keeps the newest entries&lt;/strong&gt; — Timestamps are stored to the second, so when the retention limit hit a burst logged inside one second — a script in a loop, an import logging per batch — which entries survived was arbitrary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The retention setting refuses values that would break logging&lt;/strong&gt; — A fractional limit set through the API stopped every later entry from being written until it was changed back, and 0 was accepted and then behaved as 500; both are rejected now, pointing at Unlimited (-1). A value the backend refuses also stops looking as though it was saved.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The log list stops blanking itself while you read it&lt;/strong&gt; — Under a relative filter such as &amp;quot;Last Hour&amp;quot; the window boundary moved every thirty seconds, which threw away the loaded page and showed &amp;quot;Loading logs...&amp;quot; until the next round trip.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selecting a log works&lt;/strong&gt; — In multi-select mode the tick box did nothing at all, so selecting only worked by clicking the rest of the row; Escape now deselects properly too, instead of clearing the selection and immediately re-selecting the first row.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An assistant&amp;#39;s data moves are recorded&lt;/strong&gt; — The MCP &lt;code&gt;clone_database&lt;/code&gt; tool wrote no entry at all, on success, cancel or failure, while every other data-moving operation logged every run — so the largest copy an assistant can start was the one that left no trace.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Users, Roles and Monitoring&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A user-management tab that cannot load says so&lt;/strong&gt; — It painted an empty users table, as if the connection had no users, and Refresh retried everything except the read that had failed, so the tab had to be closed and reopened.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A custom role on Atlas only offers what Atlas can grant&lt;/strong&gt; — The action grid listed every self-hosted MongoDB action and the resource picker offered &amp;quot;Any resource&amp;quot;, neither of which Atlas supports, so picking one looked fine until it came back as a generic API error on save.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A role scoped to one database is refused before it reaches Atlas&lt;/strong&gt; — Creating or editing a role with a cluster-wide privilege, a privilege on another database, or an admin-only inherited role gets the same actionable message on an Atlas connection that it always got on a self-hosted one; it used to reach the Atlas API and come back as a generic error.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create Role stops offering Atlas a command Atlas rejects&lt;/strong&gt; — The form shows the equivalent &lt;code&gt;mongosh&lt;/code&gt; command, and on an Atlas-managed connection it showed &lt;code&gt;db.createRole(...)&lt;/code&gt;, which Atlas does not permit — a command you could copy, run and be refused by. The user form already declined to make that kind of claim; the role form does now too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deleting the last user-administrator asks even when the check cannot run&lt;/strong&gt; — On an account that cannot list users, the safeguard was silently absent: indistinguishable from a clean &amp;quot;this is not the last administrator&amp;quot;. It now says it could not check and asks you to confirm, as it does when it can check and the answer is yes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A self-hosted connection is no longer mistaken for Atlas&lt;/strong&gt; — Detection scanned the whole connection string for &lt;code&gt;mongodb.net&lt;/code&gt;, so a database named &lt;code&gt;mongodb.net&lt;/code&gt;, an &lt;code&gt;appName=mongodb.net&lt;/code&gt; parameter, or a lookalike host forced the connection into Atlas&amp;#39;s read-only mode with user management greyed out and no way to reach it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The health panel says when the lock queue is clear&lt;/strong&gt; — The row only appeared once something was queued, so an idle server showed nothing rather than a green row; Active Ops also gained a critical level, having previously only been able to warn.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cluster Monitor stops answering after a downgrade&lt;/strong&gt; — Only opening the tab was checked against the licence, so a monitor tab already in the workspace kept polling the server, killing operations and setting profiling levels on the free tier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A missing role is reported as one&lt;/strong&gt; — A permissions rejection in the Operations and Profiler tables sometimes showed the generic error panel instead of the &amp;quot;requires the clusterMonitor role&amp;quot; explanation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Workspace and Sidebar&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A tab, split or panel close no longer undoes itself a moment later&lt;/strong&gt; — The layout is re-read from the backend at a few ordinary moments, and a change that landed while one of those reads was in flight was put back: a tab you had just opened vanished, a split you had just made collapsed, a panel you had just closed returned.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A tab move or split can no longer wedge the workspace&lt;/strong&gt; — With two windows open, moving or splitting into a panel the other had just closed left the workspace pointing at a row that no longer existed, after which every new tab failed outright.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Closing a detached window no longer destroys its tab&lt;/strong&gt; — Every other way of closing a tab can be undone with Restore Closed Tab; the floating window&amp;#39;s own close button deleted it outright.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A detached window reopens at the size you left it&lt;/strong&gt; — On a high-DPI display it came back scaled by the display&amp;#39;s factor, so on a typical 2× laptop screen it was twice as wide and twice as tall and pushed the same distance down and right, often mostly off-screen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A tab closes the moment you close it, however you closed it&lt;/strong&gt; — Middle-clicking, &amp;quot;Close Tab&amp;quot; and &amp;quot;Close Other Tabs&amp;quot; all waited for the server first while the ✕ and the keyboard shortcut did not, so on a slow connection they read as a click that had not registered. Closing a panel also leaves one of its tabs selected, rather than showing a tab strip over a blank body.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Closing a tab stops its query&lt;/strong&gt; — A tab closed mid-run left the query going: it held its cursor open on the server for as long as it took, kept a row in Current operations named after a tab that no longer existed, and wrote its result back into the closed tab when it finished. The only way to stop it was to find it in the footer. Closing the tab cancels it now, however you close it — the ✕, the shortcut, Close Other Tabs, or deleting the connection underneath it. Closing a progress dialog still does not stop anything: an export or an import outlives the window you started it from, by design, and is cancelled from Current operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revealing a collection from anywhere reports a failure, and asks for a missing password&lt;/strong&gt; — Opening a collection from the command palette, a deep link or an assistant ran the same sync that expanding the row in the tree runs, but with no error handling: a failed sync said nothing at all and left a row that had visibly opened onto nothing, and a connection that does not store its password failed silently where clicking the row prompted for it correctly. Both paths run one implementation now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A folder can no longer be dropped inside itself&lt;/strong&gt; — The sidebar refused it but nothing behind it did, so a second window or an assistant could still make the move — after which the folder and everything inside it disappeared from the sidebar, still holding your favourites but unreachable, with the next drag freezing the window.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Removing a favourite no longer opens it&lt;/strong&gt; — The ✕ on a favourite and the pin on a pinned collection sat inside the row&amp;#39;s own click target, so one click did two things: the action you asked for, and then opening the item you had just removed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opening a favourite from the command palette does what opening it from the sidebar does&lt;/strong&gt; — Three differences, all of them the palette&amp;#39;s: a markdown favourite opened as a &lt;em&gt;query&lt;/em&gt; tab running the note&amp;#39;s own prose as code; selecting a favourite that already had a tab opened a second copy instead of switching to it; and every saved view setting — table layout, pinned columns, read preference, page size, chart — was dropped, so a favourite saved as a chart came back as a table. Both paths run one implementation now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A favourite saved from the tree view comes back as one&lt;/strong&gt; — The key-column width and expansion state were recorded on every query favourite and read back by nothing, so a favourite saved from the tree view reopened with them reset.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl/Cmd+S is no longer swallowed on tabs that cannot format&lt;/strong&gt; — The shortcut is Format Query, and it was claimed on every tab type, so on a note or the theme editor it consumed the key and did nothing — which is why the theme editor&amp;#39;s own save only worked when the cursor happened to be in a text field.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Favourites and pins reach your other windows&lt;/strong&gt; — Only deleting a favourite was announced, so a rename, a reorder or a newly saved one left every other window showing the old list until something unrelated refreshed it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Themes and Snippets&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Markdown code blocks follow your theme&lt;/strong&gt; — A single dark syntax palette was loaded for every theme, so a code block in a markdown file rendered dark-on-light under all four light themes and ignored a custom theme entirely. Code now uses the same colours the result tree and table already use for the same kinds of value.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A chart tooltip is drawn in your theme&amp;#39;s colours&lt;/strong&gt; — It picked one of two hardcoded backgrounds by dark-or-light verdict, so every light theme got the identical white tooltip and every dark one the identical near-black; the gaps between pie slices had the same problem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cluster Monitor&amp;#39;s row tints follow your theme&lt;/strong&gt; — The red, amber and blue washes marking a collection scan, a slow operation and a newly started one were fixed colours that ignored the theme they were drawn on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The theme menu still lists the built-in themes when the theme list cannot be read&lt;/strong&gt; — A failed read published an empty list, so the footer&amp;#39;s theme button opened over a menu with nothing in it: no themes, no message, no way to try again, and &amp;quot;Customize Themes…&amp;quot; gone with them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A newly installed font shows up without a restart&lt;/strong&gt; — The system font list was read once for the life of the app, and an answer with no fonts in it used to be cached and leave the pickers offering nothing at all for the rest of the session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revert after saving a copy of a built-in theme goes back to the copy&lt;/strong&gt; — It restored the built-in, so the editor lost the custom theme you had just saved and the next Save created a second copy of it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A theme that fails to apply falls back once&lt;/strong&gt; — A failure the theme itself did not cause could end with no colours written at all.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A snippet write that fails says so&lt;/strong&gt; — Adding, deleting, reordering, restoring the defaults and the autosave all swallowed their errors, so the modal looked like it had worked — which with autosave meant carrying on typing in the belief the work was saved.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A snippet saved as the default becomes the default&lt;/strong&gt; — The old default stayed flagged as well, so the app kept using it and the new one was silently ignored, and neither could be deleted afterwards because each looked like the protected default.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;MCP Server&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Limit Access covers the task list&lt;/strong&gt; — An assistant could see every operation the app had in flight regardless of the allowlist, collection names included, and could cancel or inspect one on a connection it was not allowed to touch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A restricted allowlist no longer makes history and tab search look empty&lt;/strong&gt; — Both fetched a page of results and applied the allowlist afterwards, so a page whose rows were all out of scope came back empty while plenty of matching rows sat further down — and an assistant reads an empty page as &amp;quot;there is nothing there&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The allowlist forgets databases that no longer exist&lt;/strong&gt; — A ticked database kept its name after being dropped or renamed, matching nothing, until a database with that name was created again — at which point it was reachable without anyone having ticked it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An assistant is told when nothing was there&lt;/strong&gt; — Deleting a connection, or renaming or removing a folder, that did not exist answered &amp;quot;Connection deleted&amp;quot; / &amp;quot;Folder renamed&amp;quot;, which reads exactly like having changed the one that was meant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Removing a favourite through the assistant unlinks the tabs that used it&lt;/strong&gt; — The favourite went and every tab still pointed at it, so the toolbar showed the tab as favourited and its &amp;quot;update favourite&amp;quot; button wrote to something that no longer existed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Data Generation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generated documents keep the types the collection stores&lt;/strong&gt; — An array of numbers, dates or booleans was filled with random words, and a sometimes-null field was treated as text, so a generated document did not resemble the collection it was modelled on and any index or validator over those fields rejected it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A collection with a unique index can be generated into&lt;/strong&gt; — Values for a field under a unique index were drawn at random from a few hundred words, so a run of more than a handful of documents died on a duplicate-key error and inserted nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Places generate as places&lt;/strong&gt; — A GeoJSON &lt;code&gt;coordinates&lt;/code&gt; field was filled with a random number of words, so every collection carrying a 2dsphere index refused the entire batch; points generate as a real coordinate pair now, and line strings as two of them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Elsewhere&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A setting that could not be saved says so, and puts itself back&lt;/strong&gt; — The MCP settings, every preference in the App Menu drawer, every theme save, duplicate and delete, and all five sidebar folder writes were silent about failing, so the control kept showing what you had chosen while the app had stored something else, until a restart quietly undid it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy buttons tell you when the copy failed&lt;/strong&gt; — Every &amp;quot;Copied&amp;quot; toast fired without waiting for the write, so a denied clipboard permission still reported success — the licence key, the MCP connection details, a generated schema, the builder&amp;#39;s code and the data-generator preview included.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One error message instead of two&lt;/strong&gt; — The command palette, the sidebar&amp;#39;s context menus, the export and import modals&amp;#39; file-location field, and opening Cluster Monitor or Users &amp;amp; Roles each reported a failure twice, sometimes in two different wordings, and on the free tier dropped an error toast on top of the upgrade prompt that had just opened.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A subscription that comes back restores Pro&lt;/strong&gt; — A customer whose payment failed and who passed the grace period stayed on free even after fixing it: the app asked the licence server on every start, was told the subscription was active, and did nothing with the answer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One update checker instead of two&lt;/strong&gt; — The startup check and the App Menu&amp;#39;s &amp;quot;Check for Updates&amp;quot; button each kept their own copy of everything, so pressing the button in the first few seconds ran two checks at once, installing from one left the other still offering the same version, and a lifetime plan past its update window was called &amp;quot;expired&amp;quot; in one place and &amp;quot;check failed&amp;quot; in the other.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The connection limit is enforced wherever you add one&lt;/strong&gt; — On the free tier, the keyboard shortcut and the command palette walked past the limit the sidebar&amp;#39;s own button applies, so the attempt failed at save time instead of offering the upgrade.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recording a shortcut onto Cmd/Ctrl+1–9 is refused, not silently ignored&lt;/strong&gt; — Those nine belong to &amp;quot;Go to tab 1–9&amp;quot;, which cannot be rebound, so a shortcut recorded onto one was accepted, saved, and then never fired.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The local server is reachable only from this machine&lt;/strong&gt; — Both the backend and the MCP server listened on every network interface with the access token as the only gate; the MCP port is one you choose and keep, so on an untrusted network it was visible to anyone on it. Both are now bound to loopback.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl/Cmd+E and Ctrl/Cmd+P stay out of the way while you type a note&lt;/strong&gt; — They switched a markdown note between editing and preview mid-word, and stopped working entirely under CapsLock or on a non-Latin keyboard layout.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Switching tabs quickly no longer writes errors to the log&lt;/strong&gt; — Opening or switching a tab before the previous one&amp;#39;s data arrived cancelled that request, which is routine, but the cancellation was recorded as an uncaught error, so an ordinary session filled the log file — and any diagnostics bundle sent with it — with failures that never happened.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.8.2</title><link>https://monghoul.com/releases/v1.8.2/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.8.2/</guid><description>Monghoul 1.8.2 release notes. MCP Server. Limit what AI tools can reach: A new Limit Access switch takes an allowlist of connections, or of single…</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;MCP Server&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Limit what AI tools can reach&lt;/strong&gt; — A new Limit Access switch takes an allowlist of connections, or of single databases inside them. Everything else is hidden from the assistant&amp;#39;s own listings — connections, databases, tabs, pins, favorites, operation logs — and refused if it asks for one by name.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A shorter MCP modal&lt;/strong&gt; — The static catalogue of every MCP tool is gone. What an assistant can call depends on its own tool loading and now on your access list, so the list in the modal could only ever be a half-truth; the picker took its place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Settings no longer drop sessions&lt;/strong&gt; — Toggling review mode, or editing the access list, used to restart the MCP server and disconnect whatever was talking to it. Only enabling the server or changing its port restarts it now.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Under the Hood&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A rebuilt client core&lt;/strong&gt; — Monghoul&amp;#39;s screens now run on one reactive controller tree, with each feature&amp;#39;s logic living apart from the components that draw it. Nearly every fix in this release surfaced during that rebuild rather than from a bug report.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tested against the real thing&lt;/strong&gt; — The app is now covered end to end by a suite that drives the actual interface against a real MongoDB and the real backend, so the paths you use are exercised on every change rather than approximated by mocks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Faster features from here&lt;/strong&gt; — A new feature now touches far less of the app and is much harder to break by accident, which is the point of the whole exercise: more shipped per release, and fewer regressions along the way.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Query &amp;amp; Results&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Read preference clears&lt;/strong&gt; — Picking the blank option in the toolbar&amp;#39;s read-preference dropdown now actually clears it; the tab used to keep querying the node you had just deselected, and reopening it showed the old preference again.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regex values are readable&lt;/strong&gt; — A field holding a regular expression now shows as its &lt;code&gt;/pattern/flags&lt;/code&gt; literal in the cell, in Copy Value and in search, instead of &lt;code&gt;[object Object]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generated statements run&lt;/strong&gt; — Edit Document, Clone Document and Insert Document on a document holding binary, UUID or stored-function fields now produce code that executes: binary keeps its subtype (a UUID stays a UUID) and &lt;code&gt;Code(...)&lt;/code&gt; is available in the query sandbox.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No more silent saves&lt;/strong&gt; — Inline-editing a document whose &lt;code&gt;_id&lt;/code&gt; is not an ObjectId, a string or a number used to report &amp;quot;Saved&amp;quot; while writing nothing at all; the editor now declines to open on a document it cannot address.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reliable drag reordering&lt;/strong&gt; — Two quick drag-and-drops in a row could leave the tree in an order neither drop asked for; a move is one atomic write now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refresh with the sidebar hidden&lt;/strong&gt; — The refresh-collection shortcut works whether or not the sidebar is on screen.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Command Palette&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fresh recents&lt;/strong&gt; — A tab you just closed shows up under recently closed straight away, and a restored one disappears, instead of lagging by up to five minutes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Database results reveal&lt;/strong&gt; — Selecting a database result expands its connection and focuses the row in the tree, which is what it always claimed to do.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Data Generator&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deleted fields stay deleted&lt;/strong&gt; — Removing fields from the generated-document tree no longer brings them back from the analyzed schema.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Import &amp;amp; Export&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Windows file names&lt;/strong&gt; — Choosing an import file on Windows suggested the whole file path as the target collection name; it suggests the file name now.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Collection Validation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Your edit wins&lt;/strong&gt; — A background refresh could overwrite the validator JSON you were typing and reset the unsaved-changes marker; the editor keeps your text until you save or close it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Performance&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Much faster startup&lt;/strong&gt; — Monghoul now loads about a quarter of the code it used to before drawing its window: the editor, the charting library and the markdown viewer wait until you actually open something that needs them, instead of being parsed on the way to an empty workspace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A single loading state&lt;/strong&gt; — Startup shows one loader straight through to the finished window, rather than handing off between two different spinners on the way.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your workspace arrives sooner&lt;/strong&gt; — Your connections, tabs, layout and theme are requested the moment the backend is reachable, in one round trip, while the rest of the app is still loading.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quicker backend start&lt;/strong&gt; — The local server behind the app starts faster and reports itself ready as soon as it can serve, instead of after optional work like the MCP server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modals open instantly&lt;/strong&gt; — Every modal ships in the main bundle, so opening one no longer waits on a chunk download or flashes a loading state. The code editor inside Validation Rules, Logs, Document Diff and Snippets fills in a moment after the modal appears.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tabs keep their state&lt;/strong&gt; — Switching tabs no longer rebuilds the tab you left; inactive tabs are parked, so a large result stays exactly as you left it and costs nothing while off screen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live task progress&lt;/strong&gt; — Export, import and generation progress updates promptly while a task runs and backs off when nothing is running.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Copy feedback&lt;/strong&gt; — Copying two fields within a couple of seconds no longer cuts the second &amp;quot;copied&amp;quot; tick short.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.8.1</title><link>https://monghoul.com/releases/v1.8.1/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.8.1/</guid><description>Monghoul 1.8.1 release notes. Tree View. Select multiple documents: Ctrl/Cmd+click any row to select the document it belongs to, including nested fields…</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Tree View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Select multiple documents&lt;/strong&gt; — Ctrl/Cmd+click any row to select the document it belongs to, including nested fields, so you don&amp;#39;t have to scroll back to the document header. Shift+click extends the range, Ctrl/Cmd+A selects everything on the page, and Escape clears the selection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkbox column&lt;/strong&gt; — Selecting the first document reveals a checkbox column on the left, matching Table View. Selected documents are tinted, and the tint stays visible on the sticky header while you scroll through an expanded document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bulk actions&lt;/strong&gt; — The selection bar and right-click menu now offer Copy, Show Diff, and Delete for the selected documents, exactly as in Table View. &amp;quot;Select Document&amp;quot; is also available in the context menu.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.8.0</title><link>https://monghoul.com/releases/v1.8.0/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.8.0/</guid><description>Monghoul 1.8.0 release notes. User &amp; Role Management. Manage users and roles: A new Pro &quot;Manage Users&quot; tab, opened from a connection&apos;s right-click menu…</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;User &amp;amp; Role Management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Manage users and roles&lt;/strong&gt; — A new Pro &amp;quot;Manage Users&amp;quot; tab, opened from a connection&amp;#39;s right-click menu, lists, creates, edits, and deletes MongoDB database users, with roles assigned inline and a one-click secure password generator.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom role builder&lt;/strong&gt; — Browse built-in and custom roles, and author custom roles with a resource-and-actions privilege editor (grouped, searchable actions) plus role inheritance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manage Atlas users and roles&lt;/strong&gt; — On MongoDB Atlas, connect a Project API key and manage database users and custom roles right in the same tab, including temporary (auto-expiring) users. Atlas blocks user management over the database connection, so Monghoul uses the Atlas Administration API; the project is auto-detected from your cluster and keys are stored encrypted on your device.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permission-aware&lt;/strong&gt; — The screen adapts to what the connected user can do: full management, view-only for scoped accounts, a one-click &amp;quot;Connect Atlas API keys&amp;quot; prompt on MongoDB Atlas, or a warning when the deployment has authentication disabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safe changes&lt;/strong&gt; — Role and privilege edits apply as incremental grant/revoke instead of overwriting, and deleting the last user administrator is guarded so you can&amp;#39;t lock yourself out.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.7.0</title><link>https://monghoul.com/releases/v1.7.0/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.7.0/</guid><description>Monghoul 1.7.0 release notes. App Menu. Settings moved to a drawer: clicking &quot;Monghoul v…&quot; in the footer now opens a spacious side drawer instead of a…</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;App Menu&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Settings moved to a drawer&lt;/strong&gt; — clicking &amp;quot;Monghoul v…&amp;quot; in the footer now opens a spacious side drawer instead of a cramped popover, gathering About, the update check, the GitHub link, and all your preferences in one place.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Customize Interface&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hide what you don&amp;#39;t use&lt;/strong&gt; — a new Interface section in the app menu lets you hide parts of the UI for a more minimalist workspace; your choices are saved across restarts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footer &amp;amp; sidebar&lt;/strong&gt; — independently hide footer items (background tasks, Hotkeys, Theme selector, Logs, MCP, License badge) and sidebar sections (Favorite Queries, Pinned Collections, the New Folder button).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result views &amp;amp; header&lt;/strong&gt; — turn off result view modes you never use (Tree, Table, Explain, Chart, Raw, Visual — at least one non-chart view always stays available), and hide the result header or just parts of it (view switcher, result count, Export, Fullscreen, the Load-more bar).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context menus&lt;/strong&gt; — hide secondary right-click actions across the sidebar, tabs, and result documents, such as Import/Export, Generate Data, Cluster Monitor, Split/Detach, Copy key/path, Filter by value, and Clone/Insert document.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nothing is lost&lt;/strong&gt; — hiding is non-destructive: hidden actions still work through their keyboard shortcut or the command palette where one exists.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.6.2</title><link>https://monghoul.com/releases/v1.6.2/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.6.2/</guid><description>Monghoul 1.6.2 release notes. Query. Switching connection keeps your database: Changing a query tab&apos;s connection now keeps the current database when the…</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Query&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Switching connection keeps your database&lt;/strong&gt; — Changing a query tab&amp;#39;s connection now keeps the current database when the new connection also has one with that name, instead of jumping to the first (often a system db like &lt;code&gt;admin&lt;/code&gt;). If the new connection doesn&amp;#39;t have it, the database is left empty and the query can&amp;#39;t run until you pick one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tabs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New Query Tab&lt;/strong&gt; — Fixed the &amp;quot;New Query Tab&amp;quot; item in the tab bar&amp;#39;s add (+) menu, which previously did nothing; it now opens Global Search so you can pick a collection to start querying.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.6.1</title><link>https://monghoul.com/releases/v1.6.1/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.6.1/</guid><description>Monghoul 1.6.1 release notes. Command Palette. Search your open tabs: the palette (Ctrl/Cmd+K) now finds currently-open tabs by title and query code; pick…</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Command Palette&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Search your open tabs&lt;/strong&gt; — the palette (Ctrl/Cmd+K) now finds currently-open tabs by title &lt;em&gt;and&lt;/em&gt; query code; pick one to jump straight to it (and it focuses the detached window if the tab is popped out).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Typo-tolerant fuzzy search&lt;/strong&gt; — matching is now fuzzy (e.g. &lt;code&gt;usrs&lt;/code&gt; finds &lt;code&gt;users&lt;/code&gt;) and ranked, so the best matches surface first.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;See why a result matched&lt;/strong&gt; — matched characters are highlighted in names, and when the match is inside query code a one-line code snippet appears beneath the result with the match highlighted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filter by category&lt;/strong&gt; — pills under the search box show each matching category with a live count; click one (or press Tab) to narrow results to just that category.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recents when empty&lt;/strong&gt; — opening the palette with an empty box now shows a short list of recent tabs, recently closed tabs, and favorites instead of the whole tree. Recently-closed entries show how long ago they were closed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clearer actions&lt;/strong&gt; — a footer shows the keyboard shortcuts and result count, and the selected row tells you what Enter will do (Switch to tab, Open query, Restore tab, …).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Result Viewer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Preview drawer follows pagination&lt;/strong&gt; — the JSON preview drawer (Ctrl/Cmd+I) now keeps showing the focused document after you move to another page; previously it went blank on every page past the first. When the drawer is open, paging focuses the first document of the new page so the preview always has content.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit focused document on any page&lt;/strong&gt; — Ctrl/Cmd+E now opens the edit tab for the focused row in Table view on later pages too, not just the first.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export and edit popovers work in fullscreen&lt;/strong&gt; — the Export dropdown and the inline cell-edit date picker now appear correctly when the result viewer is in fullscreen (window) mode; previously they opened hidden behind the fullscreen overlay.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Stability&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No more crashes from background errors&lt;/strong&gt; — an unexpected background error (e.g. a connection torn down mid-operation while several long-running tasks run at once) no longer takes down the whole app; it now surfaces as an error toast and keeps running.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safer database export and duplicate&lt;/strong&gt; — exporting or duplicating a database against an unreachable server now reports the failure instead of crashing the app.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.6.0</title><link>https://monghoul.com/releases/v1.6.0/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.6.0/</guid><description>Monghoul 1.6.0 release notes. Keyboard Shortcuts. Customizable shortcuts: almost every shortcut can now be remapped from the redesigned Keyboard Shortcuts…</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Keyboard Shortcuts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Customizable shortcuts&lt;/strong&gt; — almost every shortcut can now be remapped from the redesigned Keyboard Shortcuts dialog: search for a command, click its keys to record a new combination, and save. A clash with another shortcut is flagged with a reassign prompt.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reset bindings&lt;/strong&gt; — reset any single shortcut to its default, or reset all of them at once; custom bindings are saved across sessions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redesigned dialog&lt;/strong&gt; — searchable, grouped, single-line layout with platform-correct keys; the shortcut itself is the edit control — click it to start recording.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-platform panel switching&lt;/strong&gt; — moving between split panels now works on Windows and Linux (Ctrl+Alt+Arrow), not just macOS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; decoding=&quot;async&quot; src=&quot;https://raw.githubusercontent.com/Kontsedal/monghoul-public/refs/heads/main/release-assets/1.6.0-hotkeys-modal.gif&quot; alt=&quot;hotkeys modal&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Focus a collection&lt;/strong&gt; — single-click a collection in the tree to focus it; double-click still opens it in a query tab, and clicking anything else clears the focus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refresh the focused collection&lt;/strong&gt; — Ctrl/Cmd+Shift+R refreshes the focused collection&amp;#39;s stats, indexes, and schema, falling back to the active query tab&amp;#39;s collection when nothing is focused.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Format in detached windows&lt;/strong&gt; — the format shortcut now works inside detached query windows.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Markdown&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Images &amp;amp; embedded HTML in preview&lt;/strong&gt; — the markdown tab preview now renders embedded HTML, including &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tags such as screenshots pasted into the GitHub release editor (previously dropped). Wide images scale to fit the pane; scripts and unsafe URLs are sanitized out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;MCP Server&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lazily-loaded tools stay reliably callable&lt;/strong&gt; — fixed AI assistants (e.g. Claude Code) being unable to call tools turned on mid-session via the &lt;code&gt;enable_tools&lt;/code&gt; meta-tool. After a long idle period the server&amp;#39;s notification stream could go quiet and the assistant never learned the tool list had changed; the server now keeps that stream alive with a heartbeat, so newly enabled tools always become callable.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.11</title><link>https://monghoul.com/releases/v1.5.11/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.11/</guid><description>Monghoul 1.5.11 release notes. Result Viewer. Safer auto-run on open: connection-level &quot;Auto-run on open&quot; no longer fires for tabs generated from…</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Result Viewer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Safer auto-run on open&lt;/strong&gt; — connection-level &amp;quot;Auto-run on open&amp;quot; no longer fires for tabs generated from result-viewer actions (delete, edit document, edit field, insert, filter by value, unset field, clone). Previously these helper tabs could execute destructive code the moment they opened; now only tabs you explicitly open (tree double-click, command palette, favorites, pinned, snippets, &amp;quot;Open in tab&amp;quot; from logs) honor the setting.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.10</title><link>https://monghoul.com/releases/v1.5.10/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.10/</guid><description>Monghoul 1.5.10 release notes. Result Viewer. Faster document deletion: right-click &quot;Delete Document&quot; and the multi-select &quot;Delete&quot; button now open a…</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Result Viewer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Faster document deletion&lt;/strong&gt; — right-click &amp;quot;Delete Document&amp;quot; and the multi-select &amp;quot;Delete&amp;quot; button now open a confirmation dialog showing the affected &lt;code&gt;_id&lt;/code&gt;s instead of spawning a new tab with &lt;code&gt;deleteOne&lt;/code&gt; / &lt;code&gt;deleteMany&lt;/code&gt; code. Confirm to run the delete immediately; the rows are removed from the table on success.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit as query escape hatch&lt;/strong&gt; — the same confirmation modal has an &amp;quot;Edit as query&amp;quot; button that opens the generated delete code in a new tab, so power users who want to widen the filter or copy the syntax keep the old workflow one click away.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.9</title><link>https://monghoul.com/releases/v1.5.9/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.9/</guid><description>Monghoul 1.5.9 release notes. Result Viewer. Preview drawer: a persistent side panel that shows the focused document as formatted JSON. Toggle with…</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Result Viewer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Preview drawer&lt;/strong&gt; — a persistent side panel that shows the focused document as formatted JSON. Toggle with Ctrl/Cmd+I. The drawer follows the focused row in Tree and Table views, so arrowing through rows updates the content live without leaving the table. Drawer open state and width are persisted per tab.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit Document hotkey&lt;/strong&gt; — press Ctrl/Cmd+E with a row focused in Tree or Table view to open an Update Document tab pre-filled with that document, no right-click required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hotkeys modal&lt;/strong&gt; — added a Result Viewer section listing the search, copy, select-all, edit, and preview shortcuts so they&amp;#39;re discoverable without hunting through docs.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.8</title><link>https://monghoul.com/releases/v1.5.8/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.8/</guid><description>Monghoul 1.5.8 release notes. Sidebar. Collections sorted alphabetically: collections inside each database in the sidebar tree are now ordered…</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Collections sorted alphabetically&lt;/strong&gt; — collections inside each database in the sidebar tree are now ordered alphabetically by name (case-insensitive) instead of in MongoDB&amp;#39;s native return order, making it easier to scan and find what you&amp;#39;re looking for. Search-narrowed and filter-narrowed lists inherit the same order; pinned collections keep their user-controlled drag-and-drop order.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.7</title><link>https://monghoul.com/releases/v1.5.7/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.7/</guid><description>Monghoul 1.5.7 release notes. MCP. Lazy tool exposure: the MCP server now advertises only ~10 essential tools on connect instead of all 70+, cutting the…</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;MCP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lazy tool exposure&lt;/strong&gt; — the MCP server now advertises only ~10 essential tools on connect instead of all 70+, cutting the AI assistant&amp;#39;s upfront context cost by roughly 70%. The rest are grouped into categories (charts, themes, sidebar, panels, windows, schema, etc.) and stay hidden until they&amp;#39;re needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three meta-tools always available&lt;/strong&gt; — &lt;code&gt;discover_tools&lt;/code&gt; returns the catalog of hidden tools grouped by category with one-line summaries (no schemas, cheap to call), &lt;code&gt;enable_tools&lt;/code&gt; loads tools by category or by name and returns category-specific workflow tips, and &lt;code&gt;disable_tools&lt;/code&gt; hides them again to free context. &lt;code&gt;enable_tools({ categories: [&amp;#39;*&amp;#39;] })&lt;/code&gt; loads everything in one call for power users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slimmer server instructions&lt;/strong&gt; — the MCP welcome blurb dropped chart and workspace cheat-sheets in favor of pointers to the new meta-tools, saving another ~300 tokens. Chart patterns, panel tips, and other category guidance are now returned only when the relevant category is enabled.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tabs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No more forever-loading tabs after a crash&lt;/strong&gt; — if Monghoul was killed or restarted while a query was still running, the affected tab&amp;#39;s loading spinner used to be sticky on the next launch; switching to that tab would just spin. The sidecar now sweeps those orphaned execution flags on startup so the tab opens normally and you can re-run the query.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.6</title><link>https://monghoul.com/releases/v1.5.6/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.6/</guid><description>Monghoul 1.5.6 release notes. MCP. Tabs no longer get stuck loading: queries run by an AI assistant through the MCP server now reliably clear their…</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;MCP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tabs no longer get stuck loading&lt;/strong&gt; — queries run by an AI assistant through the MCP server now reliably clear their loading state in the app, even when the SSE connection drops between the start and end of a query. Previously a tab could spin forever and only recover after an app restart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto-run-on-open ignores MCP tabs&lt;/strong&gt; — connections with &amp;quot;Auto-run on open&amp;quot; enabled no longer execute the query when an MCP-created tab becomes active; auto-run is strictly limited to tabs you opened yourself.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No more cross-tab &amp;quot;duplicate variable&amp;quot; warnings&lt;/strong&gt; — declaring a &lt;code&gt;const&lt;/code&gt; (e.g. &lt;code&gt;const since = ...&lt;/code&gt;) in multiple open query tabs no longer triggers a TS2451 &amp;quot;Cannot redeclare block-scoped variable&amp;quot; or TS2300 &amp;quot;Duplicate identifier&amp;quot; squiggle. Each tab runs in its own sandbox at runtime, and the editor now matches that.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tabs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Easier to click a tab without dragging it&lt;/strong&gt; — the tab drag threshold has been raised so a normal click reliably activates the tab. Previously a few pixels of pointer movement during a click would start a drag and swallow the activation; you now have to move further before a drag kicks in.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.5</title><link>https://monghoul.com/releases/v1.5.5/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.5/</guid><description>Monghoul 1.5.5 release notes. Result Viewer. New tabs land next to their source: Tree and Table view actions that spawn a new tab (Edit Document, Edit…</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Result Viewer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New tabs land next to their source&lt;/strong&gt; — Tree and Table view actions that spawn a new tab (Edit Document, Edit Field, Delete Document, Insert Document, Filter by Value, Unset Field, Unset Field (All Documents), Clone Document, and bulk Delete N Documents) now insert the generated query immediately after the current tab instead of jumping to the end of the panel, so the new query stays adjacent to the result it came from.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export all matching documents&lt;/strong&gt; — the result-header Export dropdown now offers two scopes side by side: &lt;em&gt;Loaded results&lt;/em&gt; (the documents already fetched, same as before) and &lt;em&gt;All matching documents&lt;/em&gt;, which re-runs the tab&amp;#39;s query server-side and streams every result to disk while ignoring &lt;code&gt;.limit()&lt;/code&gt; / &lt;code&gt;.skip()&lt;/code&gt; and outer &lt;code&gt;$limit&lt;/code&gt; / &lt;code&gt;$skip&lt;/code&gt; pipeline stages. A progress modal shows the running count and lets you cancel — cancellation removes the partial file. If the code looks like it could mutate data (&lt;code&gt;update*&lt;/code&gt;, &lt;code&gt;delete*&lt;/code&gt;, &lt;code&gt;$merge&lt;/code&gt;, &lt;code&gt;$out&lt;/code&gt;, …) the app confirms before re-running so side effects don&amp;#39;t repeat silently.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.4</title><link>https://monghoul.com/releases/v1.5.4/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.4/</guid><description>Monghoul 1.5.4 release notes. Result Viewer. Date display format setting: choose how dates render in Tree and Table views from the footer&apos;s app info…</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Result Viewer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Date display format setting&lt;/strong&gt; — choose how dates render in Tree and Table views from the footer&amp;#39;s app info popover: ISO 8601, Local, Relative, or Unix milliseconds. Switching the format updates every visible cell instantly.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.3</title><link>https://monghoul.com/releases/v1.5.3/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.3/</guid><description>Monghoul 1.5.3 release notes. Editor. Autocomplete for stage body keys: typing inside $lookup: { … } now suggests from, localField, foreignField, as, let…</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autocomplete for stage body keys&lt;/strong&gt; — typing inside &lt;code&gt;$lookup: { … }&lt;/code&gt; now suggests &lt;code&gt;from&lt;/code&gt;, &lt;code&gt;localField&lt;/code&gt;, &lt;code&gt;foreignField&lt;/code&gt;, &lt;code&gt;as&lt;/code&gt;, &lt;code&gt;let&lt;/code&gt;, &lt;code&gt;pipeline&lt;/code&gt;; same for &lt;code&gt;$graphLookup&lt;/code&gt;, &lt;code&gt;$merge&lt;/code&gt;, &lt;code&gt;$unwind&lt;/code&gt;, &lt;code&gt;$bucket&lt;/code&gt;, &lt;code&gt;$geoNear&lt;/code&gt;, and the other typed stages. Sub-pipelines (&lt;code&gt;$lookup.pipeline&lt;/code&gt;, &lt;code&gt;$facet&lt;/code&gt; branches, &lt;code&gt;$unionWith.pipeline&lt;/code&gt;, &lt;code&gt;$merge.whenMatched&lt;/code&gt;) get the same completions recursively.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tabs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clone tab lands next to its source&lt;/strong&gt; — duplicating a tab (right-click → Clone Tab, or Cmd/Ctrl+D) now inserts the copy immediately after the original instead of jumping to the end of the panel, and preserves the source tab&amp;#39;s view, pinned columns, table config, and chart config.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl/Cmd+W keeps closing tabs when spammed&lt;/strong&gt; — rapid presses no longer get stuck on a stale active tab id during the close storm, so mass-closing doesn&amp;#39;t stall before the panel is empty.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.2</title><link>https://monghoul.com/releases/v1.5.2/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.2/</guid><description>Monghoul 1.5.2 release notes. Editor. Cursor lands inside find({}): opening a fresh query tab now drops the cursor between the filter braces and focuses…</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cursor lands inside &lt;code&gt;find({})&lt;/code&gt;&lt;/strong&gt; — opening a fresh query tab now drops the cursor between the filter braces and focuses the editor, so you can start typing the query right away.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quieter autocomplete after &lt;code&gt;{&lt;/code&gt;&lt;/strong&gt; — typing &lt;code&gt;{&lt;/code&gt; no longer auto-opens the suggestion menu; completions now wait for whitespace (or an explicit Ctrl+Space) after the brace, reducing noise when starting a new object literal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Query&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Auto-run on open&lt;/strong&gt; — new per-connection option in the connection modal that automatically executes a query tab&amp;#39;s code the first time the tab is opened; only fires for newly created tabs, not tabs restored on app restart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refresh collection hotkey&lt;/strong&gt; — Cmd/Ctrl+Shift+R refreshes the active tab&amp;#39;s collection stats and indexes in one go, with a loading spinner on the affected tree nodes while the sync runs.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.1</title><link>https://monghoul.com/releases/v1.5.1/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.1/</guid><description>Monghoul 1.5.1 release notes. Query. Smarter export filenames: the result-viewer export action now defaults to {tab-title}-{YYYYMMDD-HHmmss}.{ext} instead…</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Query&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Smarter export filenames&lt;/strong&gt; — the result-viewer export action now defaults to &lt;code&gt;{tab-title}-{YYYYMMDD-HHmmss}.{ext}&lt;/code&gt; instead of a static &lt;code&gt;query-results.{ext}&lt;/code&gt;, so repeated exports don&amp;#39;t overwrite each other and files are self-identifying.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.5.0</title><link>https://monghoul.com/releases/v1.5.0/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.5.0/</guid><description>Monghoul 1.5.0 release notes. Explain View. Compare candidates: a new button in the Rejected Plans section re-runs the explain with allPlansExecution…</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Explain View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compare candidates&lt;/strong&gt; — a new button in the Rejected Plans section re-runs the explain with &lt;code&gt;allPlansExecution&lt;/code&gt; verbosity and surfaces per-plan stats (Returned / Docs / Keys / time) under each rejected plan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recursive sub-pipeline rendering&lt;/strong&gt; — &lt;code&gt;$facet&lt;/code&gt;, &lt;code&gt;$unionWith&lt;/code&gt;, and &lt;code&gt;$lookup&lt;/code&gt; stages now render their inner pipelines inline as collapsible sub-blocks instead of a single opaque node, recursing all the way down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smarter index suggestions&lt;/strong&gt; — &lt;code&gt;$lookup&lt;/code&gt; suggestions now check the target collection&amp;#39;s actual indexes and hide when already covered; trailing &lt;code&gt;$sort: { _id: 1 }&lt;/code&gt; after transforming stages no longer produces bogus index recommendations; the default &lt;code&gt;_id_&lt;/code&gt; index is always treated as present.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-collection suggestion labels&lt;/strong&gt; — &lt;code&gt;$lookup&lt;/code&gt; index suggestions targeting another collection are prefixed with &lt;code&gt;↪ collection ·&lt;/code&gt; so the destination is impossible to miss.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy button on suggestions&lt;/strong&gt; — every suggested &lt;code&gt;createIndex(...)&lt;/code&gt; command now has a one-click Copy button.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grade badge tooltip&lt;/strong&gt; — the COLLSCAN / Indexed / Optimal / OK pill now has a tooltip explaining the threshold that produced it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Numbered stages&lt;/strong&gt; — pipeline stages are prefixed with &lt;code&gt;#1&lt;/code&gt;, &lt;code&gt;#2&lt;/code&gt;, … for easy reference.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full rejected-plan tree&lt;/strong&gt; — rejected plans now render the complete stage path, including &lt;code&gt;OR&lt;/code&gt; / &lt;code&gt;AND_SORTED&lt;/code&gt; / &lt;code&gt;AND_HASH&lt;/code&gt; splits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semantic stage colors&lt;/strong&gt; — red for costly work (&lt;code&gt;COLLSCAN&lt;/code&gt;, &lt;code&gt;$out&lt;/code&gt;, &lt;code&gt;$merge&lt;/code&gt;), yellow for caution (&lt;code&gt;SORT&lt;/code&gt;), green for index-backed stages, neutral for everything else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;At-a-glance meta line&lt;/strong&gt; — a summary row under the title shows &lt;code&gt;via index_name · 12 ms · 1,500 examined&lt;/code&gt; without expanding any section.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collapsible JSON&lt;/strong&gt; — long filters, accumulators, and &lt;code&gt;$search&lt;/code&gt; queries are now collapsible instead of monospace walls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clean index bounds&lt;/strong&gt; — &lt;code&gt;indexBounds&lt;/code&gt; entries no longer show double-escaped quotes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log-scaled Data Flow funnel&lt;/strong&gt; — bar heights use a log scale so small counts aren&amp;#39;t squashed next to large ones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Efficiency bar threshold ticks&lt;/strong&gt; — faint tick marks at 30% and 80% show which zone you&amp;#39;re in.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;App-wide&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OS autocorrect disabled&lt;/strong&gt; — spellcheck, autocorrect, and autocapitalize are turned off app-wide so connection strings, queries, and other technical input aren&amp;#39;t silently modified.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Window restore fixed&lt;/strong&gt; — the app now reliably restores your last window size and position on launch, including on secondary monitors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sidecar auth token&lt;/strong&gt; — the local tRPC server now requires a per-session Bearer token, preventing other processes on localhost from issuing queries against the sidecar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reveal in sidebar scroll&lt;/strong&gt; — &amp;quot;Reveal in sidebar&amp;quot; now reliably scrolls to the target item.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;More BSON constructors&lt;/strong&gt; — &lt;code&gt;BinData&lt;/code&gt;, &lt;code&gt;UUID&lt;/code&gt;, &lt;code&gt;Timestamp&lt;/code&gt;, &lt;code&gt;MinKey&lt;/code&gt;, &lt;code&gt;MaxKey&lt;/code&gt;, and &lt;code&gt;DBRef&lt;/code&gt; now work at runtime, not just in autocomplete.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shell helpers&lt;/strong&gt; — &lt;code&gt;print&lt;/code&gt;, &lt;code&gt;printjson&lt;/code&gt;, &lt;code&gt;tojson&lt;/code&gt;, and &lt;code&gt;sleep(ms)&lt;/code&gt; are now available in query tabs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accurate number-constructor hints&lt;/strong&gt; — &lt;code&gt;NumberLong&lt;/code&gt;, &lt;code&gt;NumberDecimal&lt;/code&gt;, and &lt;code&gt;Decimal128&lt;/code&gt; autocomplete now matches what actually exists at runtime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fresh library types&lt;/strong&gt; — autocomplete for faker, luxon, dayjs, and lodash is driven by real installed &lt;code&gt;.d.ts&lt;/code&gt; files, so newer methods appear and removed ones are gone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Richer BSON value types&lt;/strong&gt; — &lt;code&gt;ObjectId&lt;/code&gt;, &lt;code&gt;Binary&lt;/code&gt;, &lt;code&gt;Long&lt;/code&gt;, &lt;code&gt;Decimal128&lt;/code&gt;, &lt;code&gt;Timestamp&lt;/code&gt;, &lt;code&gt;UUID&lt;/code&gt;, and &lt;code&gt;DBRef&lt;/code&gt; values show the full class API on hover.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UUID fields typed correctly&lt;/strong&gt; — schema-analyzed UUID fields are now typed as the &lt;code&gt;UUID&lt;/code&gt; BSON class, not &lt;code&gt;string&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web APIs at runtime&lt;/strong&gt; — &lt;code&gt;URL&lt;/code&gt;, &lt;code&gt;URLSearchParams&lt;/code&gt;, &lt;code&gt;fetch&lt;/code&gt;, &lt;code&gt;crypto&lt;/code&gt;, &lt;code&gt;TextEncoder/Decoder&lt;/code&gt;, &lt;code&gt;atob/btoa&lt;/code&gt;, and &lt;code&gt;Blob&lt;/code&gt; now work in query tabs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cancellable scripts&lt;/strong&gt; — a new &lt;code&gt;abortSignal&lt;/code&gt; global lets you cancel user-owned async work (e.g. &lt;code&gt;fetch&lt;/code&gt;) when you click Stop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zod and BSON globals&lt;/strong&gt; — &lt;code&gt;z&lt;/code&gt; (Zod v4) for runtime validation and &lt;code&gt;BSON&lt;/code&gt; for Extended JSON round-trips are now available with full autocomplete.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lodash/fp and &lt;code&gt;toEJSON()&lt;/code&gt;&lt;/strong&gt; — &lt;code&gt;_fp&lt;/code&gt; exposes curried lodash, and &lt;code&gt;toEJSON()&lt;/code&gt; gives Extended JSON output as a string.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Console output panel&lt;/strong&gt; — &lt;code&gt;console.log/warn/error&lt;/code&gt; and &lt;code&gt;print&lt;/code&gt; calls are now shown in a collapsible panel above results.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.23</title><link>https://monghoul.com/releases/v1.4.23/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.23/</guid><description>Monghoul 1.4.23 release notes. Sidebar. Connection status indicator: Connections now show whether they are online or offline. Disconnected connections…</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Connection status indicator&lt;/strong&gt; — Connections now show whether they are online or offline. Disconnected connections appear dimmed in the sidebar, and the connection popover displays the current status.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Connect and disconnect from context menu&lt;/strong&gt; — Right-click a connection to explicitly connect or disconnect. The status updates instantly after running a query or using the menu action.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Detached Windows&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Query results now update&lt;/strong&gt; — Fixed detached windows not receiving server events, which caused query output to stay stale after re-running.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reattach recovery&lt;/strong&gt; — If merging a detached tab back fails, the window close button now works correctly instead of silently breaking.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tab drag preview text color&lt;/strong&gt; — Fixed the dragged tab preview showing inverted text colors (dark text on dark themes, light text on light themes).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme editor panel header&lt;/strong&gt; — Aligned the theme editor header height to match the tabs panel for a consistent look.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.22</title><link>https://monghoul.com/releases/v1.4.22/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.22/</guid><description>Monghoul 1.4.22 release notes. Editor. Autocomplete accepts on Enter and Tab: Both Enter and Tab now accept autocomplete suggestions, so you can use…</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autocomplete accepts on Enter and Tab&lt;/strong&gt; — Both Enter and Tab now accept autocomplete suggestions, so you can use whichever feels natural.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smarter suggestion timing&lt;/strong&gt; — Autocomplete suggestions no longer appear while typing continuously; they only show after a boundary character (space, bracket, colon, etc.) or a trigger character like &lt;code&gt;$&lt;/code&gt; or &lt;code&gt;{&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comma no longer triggers suggestions&lt;/strong&gt; — Typing a comma and pressing Enter now inserts a newline instead of accepting an unwanted suggestion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;$exists: 0&lt;/code&gt; no longer flagged as error&lt;/strong&gt; — The editor now correctly accepts numeric values for &lt;code&gt;$exists&lt;/code&gt;, matching MongoDB&amp;#39;s actual behavior.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.21</title><link>https://monghoul.com/releases/v1.4.21/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.21/</guid><description>Monghoul 1.4.21 release notes. Aggregation Builder. Capped stage width: Pipeline stages no longer stretch edge-to-edge on wide screens. Stages are now…</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Aggregation Builder&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Capped stage width&lt;/strong&gt; — Pipeline stages no longer stretch edge-to-edge on wide screens. Stages are now capped at 900px and centered, keeping the builder comfortable to read on large monitors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formatted code on editor switch&lt;/strong&gt; — Switching from the visual builder to the code editor now auto-formats the generated pipeline with Prettier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Snippet field reference fix&lt;/strong&gt; — All autocomplete snippets now produce correct MongoDB syntax. Field references use &lt;code&gt;$field&lt;/code&gt; and variable references use &lt;code&gt;$$var&lt;/code&gt;, fixing a systemic escaping bug that doubled the &lt;code&gt;$&lt;/code&gt; prefix on field paths.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Select dropdown positioning fix&lt;/strong&gt; — Dropdowns that open upward now align to the select button instead of its label. Previously the dropdown would float too high when the select had a label above it, most noticeably in chart view configuration.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.20</title><link>https://monghoul.com/releases/v1.4.20/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.20/</guid><description>Monghoul 1.4.20 release notes. Editor. Schema analysis opt-out: Auto schema analysis can now be disabled globally or per connection. A global toggle and…</description><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Schema analysis opt-out&lt;/strong&gt; — Auto schema analysis can now be disabled globally or per connection. A global toggle and sample size selector (50/100/500 docs) are available in the footer app info popover and the no-connections welcome screen. Each connection can override the global default via the Advanced tab in the connection modal (Default/On/Off). When disabled, the schema banner still appears and analysis can be triggered manually.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Connection Modal&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SRV support in form mode&lt;/strong&gt; — A new &amp;quot;SRV record&amp;quot; checkbox enables mongodb+srv:// connections in form mode. The port field hides automatically since SRV resolves it via DNS. Switching from a pasted SRV URI to form mode auto-enables the toggle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bidirectional URI ↔ form sync&lt;/strong&gt; — Switching from form mode back to URI mode now rebuilds the URI from form fields. Previously it showed a stale URI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Password always saved (encrypted)&lt;/strong&gt; — Passwords are now AES-256-GCM encrypted at rest using a device-bound key. The &amp;quot;Save password&amp;quot; checkbox has been removed since credentials are always stored securely.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No Connections redesign&lt;/strong&gt; — Cleaner layout with a preferences card grouping all settings in a 2-column grid, keyboard shortcut embedded in the button, and schema sample size on its own row.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.19</title><link>https://monghoul.com/releases/v1.4.19/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.19/</guid><description>Monghoul 1.4.19 release notes. Sidebar. Collapse to zero: The sidebar can now be dragged all the way to zero width. A chevron indicator appears at narrow…</description><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Collapse to zero&lt;/strong&gt; — The sidebar can now be dragged all the way to zero width. A chevron indicator appears at narrow widths so the panel is never visually lost. Drag the handle back to restore. This is independent from the Ctrl+B toggle which fully hides the sidebar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Query&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aggregation builder state restored on restart&lt;/strong&gt; — Switching to the aggregation builder, closing the app, and reopening no longer shows a stale &amp;quot;code mode&amp;quot; toggle in the toolbar. The button now correctly reflects the persisted builder state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responsive aggregation builder&lt;/strong&gt; — The builder toolbar and stage cards now adapt to narrow panel widths. Labels, descriptions, and the code preview panel collapse automatically below 550px so the pipeline remains usable in tight layouts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Licensing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;More generous free tier&lt;/strong&gt; — Connections increased from 5 to 8, tab limit removed entirely, multi-panel layout and sidebar folders are now available on the free tier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monghoul Light theme refresh&lt;/strong&gt; — Reworked the light theme with warm sage-tinted surfaces and green-branded selection and hover states instead of generic blue-gray. The editor, result viewer, scrollbars, and borders all match the green identity now.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.18</title><link>https://monghoul.com/releases/v1.4.18/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.18/</guid><description>Monghoul 1.4.18 release notes. Tree View. Persistent column width: The key/value column split in Tree View now persists across query re-runs and app…</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Tree View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Persistent column width&lt;/strong&gt; — The key/value column split in Tree View now persists across query re-runs and app restarts. The width is saved per tab and included when saving or syncing favorite queries.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Customizable snippets&lt;/strong&gt; — Collection context menu snippets and the default query opened on double-click are now fully configurable. Open the settings modal via Snippets &amp;gt; Customize in the context menu to add, remove, drag-to-reorder, and edit snippets with a Monaco editor. Changes auto-save and code is auto-formatted with Prettier. Star a snippet to make it the default query. Restore Defaults brings back the built-in set with a confirmation prompt.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;$lookup field resolution&lt;/strong&gt; — After a &lt;code&gt;$lookup&lt;/code&gt; stage, autocomplete suggests nested field paths from the foreign collection&amp;#39;s schema (e.g. &lt;code&gt;customer.name&lt;/code&gt;, &lt;code&gt;customer.address.city&lt;/code&gt;). Pipeline-form &lt;code&gt;$lookup&lt;/code&gt; narrows suggestions to the sub-pipeline output. Foreign collections are auto-analyzed in the background when detected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$replaceRoot / $replaceWith awareness&lt;/strong&gt; — Subsequent stages see the correct fields after a &lt;code&gt;$replaceRoot&lt;/code&gt; with a field reference or object literal, including through &lt;code&gt;$lookup&lt;/code&gt; + &lt;code&gt;$unwind&lt;/code&gt; + &lt;code&gt;$replaceRoot&lt;/code&gt; chains.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$facet sub-pipeline tracking&lt;/strong&gt; — Each &lt;code&gt;$facet&lt;/code&gt; branch&amp;#39;s output fields are tracked and nested under the branch name (e.g. &lt;code&gt;byCategory._id&lt;/code&gt;, &lt;code&gt;byCategory.count&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$group._id sub-fields&lt;/strong&gt; — Object &lt;code&gt;_id&lt;/code&gt; expressions like &lt;code&gt;{ year: { $year: &amp;quot;$date&amp;quot; }, month: ... }&lt;/code&gt; expose &lt;code&gt;_id.year&lt;/code&gt; and &lt;code&gt;_id.month&lt;/code&gt; in subsequent stages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$unionWith schema merging&lt;/strong&gt; — Fields from the other collection appear in autocomplete after &lt;code&gt;$unionWith&lt;/code&gt;, with optional pipeline narrowing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$sortByCount reshaping&lt;/strong&gt; — Correctly recognized as producing &lt;code&gt;_id&lt;/code&gt; and &lt;code&gt;count&lt;/code&gt; fields instead of passing through the original document shape.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stage-aware auto schema analysis&lt;/strong&gt; — Collections referenced in &lt;code&gt;$lookup.from&lt;/code&gt;, &lt;code&gt;$graphLookup.from&lt;/code&gt;, &lt;code&gt;$unionWith&lt;/code&gt;, &lt;code&gt;$merge.into&lt;/code&gt;, and &lt;code&gt;$out&lt;/code&gt; are auto-analyzed for schema, including in the visual aggregation builder.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Query&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Explain result preserved in fullscreen&lt;/strong&gt; — Clicking the fullscreen button in the result viewer no longer resets an explain result back to the previous query output.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Under the Hood&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AST-based autocomplete engine&lt;/strong&gt; — Replaced hand-written character-by-character parsers with an acorn-loose AST module. Single parse per keystroke instead of multiple redundant scans. More maintainable and easier to extend.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.17</title><link>https://monghoul.com/releases/v1.4.17/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.17/</guid><description>Monghoul 1.4.17 release notes. Tree View. Resizable key/value columns: The KEY and VALUE columns in Tree View now have a visible border delimiter and a…</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Tree View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resizable key/value columns&lt;/strong&gt; — The KEY and VALUE columns in Tree View now have a visible border delimiter and a draggable resize handle, matching the Table View experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enter key no longer hijacks newlines&lt;/strong&gt; — Pressing Enter in the query or stage editor now always inserts a newline instead of accepting the autocomplete suggestion. Use Tab to accept suggestions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correct field suggestions in $match&lt;/strong&gt; — Typing a key inside a $match stage no longer suggests &amp;quot;$field&amp;quot; references; plain field names are shown instead.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Query&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default result view&lt;/strong&gt; — Right-click the Table or Tree button in the result header to set it as the default view for all new queries. Choose &amp;quot;Reset to auto-detect&amp;quot; to go back to the automatic behavior.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-page setting persists&lt;/strong&gt; — The documents-per-page selection in the result viewer is now properly restored when switching tabs or reloading the app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accurate execution timer&lt;/strong&gt; — The query execution timer now starts from the server-side timestamp instead of when the client first notices the loading state.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Correct collection sizes&lt;/strong&gt; — Collection size now shows the on-disk (compressed) size. Previously displayed the uncompressed logical size which could be several times larger.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.16</title><link>https://monghoul.com/releases/v1.4.16/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.16/</guid><description>Monghoul 1.4.16 release notes. Status Bar. Accurate RAM display: Memory indicator now shows the same value as Activity Monitor on macOS, including WebView…</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Status Bar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accurate RAM display&lt;/strong&gt; — Memory indicator now shows the same value as Activity Monitor on macOS, including WebView and helper processes that were previously invisible. On Windows and Linux, grandchild processes (e.g. WebView2 renderer/GPU) are now counted too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplified RAM styling&lt;/strong&gt; — Removed the warning/error color thresholds from the memory indicator since they no longer apply with accurate whole-app numbers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Timer cleanup&lt;/strong&gt; — Fixed several fire-after-unmount issues in sidebar navigation and hover preview timers that could cause unnecessary work when switching views rapidly.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.15</title><link>https://monghoul.com/releases/v1.4.15/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.15/</guid><description>Monghoul 1.4.15 release notes. Search. Off-thread indexing: Search indexes are now built in a Web Worker so the UI never freezes, even with 10,000+…</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Search&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Off-thread indexing&lt;/strong&gt; — Search indexes are now built in a Web Worker so the UI never freezes, even with 10,000+ documents. The index is built lazily on first search and cached until results change.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Table View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Faster search&lt;/strong&gt; — Search now uses a pre-built index instead of recursively walking every document on each keystroke. Typing in the search bar feels instant even with thousands of documents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smarter column discovery&lt;/strong&gt; — Column headers are now cached across pages, so switching pages no longer re-scans every document for column names.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smoother row rendering&lt;/strong&gt; — Fixed a subtle issue where search results caused every visible row to re-render even when nothing changed, by stabilizing internal match references.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capped nested expansion&lt;/strong&gt; — Expanding a cell with a large array or object now shows the first 50 items with a &amp;quot;Show more&amp;quot; button, preventing the UI from freezing on deeply nested structures.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tree View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Faster search&lt;/strong&gt; — Same pre-built search index powers Tree view search, replacing the expensive recursive matching that could stall on large or deeply nested documents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Faster cross-page navigation&lt;/strong&gt; — Jumping to the next/previous page with matches now uses the search index instead of scanning every document on every page.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.14</title><link>https://monghoul.com/releases/v1.4.14/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.14/</guid><description>Monghoul 1.4.14 release notes. Result Views. Inline JSON previews: Objects and arrays in Table and Tree views now show syntax-highlighted content instead…</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Result Views&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Inline JSON previews&lt;/strong&gt; — Objects and arrays in Table and Tree views now show syntax-highlighted content instead of generic &amp;quot;Object{3}&amp;quot; / &amp;quot;Array[3]&amp;quot; labels. Keys, strings, numbers, dates, and ObjectIds are each colored by type, with graceful truncation and item counts for long values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Syntax-highlighted hover popover&lt;/strong&gt; — Hovering over a complex cell in Table view shows a larger, properly indented JSON preview with full syntax coloring — replaces the old plain-text popup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fullscreen for all views&lt;/strong&gt; — The fullscreen button now appears on every view type, including Explain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quieter type badges&lt;/strong&gt; — Tree view type badges are now borderless and subtler, reducing visual clutter next to the colorful JSON previews.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Softer focus indicators&lt;/strong&gt; — Active cell/row highlight in Table and Tree views uses a subtle primary border instead of a bold outline.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Striped Tree view&lt;/strong&gt; — Rows now alternate background color by row index for easier scanning.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Keyboard Shortcuts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ctrl+S formats code&lt;/strong&gt; — The familiar save shortcut now formats the active tab&amp;#39;s code with Prettier. Works both inside the editor and globally.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl+Shift+S saves favorite&lt;/strong&gt; — Save/update favorite moved here to make room for format.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.13</title><link>https://monghoul.com/releases/v1.4.13/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.13/</guid><description>Monghoul 1.4.13 release notes. Result Viewer. Collapsible result panel: The result panel can now be resized all the way down to nearly zero. Pagination…</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Result Viewer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Collapsible result panel&lt;/strong&gt; — The result panel can now be resized all the way down to nearly zero. Pagination hides when the panel is short, and a minimal &amp;quot;N results&amp;quot; indicator appears when fully collapsed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Index suggestions moved up&lt;/strong&gt; — In the Explain view, suggested indexes now appear right after the summary metrics instead of below the execution plan, so you see them immediately.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Aggregation Builder&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pretty-formatted stages&lt;/strong&gt; — Switching from code to builder mode now formats the parsed stage bodies with Prettier and clean 2-space indentation, instead of showing them as dense single-line blobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live editor code&lt;/strong&gt; — The builder now reads the current editor content when switching modes, not the last-saved database value. Unsaved edits are parsed correctly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;MCP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatic session recovery&lt;/strong&gt; — When a session expires (app restart, timeout), the server silently creates a new one instead of returning &amp;quot;Server not initialized&amp;quot; errors. Tool calls go through seamlessly without needing to reconnect.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Date Helper&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Timezone-aware presets&lt;/strong&gt; — Date presets (Today, This Week, etc.) now use the local timezone instead of UTC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Year input&lt;/strong&gt; — Replaced the year dropdown with a text input for faster navigation to any year.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent range calendars&lt;/strong&gt; — From/To calendars in range mode navigate independently instead of being locked together.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.12</title><link>https://monghoul.com/releases/v1.4.12/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.12/</guid><description>Monghoul 1.4.12 release notes. Result Viewer. Compact data views: Tree view and table view are now denser with consistent font sizes across both views…</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Result Viewer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compact data views&lt;/strong&gt; — Tree view and table view are now denser with consistent font sizes across both views. Content font reduced to 12px, headers to 10px, and row heights tightened for more visible data per screen.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Charts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Field selector shows options on click&lt;/strong&gt; — The Y-Axis and Group By field dropdowns now show all available fields immediately when focused, instead of requiring you to start typing first.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dropdown positioning&lt;/strong&gt; — Field selector dropdowns no longer appear far from the input when flipping above due to lack of space below.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Better empty state&lt;/strong&gt; — When selected fields produce no chartable data, the preview now says so explicitly and suggests switching to &amp;quot;count&amp;quot; aggregation, instead of showing the generic &amp;quot;Select fields&amp;quot; message.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Date interval detection&lt;/strong&gt; — Easy mode now correctly re-detects the suggested date interval when switching between date fields.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Date aggregation reset&lt;/strong&gt; — In Advanced mode, switching to a different date X-axis field re-enables date aggregation even if it was previously disabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scatter trend lines&lt;/strong&gt; — Scatter charts now have a &amp;quot;Trend Line&amp;quot; checkbox in Advanced mode that overlays a linear regression line on each series. Works with both numeric and categorical X axes.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.11</title><link>https://monghoul.com/releases/v1.4.11/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.11/</guid><description>Monghoul 1.4.11 release notes. MCP. Sync tools return data: sync_databases, sync_collections, and sync_indexes now return the actual database names…</description><pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;MCP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sync tools return data&lt;/strong&gt; — &lt;code&gt;sync_databases&lt;/code&gt;, &lt;code&gt;sync_collections&lt;/code&gt;, and &lt;code&gt;sync_indexes&lt;/code&gt; now return the actual database names, collection names, and index details instead of a generic success message. No more extra round-trip to &lt;code&gt;list_connections&lt;/code&gt; after syncing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live editor sync&lt;/strong&gt; — When an agent updates a tab&amp;#39;s code via MCP, the editor now reflects the change immediately instead of staying on the old content.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Leaner responses&lt;/strong&gt; — Trimmed agent instructions, removed pretty-printed JSON, and slimmed down &lt;code&gt;list_connections&lt;/code&gt; output. Typical sessions use significantly fewer tokens.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Removed unnecessary tools&lt;/strong&gt; — &lt;code&gt;get_license_status&lt;/code&gt; and &lt;code&gt;get_collection_schemas&lt;/code&gt; have been removed. MCP only works on the Pro tier, so license checks are redundant. Schema analysis should use &lt;code&gt;analyze_schema&lt;/code&gt; directly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Result Viewer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Small panel detection in tab fullscreen&lt;/strong&gt; — The result header now correctly switches to compact mode when the panel is narrow, even in tab fullscreen. Previously it was forced to full-width mode regardless of actual panel size.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.10</title><link>https://monghoul.com/releases/v1.4.10/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.10/</guid><description>Monghoul 1.4.10 release notes. Table View. Sort clears selection: Changing the sort column or direction now clears the row selection and focused cell…</description><pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sort clears selection&lt;/strong&gt; — Changing the sort column or direction now clears the row selection and focused cell, preventing stale selections that pointed to wrong rows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Column resize stability&lt;/strong&gt; — Fixed a rare crash when resizing columns.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Select dropdown positioning&lt;/strong&gt; — Dropdown menus no longer appear far above their trigger when there isn&amp;#39;t enough space below.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.9</title><link>https://monghoul.com/releases/v1.4.9/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.9/</guid><description>Monghoul 1.4.9 release notes. Inline Editing. Date picker popover: Editing a Date field now opens a calendar with time spinners and quick presets (Now…</description><pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Inline Editing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Date picker popover&lt;/strong&gt; — Editing a Date field now opens a calendar with time spinners and quick presets (Now, Today, Yesterday, Start of week, 1st of month, 1st of year) instead of requiring you to type an ISO string by hand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timezone support&lt;/strong&gt; — The date picker includes a timezone selector so you can view and edit dates in any timezone, not just UTC.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Themed calendar dropdowns&lt;/strong&gt; — Month and year selectors in both the inline date editor and the query toolbar Date Helper now use the app&amp;#39;s themed dropdowns instead of unstyled native browser selects.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Context Menus&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consistent field actions&lt;/strong&gt; — Right-clicking a field in Tree View now shows Insert Document, Copy Document, and all other document-level actions that were previously only on the document header row.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Expanded panel menu&lt;/strong&gt; — The Table View expanded panel (nested data viewer) now has the full context menu: Filter by Value, Unset Field, Copy Document, Clone, Insert, Edit, and Delete Document.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Aggregation Builder&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prominent Add Stage button&lt;/strong&gt; — The empty state now leads with a solid primary-colored Add Stage button at the top, with templates below.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preview safety limit&lt;/strong&gt; — Disabling &amp;quot;Preview safety limit&amp;quot; now actually removes the 200-document cap, allowing previews up to 1,000 documents.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Query Toolbar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Date Helper timezone fix&lt;/strong&gt; — The time spinners now correctly represent wall-clock time in the selected timezone instead of always using your local timezone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Date Helper navigation&lt;/strong&gt; — Selecting a preset or picking a date now navigates the calendar to the correct month.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time input fix&lt;/strong&gt; — Typing two-digit values (e.g. &amp;quot;22&amp;quot;) into time spinners no longer splits into separate digits.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Snippets&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Runnable snippets&lt;/strong&gt; — All code snippets in the collection context menu now use concrete values and real helper calls (faker, dayjs, luxon) instead of placeholder comments.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tabs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Middle-click to close&lt;/strong&gt; — Middle-clicking a tab to close it now works reliably&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.8</title><link>https://monghoul.com/releases/v1.4.8/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.8/</guid><description>Monghoul 1.4.8 release notes. Table View. Persistent column state: Column order, widths, sort, and pinned state are now saved per tab and restored when…</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Persistent column state&lt;/strong&gt; — Column order, widths, sort, and pinned state are now saved per tab and restored when you reopen the app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit Field in New Tab&lt;/strong&gt; — Right-click any array or object value to open it in a dedicated tab with an &lt;code&gt;updateOne&lt;/code&gt; query targeting that field.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Context Menus&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Filter, Unset, Clone&lt;/strong&gt; — New context menu actions: filter by a value, unset a field (single doc or all docs), and clone a document. Available in both Tree View and Table View.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistent structure&lt;/strong&gt; — Context menus now follow the same section order across all views, with clear separators between edit, field, copy, and document actions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compact sub-menus&lt;/strong&gt; — Sub-menus are more compact and position correctly on first open.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Favorites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Table state in favorites&lt;/strong&gt; — Saving a favorite query now includes the table configuration, so your column layout is restored when you open it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compact result headers&lt;/strong&gt; — Empty or minimal result views use a compact inline header instead of a large centered icon.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.7</title><link>https://monghoul.com/releases/v1.4.7/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.7/</guid><description>Monghoul 1.4.7 release notes. Updates. In-app update install: The &quot;Check for Updates&quot; button in the App Info popover now downloads and installs the update…</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Updates&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;In-app update install&lt;/strong&gt; — The &amp;quot;Check for Updates&amp;quot; button in the App Info popover now downloads and installs the update directly, then relaunches. Previously it only opened the GitHub release page.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tabs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New Query Tab fixed&lt;/strong&gt; — The &amp;quot;New Query Tab&amp;quot; menu item now correctly opens the command palette. Previously it silently failed due to a missing keyboard event property.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.6</title><link>https://monghoul.com/releases/v1.4.6/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.6/</guid><description>Monghoul 1.4.6 release notes. Table view. Headers: remove the column type badges.</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Table view&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Headers&lt;/strong&gt; — remove the column type badges&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.5</title><link>https://monghoul.com/releases/v1.4.5/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.5/</guid><description>Monghoul 1.4.5 release notes. Licensing. Payments: Unlocked the purchase functionality, now you can buy a PRO plan. Downgrade notifications: When your…</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Licensing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Payments&lt;/strong&gt; — Unlocked the purchase functionality, now you can buy a PRO plan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Downgrade notifications&lt;/strong&gt; — When your license is downgraded (refund, payment failure, cancellation, trial expiry), a toast notification explains why, and the License Modal shows a persistent notice with the reason.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved License Modal&lt;/strong&gt; — Subscription info and management actions are now a single unified card instead of separate sections. Actions styled as clean text links. Subscription ID or license key shown with click-to-copy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Code formatting&lt;/strong&gt; — New floating format button (Shift+Alt+F) auto-formats your code with Prettier. MongoDB method chains are broken onto separate lines for readability. Generated code in new tabs is also auto-formatted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Line numbers on narrow panels&lt;/strong&gt; — Line numbers automatically hide when the editor panel is too narrow (&amp;lt;350px) to save space.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Aggregation Builder&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New stages&lt;/strong&gt; — Added support for &lt;code&gt;$search&lt;/code&gt;, &lt;code&gt;$vectorSearch&lt;/code&gt;, and &lt;code&gt;$searchMeta&lt;/code&gt; in both the aggregation builder and explain view.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Undo/redo stability&lt;/strong&gt; — Fixed a bug where switching a stage&amp;#39;s operator after editing its body could silently discard your edits if triggered by undo/redo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Query Toolbar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Responsive compaction&lt;/strong&gt; — The toolbar now progressively hides elements as the panel shrinks: button labels disappear first, then the date helper, then connection/database selectors. Run, Explain, and favorites always stay visible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Favorites always right-aligned&lt;/strong&gt; — The favorite button stays pinned to the right edge even when the toolbar wraps to multiple lines.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Date Helper&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Curated timezones&lt;/strong&gt; — Replaced the overwhelming 400+ timezone list with 58 hand-picked entries covering all major cities, plus raw UTC offset entries (UTC-12 through UTC+14). Added a &amp;quot;Local Time&amp;quot; option that uses your system timezone.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Table View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Focused cell fix&lt;/strong&gt; — The focus indicator no longer bleeds through pinned columns when scrolling horizontally.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit input styling&lt;/strong&gt; — Consistent height and border radius across all inline edit inputs (text, boolean select, null display, enum combobox).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Add connection button&lt;/strong&gt; — Moved to the Connections section header. Appears on hover alongside the &amp;quot;New folder&amp;quot; button.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Section hover actions&lt;/strong&gt; — Header action buttons now appear when hovering anywhere in the section, not just the header itself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl+F sidebar filter&lt;/strong&gt; — Pressing Ctrl+F while the cursor is over the sidebar activates the tree filter instead of browser find.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pinned collection colors&lt;/strong&gt; — Pinned collections now use the same default color as the connection tree when no custom color is set.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Theme Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Color highlight on hover&lt;/strong&gt; — Hovering a color swatch in the theme editor flashes the corresponding CSS variable across the entire UI, so you can instantly see which elements use that color.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Toasts moved to bottom-right&lt;/strong&gt; — Notifications now appear above the footer bar instead of the top-right corner, avoiding overlap with window controls and editor indicators.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.4</title><link>https://monghoul.com/releases/v1.4.4/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.4/</guid><description>Monghoul 1.4.4 release notes. Themes. Ink and Paper: Two new high-contrast monochrome themes. Ink is pure black with white text, Paper is pure white with…</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Themes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ink and Paper&lt;/strong&gt; — Two new high-contrast monochrome themes. Ink is pure black with white text, Paper is pure white with black text. Both use grayscale for all UI elements with vivid semantic colors only for errors, warnings, and success states.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme-aware colors&lt;/strong&gt; — Replaced hardcoded colors across the app with theme variables. Sidebar icons, toolbar buttons, tab indicators, boolean toggles, aggregation builder stages, and update banners all now respond to the active theme.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Query&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cancel during connect&lt;/strong&gt; — The Stop button now works even while MongoDB is still connecting, instead of blocking until the 30-second timeout.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compact result header&lt;/strong&gt; — Tighter padding, flat view switcher tabs, and scan badge visible on small panels. Recovers ~14px of vertical space.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compact pagination&lt;/strong&gt; — Simplified from a multi-element toolbar to a minimal inline bar. Page size is now a click-to-edit text button with presets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Table View&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resize handle overlap&lt;/strong&gt; — Column resize handles no longer bleed through pinned columns during horizontal scrolling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Expanded panel cleanup&lt;/strong&gt; — Removed duplicate header from the expanded document panel and reduced tree indent from 16px to 10px per level.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sidebar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No native tooltips&lt;/strong&gt; — Removed browser-native title tooltips from tree items, stat badges, and validation badges. Button tooltips are kept.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;MCP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Connection stability&lt;/strong&gt; — MCP sessions now survive app restarts (auto-recovers stale sessions), idle timeout increased to prevent silent disconnects, and session TTL extended from 30 minutes to 4 hours.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Footer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;App info rework&lt;/strong&gt; — The Monghoul version popover now includes a manual &amp;quot;Check for Updates&amp;quot; button and a GitHub link for bug reports. Settings are grouped under a &amp;quot;Preferences&amp;quot; label.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Toolbar buttons&lt;/strong&gt; — Simplified button styles, removed heavy shadows, and added pointer cursor globally for all non-disabled buttons.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;macOS auto-update&lt;/strong&gt; — Fixed signature mismatch on universal builds by producing architecture-specific filenames for each platform.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.3</title><link>https://monghoul.com/releases/v1.4.3/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.3/</guid><description>Monghoul 1.4.3 release notes. Query. Execution timer: A live elapsed timer now appears below the spinner while a query is running, giving immediate…</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Query&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Execution timer&lt;/strong&gt; — A live elapsed timer now appears below the spinner while a query is running, giving immediate feedback on long-running queries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smarter schema banner&lt;/strong&gt; — The &amp;quot;Generating schema...&amp;quot; banner no longer flashes for fast analyses — it only appears after 3 seconds. Empty collections show a clear &amp;quot;no documents&amp;quot; message instead of a misleading &amp;quot;Schema not found&amp;quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Font jump fix&lt;/strong&gt; — Use theme font settings in Monaco initial options instead of hardcoded values. Eliminates horizontal text shift on tab open and theme change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IntelliSense badge flash fix&lt;/strong&gt; — Skip the loading/ready badge when schema types are already cached (tab move, split, clone). Badge only shows on genuinely cold starts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;UI Polish&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drag window from tab bar&lt;/strong&gt; — Click and drag empty space in the tab bar to move the window — no need to aim for the narrow title bar area.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cleaner app loader&lt;/strong&gt; — Compact animated logo with a smooth fade-in. Removed the fake progress bar and &amp;quot;Starting&amp;quot; text.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Polished scrollbars&lt;/strong&gt; — Unified scrollbar styles using theme tokens. Thinner, fully rounded, expand on hover. Track invisible by default, subtle on hover.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sticky DB header shadow&lt;/strong&gt; — Sticky database headers in the connection tree now show a subtle gradient shadow when stuck on scroll.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boolean select border&lt;/strong&gt; — Fixed a double border on the boolean value dropdown in the inline field editor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scroll shadows&lt;/strong&gt; — Header shadow appears when scrolled&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.2</title><link>https://monghoul.com/releases/v1.4.2/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.2/</guid><description>Monghoul 1.4.2 release notes. Explain View: Rebuilt. Works for any query including aggregation pipelines. Performance grade badge, summary metrics, full…</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;Explain View — Rebuilt&lt;/h3&gt;
&lt;p&gt;Works for &lt;strong&gt;any query&lt;/strong&gt; including aggregation pipelines. Performance grade badge, summary metrics, full aggregation pipeline visualization with per-stage details and document flow, data flow funnel, and actionable performance insights.&lt;/p&gt;
&lt;h3&gt;Index Suggestions from Explain&lt;/h3&gt;
&lt;p&gt;Detects missing indexes and suggests optimal compound indexes following the ESR rule. One-click &lt;strong&gt;Create&lt;/strong&gt; button opens the Create Index modal pre-filled with the suggested fields.&lt;/p&gt;
&lt;h3&gt;Create Index Modal — Refreshed&lt;/h3&gt;
&lt;p&gt;Reorder buttons for field priority, live &lt;code&gt;createIndex()&lt;/code&gt; preview, and pre-fill support from explain suggestions.&lt;/p&gt;
&lt;h3&gt;Bug Fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed &amp;quot;Manage License&amp;quot; block showing for trial users instead of upgrade options&lt;/li&gt;
&lt;li&gt;Fixed cluster monitor tab shifting in the tab bar on every poll cycle&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.1</title><link>https://monghoul.com/releases/v1.4.1/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.1/</guid><description>Monghoul 1.4.1 release notes. Favorites. Full view state saved with favorites: saving a query to favorites now preserves chart configuration, view type…</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Favorites&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Full view state saved with favorites — saving a query to favorites now preserves chart configuration, view type, pinned columns, page size, and read preference. Opening a favorite restores the exact view you had, charts included.&lt;/li&gt;
&lt;li&gt;MCP save_favorite_query tool now accepts viewType, chartConfig, and pageSize parameters.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Custom Themes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Live theme updates — editing a custom theme&amp;#39;s colors via MCP now reflects immediately in the UI without needing to toggle themes.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.4.0</title><link>https://monghoul.com/releases/v1.4.0/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.4.0/</guid><description>Monghoul 1.4.0 release notes. Free Trial. 14-days Pro trial: no payment required. Start from the License modal when you hit a free tier limit. One trial…</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Free Trial&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;14-days Pro trial — no payment required&lt;/li&gt;
&lt;li&gt;Start from the License modal when you hit a free tier limit&lt;/li&gt;
&lt;li&gt;One trial per device, can&amp;#39;t be reset by reinstalling&lt;/li&gt;
&lt;li&gt;Auto-restores if you reinstall mid-trial&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; Infrastructure&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fresh database schema — no migration chain on startup&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.3.8</title><link>https://monghoul.com/releases/v1.3.8/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.3.8/</guid><description>Monghoul 1.3.8 release notes. Schema Auto-Generation. Multi-collection support: scripts referencing multiple collections get all missing schemas generated…</description><pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Schema Auto-Generation                                          &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-collection support — scripts referencing multiple collections get all missing schemas generated in parallel, with a live timer
   showing progress                                                                                                                     &lt;/li&gt;
&lt;li&gt;Reacts to connection and database switches — re-evaluates missing schemas automatically&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Editor                                                                                                                                &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed stale autocomplete after switching connections&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.3.7</title><link>https://monghoul.com/releases/v1.3.7/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.3.7/</guid><description>Monghoul 1.3.7 release notes. Editor. Fixed false validation errors when using regex patterns ({ field: /pattern/ }) or null values in queries…</description><pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Editor&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed false validation errors when using regex patterns ({ field: /pattern/ }) or null values in queries                            &lt;/li&gt;
&lt;li&gt;Auto-generate schema in the background when opening a tab for a collection without one — autocomplete is now available from the start  &lt;/li&gt;
&lt;li&gt;New schema banner at the bottom of the editor with a one-click &amp;quot;Generate Schema&amp;quot; button when autocomplete is unavailable&lt;/li&gt;
&lt;li&gt;Fixed theme race condition that could apply the wrong editor theme                                                                  &lt;/li&gt;
&lt;li&gt;Fixed invisible cursor in light themes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  Keyboard Shortcuts                                                                                                                    &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed hotkeys not working on non-English keyboard layouts&lt;/li&gt;
&lt;li&gt;Option+Arrow now works for word navigation in the editor&lt;/li&gt;
&lt;li&gt;Updated tab/panel switching shortcuts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  Auto-Update                                                                                                                           &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install failures now show the actual error message in the update banner with a Retry button (previously errors were silently&lt;br&gt;  swallowed)&lt;/li&gt;
&lt;li&gt;Added download progress logging for easier debugging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  Bug Fixes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed &amp;quot;save to favorites&amp;quot; regression                                &lt;/li&gt;
&lt;li&gt;Schema analysis failures now show a toast error instead of failing silently&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.3.6</title><link>https://monghoul.com/releases/v1.3.6/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.3.6/</guid><description>Monghoul 1.3.6 release notes. Tab Restore (Ctrl+Shift+T). Closed tabs are no longer gone forever. Press Ctrl+Shift+T (Cmd+Shift+T on Mac) to restore the…</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tab Restore (Ctrl+Shift+T)                                                                                                                                                                                                                                                            &lt;/p&gt;
&lt;p&gt;  Closed tabs are no longer gone forever. Press Ctrl+Shift+T (Cmd+Shift+T on Mac) to restore the most recently closed tab — just like in your browser. Tabs are soft-deleted on close: the code, connection context, view settings, and chart config are all preserved. Only the query&lt;br&gt;  result data is cleared to save space.                                                                                                                                                                                                                                               &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ctrl+Shift+T restores the last closed tab to the active panel&lt;/li&gt;
&lt;li&gt;Command Palette (Ctrl+K) now shows a &amp;quot;Recently Closed&amp;quot; section — browse and restore any closed tab&lt;/li&gt;
&lt;li&gt;Up to 100 closed tabs are kept; oldest are automatically purged&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  Tab Search API &amp;amp; MCP Integration&lt;/p&gt;
&lt;p&gt;  New search_tabs and restore_tab MCP tools let AI agents search across all tabs (active and closed) by text, connection, database, tab type, or chart presence — and restore them directly.&lt;/p&gt;
&lt;p&gt;  Use cases: &amp;quot;find that sales report with a chart from last week&amp;quot;, &amp;quot;restore the aggregation I ran on the reviews collection&amp;quot;.&lt;/p&gt;
&lt;p&gt;  Other Fixes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS auto-updates fixed — removed the EULA from the DMG installer that was blocking silent updates&lt;/li&gt;
&lt;li&gt;Faster editor autocomplete — schema data from background analysis now reaches the editor sooner (parallel invalidation, shorter cache staleness)&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.3.5</title><link>https://monghoul.com/releases/v1.3.5/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.3.5/</guid><description>Monghoul 1.3.5 release notes. Compact &amp; Responsive UI. The entire result viewer adapts gracefully to narrow panels and small window sizes: Denser data…</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Compact &amp;amp; Responsive UI&lt;/p&gt;
&lt;p&gt;  The entire result viewer adapts gracefully to narrow panels and small window sizes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Denser data display — Row heights reduced across table view (32→28px) and tree view (28→26px), fitting more data on screen&lt;/li&gt;
&lt;li&gt;Responsive query toolbar — Button labels, date helper, explain button, and builder toggle progressively hide as the toolbar shrinks&lt;/li&gt;
&lt;li&gt;Responsive result header — View switcher collapses to a compact dropdown on small panels; stats, export, and scan badge hide when space is tight&lt;/li&gt;
&lt;li&gt;Responsive tree view — Type column hides and indentation reduces on narrow panels to prevent horizontal scroll&lt;/li&gt;
&lt;li&gt;Compact inline editor — Field editor, type selector, and action buttons scale down for small panels&lt;/li&gt;
&lt;li&gt;Responsive footer — Less-essential buttons (hotkeys, theme, metrics) hidden at small window widths&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  Editing Improvements&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed nested field editing — Editing fields inside nested arrays (e.g. orders[0].items[1].qty) now works correctly in both table and tree views&lt;/li&gt;
&lt;li&gt;Optimistic updates preserved — Editing a field no longer collapses expanded tree nodes or switches the view type&lt;/li&gt;
&lt;li&gt;Table view live data — Expanded nested viewers in table view reflect optimistic updates immediately&lt;/li&gt;
&lt;li&gt;New execution backend — Inline edits now run through the same sandboxed execution pipeline as regular queries, with connection pooling, write protection, and full operation logging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  Custom Page Size&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Type any value (1–10,000) directly into the pagination input, or pick from presets (10, 25, 50, 100, 200, 500, 1000)&lt;/li&gt;
&lt;li&gt;Page size is persisted per tab&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  Other Improvements&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table column headers no longer forced to uppercase — field names shown as-is&lt;/li&gt;
&lt;li&gt;ESC key only exits window fullscreen (not tab fullscreen), with updated tooltip&lt;/li&gt;
&lt;li&gt;Fixed Mac updater doing nothing when pressing Install&lt;/li&gt;
&lt;li&gt;Cluster monitor interval selector collapses to a dropdown on small panels&lt;/li&gt;
&lt;li&gt;Reusable Switch component for consistent toggle styling&lt;/li&gt;
&lt;li&gt;Dropdown popover rendering fixed (no longer clipped by editor overlays)&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.3.4</title><link>https://monghoul.com/releases/v1.3.4/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.3.4/</guid><description>Monghoul 1.3.4 release notes. Theme-aware chart colors: chart series colors now come from the active theme instead of a hardcoded palette. Switch themes…</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;Theme-aware chart colors — chart series colors now come from the active theme instead of a hardcoded palette. Switch themes and charts adapt instantly. Each of the 9 built-in themes ships with a hand-curated 12-color palette drawn from its own
identity.&lt;ul&gt;
&lt;li&gt;Fix stacked bar &amp;amp; stacked area charts — these chart types were silently rendering blank. They now render correctly with proper stacking.&lt;/li&gt;
&lt;li&gt;Readable stacked labels — labels inside stacked bar segments use white text with a dark outline stroke instead of blending into the bar color.&lt;/li&gt;
&lt;li&gt;MCP chart colors — create_theme now accepts a chartColors parameter, and get_theme_schema documents it.&lt;/li&gt;
&lt;li&gt;Auto-update toggle — new setting in the footer to enable or disable automatic update checks.&lt;/li&gt;
&lt;li&gt;Improved empty state — the &amp;quot;no connections&amp;quot; screen has been redesigned.&lt;/li&gt;
&lt;li&gt;Footer improvements — updated layout and information density.&lt;/li&gt;
&lt;li&gt;Fix connection tree filter spacing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Monghoul 1.3.3</title><link>https://monghoul.com/releases/v1.3.3/</link><guid isPermaLink="true">https://monghoul.com/releases/v1.3.3/</guid><description>Monghoul 1.3.3 release notes. Fix showing the release changelog after the update, improve the updater UI to match themes better.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Fix showing the release changelog after the update, improve the updater UI to match themes better&lt;/p&gt;
</content:encoded></item></channel></rss>