0.10.0 features: DocumentDB Local, MongoDB Atlas Discovery, Index Management - #820
Conversation
…odal (MEDIUM-3, NEW-3)
…s (NEW-5, NEW-6, NEW-7, INFO-1)
…as-discovery # Conflicts: # l10n/bundle.l10n.json
Guanzhou Song (guanzhousongmicrosoft)
left a comment
There was a problem hiding this comment.
Smoke test of the packaged VSIX — NO-GO as it stands, but every blocker is a small fix
Verdict: conditional go. The functional core of this release is in good shape — I could not break the happy paths. But three things must not reach the marketplace as they are, and one of them is new information (item 3). Clear those four and I'm a go.
How I tested
Built and installed the packaged VSIX rather than F5, per the warning in docs/ai-and-plans/PRs/766-webview-ext-package-redesign/webview-ext-review.md that the dev flow resolves webview assets from the webpack dev server (localhost:18080/views.js) while a packaged build loads them off disk — different code path, and exactly the one that hides breakage.
npm ci→npm run package→vscode-documentdb-0.10.0-alpha.vsix(8.5 MB), installed withcode --install-extension.- Driven as a real, installed extension (
ms-azuretools.vscode-documentdb@0.10.0-alpha) against a real Docker daemon (Docker Desktop 29.6.2) and a real provisioned container. - Jest for the four touched areas: 785 tests / 37 suites, all green.
- Platform: Windows 11. Extension activated with 0 errors, 0 warnings; packaged
views.js(6.3 MB) andmain.js(4.5 MB) both resolve and render.
Release blockers
1. Title still says [WIP].
2. Version is still 0.10.0-alpha (package.json). Marketplace needs 0.10.0.
3. 🚨 A user-test prototype toggle ships to end users — this is the one I'd not have caught by reading the diff alone.
Every setup webview renders a "Footer experiment · PREVIEW" switch in its header. Your own comment marks it for removal:
// USER-TEST PROTOTYPE START: Footer experiment comparison. Remove this state, root/footer refs,
// measurement callback, prototype switch, and scrollAreaInlineFooter class after user testing.
src/webviews/documentdb/localQuickStart/LocalQuickStart.tsx:1182and:2567src/webviews/documentdb/atlasCredentials/AtlasCredentialsView.tsx:272and:864
This is not dev-only. The production bundle contains it — dist/views.js built with --mode production has 4 occurrences of Footer experiment — and I saw the switch and its PREVIEW badge live in the installed VSIX in both webviews.
It is also not cosmetic. The toggle sits inline in the sticky header and truncates the section heading next to it at normal panel widths:
Add a MongoDB Atlas connection→ renders asAdd a Mongo+ wrapProvide your MongoDB Atlas Service Account→ renders asProvide your MongoDB AtlaChoose an authentication method→ renders asChoose an authentication m
Introduced in 94a39b55 (2026-07-30, Atlas) and 1365964a (2026-08-04, Quick Start). Neither is on main, so 0.10.0 would be the first release to ship it.
4. The rename landed in the docs only, so the product now shows four different names for one feature.
45bdf28b ("Rename … for consistency and clarity in documentation") touched 4 markdown files and no product strings. Live in the installed build, simultaneously:
| Surface | What the user sees |
|---|---|
| Tree root node | Your own DocumentDB |
| Tree child action | Set up DocumentDB Local |
| Webview H1 / panel title | DocumentDB Local / Your own DocumentDB |
| Command Palette | DocumentDB: Local Quick Start |
| Docs | Set up DocumentDB Local |
"Set up DocumentDB Local" appears zero times in package.json, so the Command Palette still carries the old name. Ten user-facing strings in l10n/bundle.l10n.json also still say "Quick Start", including two that point at a log by a name that no longer exists anywhere in the UI — "The container started but exited shortly after. Check the Quick Start logs." (quickStartMessages.ts:59,61).
Not a functional defect, but it's the first thing a new user meets, and the docs now describe a command they can't find by name.
What I verified working
Set up DocumentDB Local — full happy path, end to end, against real Docker:
- Introduction → Configure → Set up → Done; container
vscode-documentdb-localprovisioned and running; connection auto-added;sampledbwith 4 collections and real documents queryable. - Tree progress overlay works — the node showed
Provisioning…with a spinner, exactly whatquickStartProgressBridgeemits. - Stopped vs. removed detection works (
604f72c9). I stopped the container out-of-band; the tree correctly reportedDocumentDB Local — Stoppedwith a ▷ Start action and did not claim the container had been removed. Tooltip carried the Docker detail: state,localhost:10260, image, container ID, Docker Desktop 29.6.2, amd64, Linux. - Stopped instance correctly degrades to a leaf node — no cluster commands while not running.
- MessageBar reassurance copy ("Nothing is downloaded or created on your machine until you choose to start…") renders correctly.
Atlas wizard:
- Choose method → Enter details → Back all navigate cleanly.
- Cancel works — closes the panel with no hang and no error; the new
cancelmutation →onCancelled→ dispose path is sound. - Credential fields are right: required markers,
mdb_sa_id_…/mdb_sa_sk_…placeholders, secret reveal toggle, "Where do I find these values?" expander, Verify & Save correctly disabled until both fields are filled. - "Learn more" present on every step.
Index management:
indexesTabrename broke nothing. Full render: Create Index / Refresh, stat cards (Total Indexes 5, Total Size 80 KB, Total Usage 14, Unused 0), filters, and all 5 index rows with Type / Properties / Size / Usage / Actions.
Also checked and NOT a bug: the prod image constant ghcr.io/documentdb/documentdb/documentdb-local (quickStartTypes.ts:16) differs from the ghcr.io/documentdb/documentdb-local used in every test fixture. I resolved both against GHCR — the shipped one returns 200, the fixture one 403. Shipping default is correct; only the fixtures are fictional.
What I did NOT cover — please don't read this as cleared
- Docker-unavailable path (
1432f416) — I did not stop the Docker daemon. - Shell terminal stays open after failed connect (
2be9da82) — needs a live failing connect I couldn't stage through the UI; unit-tested only. - Error translation against a real infrastructure failure — with the container stopped, the tree correctly re-detected state, but I never drove a translated driver error to the surface. Worth a manual pass before Thursday, since it spans tree, webviews and commands.
- Index definition read-only JSON provider (
0eaba102) —readOnlyJsonDocumentProviderunit tests pass, but I could not reach the row-level definition action at the viewport I had. - Windows only. No macOS or Linux, no dev container. The
readinessTimeoutcopy branches ondevContainerand is untested here.
Bottom line: nothing I found suggests the release is structurally unsound — provisioning, the tree, the Atlas wizard and the indexes tab all hold up as a packaged extension. Blockers 1, 2 and 4 are text changes. Blocker 3 is deleting code you already marked for deletion. I'd re-check the error-translation path once more, then ship.
|
Follow-up: I've opened #883 against Full suite green (219 suites / 3510 tests); Two things #883 can't do for you: the The error-translation path from my review is still the thinnest area and unaffected by #883. |
…, and improve index type detection in indexViewRouter
The "Footer experiment" switch and its PREVIEW badge were a temporary comparison prototype, marked for removal in the code that added them. They shipped in the production bundle: `dist/views.js` built with `--mode production` carried the label, and the switch rendered in the installed VSIX in both the DocumentDB Local setup and the Atlas credentials wizard. The switch was absolutely positioned in the header, so it also overlapped the adjacent heading and truncated it at normal panel widths — "Add a Mongo", "Provide your MongoDB Atla", "Choose an authentication m". Remove the opt-in state, the root and footer refs, the prototype switch and badge, and the scrollAreaInlineFooter style. The measurement callback stays, minus the experiment: it still drives `footerElevated`, the shipped border-and-shadow that appears only while the scroll area has content below the fold. With the experiment gone `shouldDock` was always true, so the docked branch is the only one left. The ResizeObserver now watches the scroll area and content; the scroll area resizes when the footer does, so observing the root and footer added nothing. `position: relative` stays on the root — it is the containing block for the visually-hidden status text — with a comment that says so.
…the docs
The rename reached the user manual but no product string, so the feature
answered to two names at once. The Command Palette still offered "DocumentDB:
Local Quick Start" — a name that appeared nowhere else in the UI — and ten
user-facing strings still said "Quick Start", including two that sent the
reader to a log by a name the Output panel did not use.
- Command Palette title becomes "Set up DocumentDB Local", matching the tree
action that opens the same webview.
- The ten strings now name either the command ("Set up DocumentDB Local") or
the product ("DocumentDB Local"), whichever the sentence is about.
- The OutputChannel becomes "DocumentDB Local Setup", so "Check the DocumentDB
Local setup logs" names a channel that exists. The user manual follows.
The tree keeps "Your own DocumentDB" as its section heading and the webview
keeps "DocumentDB Local" as its title: those name the place and the product,
not the command, and are deliberate. Internal identifiers (localQuickStart,
QUICK_START_*) are untouched — renaming them is churn with no user-visible
effect.
Drop the -alpha prerelease suffix: the marketplace build must carry the final version.
The release cut had no changelog entry: CHANGELOG.md still opened at 0.9.2 while package.json said 0.10.0, so a release carrying two headline features would have shipped with no user-facing record of what changed. Written from the 25 PR-titled commits in v0.9.2..release/0.10.0, in the existing house style. Grouped as New Features (DocumentDB Local, MongoDB Atlas Service Discovery, Index Management), Improvements (theme-aware Fluent colors, typed status reporting) and Fixes (the bug-bash batch, Collection View import/export). No Security section: unlike 0.9.2 there are no dependency or GitHub Actions updates in this range. Four commits in the range carry fork-local PR numbers (#1, #3, #7, #8) that do not resolve in this repository; their substance is folded into the DocumentDB Local and bug-bash entries without links. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The version bump set package.json to 0.10.0 but left the lockfile at 0.10.0-alpha in both `.version` and `packages[""].version`, so the cut was only half applied. Only those two fields change — no dependency resolution ran, so the diff stays at two lines and the resolved tree is untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… the rename, cut -alpha (#883)
✅ Code Quality Checks
This comment is updated automatically on each push. |
📦 Build Size Report
Download artifact · updated automatically on each push. |
Summary
This release brings three major features to the DocumentDB extension.
Index management
Manage collection indexes directly from the Indexes tab in Collection View or from the Explorer tree. The new experience provides index and collection metrics, filtering and sorting, index details, and workflows to create, delete, hide, and unhide indexes. It supports standard, wildcard, and vector indexes, with options to create directly or continue in a playground or interactive shell.
The release also polishes the Create Index flow, improves localization, and adapts the new surfaces to VS Code themes.
Related PRs: #732, #836, #838, #842
MongoDB Atlas discovery
Discover Atlas organizations, projects, and clusters from VS Code and import clusters into Connections. The provider supports Atlas API keys and service accounts, separates Atlas administration credentials from database credentials, and includes credential management and recovery flows.
Follow-up work improves the discovery and connection experience, including support for paused clusters, clearer status and error handling, and consistent UI across Atlas and index workflows.
Related PRs: #765, #799, #813, #834, #837, #842
Set up DocumentDB Local
Set up and open DocumentDB Local without leaving VS Code. The guided flow checks Docker readiness, provisions a local instance, stores its connection state securely, and adds lifecycle actions for start, stop, restart, and delete to the Connections view.
The release also hardens recovery when Docker or the container changes outside VS Code, keeps status synchronized, prevents credentials from leaking through copy and logging paths, and translates infrastructure failures into actionable guidance.
Related PRs: #798, #794, #841, #849, #866, #876, #879
Additional fixes