* Add Cosmos DB Shell (NoSQL) support to Cloud Shell
Adds Cosmos DB (NoSQL) support to the Cloud Shell experience and wires up authentication for RBAC / local-auth-disabled accounts:
- Enable the Open Cosmos DB Shell button behind the enableCloudShell feature flag.
- Bootstrap .NET SDK 10 in Cloud Shell before installing the CosmosDBShell tool.
- Force gateway connection mode and add --verbose to surface connection errors.
- Select Entra ID vs account-key auth via isCloudShellEntraAuthEnabled (covers dataplane RBAC and disableLocalAuth accounts).
- Acquire a data-plane-scoped Entra token on demand when no cached aadToken exists, and omit --connect-tenant so a missing token falls through to DefaultAzureCredential (Cloud Shell az session) instead of interactive/device-code auth.
* Fix popup_window_error in CosmosDB Cloud Shell Entra auth
Acquiring an Entra token on demand via acquireMsalTokenForAccount triggered a browser loginPopup (even in silent mode when no MSAL account was cached), which fails with popup_window_error inside the hosted Cloud Shell context. getKey now returns the cached userContext.aadToken when present, or an empty string otherwise. With no token exported, the CosmosDBShell tool falls through to DefaultAzureCredential, which uses the Cloud Shell's signed-in az session.
* Force --connect-azure-cli whenever no credential env var is exported
In Azure Cloud Shell, DefaultAzureCredential tries ManagedIdentityCredential first, which cannot mint a token for the *.documents.azure.com audience (AudienceNotSupported). Force AzureCliCredential via --connect-azure-cli whenever no key/token env var is exported, covering both the Entra-no-token and key-auth-empty-key cases. Also auto-update the CosmosDBShell tool so cached installs pick up the new flag.
* Silently mint a Cosmos data-plane token for the Cloud Shell Entra path
A disableLocalAuth Cosmos account whose Data Explorer session is still in key mode has no cached userContext.aadToken, and the ephemeral Cloud Shell can obtain a Cosmos token from neither its managed identity (AudienceNotSupported for *.documents.azure.com) nor its az session (not logged in). Mint a Cosmos-scoped token in the browser and export it via COSMOSDB_SHELL_TOKEN. The acquisition is guarded on an existing cached MSAL account so it can never trigger an interactive popup, and any failure returns an empty string so the tool falls back to --connect-azure-cli.
* Only accept Y/N at the Cloud Shell consent prompt
askConfirmation now ignores any key that is not Y or N instead of treating every non-Y key as a decline, so an accidental keypress no longer aborts the Cloud Shell consent flow. Also add diagnostic warnings on the Cloud Shell token path so the browser console reveals whether the silent Cosmos token mint was skipped (no cached MSAL account) or returned empty.
* Use device-code auth when Cloud Shell has no token
* Pass the Data Explorer credential to the Cosmos DB shell instead of signing in interactively
Azure Cloud Shell cannot authenticate to Cosmos DB on its own: its managed identity
is rejected with AudienceNotSupported for the *.documents.azure.com audience, its az
session is not signed in, and neither the interactive browser nor the device-code flow
is usable from the embedded terminal.
Resolve the credential in Data Explorer and hand it to the shell out-of-band:
- getCosmosDBShellCredential() returns an Entra ID data-plane token (cached aadToken,
or one minted silently only when an MSAL account already exists so it can never
trigger a popup), falling back to the account master key unless local auth is
disabled. It reports which kind it resolved so the correct env var is exported.
- CosmosDBShellHandler exports COSMOSDB_SHELL_TOKEN or COSMOSDB_SHELL_ACCOUNT_KEY and
drops every credential flag, so the tool always lands on a terminal, non-interactive
step of its credential chain.
- When nothing can be resolved, print actionable guidance instead of launching the
tool with no credential.
* Fix TS7011 in ShellTypeFactory tests by typing the mocked getAllAccounts
The empty array literal in the getMsalInstance mock had no contextual type, so
tsc inferred an implicit any[] return under noImplicitAny. Route every mock
through a typed mockMsalAccounts helper.
* Reuse DE's cached credential for Cosmos DB Shell; add read-only key fallback
* Deliver Cosmos DB Shell key as a full connection string; harden key resolution
* Surface the specific reason a Cosmos DB Shell credential could not be resolved
* Deliver Cosmos DB Shell credential inline (export+connect on one line), mirroring Mongo handler
* Log which Cosmos DB Shell credential kind was resolved for debugging
* Increase ARM timeout for Cloud Shell provisioning calls to avoid spurious abort errors
* Gate Cosmos DB Shell button behind enableCosmosDBShell feature flag
* Fix TS2741: add missing enableCosmosDBShell to Features test fixture
Removes the GitHub notebook-repo integration that only existed to pin/browse notebook repositories. Deletes src/GitHub/, the GitHub controls/panes, GitHubUtils, JunoUtils, and the connectToGitHub webpack entry. Decouples NotebookManager, useNotebook, the resource tree, and Explorer from GitHub wiring. Trims JunoClient's GitHub-only methods while keeping the Schema and gallery methods. Removes GitHub config fields from ConfigContext and strips the dead github:// branches from NotebookUtil.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix query tab view: respect default setting and add toggle behavior
- Use getDefaultQueryResultsView() when splitterDirection prop is not
provided, so the user's configured default from Settings is respected
- Add onCommandClick to the View split button that toggles between
Vertical and Horizontal layout when the main button is clicked
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add Playwright E2E tests for query tab View toggle and dropdown
- Add View to CommandBarButton enum in test fixtures
- Add test: clicking main View button toggles between vertical/horizontal
- Add test: selecting options from View dropdown changes layout
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add Playwright E2E tests for query tab View toggle and dropdown
- Add View to CommandBarButton enum in test fixtures
- Add test: clicking main View button toggles between vertical/horizontal
- Add test: selecting options from View dropdown changes layout
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix issue that was failing tests when using account keys for access.
* Remove commented code.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add implementation plan for removing Phoenix and notebooks
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Phase 1: Decouple database shells from Phoenix to CloudShell-only
Migrate all shell terminals to the CloudShell path and remove the legacy Phoenix notebook-server terminal code so shells no longer depend on notebook provisioning.
- TerminalTab now always uses CloudShellTerminalComponentAdapter; removed the notebook-server adapter branch, getNotebookServerInfo, and the dead VCoreMongo firewall check
- Migrate Postgres and VCore Mongo quickstart tabs to CloudShellTerminalComponent (drop allocateContainer/useNotebook dependencies)
- Refactor useTerminal to send input via the CloudShell WebSocket instead of postRobot/iframe; register the socket from CloudShellTerminalComponent
- Simplify Explorer.openNotebookTerminal to always open a CloudShell terminal
- Delete NotebookTerminalComponent(+test/less/snapshot), NotebookTerminalComponentAdapter, and the src/Terminal/ entry point
- Remove the terminal.html webpack entry/HTML plugin and src/Terminal from tsconfig.strict.json
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Adding further console logging but also fixed lines with JSON.stringify(error)
* Added retry mechanism for GETs for armRequest workflow
* Moved stringifyError into its own file as it was causing strict compile issues in ErrorHandlingUtils
* Removing temporary debug logging
* Undoing eslint change as well
* Adding further console logging but also fixed lines with JSON.stringify(error)
* Added retry mechanism for GETs for armRequest workflow
* Moved stringifyError into its own file as it was causing strict compile issues in ErrorHandlingUtils
* Initial change for online partition key change
* Refactoring container copy strings so they can be locallized
* Missed a file
* Fixing some issues found by lint
* Fixing errors
* Fixing unit tests
* Fixing error caused by merging from master
* Fixing minor error from merge
* Fixing merge error
* Addressing comments
* Addressing some PR comments
* Minor issues
* Refixing a formatting issue
* Fixed localization error
* Scale the number of test accounts used for SQL tests to one per shard.
* Set PLAYWRIGHT_SHARD_INDEX environment variable in CI workflow.
* Add log statement for the shared index and selected account.
* Remove console log.
* Fix order of accounts so that shard index maps to same account index.
* Try to fix the SQL account scope in ci.yml
* Get tokens for all accounts and use the shard index to pick which one.
* Set tokens without loop.
* Handcode the token use in tests.
* Fix database creation.
* Add debug for rbac token issues.
* Common function for retrieving NoSQL token.
* Disable eslint rule for noconsole temporarily.
* Move getNoSqlRbacToken to separate file.
* Fix ref to new function.
* mock Resource Graph API — fires on auto-subscription selection to populate account dropdown
* Code tidy-up.
* Fix build errors.
* Remove deprecated getDbAccountAllowedStatus from PhoenixClient
The getDbAccountAllowedStatus endpoint is no longer available. All callers
now assume a Forbidden result, meaning isPhoenixNotebooks and
isPhoenixFeatures are always false.
- Remove getDbAccountAllowedStatus() from PhoenixClient
- Simplify getPhoenixStatus() in useNotebook to set both flags to false
- Remove IDbAccountAllow interface from DataModels
- Remove PhoenixDBAccountAllowed and CheckPhoenixStatus telemetry actions
- Clean up unused imports
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Revert removal of enum values, to be safe.
---------
Co-authored-by: Bikram Choudhury <bchoudhury@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: add copyable ID to delete confirmation dialogs
When deleting databases or containers, the confirmation dialog now displays
the resource ID in a read-only text field with a copy button, allowing users
to copy-paste the ID into the confirmation input instead of typing it manually.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fixed formatting.
* revert non-en locale changes; add localization instruction
Revert changes to non-English locale files — translations are managed
by a separate localization process. Add a note to copilot instructions
clarifying that only en/Resources.json should be modified.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: capitalize 'Id' in copyable resource ID labels
Changed 'id:' to 'Id:' in the copyable ID labels for delete confirmation
dialogs (both database and collection).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: capitalize collection name in copyable ID label
Use getCollectionName() directly (returns 'Container', 'Collection', etc.)
instead of the lowercased collectionName variable for the copyable ID label.
The database panel already used getDatabaseName() which returns capitalized.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: add warning message to delete container confirmation dialog
Added the same warning banner that exists in the delete database dialog
to the delete container dialog, informing users that the action cannot
be undone and will permanently delete the resource and its children.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Copilot assisted changes to remove shared throughput options in add database/container.
* Add E2E tests verifying shared throughput option is removed from creation dialogs
Add three new E2E tests to sharedThroughput.spec.ts:
- New Database panel should not show shared throughput checkbox
- New Container panel should not show shared throughput checkbox when creating new database
- Dedicated throughput checkbox still appears for existing shared database (regression guard)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* default throughput bucket
* nit
* show inactive buckets
* add e2e tests for default throughput bucket
* for test sql containers, use throughput of 4000
* remove container throughput on creation
* added offer throughput
* add default throughput bucket info link
* add text localization
* upgrade playwright
* Fix flaky permissionsScreen test by using unrouteAll with ignoreErrors
* fix: move container creation to beforeAll to reduce CI shard timeout
* remove comment
---------
Co-authored-by: Asier Isayas <aisayas@microsoft.com>
* Reapply "MSAL browser migration changes"
This reverts commit 60a65efb7b.
* Fix redirect URI for localhost
* Fix URI for logout and other minor fix
* Remove unnecessary files
* Fix tests
* Fix tests
* Run npm format
* Address comments
* Address comment
* implemented search bar
* formatting corrected
* added pin(fav) and sorting in local in sidebar tree of DE
* reverted changes
* fixed lint and formatting issues
* fixed lint and formatting issues
* theme toggle button is disabled if in portal
* fixed lint error
* added link on disabled theme toggle button
* updated the variable for pin icon
* removed en-us from url
---------
Co-authored-by: nishthaAhujaa <nishtha17354@iiittd.ac.in>
Co-authored-by: sakshigupta12feb <sakshigupta12feb1@gmail.com>
Co-authored-by: Sakshi Gupta <sakshig@microsoft.com>
* DDM login issue fixed while logging in via connection string
* Removed isPolicyEnabled. The includePaths field should be mandatory and, if present, must be an array
* updated the included value validation and excluded to be optional
---------
Co-authored-by: Sakshi Gupta <sakshig@microsoft.com>
* Fix: Disable Complete action when any job update is in progress
- Updated CopyJobActionMenu to disable Complete button when any action is being performed
- Added comprehensive tests to verify Complete button is disabled during updates
- Improved user experience by preventing concurrent actions on copy jobs
This PR was generated by GitHub Copilot CLI
* Fix lint error: Remove unused variable in CopyJobActionMenu (#2336)
* Initial plan
* Fix lint error: Remove unused variable 'updatingAction' in CopyJobActionMenu.tsx
Co-authored-by: BChoudhury-ms <201893606+BChoudhury-ms@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BChoudhury-ms <201893606+BChoudhury-ms@users.noreply.github.com>
---------
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BChoudhury-ms <201893606+BChoudhury-ms@users.noreply.github.com>
* added a dark theme toggle button on Copyjobs next to refresh button and covered full feature
* Fix formatting in Utils.test.ts
* updated infor icon , error icon and text on jobs details page
* rebased from master
* updated the conflicts
* updated the conflicts
* fixed the test suit
* fixed review comments
* test fix
---------
Co-authored-by: Sakshi Gupta <sakshig@microsoft.com>