A pretty packed cycle. The headline change is ARM-based control plane for database and container management, but there’s also a fully reworked CLI, two new item commands, a much friendlier shell experience for newcomers, and a long list of paper-cut fixes.
- Database and container operations now go through Azure Resource Manager.
mkdb,mkcon,rmdb,rmcon,settings, andindexpolicyuse ARM when the connection includes a token credential, and fall back to the data plane when it doesn’t (account key,COSMOSDB_SHELL_TOKEN, emulator). This means the shell respects RBAC role assignments for control-plane actions instead of relying on master keys, and works on accounts where data-plane management is restricted.--subscriptionand--resource-grouplet you target an account explicitly; otherwise the shell tries to discover the matching ARM account from the credential. (#75) - CLI parser migrated from CommandLineParser to System.CommandLine. Better error messages for unknown args, proper handling of
-c "command with spaces"and-k "raw command", and consistent behavior for--help,--version, and--lsp. (#72) replaceandpatchitem commands.replaceupdates an existing item from JSON (deriving id and partition key from the JSON, with--etagfor optimistic concurrency).patchapplies a single Cosmos patch operation —set,add,replace,remove, orincr— against a field path on an item identified by id and partition key. No more round-tripping throughprint+mkitem. (#71)- Syntax highlighting in the REPL. JSON command output gets colorized, and matching
()[]{}are coloured by nesting depth (rainbow brackets). (#80) - Interactive keyboard shortcuts. Bindings for common navigation and editing actions in the REPL. (#57)
- Friendlier first run. When the shell starts without a connection — or when
connectis run with no arguments — it now prints a short usage hint instead of a bare prompt. (#82)
- New
connectoptions--subscriptionand--resource-group(and their startup counterparts--connect-subscription,--connect-resource-group) to explicitly target an ARM Cosmos DB account. connectnow displays an “ARM Account” row when an ARM context is attached.- Sovereign-cloud aware ARM endpoint resolution: known cloud table for Public / China / US Gov / Germany, plus a
login.X→management.Xfallback for additional national clouds. (#75) replaceandpatchitem commands. (#71)- JSON output syntax highlighting and depth-cycled bracket coloring. (#80)
- Interactive shell keyboard shortcuts. (#57)
- Startup usage hint when disconnected. (#82)
lspushesSELECT TOP ndown to the server when no client-side filter is in play, so listing large containers no longer pulls the whole result set. (#70)lscorrectly displays hierarchical partition keys (#64) and is resilient when items have missing content streams (#63).cdnow rejects paths that try to descend below/database/container. (#69)- Entra interactive sign-in attempts are cancellable, so a
connectthat opens a browser tab can be aborted withCtrl+C. (#62) - Emulator connection failures produce a clearer, actionable error message. (#84)
--help//?output reflowed for readability, and all remaining help strings are localized.- New long option spellings
--clear-historyand--color-system(the unhyphenated forms still work). settingsnow validates the database/container before fetching, so missing resources produce the standard localizeddatabase_not_found/container_not_foundmessage regardless of whether the call routes through ARM or the data plane.
connectno longer regresses to a failure when the credential has no ARM access — it falls back to the data plane cleanly. (#75)- Token-credential connect paths properly dispose the
CosmosClientwhen ARM completion fails, so a failed connect never leaks a half-initialized client. - Data-plane container reads guard against null
Container.Resourceresponses. - VS Code credential is reused correctly when
connectis re-issued in the same session. (#73) - Highlighter no longer duplicates text inside interpolated strings, and lexes interpolated-string interiors with accurate outer-source positions.
PrintConnectUsageHintescapes the localized header/footer so they render correctly with markup-bearing values.
- New “telemetry” section in README describing what data the shell collects, with explicit clarification of what is and isn’t collected around Entra ID authentication. (#78)
- docs/connect.md, docs/commands.md, docs/navigation.md, and docs/mcp.md updated for the new ARM options, the strict-RBAC limitation of key-based connections, and the four-step ARM endpoint resolution order.
- Official pipeline now zips signed per-RID publish folders so downloadable artifacts are ready to use. (#77)
- Artifact upload trims
out\tozip+nupkgonly; expected exe is matched by file name with project casing.