Skip to content

0.10.0 features: DocumentDB Local, MongoDB Atlas Discovery, Index Management - #820

Merged
Tomasz Naumowicz (tnaum-ms) merged 596 commits into
mainfrom
release/0.10.0
Aug 14, 2026
Merged

0.10.0 features: DocumentDB Local, MongoDB Atlas Discovery, Index Management#820
Tomasz Naumowicz (tnaum-ms) merged 596 commits into
mainfrom
release/0.10.0

Conversation

@tnaum-ms

@tnaum-ms Tomasz Naumowicz (tnaum-ms) commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

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

  • Fixed Collection View import and export resolution and made lookup failures safer and easier to diagnose (#871).
  • Prevented duplicate CI workflow runs for release pull requests.

…as-discovery

# Conflicts:
#	l10n/bundle.l10n.json
Copilot AI balanced review requested due to automatic review settings August 11, 2026 09:06
@tnaum-ms
Tomasz Naumowicz (tnaum-ms) requested a review from a team as a code owner August 11, 2026 09:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 cinpm run packagevscode-documentdb-0.10.0-alpha.vsix (8.5 MB), installed with code --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) and main.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:1182 and :2567
  • src/webviews/documentdb/atlasCredentials/AtlasCredentialsView.tsx:272 and :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 as Add a Mongo + wrap
  • Provide your MongoDB Atlas Service Account → renders as Provide your MongoDB Atla
  • Choose an authentication method → renders as Choose 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-local provisioned and running; connection auto-added; sampledb with 4 collections and real documents queryable.
  • Tree progress overlay works — the node showed Provisioning… with a spinner, exactly what quickStartProgressBridge emits.
  • Stopped vs. removed detection works (604f72c9). I stopped the container out-of-band; the tree correctly reported DocumentDB Local — Stopped with 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 cancel mutation → 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:

  • indexesTab rename 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) — readOnlyJsonDocumentProvider unit 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 readinessTimeout copy branches on devContainer and 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.

@guanzhousongmicrosoft

Copy link
Copy Markdown
Contributor

Follow-up: I've opened #883 against release/0.10.0 clearing three of the four blockers from my review — the footer experiment prototype is removed from both webviews, the rename is finished in the product (Command Palette, the ten "Quick Start" strings, and the OutputChannel), and the version is 0.10.0.

Full suite green (219 suites / 3510 tests); tsc, eslint and prettier all clean. Verified in the rebuilt VSIX: Footer experiment went 4 → 0 occurrences in the production views.js, and the packaged manifest reads 0.10.0 with the command titled Set up DocumentDB Local.

Two things #883 can't do for you: the [WIP] prefix on this PR's title needs an edit here, and I flagged one open check in #883 — I didn't get to re-drive the rebuilt VSIX through the UI before my harness gave out, so a quick manual look at the two webviews is worth it before merge.

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>
@tnaum-ms Tomasz Naumowicz (tnaum-ms) changed the title [WIP] 0.10.0 0.10.0 features: DocumentDB Local, MongoDB Atlas Discovery, Index Management Aug 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

✅ Code Quality Checks

Check Status How to fix
Localization (l10n) ✅ Passed
ESLint ✅ Passed
Prettier formatting ✅ Passed

This comment is updated automatically on each push.

@github-actions

Copy link
Copy Markdown
Contributor

📦 Build Size Report

Metric Base (main) PR Delta
VSIX (vscode-documentdb-0.10.0.vsix) 7.98 MB 8.15 MB ⬆️ +171 KB (+2.1%)
Webview bundle (views.js) 5.88 MB 6.11 MB ⬆️ +233 KB (+3.9%)

Download artifact · updated automatically on each push.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

3 participants