Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
3a41a2b
Version bump to `v0.3.2-alpha`
tnaum-ms Aug 25, 2025
231dd7d
feat: improved nonNull* code, added optional `details` field
tnaum-ms Aug 25, 2025
4411057
chore: improved nonNull* calls with more debug information
tnaum-ms Aug 25, 2025
0ef5a2c
Introduced ESLint rules for import monitorin of 'nonNull'-functions
tnaum-ms Aug 25, 2025
b405794
nonNull.ts now requires message and details
tnaum-ms Aug 25, 2025
c32eff0
Added comments for code maintainers.
tnaum-ms Aug 25, 2025
2616a01
updated copilot instructions with nonNull info
tnaum-ms Aug 25, 2025
8afcc13
wip: github actions resilience
tnaum-ms Aug 25, 2025
6fd4702
Improvement: nonNull calls with better debugging information (#236)
tnaum-ms Aug 25, 2025
f7bf978
config: launch configurations for aure resources integration
tnaum-ms Aug 26, 2025
f84ccea
feat: activating Azure Cosmos DB for MongoDB (vCore) branch data prov…
tnaum-ms Aug 27, 2025
60b2177
feat: activating Azure Cosmos DB for MongoDB (vCore) branch data prov…
tnaum-ms Aug 27, 2025
506674d
Merge branch 'next' into dev/tnaum/58-implement-integration-of-docume…
tnaum-ms Aug 27, 2025
e74c17c
fix: npm run lint fix / incorrect nonNullValue import
tnaum-ms Aug 27, 2025
b68c851
arm-cosmosdb dependency update
tnaum-ms Aug 28, 2025
765805e
feat: activating Azure Cosmos DB for MongoDB (RU) branch data provide…
tnaum-ms Aug 28, 2025
10c7631
Dynamic Azure Resources branch data provider registration
tnaum-ms Aug 28, 2025
e55eb86
refactor: simplified tree/azure-resources-view file structure
tnaum-ms Aug 28, 2025
3682057
wip: resource metadata loading for vCore
tnaum-ms Aug 28, 2025
87aad5a
removed obsolete code (old vcore branch data provider)
tnaum-ms Aug 28, 2025
d9c44fe
wip: placeholder for extended cluster info for RU
tnaum-ms Aug 28, 2025
b3cfafb
fix: resource item cache misses
tnaum-ms Aug 29, 2025
46e5af0
feat: updated tree node info of RU clusters
tnaum-ms Aug 29, 2025
3c31e35
fix: resource item cache misses
tnaum-ms Aug 29, 2025
659b9b5
feat: Lazy Metadata Loading extracted to a deciated class
tnaum-ms Aug 29, 2025
9a64d7c
fix: description override on ru items wasn't always set
tnaum-ms Aug 29, 2025
2d68c3e
simplifying context value formats and improving when clauses in the p…
tnaum-ms Aug 29, 2025
2c6daf5
chore: updated experience naming to improve maintainability
tnaum-ms Aug 29, 2025
3643783
removed obsolete treeitem_account value from tree item context
tnaum-ms Aug 29, 2025
1988ca4
feat: enabled context menu commands in Azure Resources views
tnaum-ms Aug 29, 2025
74f3431
fix: incorrect context menu filter on 'addConnectionToConnectionsView'
tnaum-ms Aug 29, 2025
22db744
chore: refactoring
tnaum-ms Aug 29, 2025
c361c3e
chore: refactoring branch data providers
tnaum-ms Aug 29, 2025
a843dc3
chore: refactoring branch data providers
tnaum-ms Aug 30, 2025
00a4d49
chore: refactoring branch data providers
tnaum-ms Aug 31, 2025
725c5a4
chore: refactoring branch data providers
tnaum-ms Aug 31, 2025
0d6def6
chore: refactoring branch data providers
tnaum-ms Aug 31, 2025
93ab535
simplified 'description' handling for tree items (cluster level)
tnaum-ms Sep 1, 2025
b6febce
fix: not able to explore RU clusters in Azure Resources integration
tnaum-ms Sep 1, 2025
d668bc1
feat: save connections from the Azure Resources view
tnaum-ms Sep 1, 2025
58f0d56
feat: azure resources workspace data provider to support user migrati…
tnaum-ms Sep 1, 2025
b7b17b2
feat: migrating connections from Azure Databases
tnaum-ms Sep 1, 2025
fd15755
chore: simplified variable names
tnaum-ms Sep 2, 2025
bf3dadc
feat: using connections export API from the vscode-cosmosdb extension
tnaum-ms Sep 2, 2025
c95bae7
feat: importing old connections only when new Azure Resources is rele…
tnaum-ms Sep 2, 2025
d458885
fix: waiting for the connection data migration to complete before sho…
tnaum-ms Sep 2, 2025
ebc3c29
fix: npm run l10n
tnaum-ms Sep 2, 2025
c05fa6a
feat: API-call based rollout of new Azure Resources detection
tnaum-ms Sep 3, 2025
15a7084
chore: refactor, update funcion names for readability
tnaum-ms Sep 3, 2025
daee791
feat: improved tooltip wording
tnaum-ms Sep 3, 2025
a60fee3
feat: added support for "retry" op in the RU and vCore branch in the …
tnaum-ms Sep 3, 2025
67a1f46
fix: removed duplicate "refresh" context menu entries
tnaum-ms Sep 4, 2025
5549d6f
fix: restored "Scrapbook" submenu entries for RU and vCore in Azure R…
tnaum-ms Sep 4, 2025
185a2af
fix: updated user facing message wording
tnaum-ms Sep 4, 2025
ff07650
fix: Update CODEOWNERS
tnaum-ms Sep 4, 2025
7f8f31e
Merge branch 'next' into dev/tnaum/58-implement-integration-of-docume…
tnaum-ms Sep 4, 2025
faa84bb
chore: removed obsolete code
tnaum-ms Sep 4, 2025
df36e56
chore: reviewed/applied some copilot suggestions
tnaum-ms Sep 4, 2025
c930dae
Copilot: Update src/tree/azure-resources-view/mongo-ru/RUCoreResource…
tnaum-ms Sep 4, 2025
717a035
fix: updated the api mode of connections created by the uri handler
tnaum-ms Sep 4, 2025
997f9d4
PR: Implement integration of `DocumentDB` and `Azure Databases` Exten…
tnaum-ms Sep 4, 2025
ae8fd6f
Initial plan
Copilot Sep 5, 2025
f5d8843
Implement Phase 1-3: Azure MongoDB (RU) Service Discovery infrastructure
Copilot Sep 5, 2025
1ab632f
feat: refreshed DocumentDB branding to match the official logo
tnaum-ms Sep 5, 2025
d45d11e
Replaced the logo used in the VS Code Marketplace
tnaum-ms Sep 5, 2025
398614c
Wording mistake in vCore discovery
tnaum-ms Sep 5, 2025
3b2c588
Refactor: Moved shared code to the 'api' folder
tnaum-ms Sep 5, 2025
804c115
fix: resolved build errors
tnaum-ms Sep 5, 2025
ce01dcb
fix: resolved RU credentials discovery issues
tnaum-ms Sep 5, 2025
2554ca1
fix: 'add to connections' and context menu not showing up for RU acco…
tnaum-ms Sep 5, 2025
5f2a0d4
feat: promote newly added discovery service (one-time activation)
tnaum-ms Sep 5, 2025
6011763
l10n
tnaum-ms Sep 5, 2025
8fe79bf
Apply suggestion from @Copilot
tnaum-ms Sep 5, 2025
404ce17
feat: Refreshed DocumentDB branding to match the official logo (#246)
tnaum-ms Sep 5, 2025
1a58ca3
fix: build fix around account filtering in service discovery
tnaum-ms Sep 5, 2025
a4ed81e
chore: refactored, renamed azure-discovery to azure-mongo-vcore-disco…
tnaum-ms Sep 5, 2025
2b59659
chore: updated refactoring / moved files.
tnaum-ms Sep 5, 2025
523b0a0
fix: restore password support when new connections are created using …
tnaum-ms Sep 5, 2025
35388cd
fix: restore password support when new connections are created using …
tnaum-ms Sep 8, 2025
89a1b2b
Merge branch 'next' into copilot/fix-244
tnaum-ms Sep 8, 2025
5db14ae
Introduce "Service Discovery" for MongoDB (RU) resources (#245)
tnaum-ms Sep 8, 2025
0108130
Merge branch 'main' into next
tnaum-ms Sep 8, 2025
b0191c5
Version bump to `v0.4.0`
tnaum-ms Sep 8, 2025
9e7b3e2
changelog + documentation
tnaum-ms Sep 8, 2025
6036c1e
added a screenshot to the v0.4 release notes
tnaum-ms Sep 8, 2025
bfd5bf5
docs: added missing documentation for the RU discovery provider
tnaum-ms Sep 8, 2025
9aac05d
docs: updated walktrough screenshots (new product logo)
tnaum-ms Sep 8, 2025
f0ebbfd
feat: new walkthrough version with annoucement flag active
tnaum-ms Sep 8, 2025
4e8ecc6
docs: walkthrough text tweaks + link to github
tnaum-ms Sep 8, 2025
53640ba
docs: updated v0.4.0 release notes
tnaum-ms Sep 8, 2025
cfb74a8
Prepare the `v0.4.0` release (#250)
tnaum-ms Sep 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
/.azure-pipelines @Microsoft/documentdb-for-vscode-engineering
/.config @Microsoft/documentdb-for-vscode-engineering
* @Microsoft/documentdb-for-vscode-engineering
/.azure-pipelines @microsoft/documentdb-for-vscode-core-engineering
/.config @microsoft/documentdb-for-vscode-core-engineering
* @microsoft/documentdb-for-vscode-core-engineering
67 changes: 67 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ This document provides comprehensive guidelines and context for GitHub Copilot t
- Use l10n for any user-facing strings with `vscode.l10n.t()`.
- Use `npm run prettier-fix` to format your code before committing.
- Use `npm run lint` to check for linting errors.
- Use `npm run build` to ensure the project builds successfully (do not use `npm run compile`).
- Use `npm run l10n` to update localization files in case you change any user-facing strings.
- Ensure TypeScript compilation passes without errors.

Expand Down Expand Up @@ -422,3 +423,69 @@ const message = vscode.l10n.t(
- Ensure compatibility with Node.js version specified in `.nvmrc`.
- Follow the project's ESLint configuration for consistent code style.
- Use webpack for bundling and ensure proper tree-shaking.

---

## Null Safety with nonNull Helpers

**Always use the nonNull utility functions** from `src/utils/nonNull.ts` instead of manual null checks for better error reporting and debugging.

#### Available Functions

- **`nonNullProp()`**: Extract and validate object properties
- **`nonNullValue()`**: Validate any value is not null/undefined
- **`nonNullOrEmptyValue()`**: Validate strings are not null/undefined/empty

#### Parameter Guidelines

Both `message` and `details` parameters are **required** for all nonNull functions:

- **`message`**: Use the actual member access or assignment LHS from your code. Since this is open source, use real variable names:
- Member access: `'selectedItem.cluster.connectionString'`
- Wizard context: `'wizardContext.password'`
- Local variables: `'connectionString.match(...)'`

- **`details`**: Use the actual file base name where the code is located:
- Examples: `'ExecuteStep.ts'`, `'ConnectionItem.ts'`, `'DatabaseTreeItem.ts'`
- Keep it short, use the actual file name, don't create constants

#### Usage Examples

```typescript
// ✅ Good - Property extraction with validation
const connectionString = nonNullProp(
selectedItem.cluster,
'connectionString',
'selectedItem.cluster.connectionString',
'ExecuteStep.ts',
);

// ✅ Good - Value validation
const validatedConnection = nonNullValue(await getConnection(id), 'getConnection(id)', 'ConnectionManager.ts');

// ✅ Good - String validation (not empty)
const databaseName = nonNullOrEmptyValue(
wizardContext.databaseName,
'wizardContext.databaseName',
'CreateDatabaseStep.ts',
);

// ✅ Good - Manual null check for user-facing validation
if (!userInput.connectionString) {
void vscode.window.showErrorMessage(vscode.l10n.t('Connection string is required'));
return;
}

// ❌ Bad - Manual null checks for internal validation (use nonNull helpers instead)
if (!selectedItem.cluster.connectionString) {
throw new Error('Connection string is required'); // This should use nonNullProp
}

// ❌ Bad - Generic parameter values
const value = nonNullValue(data, 'some value', 'file.ts');
```

**When to use each approach:**

- **Use nonNull helpers**: For internal validation where you expect the value to exist (programming errors)
- **Use manual checks**: For user-facing validation with localized error messages shown to users
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
${{ runner.os }}-node-

- name: 📦 Install Dependencies (npm ci)
run: npm ci
run: npm ci --verbose

- name: 🌐 Check Localization Files
run: npm run l10n:check
Expand Down
76 changes: 31 additions & 45 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,7 @@
"version": "0.2.0",
"configurations": [
{
"name": "Launch Extension",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--extensionDevelopmentPath=${workspaceFolder}"],
"outFiles": ["${workspaceFolder}/out/**/*.js"],
"preLaunchTask": "${defaultBuildTask}",
"env": {
"DEBUGTELEMETRY": "true", // set this to "verbose" to see telemetry events in debug console
"NODE_DEBUG": ""
}
},
{
"name": "Launch Extension + Host",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionDevelopmentPath=${workspaceFolder}/../vscode-azureresourcegroups"
],
"outFiles": ["${workspaceFolder}/out/**/*.js"],
"preLaunchTask": "${defaultBuildTask}",
"env": {
"DEBUGTELEMETRY": "verbose", // set this to "true" to suppress telemetry events in debug console
"NODE_DEBUG": ""
}
},
{
"name": "Launch Extension (webpack)",
"name": "Defaut: Launch Extension (webpack)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
Expand Down Expand Up @@ -64,7 +35,7 @@
}
},
{
"name": "Launch Extension + Host (webpack)",
"name": "Launch Extension + AzureResources (webpack)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
Expand All @@ -74,31 +45,46 @@
"--extensionDevelopmentPath=${workspaceFolder}/../vscode-azureresourcegroups"
],
"outFiles": ["${workspaceFolder}/dist/**/*.js", "${workspaceFolder}/../vscode-azureresourcegroups/out/**/*.js"],
"preLaunchTask": "Watch",
"autoAttachChildProcesses": true,
"debugWebWorkerHost": true,
"debugWebviews": false,
"trace": true,
"sourceMaps": true,
"pauseForSourceMap": true,
"skipFiles": ["**/node_modules/**"],
"smartStep": true,
"sourceMapRenames": true,
"rendererDebugOptions": {
"webRoot": "${workspaceFolder}"
},
"resolveSourceMapLocations": ["${workspaceFolder}/dist/**", "!**/node_modules/**"],
"sourceMapPathOverrides": {
"./*": "${workspaceFolder}/*"
},
"preLaunchTask": "Watch",
"env": {
"DEBUGTELEMETRY": "verbose", // set this to "true" to suppress telemetry events in debug console
"NODE_DEBUG": "",
"DEBUG_WEBPACK": "",
"DEVSERVER": "true",
"STOP_ON_ENTRY": "false" // stop on entry is not allowed for "type": "extensionHost", therefore, it's emulated here (review main.ts)
},
"debugWebWorkerHost": true,
"rendererDebugOptions": {
"pauseForSourceMap": true,
"sourceMapRenames": true,
"sourceMaps": true,
"webRoot": "${workspaceFolder}/src/webviews/"
},
"skipFiles": ["**/node_modules/**"],
"smartStep": true,
"sourceMapRenames": true,
"sourceMaps": true,
"pauseForSourceMap": true,
"trace": true
},
{
"name": "Launch Extension + Host",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionDevelopmentPath=${workspaceFolder}/../vscode-azureresourcegroups"
],
"outFiles": ["${workspaceFolder}/out/**/*.js"],
"preLaunchTask": "${defaultBuildTask}",
"env": {
"DEBUGTELEMETRY": "verbose", // set this to "true" to suppress telemetry events in debug console
"NODE_DEBUG": ""
}
},
{
"name": "Launch Tests",
Expand Down
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Change Log

## 0.4.0

### New Features & Improvements

- **Deep Azure Integration**: Introduces deep integration with the Azure Resources extension, providing a unified experience for discovering and managing Azure Cosmos DB for MongoDB (RU and vCore) resources directly within the Azure view. [#58](https://github.com/microsoft/vscode-documentdb/issues/58)
- **Service Discovery for MongoDB (RU)**: Adds a new service discovery provider for Azure Cosmos DB for MongoDB (RU) resources, enabling effortless connection and authentication through the Discovery View. [#244](https://github.com/microsoft/vscode-documentdb/issues/244)
- **Official DocumentDB Logo**: Updated the extension's icon and branding to use the official DocumentDB logo for better brand recognition and consistency. [#246](https://github.com/microsoft/vscode-documentdb/pull/246)

### Fixes

- **Connection String Password Support**: Restored support for passwords when creating new connections using a connection string, fixing a regression that affected certain configurations. [#247](https://github.com/microsoft/vscode-documentdb/pull/247)
- **Improved Debugging Information**: Enhanced internal error handling for `nonNull` checks to include file context, making it easier to diagnose and triage issues. [#236](https://github.com/microsoft/vscode-documentdb/pull/236)

## 0.3.1

### Fixes
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

[![Version](https://img.shields.io/visual-studio-marketplace/v/ms-azuretools.vscode-documentdb.svg)](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-documentdb)

<img src="resources/readme/documentdb-logo.png" alt="DocumentDB Logo" style="width:40%; min-width:180px; max-width:320px; height:auto;" />
<!-- endregion exclude-from-marketplace -->

**A powerful, open-source DocumentDB and MongoDB GUI for everyone.**
Expand Down
3 changes: 2 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ This section contains detailed documentation for specific features and concepts

Explore the history of updates and improvements to the DocumentDB for VS Code extension. Each release brings new features, enhancements, and fixes to improve your experience.

- [0.3](./release-notes/0.3.md)
- [0.4](./release-notes/0.4.md)
- [0.3, 0.3.1](./release-notes/0.3.md)
- [0.2.4](./release-notes/0.2.4.md)
- [0.2.3](./release-notes/0.2.3.md)
- [0.2.2](./release-notes/0.2.2.md)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<!-- filepath: /home/tomek/github/ms/vscode-documentdb/docs/learn-more/service-discovery-azure-cosmosdb-for-mongodb-ru.md -->
<!-- Learn More Section Badge or Breadcrumb -->

> **Learn More** &mdash; [Back to Learn More Index](./index)

---

# Azure CosmosDB for MongoDB (RU) Service Discovery Plugin

The **Azure CosmosDB for MongoDB (RU)** plugin is available as part of the [Service Discovery](./service-discovery) feature in DocumentDB for VS Code. This plugin helps you find and connect to Azure Cosmos DB accounts provisioned with Request Units (RU) for the MongoDB API by handling authentication, resource discovery, and connection creation from inside the extension.

## How to Access

You can access this plugin in two ways:

- From the `Service Discovery` panel in the extension sidebar.
- When adding a new connection, select the `Azure CosmosDB for MongoDB (RU)` option.

![Service Discovery Activation](./images/service-discovery-activation.png)

## How It Works

When you use the Azure CosmosDB for MongoDB (RU) plugin, the extension performs the following steps:

1. **Authentication:**
The plugin uses your Azure credentials available in VS Code. If needed, it will prompt you to sign in via the standard Azure sign-in flows.

2. **Subscription Discovery:**
The plugin lists subscriptions available to your account so you can pick where to search for resources.

3. **Account Discovery:**
The provider queries Azure using the CosmosDB Management Client and filters results by the MongoDB "kind" for RU-based accounts. This ensures the list contains accounts that support the MongoDB API under RU provisioning.

4. **Connection Options:**
- Expand an account entry to view databases and connection options.
- Save an account to your `DocumentDB Connections` list using the context menu or the save icon next to its name.
- When connecting or saving, the extension will extract credentials or connection details from Azure where available. If multiple authentication methods are supported, you will be prompted to choose one.

## Additional Notes

- You can filter subscriptions in the Service Discovery panel to limit the scope of discovery if you have access to many subscriptions.
- The provider reuses shared authentication and subscription selection flows used across other Service Discovery plugins.
- If you save a discovered account, the saved connection will appear in your Connections view for later use.

## Feedback and Contributions

If you have suggestions for improving this provider or would like to add support for additional resource types, please [join the discussion board](https://github.com/microsoft/vscode-documentdb/discussions) and share your feedback.

---
3 changes: 2 additions & 1 deletion docs/learn-more/service-discovery.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@ This approach allows you to connect to a variety of platforms without needing to

## Available Service Discovery Plugins

Currently, two service discovery plugins are available:
Currently, the following service discovery plugins are available:

- **[Azure CosmosDB for MongoDB (RU)](./service-discovery-azure-cosmosdb-for-mongodb-ru)**
- **[Azure CosmosDB for MongoDB (vCore)](./service-discovery-azure-cosmosdb-for-mongodb-vcore)**
- **[Azure VMs (DocumentDB)](./service-discovery-azure-vms)**

Expand Down
62 changes: 62 additions & 0 deletions docs/release-notes/0.4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<!-- Release Notes Section Badge or Breadcrumb -->

> **Release Notes** — [Back to Home](../index.md)

---

# DocumentDB for VS Code Extension v0.4

We are excited to announce the release of **DocumentDB for VS Code Extension v0.4**. This is a landmark update that introduces deep integration with the Azure ecosystem, adds powerful new service discovery capabilities, and aligns our branding with the official [DocumentDB](https://documentdb.io) identity.

<p align="center"><img src="images/0.4.0_documentdb-logo.png" alt="DocumentDB Logo" style="width:40%; min-width:180px; max-width:320px; height:auto;" /></p>

This release improves how developers working with Azure discover, connect to, and manage their MongoDB-compatible databases, all from within a unified VS Code experience.

## What's New in v0.4

### ⭐ **Deep Integration with the Azure Resources Extension** ([#58](https://github.com/microsoft/vscode-documentdb/issues/58))

> **Note: This is a staged feature release**
> It is coordinated across three extensions: DocumentDB for VS Code, Azure Databases, and Azure Resources.
>
> The full integration experience will be enabled when the Azure Resources extension update is released in the coming days.

This release improves the user experience for developers in the Azure ecosystem by integrating directly with the **Azure Resources extension**. The DocumentDB extension now takes ownership of the **Azure Cosmos DB for MongoDB (RU)** and **(vCore)** nodes directly within the Azure resource tree.

This collaboration provides a single, authoritative view for all your Azure resources while enriching the experience with the specialized MongoDB tooling that our extension provides.

- **Unified Azure View**: Discover and manage your MongoDB resources directly within the familiar Azure Resources view without needing to switch between extensions.
- **Rich MongoDB Tooling**: Access all of DocumentDB for VS Code's features - like data exploration, query scrapbooks, and management commands - directly from the Azure tree.
- **Coordinated Orchestration**: The Azure Resources extension now directs which extension manages which resource, ensuring a stable and conflict-free experience.
- **Automatic Migration**: Existing MongoDB connections are automatically migrated for an efficient transition.

<p align="center"><img src="./images/0.4.0_azure_resources.png" alt="Authentication Method Selection" width="360" style="max-width:100%;height:auto;"></p>

### 2️⃣ **Service Discovery for Azure Cosmos DB for MongoDB (RU)** ([#244](https://github.com/microsoft/vscode-documentdb/issues/244))

We've expanded our service discovery capabilities by adding a dedicated provider for **Azure Cosmos DB for MongoDB (RU)** resources. This complements our existing vCore provider and makes connecting to RU-based accounts easier than ever.

- **New Discovery Option**: A new "Azure Cosmos DB for MongoDB (RU)" provider is now available in the Discovery View.
- **Consistent User Experience**: The new provider uses the same authentication and wizard-based workflow (select subscription → select cluster → connect) that users are already familiar with.
- **Optimized for RU**: The provider uses RU-specific Azure APIs to ensure accurate and reliable discovery.

[Learn more about Service Discovery →](../learn-more/service-discovery.md)

### 3️⃣ **Official DocumentDB Logo and Branding** ([#246](https://github.com/microsoft/vscode-documentdb/pull/246))

The extension has been updated with the **official DocumentDB logo and branding**. This change provides better brand recognition and creates a more consistent visual identity across the DocumentDB ecosystem. You'll see the new logo in the VS Code activity bar, the marketplace, and throughout our documentation.

## Key Fixes and Improvements

#### 🐛 **Restored Password Support for Connection Strings** ([#247](https://github.com/microsoft/vscode-documentdb/pull/247))

We've fixed a regression that prevented users from creating new connections using a connection string with a password in certain configurations. The validation logic in the connection workflow has been improved to ensure all valid connection strings are handled correctly.

#### 🛠️ **Improved Debugging with Enhanced Error Details** ([#236](https://github.com/microsoft/vscode-documentdb/pull/236))

As part of our commitment to stability, we've enhanced our internal error handling. `nonNull` checks now include file context in their error messages, making it significantly easier for our team to diagnose and triage reported issues.

## Changelog

See the full changelog entry for this release:
➡️ [CHANGELOG.md#040](https://github.com/microsoft/vscode-documentdb/blob/main/CHANGELOG.md#040)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 14 additions & 1 deletion eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,20 @@ export default ts.config(
'no-case-declarations': 'error',
'no-constant-condition': 'error',
'no-inner-declarations': 'error',
'no-restricted-imports': ['error', { patterns: ['**/*/extension.bundle'] }],
'no-restricted-imports': [
'error',
{
paths: [
{
name: '@microsoft/vscode-azext-utils',
importNames: ['nonNullValue', 'nonNullProp', 'nonNullOrEmptyValue'],
message:
"Do not import nonNull helpers from '@microsoft/vscode-azext-utils'. Use the local 'src/utils/nonNull' instead.",
},
],
patterns: ['**/*/extension.bundle'],
},
],
'no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
'no-useless-escape': 'error',
'license-header/header': [
Expand Down
1 change: 1 addition & 0 deletions extension.bundle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export { ObjectId } from 'bson';
// The tests should import '../extension.bundle.ts'. At design-time they live in tests/ and so will pick up this file (extension.bundle.ts).
// At runtime the tests live in dist/tests and will therefore pick up the main webpack bundle at dist/extension.bundle.js.
export { AzureAccountTreeItemBase, createAzureClient } from '@microsoft/vscode-azext-azureutils';
// eslint-disable-next-line no-restricted-imports -- bundle intentionally re-exports many helpers for tests; nonNull helpers are provided locally in this repo
export * from '@microsoft/vscode-azext-utils';
export { isWindows, wellKnownEmulatorPassword } from './src/constants';
export { connectToClient, isCosmosEmulatorConnectionString } from './src/documentdb/scrapbook/connectToClient';
Expand Down
Loading