Releases: philbir/mango
Release list
Mango 0.5.0-beta.6
0.5.0-beta.6
✨ Features
OIDC browser selection
- Pick, per connection, which browser runs the interactive Azure OIDC (
azure-browser) sign-in flow — Chrome, Edge, Firefox, or Safari, or fall back to the system default. - Browser profile picker: for browsers that expose profiles, choose the exact profile (e.g. a specific work account) to authenticate with instead of the default one.
- Unavailable browsers are detected and disabled in the picker, so you only see what's actually installed.
- New OIDC auth dialog that surfaces the sign-in prompt and status inline while the browser flow completes.
- The chosen browser and profile persist on the connection (
oidcBrowser/oidcBrowserProfile).
Batch document operations
- Multi-select rows in the collection query results — per-row checkboxes plus a select-all checkbox in the header (with indeterminate state).
- A selection action bar shows the count with Update and Delete actions that run
updateMany/deleteManyagainst the selected documents. - Selection builds a correctly-typed
{ _id: { $in: [...] } }filter and can span pages — retained_idvalues keep off-page rows in the batch. - A confirmation dialog shows the target filter, an editor for the update operator body, and a live
db.<coll>.deleteMany(...)/updateMany(...)command preview before you commit. - Guardrails: the server refuses a
deleteMany/updateManywith an empty filter — bulk-clearing goes through the dedicated Clear action instead.
Delete / clean collections
- From the database Stats tab you can now, per collection:
- Clear — delete all documents while keeping the collection and its indexes.
- Delete (drop) — remove the collection entirely.
- Both are behind an explicit typed confirmation dialog to prevent accidents.
JSON display formats
- Choose how documents render in the viewer via a format selector:
- Legacy Mongo Shell
- MongoDB Shell
- Simple
- Mongoexport (canonical Extended JSON)
- Pure (plain JSON, without MongoDB types)
- Mirrors the export/copy formats offered by tools like Studio 3T. The chosen format is remembered across sessions.
🐛 Fixes
- GridFS: fixed collection ordering in the sidebar.
- Auto-updater: fixed update handling.
⚙️ Under the hood
- Faster listing counts — unfiltered listings use
estimatedDocumentCount()(O(1) metadata read) instead of a full scan, avoidingmaxTimeMStimeouts on large collections. - Expanded the local Mongo seed script and added tests (
mongo-util, browser detection). - Auto-updater: fixed the desktop update check being blocked by the webview ACL, and quieted the background check so it no longer shows an error banner when no manifest is reachable.
- Dependencies: security update round — 27 → 2 advisories (remaining two have no upstream fix); Tauri updated within v2.
Mango 0.5.0-beta.5
0.5.0-beta.5
✨ Features
OIDC browser selection
- Pick, per connection, which browser runs the interactive Azure OIDC (
azure-browser) sign-in flow — Chrome, Edge, Firefox, or Safari, or fall back to the system default. - Browser profile picker: for browsers that expose profiles, choose the exact profile (e.g. a specific work account) to authenticate with instead of the default one.
- Unavailable browsers are detected and disabled in the picker, so you only see what's actually installed.
- New OIDC auth dialog that surfaces the sign-in prompt and status inline while the browser flow completes.
- The chosen browser and profile persist on the connection (
oidcBrowser/oidcBrowserProfile).
Batch document operations
- Multi-select rows in the collection query results — per-row checkboxes plus a select-all checkbox in the header (with indeterminate state).
- A selection action bar shows the count with Update and Delete actions that run
updateMany/deleteManyagainst the selected documents. - Selection builds a correctly-typed
{ _id: { $in: [...] } }filter and can span pages — retained_idvalues keep off-page rows in the batch. - A confirmation dialog shows the target filter, an editor for the update operator body, and a live
db.<coll>.deleteMany(...)/updateMany(...)command preview before you commit. - Guardrails: the server refuses a
deleteMany/updateManywith an empty filter — bulk-clearing goes through the dedicated Clear action instead.
Delete / clean collections
- From the database Stats tab you can now, per collection:
- Clear — delete all documents while keeping the collection and its indexes.
- Delete (drop) — remove the collection entirely.
- Both are behind an explicit typed confirmation dialog to prevent accidents.
JSON display formats
- Choose how documents render in the viewer via a format selector:
- Legacy Mongo Shell
- MongoDB Shell
- Simple
- Mongoexport (canonical Extended JSON)
- Pure (plain JSON, without MongoDB types)
- Mirrors the export/copy formats offered by tools like Studio 3T. The chosen format is remembered across sessions.
🐛 Fixes
- GridFS: fixed collection ordering in the sidebar.
- Auto-updater: fixed update handling.
⚙️ Under the hood
- Faster listing counts — unfiltered listings use
estimatedDocumentCount()(O(1) metadata read) instead of a full scan, avoidingmaxTimeMStimeouts on large collections. - Expanded the local Mongo seed script and added tests (
mongo-util, browser detection).
0.4.1
0.4.0
What's Changed
- Workspaces by @philbir in #10
- chore(deps): bump tauri from 2.11.0 to 2.11.1 in /desktop/src-tauri in the cargo group across 1 directory by @dependabot[bot] in #11
- GridFS File Preview by @philbir in #13
Full Changelog: 0.3.6...0.4.0
0.4.0-p.1
Mango — Workspaces release
This release lands the Workspaces feature alongside a new database tools
view, a one-command Aspire dev environment, and a sweeping dependency refresh
that clears every known security advisory.
✨ Workspaces
Save and version your work. A workspace is a folder of Markdown notebooks —
mix shell queries, document drafts, and notes in one file, then commit the
folder to git. Open any folder as a workspace, browse it as a tree, and pick
up exactly where you left off.
- Notebook-style editor with executable shell blocks
- Save-as / open-as dialogs, server-side folder picker, native folder
picker on desktop - Git status badge in the sidebar — clean / modified / untracked at a glance
- Files are plain Markdown — diff-friendly, no proprietary format
🛠️ Database view
A dedicated "Database" tab joins the connection sidebar with three sub-views:
- Stats — sizes, document counts, index storage at a glance
- Dev tools — drop / clear / rename collections, drop a database
(only shown whenMANGO_DEV_MODE=true) - Import / Export — JSON / EJSON round-trip for any collection
🚀 One-command dev environment
A new TypeScript Aspire AppHost (aspire run) brings up the whole stack:
MongoDB 8 + Mango server + UI + docs site + sample-data seeder, all
wired together with structured logs and traces in the Aspire dashboard.
- Sample databases (
acme,bloggy) are seeded automatically with
realistic data — users, products, orders, posts, comments — so a fresh
clone gives you something to click through immediately MONGO_URLis tracked on every boot, so the "Default" connection
always points at the active mongo
🔒 Security
Every known advisory in the dependency graph is now fixed:
- High: OpenTelemetry Prometheus exporter crash (
GHSA-q7rr-3cgh-j5r3) - Moderate: Vite path-traversal in optimized-deps
.maphandling
(GHSA-4w7w-66w2-5vf9), esbuild dev-server SSRF
(GHSA-67mh-4wv8-2f99), DOMPurify XSS family (8 advisories),
protobufjs prototype pollution
Audit drops from 3 high + 4 moderate to a single unfixable upstream
deprecation notice.
⬆️ Modern stack
A repo-wide refresh keeps every workspace on the current latest:
- Runtime: MongoDB driver 7, BSON 7, Hono node-server 2,
OpenTelemetry 2 / 0.218, Zod 4 - Frontend: Vite 8, Vitest 4, Tailwind 4 (CSS-first config),
React 19.2, Monaco 0.55 - Tooling: TypeScript 6, Aspire CLI 13.3, Tauri CLI 2.11
🧰 Under the hood
- Migrated Tailwind 3 → 4 with the new CSS-first
@themedirective —
smaller config surface, no moretailwind.config.js - OpenTelemetry SDK uses the new
resourceFromAttributesAPI - Server
noUncheckedIndexedAccesscleanup across API client and
document table - ESLint flat config covers the Aspire AppHost
- Docker image rename:
@antoniq/...→@mango/...
📦 Upgrade notes
- Mongo data: if you have a
mango-mongo-datavolume from a previous
release that ran MongoDB 7, you'll need to either let MongoDB do a
sequential FCV upgrade (mongo:8.0→mongo:8.2) or wipe the volume:
docker volume rm mango-mongo-data - Tailwind plugins: if you forked the UI and added Tailwind plugins
intailwind.config.js, port them to the@themeblock in
ui/src/index.css - Master key: set
MANGO_MASTER_KEY(openssl rand -base64 32) to
keep saved connections readable across restarts — without it Mango
warns on boot and generates an ephemeral key
Mango 0.3.6
Merge pull request #9 from philbir/fix/ui-build-ts-errors fix: resolve noUncheckedIndexedAccess TS errors in UI client and Docu…
Mango 0.3.3
Merge pull request #5 from philbir/feat/desktop-auto-update feat: desktop auto update