ChangelogWhat's new in MQLens
Release notes for every stable build. The canonical list — including pre-releases and signed assets — lives on the GitHub releases page.
Features
- MONGODB-OIDC interactive browser login (#430) (#433)
Fixes
- preserve OIDC settings when duplicating profiles
- handle mongodb+srv:// URIs in SSH tunnel URI rewrite (#440) (#441)
- run tool detection off the async runtime
- stop late value echoes erasing typing in the shell and document editor
- release the activity log lock explicitly, not on last close
- wait out ETXTBSY when probing freshly written binaries
- stop late value echoes overwriting typed text
- keep kept-alive tabs in a fixed DOM order
- retry a local agent spawn refused with Text file busy
- retry the tool version probe on ETXTBSY
- let detached windows listen for events
- release the exported theme's blob URL after the download starts
- sync connection and tab refs inside the commit
- keep a settings file without an appearance unsaved
- quote non-identifier keys in printed values, as mongosh does
- stop single-line fields recursing on multi-line text
- save the first appearance change after a fresh install
- make cls and the banner update survive the session watcher
- print getIndexes() as index specs, not names wrapped in objects
Fixes
- count only Conventional Commits breaking markers as a major bump
- give each panel group its own id so kept-alive tabs don't share a layout (#392)
Features
- persist uncaught frontend errors to a crash log (#379) (#381)
- let a connection be tried before it has to be saved (#364)
Fixes
- bump sharp, svgo and js-yaml past open security advisories (#388)
- bump @tauri-apps/plugin-updater to 2.11.0 to match the Rust crate
- narrow the live-profile retarget race on save (part of #371) (#384)
- contain a tab render crash instead of blanking the app (#379) (#380)
Fixes
- resolve a managed mongosh for scripts, and cap their output (#360)
- rescroll to the active match when the console comes back
- copy a runnable prompt line, and hand off focus on keyboard tab activation
- hand focus to the grid's registered root, not the wrapper around it
- hold the selected match, mark real offsets, and focus the chosen tab
- scope the console find target, and hold the match when output lands
- register the whole console pane, and highlight what find counts
- let the console be selected, copied and searched
- run a pasted script as a program, not as typed input
Features
- keep recently used tabs mounted, budgeted per kind (#345)
- give each tab its own document edit
- show what a local agent ran, and let it use MQLens's own tools (#313)
- show the model's thinking, attach images, pick provider and model in the composer (#309)
- any OpenAI/Anthropic-compatible provider or local CLI, plus MCP agent instructions (#283) (#308)
Fixes
- ask for an external client's write wherever the user is (#354)
- keep the server enabled, on its port, with its token across restarts (#353)
- keep the grid mounted across a run (#347)
- keep the auth database and mechanism when reopening a connection (#351)
- run scripts to completion, and never leave the REPL waiting (#346)
- run scripts to completion, and never leave the REPL waiting
- recognise prompts by how they arrive, not how they look
- match markers by suffix, echo them as expressions, rewrite nothing
- decide a prompt on the next chunk, and stop only what Stop can stop
- keep the running command with the session, not the component
- let a running command outlive the shell that started it
- stop forwarding a renamed key once it has a shell of its own
- find a moved command by its identity, not by its key
- keep every rename edge, since a reused key can be renamed again
- keep table column widths across a query run
- list collections from servers that answer with less detail (#332)
- make select-all a selection the page can actually see (#331)
- make copying the JSON view yield what was selected (#330)
- guard the tab switches by value, not by a one-shot flag
- return to Results when a run loads documents
- stop the explain tab reopening on every later run
- follow OS mode changes, and keep rename its own colour
- give the global Monaco themes a single owner
- theme the editor from config, and put status colours on tokens
- stop every keystroke re-rendering the results grid (#321)
- copy every row on select-all, not just the mounted ones
- measure selection boundaries that land on an element
- trim a rebuilt copy to the characters actually selected
- copy the whole JSON selection, not just the last screenful (#319)
- keep 64-bit integer literals exact instead of rounding them (#318)
- accept mongosh syntax in the filtered export query (#316)
- run regex queries carrying a /g flag instead of rejecting them (#315)
Features
- find within the loaded results with Cmd/Ctrl+F (#279) (#280)
- durable local activity logging (#272) (#274)
- add persistent tab colors
- improve collection tab identification
- add Simplified Chinese (#265)
- let a locale have its own script and its own plural forms
Fixes
- keep a reason when a refused rotation leaves auditing inactive
- unwind a failed append, and hold the lock through key rotation
- handle russh 0.63's widened host-key callback
- replace deprecated Array::from_slice, and unit-test the crypto
- patch 6 Rust advisories, pin the last actions, drop the blanket write
- keep the Gemini key out of the URL and bump nanoid
- share the grid's syntax colours with the document editor (#278)
- apply field-level updates so a projected edit keeps other fields (#275) (#276)
- let the Query field show the whole query
- let a catalog carry an exact-zero plural override
- guess nothing from an undetermined language tag
- survive a device tag that names no language
- parse language tags instead of guessing subtags by length
- reach a Chinese catalog from a bare tag, and check the forms only one language has
Fixes
- keep MongoDB's object names in German (#261)
Fixes
- stop every packaged query failing on an undefined parser
Features
- live change-stream tail viewer (#190) (#251)
Fixes
- keep zero-width joiners, and translate our own parse errors (#254)
- accept queries pasted from a browser, chat or document (#253)
- dompurify 3.4.12 -> 3.4.13 for a DOM-clobbering XSS advisory
Features
- persist AI Helper history per collection with retention setting (#235)
- keep the mongosh session alive across tab switches (#241)
- add Close Tab, Close Others and Close to the Right (#242)
- persist results view mode and page size per tab (#239)
- persist results view mode and page size per tab
- complete German localization (#236)
- internationalization with English and German (#123) (#234)
- preserve AI helper chat and open state per tab #221
- roomier Query field, Options disclosure, and editor text that scales
Fixes
- stop guessing which conversation a tab wants, and keep chats in their own scope (#246)
- keep a moved tab's session, and free its pending start on close (#244)
- patch 8 Dependabot advisories (undici, postcss, russh)
- keep AI helper replies and panel width across tab switches (#237)
- explain a handshake close instead of a bare timeout
- keep table header aligned with the body when columns overflow
- upgrade russh 0.61 -> 0.62.4 for three SSH client advisories
- patch 5 Dependabot advisories (postcss, sharp, svgo, dompurify, quinn-proto)
- copy ObjectId as hex and Date as ISO, not the EJSON wrapper
- address PR #222 review — precision, non-object gating, quoted-key completion, Buffer
- overhaul the query bar — shell syntax, smarter editor, cleaner UX
Features
- add uniqueCollectionTabId helper for duplicate collection tabs
- duplicate collection tab and force-new-tab open path
- open collection in new tab via menu and double-click
Fixes
- multiple tabs per collection (#206) (#207)
- refresh all duplicate collection tabs after import/generate
- gate cold double-click, rebind export source, guard duplicate parse
- scroll the tab strip horizontally when tabs overflow
Features
- support multi-URI JSON import/export with folder structure #115 (#201)
- production safeguards — read-only & confirm-destructive connection modes (#188) (#203)
- connection mode field on profiles and live connection meta
- central write guard blocking non-destructive writes on read-only connections
- typed-name confirmation for destructive ops on safeguarded connections
- connection mode gates MCP write tools ahead of the confirm gate
- read-only banner and sidebar mode badge
- disable write actions in the UI on read-only connections
- data generation — seed collections with realistic fake documents (#91) (#202)
- data generation template engine
- schema-seeded template inference and preview
- cancellable background generation task over the import insert path
- generate tab kind with sidebar entry points
- generate view — builder, preview, confirm, inline progress
- MCP server — drive MQLens from Claude Code and Cursor (#98) (#200)
- MCP server lifecycle state and settings commands
- MCP streamable HTTP endpoint with bearer auth and ping tool
- per-profile MCP opt-in flag
- MCP read tools over existing query seams
- MCP write tools behind explicit _confirm gate
- Settings MCP panel — toggle, token, client configs, call log
- detachable windows — multi-window workspace phase 3 (#97) (#199)
- window-scoped workspace ops — move-to-window, detach, window-closed
- workspace-changed broadcast and connection-meta registry
- multi-window event reconciliation — label-aware boot, foreign hydrate, cross-window dedupe
- detachable windows — spawn, close, move-to-window context menu (#97 phase 3)
- cross-window connection and pref coherence
- session restore — workspace persistence with one-click reconnect (#97 phase 2) (#198)
- workspace store model with camelCase document + snake_case ops
- workspace reducer in Rust — 1:1 port of the frontend layout ops
- workspace_get/workspace_apply commands with debounced persistence
- mirror workspace actions to the backend store with profile-keyed snapshots
- session restore — workspace wakes disconnected with one-click reconnect (#97 phase 2)
- split panes — multi-panel workspace phase 1 (#97) (#196)
- split panes — drag tabs to pane edges, resize, palette commands (#97 phase 1)
- Cluster Health monitor — replica-set status and replication lag (#114) (#177)
- replica-set status backend for the Cluster Health tab
- Cluster Health tab with replica-set members and replication lag
- cluster-health popover when hovering a connection in the sidebar
- cluster type (replica set, sharded, standalone) shown in cluster health
- richer cluster popover — connection, user, read preference, server version, refresh
- stats popovers for databases, collections, and indexes (#178) (#179)
- database, collection, and index statistics backend
- database, collection, and index stat cards
- stats popovers on database, collection, and index rows
- index usage stats and ESR index suggestions (#90) (#180)
- ESR index suggestion from COLLSCAN explain plans
- index size and usage cards in the index viewer
- one-click index creation from a COLLSCAN explain suggestion
- collection validation rules editor (#93) (#182)
- add collMod command builder for validation rules
- validation rules editor view
- add validation rules entry to collection context menu
- read collection validator and validation level/action
- apply collection validator via collMod
- open validation rules tab from sidebar
- register get_collection_options and set_validator commands
- side-by-side document diff (#92) (#181)
- add value equality and kind helpers for document diff
- diff flat documents into aligned left/right lines
- recurse into nested objects and arrays in document diff
- side-by-side document diff modal
- compare two documents side by side from the context menu
- side-by-side document diff (#92) (#181)
- add value equality and kind helpers for document diff
- diff flat documents into aligned left/right lines
- recurse into nested objects and arrays in document diff
- side-by-side document diff modal
- compare two documents side by side from the context menu
- collection validation rules editor (#93) (#182)
- add collMod command builder for validation rules
- validation rules editor view
- add validation rules entry to collection context menu
- read collection validator and validation level/action
- apply collection validator via collMod
- open validation rules tab from sidebar
- register get_collection_options and set_validator commands
- index usage stats and ESR index suggestions (#90) (#180)
- ESR index suggestion from COLLSCAN explain plans
- index size and usage cards in the index viewer
- one-click index creation from a COLLSCAN explain suggestion
- stats popovers for databases, collections, and indexes (#178) (#179)
- database, collection, and index statistics backend
- database, collection, and index stat cards
- stats popovers on database, collection, and index rows
- Cluster Health monitor — replica-set status and replication lag (#114) (#177)
- replica-set status backend for the Cluster Health tab
- Cluster Health tab with replica-set members and replication lag
- cluster-health popover when hovering a connection in the sidebar
- cluster type (replica set, sharded, standalone) shown in cluster health
- richer cluster popover — connection, user, read preference, server version, refresh
Fixes
- guard aggregation $out/$merge and mongosh shell; enumeration cross-check (#188 review)
- disable Create Index suggestion button on read-only connections
- retry the tool-install version probe to tolerate transient exec failures
- enum-seeded $pick preserves the source field's numeric and boolean types
- clear generate task tracking on completion and close; valid default pick values
- evict generate task tracking on close_many as well as close_tab
- builder⇄raw fidelity, run-while-running guard, inline-progress focus (#91 review)
- explain denylist, agent-connection visibility, constant-time auth (#98 review)
- seen-gate keyed by connection id — teardown race with concurrent same-profile connects
- stateless tree-scan id minting — StrictMode-safe, matches the Rust reducer (#197)
- bystander semantics for foreign events; unmirrored tabs survive reconcile; StrictMode-safe listeners
- skip empty tab context menu; README detachable-windows bullet
- main-close quits, connection seeding for new windows, spawn resilience (#97 phase 3 review)
- explicit null clears persisted tab state fields across the serde boundary
- mirror ops translate to profile-space ids so the backend store survives real restarts
- reconnect reuse + no-op mirror gate + workspace.json validation (#97 phase 2 review)
- no-op mirror gate trial run no longer advances pane id counters
- empty panes persist across unrelated tab closes
- tab-strip drops no longer bubble into pane split zones
- pane-scoped export handlers, foreign-drag guard, palette gating (#97 review)
- down replica-set members show n/a lag instead of an epoch-sized number
- sidebar health popover closes on Escape, outside click, and row change
- cluster-health popover opens at the cursor position
- cluster popover sizes to content so member hosts are never truncated
- cluster popover shows the member's real state label and polishes the set-name styling
- widen the cluster popover card
- reuse the existing formatBytes helper and extend it past TB
- remove native title tooltips from sidebar and fix Import URI dropdown z-index
- ESR suggestions work on real-server $and explains; demoable COLLSCAN in mock
- index suggestions require a real COLLSCAN and skip non-indexable operators
- validation rules menu only on real collections; success banner clears on edit
- validation rules hidden on time-series collections; BSON round-trip regression test
- re-running a query clears the armed compare selection
- O(1) container re-tag in the diff engine; open diff survives background refresh
- document diff compares Timestamp, Long, and Decimal128 exactly instead of via lossy doubles
- re-running a query clears the armed compare selection
- O(1) container re-tag in the diff engine; open diff survives background refresh
- document diff compares Timestamp, Long, and Decimal128 exactly instead of via lossy doubles
- validation rules menu only on real collections; success banner clears on edit
- validation rules hidden on time-series collections; BSON round-trip regression test
- ESR suggestions work on real-server $and explains; demoable COLLSCAN in mock
- index suggestions require a real COLLSCAN and skip non-indexable operators
- remove native title tooltips from sidebar and fix Import URI dropdown z-index
- reuse the existing formatBytes helper and extend it past TB
- down replica-set members show n/a lag instead of an epoch-sized number
- sidebar health popover closes on Escape, outside click, and row change
- cluster-health popover opens at the cursor position
- cluster popover sizes to content so member hosts are never truncated
- cluster popover shows the member's real state label and polishes the set-name styling
- widen the cluster popover card
Features
- Cluster Health monitor — replica-set status and replication lag (#114) (#177)
- replica-set status backend for the Cluster Health tab
- Cluster Health tab with replica-set members and replication lag
- cluster-health popover when hovering a connection in the sidebar
- cluster type (replica set, sharded, standalone) shown in cluster health
- richer cluster popover — connection, user, read preference, server version, refresh
- stats popovers for databases, collections, and indexes (#178) (#179)
- database, collection, and index statistics backend
- database, collection, and index stat cards
- stats popovers on database, collection, and index rows
- index usage stats and ESR index suggestions (#90) (#180)
- ESR index suggestion from COLLSCAN explain plans
- index size and usage cards in the index viewer
- one-click index creation from a COLLSCAN explain suggestion
- collection validation rules editor (#93) (#182)
- add collMod command builder for validation rules
- validation rules editor view
- add validation rules entry to collection context menu
- read collection validator and validation level/action
- apply collection validator via collMod
- open validation rules tab from sidebar
- register get_collection_options and set_validator commands
- side-by-side document diff (#92) (#181)
- add value equality and kind helpers for document diff
- diff flat documents into aligned left/right lines
- recurse into nested objects and arrays in document diff
- side-by-side document diff modal
- compare two documents side by side from the context menu
Fixes
- down replica-set members show n/a lag instead of an epoch-sized number
- sidebar health popover closes on Escape, outside click, and row change
- cluster-health popover opens at the cursor position
- cluster popover sizes to content so member hosts are never truncated
- cluster popover shows the member's real state label and polishes the set-name styling
- widen the cluster popover card
- reuse the existing formatBytes helper and extend it past TB
- remove native title tooltips from sidebar and fix Import URI dropdown z-index
- ESR suggestions work on real-server $and explains; demoable COLLSCAN in mock
- index suggestions require a real COLLSCAN and skip non-indexable operators
- validation rules menu only on real collections; success banner clears on edit
- validation rules hidden on time-series collections; BSON round-trip regression test
- re-running a query clears the armed compare selection
- O(1) container re-tag in the diff engine; open diff survives background refresh
- document diff compares Timestamp, Long, and Decimal128 exactly instead of via lossy doubles
Features
- distinct sidebar icon for time-series collections (#137)
- guided mongosh detection on the shell's failure card
- SSH tunnel authentication via the system ssh-agent
Fixes
- mongosh detection cannot hang on a wedged binary; re-picking the configured path retries the session
- detect fake-tool spawn via any post-Starting message, not phrase matching
- tool tasks complete promptly when a grandchild holds the stderr pipe
Features
- import and export connection URIs via clipboard or file with secret redaction
- dump and restore tabs with guided MongoDB tool setup and managed installs
- improved import export (#164)
- BSON and NDJSON file import and export
- export filtered query results (find filter or aggregation) (#158)
- complete GridFS upload, delete, and bucket management (#156)
- copy databases and collections across clusters or between databases
Fixes
- pinned-item auto-connect no longer dead-ends before profiles load
- purge dead processes from the resource monitor's retained sysinfo System
Fixes
- run query on Enter and fix completion quote insertion
Features
- add keyboard shortcuts reference in Settings (#132)
- show UI zoom percentage in footer status bar
Fixes
- graceful updater offline behavior and connectivity feedback (#133)
- avoid hard-coded test passwords in user management tests
- add per-connection color tags with preset and custom picker
- preserve per-tab query editor state when switching collections
- reset query editor when switching collection tabs
- add sidebar search shortcut
- resolve CodeQL findings and document glib advisory
- use Node 22 for Astro 6 website builds
Features
- theme system, sidebar organization, and shell refresh (#116)
- SEO hardening — short titles, richer OG and structured data
Fixes
- render release-note markdown in the update dialog
Looking for older or pre-release builds?See all releases on GitHub →