Datex Studio CLI · Release notes

dxs 0.5.9

Encrypted credentials you can opt into, a CLI that starts several times faster, a new dxs doctor, collection filters for datasources, and fixes for API routes that changed underneath us.

Released Oct 13, 2026 Previous 0.5.8 Merged PRs 16
Security

Encrypt stored credentials with your OS vault

Opt in with one setting. Keychain, Credential Manager or Secret Service holds the key. File storage stays the default.

Speed

About 85–90% faster startup for help and version

Command families now load only when you call them. Local commands start roughly twice as fast.

Diagnostics

New dxs doctor finds and fixes broken installs

Checks Python, installer, PATH and credentials. Repairs uv installs pinned to an old interpreter.

Sign-in and credentials

  • Encrypted credential storage, opt-inNew#275#294

    Tokens and daemon secrets can now be stored as encrypted documents, with random keys held in macOS Keychain, Windows Credential Manager or Linux Secret Service. Existing credentials migrate atomically, and plaintext is removed only after the encrypted copy reads back.

    dxs settings set credential_storage keychain

    Plaintext file storage remains the default while native-vault support finishes platform validation. To opt back out, even with a locked or unavailable vault, set credential_storage file and sign in again. A process-only memory mode is also available. Native prompts appear only during interactive login and dxs init; help, discovery and telemetry never open the vault.

  • Login now persists on Python 3.10Fix#277

    On Python 3.10, dxs auth login reported success but the next command saw you as signed out. The credential reader rejected the Z suffix on UTC timestamps and silently returned an empty store. Timestamps now round-trip correctly, and CI covers authentication on Python 3.10 through 3.14.

Install health and performance

  • dxs doctor diagnoses and repairs your installationNew#278

    A uv tool install keeps the Python it was installed with, so upgrading system Python never fixes it. dxs doctor checks runtime, installer, PATH, release compatibility and stored credentials, with JSON and offline modes. For uv installs it can rebuild on a newer interpreter, keeping extras, indexes and version constraints, then verifies the result in a fresh process.

    dxs doctor --fix --yes

    dxs update and the update check now honor the release's Requires-Python, and an incompatible interpreter gets an actionable error instead of a traceback. The minimum stays Python 3.10. Other installers get manual repair guidance.

  • Faster startup with lazy command loadingPerformance#295

    Every invocation used to import every command family, including authentication, HTML parsing and report rendering. Commands now load only when selected; help and shell completion read lightweight metadata. Median startup reductions measured in CI:

    Platform / Python--versionRoot helpLocal JSON command
    Linux / 3.1190.8%89.7%62.0%
    Linux / 3.1389.2%88.4%56.0%
    Windows / 3.1186.1%84.9%52.5%
    Windows / 3.1385.4%84.9%47.0%

    Percent reduction in median wall time versus the previous release, 30 runs per case. The local JSON case is report schema.

Datasources

  • Dynamic filters on collection navigationNew#303

    Both generate and generate-flow now resolve explicit dotted paths into nested filter trees, including paths through collections. Paths outside the selected shape resolve from OData metadata without changing the query; flow paths resolve from the declared type tree.

    dxs datasource generate … --all-dynamic-filters --include-collection-filters

    Auto-population stays scalar-only unless you add --include-collection-filters. Unresolved paths, reserved quantifier markers, incompatible filter contracts and sorts across a collection boundary are now rejected before any file is written.

  • Complete output contractsFix#300

    Generated datasources could omit totalCount, custom columns or linked fields from outParams, which the platform then rejected. Generation and validate now share one set of output rules and finalize after enhancements and linked metadata. Missing or incompatible linked metadata stops generation before writing. Report-owned bindings carry the complete contract.

Branches, commits and environments

  • Release notes on Studio commitsNew#302

    Attach detailed notes to a commit with --release-notes TEXT or --release-notes-file PATH. The text is sent exactly as written and previewed during dry runs. History readers expose it as commitReleaseNotes, and YAML output preserves Markdown whitespace and line endings. Omitting the option leaves commit and cascade behavior unchanged.

  • dxs env deploy activates versions againChanged#301

    The command called an endpoint that does not exist and refused inactive versions. It now verifies the component, destination definition, organization and version, then activates through the supported route. A 403 explains the per-user HasDeployAccess grant you need.

    dxs env deploy COMPONENT_ID --definition-id DEFINITION_ID [--force]

    --definition-id is now required. --force skips only the confirmation prompt, never the target checks.

  • Branch creation and cascades use the new API routeFix#299

    The platform removed createFeatureBranch. dxs source branch create and dxs cascade run now use the shared featureBranch route with the same payloads and returned branch IDs. This requires the updated platform API; there is no legacy fallback.

Agent skills

  • Windows skill discovery skips directory junctionsFix#271

    Discovery walked into junctions such as Application Data and My Documents, producing access-denied errors and exit status 1 even after every skill was repaired. Junctions are now skipped during scans, but still inspected when you pass one explicitly as a scan root.

Behind the scenes

  • Security white paper and researchDocs#273#274#298

    The CLI security white paper for Entra administrators reviewing dxs was updated October 12 for opt-in credential storage. It is available from Datex on request.

  • Internal service and maintainer toolingService#270#276

    Quartermaster deployment and monitoring work, plus maintainer tooling. Nothing in the dxs package changes, and product telemetry collection is unchanged.

Before you upgrade

What might need a change on your side

  • Platform API version. Branch creation and cascade run require the platform's featureBranch route. Against an older API, they fail instead of falling back.
  • dxs env deploy scripts. Add --definition-id. Callers without the HasDeployAccess grant, which defaults to off, now get a 403 with guidance.
  • Datasource generation is stricter. Unresolved dynamic-filter paths and incomplete linked metadata now stop generation before a file is written. Regenerate older configs, or open and save them in Studio, to refresh their output contracts.
  • Credential storage. Nothing changes unless you opt in. After switching to keychain, switching back to file requires a fresh sign-in.
  • Stuck on an old Python? If dxs update reports an incompatible runtime, run dxs doctor --fix to rebuild the uv install on a newer interpreter.

Source record

Compiled from the 16 pull requests merged to main between v0.5.8 and v0.5.9, assigned by tag ancestry. Deploy-pin and version-bump commits are omitted. Dates use America/New_York. Performance figures come from the CI startup matrix in #295.