Skip to content

Conversation

@tnaum-ms
Copy link
Collaborator

@tnaum-ms tnaum-ms commented Feb 3, 2026

0.7.0

New Features

  • Collection Copy and Paste: Adds lightweight data migration to copy collections across databases and connections, with conflict resolution options and throttling-aware batching. #63, #170
  • Connection Folders: Adds folders and subfolders in the Connections view to organize connections, including move/rename/delete workflows. #426

Improvements

  • Estimated Document Count: Shows an estimated document count for collections in the tree view. #170
  • Copy Connection String with Password: Adds an option to include the password when copying a connection string. #436
  • Release Notes Notification: Prompts users to view release notes after upgrading to a new major or minor version. #487
  • Accessibility: Improves screen reader announcements, keyboard navigation, and ARIA labeling across Query Insights and document editing. #374, #375, #377, #378, #379, #380, #381, #384, #385
  • Alphabetical Collection Sorting: Sorts collections alphabetically in the tree view. Thanks to @VanitasBlade. #456, #465
  • Query Insights Prompt Hardening: Updates the Query Insights model/prompt and adds additional prompt-injection mitigations. #468
  • Connection String Validation: Trims and validates connection string input to avoid empty values. #467
  • Collection Paste Feedback: Refreshes collection metadata after paste and improves error reporting for failed writes. #482, #484

Fixes

  • Dark Theme Rendering: Fixes unreadable text in some dark themes by respecting theme colors. #457
  • Query Insights Markdown Rendering: Restricts AI output formatting to avoid malformed markdown rendering. #428
  • Invalid Query JSON: Shows a clear error when query JSON fails to parse instead of silently using empty objects. #458, #471
  • Keyboard Paste Shortcuts: Restores Ctrl+V/Cmd+V in the Query Editor and Document View by pinning Monaco to 0.52.2. #435, #470
  • Import from Discovery View: Fixes document import for Azure Cosmos DB for MongoDB (RU) discovery when connection metadata is not yet cached. #368, #479
  • Azure Resources View Expansion: Fixes cluster expansion failures in the Azure Resources view by deriving resource group information from resource IDs. #480

Security

  • Dependency Updates: Updates qs and express to address security vulnerabilities. #434

This pull request introduces several new documentation and process improvements to the repository, focusing on coding standards, accessibility, wizard implementation patterns, and changelog formatting. It also updates development environment configuration and compliance suppressions for test files.

Documentation and Standards:

  • TypeScript Coding Guidelines: Adds .github/instructions/typescript.instructions.md with strict TypeScript patterns, anti-patterns, error handling practices, and VS Code extension development conventions.
  • Wizard Implementation Pattern: Introduces .github/instructions/wizard.instructions.md describing best practices and file structure for implementing multi-step wizards with AzureWizard, including context management and back navigation rules.
  • Accessibility Expert Skill: Adds .github/skills/accessibility-aria-expert/SKILL.md, providing detailed rules and patterns for ensuring accessibility in React/Fluent UI webviews, including ARIA usage, focus management, and screen reader announcements.
  • Changelog Format Reference: Adds .github/skills/writing-release-notes/CHANGELOG-FORMAT.md defining the required format, categories, and style for CHANGELOG.md entries, with examples and anti-patterns.

Development Environment and Compliance:

  • Devcontainer Improvements: Updates .devcontainer/devcontainer.json to run npm run build after container creation and ensures both install and build steps are run when package.json changes, improving reliability of the development environment. [1] [2]
  • Compliance Suppressions for Test Files: Adds new entries to .azure-pipelines/compliance/CredScanSuppressions.json to suppress false positives for fake credentials in additional test files.

tnaum-ms and others added 30 commits January 13, 2026 18:26
…lder selection and conflict verification messages
…onality

- Implement comprehensive tests for ConnectionStorageService, covering CRUD operations, folder hierarchy management, and connection type separation.
- Introduce tests for orphan cleanup logic, ensuring proper deletion of orphaned items and handling of nested structures.
- Mock storage and telemetry context to facilitate isolated testing.
- Validate migration paths from v1 and v2 to v3 storage formats.
Added editor.focus() call in handleMonacoEditorMount to ensure keyboard focus
is immediately visible when the document view opens. This addresses WCAG 2.4.3
Focus Order accessibility requirement.

Co-authored-by: tnaum-ms <[email protected]>
- Add role="status" and aria-live="polite" to status text for screen reader announcement
- Add aria-hidden="true" to decorative Spinner to prevent redundant announcements
- Fixes WCAG 4.1.3 violation where NVDA was announcing "document" instead of the status message

Co-authored-by: tnaum-ms <[email protected]>
@tnaum-ms tnaum-ms requested a review from a team as a code owner February 3, 2026 21:17
Copilot AI review requested due to automatic review settings February 3, 2026 21:17
@tnaum-ms tnaum-ms added this to the 0.7.0 - January 2025 milestone Feb 3, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This is a major release (0.7.0) that introduces significant new features and improvements to the VS Code DocumentDB extension. The release focuses on three main areas: a copy-and-paste collections feature, folder hierarchy support in the Connections View, and cluster ID architecture improvements to fix bugs related to moving connections between folders.

Changes:

  • Added collection copy-and-paste functionality with conflict resolution strategies (abort, skip, overwrite, generate new IDs)
  • Implemented folder hierarchy in Connections View with drag-and-drop, clipboard operations, and CRUD commands
  • Fixed cluster ID architecture to use stable clusterId instead of treeId for cache operations, preventing silent bugs when connections move between folders

Reviewed changes

Copilot reviewed 124 out of 206 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/services/taskService/data-api/types.ts New public API types for document streaming, conflict resolution strategies, and write results
src/services/taskService/data-api/readers/DocumentDbDocumentReader.ts DocumentDB implementation of document reader with streaming and counting capabilities
src/services/taskService/UI/taskProgressReportingService.ts Service for displaying progress notifications for running tasks with cancellation support
src/services/taskService/UI/README.md Documentation for task UI services and tree view annotation patterns
src/services/discoveryServices.ts Added return type to registerProvider method
src/plugins/service-azure-vm/discovery-tree/vm/AzureVMResourceItem.ts Updated to use stable clusterId for credential cache operations instead of treeId
src/plugins/service-azure-vm/discovery-tree/AzureSubscriptionItem.ts Created TreeCluster models with proper ID separation for VM resources
src/plugins/service-azure-mongo-vcore/discovery-tree/documentdb/DocumentDBResourceItem.ts Updated credential cache calls to use clusterId instead of this.id
src/plugins/service-azure-mongo-vcore/discovery-tree/AzureSubscriptionItem.ts Created TreeCluster models with Azure Resource ID tracking for vCore resources
src/plugins/service-azure-mongo-ru/discovery-tree/documentdb/MongoRUResourceItem.ts Updated credential cache operations to use stable clusterId
src/plugins/service-azure-mongo-ru/discovery-tree/AzureMongoRUSubscriptionItem.ts Created TreeCluster models for MongoDB RU resources
src/extensionVariables.ts Added copiedCollectionNode for clipboard state and copy-paste settings
src/documentdb/utils/toFilterQuery.ts Changed to throw QueryError instead of returning empty object on invalid filter syntax
src/documentdb/utils/toFilterQuery.test.ts Updated tests to expect QueryError for invalid input
src/documentdb/utils/getClusterMetadata.ts Removed unnecessary eslint-disable comments
src/documentdb/utils/connectionStringHelpers.ts Added helper functions for normalizing connection strings and checking for duplicates
src/documentdb/utils/connection-string-parameters.md Documentation on MongoDB connection string duplicate parameter behavior
src/documentdb/utils/DocumentDBConnectionString.ts Added methods for deduplicating query parameters according to MongoDB specifications
src/documentdb/scrapbook/ScrapbookService.ts Updated to use clusterId for credential lookups and handle emulator config conditionally
src/documentdb/errors/index.ts New barrel export for QueryError
src/documentdb/errors/QueryError.ts New unified error class for query-related failures
src/documentdb/Views.ts Added inferViewIdFromTreeId helper function
src/documentdb/CredentialCache.ts Extensively documented to clarify clusterId usage vs treeId
src/documentdb/CredentialCache.test.ts Comprehensive tests for credential cache stability across folder moves
src/documentdb/ClustersExtension.ts Registered new copy-paste commands, folder management commands, and task progress reporting service
src/documentdb/ClusterSession.ts Updated documentation to clarify credentialId is the stable clusterId
src/commands/updateCredentials/updateCredentials.ts Updated to use clusterId for credential operations
src/commands/renameConnection/ExecuteStep.ts Deleted file (moved to connections-view/renameConnection/)
src/commands/removeConnection/removeConnection.ts Added task conflict checking and updated to use clusterId
src/commands/pasteCollection/pasteCollection.ts New wizard-based collection paste command with extensive telemetry
src/commands/pasteCollection/PromptNewCollectionNameStep.ts Wizard step for prompting new collection name with validation
src/commands/pasteCollection/PromptIndexConfigurationStep.ts Wizard step for index copying (not yet implemented)
src/commands/pasteCollection/PromptConflictResolutionStep.ts Wizard step for choosing conflict resolution strategy
src/commands/pasteCollection/PasteCollectionWizardContext.ts Context interface for paste wizard
src/commands/pasteCollection/LargeCollectionWarningStep.ts Warning step for large collections with configurable threshold
src/commands/pasteCollection/ExecuteStep.ts Executes the copy-paste task with tree annotations
src/commands/pasteCollection/ConfirmOperationStep.ts Final confirmation with operation summary
src/commands/openDocument/openDocument.ts Added viewId parameter for proper tree node resolution
src/commands/openCollectionView/openCollectionView.ts Added viewId extraction and passing
src/commands/newLocalConnection/newLocalConnection.ts Refactored to support folder creation with shared wizard logic
src/commands/newLocalConnection/NewLocalConnectionWizardContext.ts Added parentStorageId for folder support
src/commands/newLocalConnection/ExecuteStep.ts Updated to handle folder parent IDs and better error handling
src/commands/newConnection/newConnection.ts Refactored to support folder creation with shared wizard
src/commands/newConnection/PromptConnectionStringStep.ts Added empty string validation
src/commands/newConnection/NewConnectionWizardContext.ts Added parentTreeId for folder reveal
src/commands/newConnection/ExecuteStep.ts Updated to use withConnectionsViewProgress and handle folders
src/commands/llmEnhancedCommands/queryGenerationCommands.ts Split prompt into separate messages for better LLM processing
src/commands/llmEnhancedCommands/indexAdvisorCommands.ts Split prompt into separate messages and updated return type
src/commands/launchShell/launchShell.ts Updated to use clusterId and handle emulator config conditionally
src/commands/index.unhideIndex/unhideIndex.ts Updated to use clusterId for client lookup
src/commands/index.hideIndex/hideIndex.ts Updated to use clusterId for client lookup
src/commands/index.dropIndex/dropIndex.ts Updated to use clusterId for client lookup
src/commands/importDocuments/importDocuments.ts Updated to use clusterId and improved error handling for bulk writes
src/commands/exportDocuments/exportDocuments.ts Updated to use clusterId for client lookup
src/commands/deleteDatabase/deleteDatabase.ts Added task conflict checking and updated to use clusterId
src/commands/deleteCollection/deleteCollection.ts Added task conflict checking and updated to use clusterId
src/commands/createDocument/createDocument.ts Added viewId extraction and passing
src/commands/createDatabase/createDatabase.ts Updated to use clusterId for credential checks
src/commands/createDatabase/CreateDatabaseWizardContext.ts Documented that credentialsId should be clusterId
src/commands/createCollection/createCollection.ts Updated to use clusterId
src/commands/createCollection/CreateCollectionWizardContext.ts Documented that credentialsId should be clusterId
src/commands/createCollection/CollectionNameStep.ts Improved error logging
src/commands/copyConnectionString/copyConnectionString.ts Added password inclusion prompt for native auth in Connections View
src/commands/copyCollection/copyCollection.ts New command to mark a collection for copying
src/commands/connections-view/verificationUtils.ts Utilities for checking task conflicts before folder operations
src/commands/connections-view/renameFolder/* New folder rename wizard with validation
src/commands/connections-view/renameConnection/* Refactored connection rename to new structure with refresh helpers
src/commands/connections-view/newConnectionInFolder/newConnectionInFolder.ts Router for creating connections in folders
src/commands/connections-view/moveItems/* New wizard for moving items with task/naming conflict verification
src/commands/connections-view/deleteFolder/* New wizard for deleting folders with recursive deletion
src/commands/connections-view/createFolder/* New wizard for creating folders with duplicate validation
src/commands/chooseDataMigrationExtension/chooseDataMigrationExtension.ts Updated to use clusterId for credential operations
src/commands/addConnectionFromRegistry/addConnectionFromRegistry.ts Updated to use connection helpers and withConnectionsViewProgress
src/__mocks__/vscode.js Enhanced mock with template string replacement and CancellationTokenSource
progress.md New detailed progress tracking for folder hierarchy implementation
eslint.config.mjs Added SCSS module imports to allowed internal modules
docs/user-manual/copy-and-paste.md Comprehensive user documentation for copy-paste feature
.vscode/launch.json Changed debug telemetry to verbose mode
.github/instructions/wizard.instructions.md New coding guidelines for wizard implementation patterns
.github/instructions/typescript.instructions.md New TypeScript coding guidelines
.devcontainer/devcontainer.json Improved build commands for container lifecycle
.azure-pipelines/compliance/CredScanSuppressions.json Added suppressions for new test files
Files not reviewed (1)
  • api/package-lock.json: Language not supported

@tnaum-ms
Copy link
Collaborator Author

tnaum-ms commented Feb 4, 2026

@copilot open a new pull request to apply changes based on the comments in this thread

Copy link
Contributor

Copilot AI commented Feb 4, 2026

@tnaum-ms I've opened a new pull request, #486, to work on those changes. Once the pull request is ready, I'll request review from you.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants