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.
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.
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 keychainPlaintext 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 fileand sign in again. A process-onlymemorymode is also available. Native prompts appear only during interactive login anddxs init; help, discovery and telemetry never open the vault. -
Login now persists on Python 3.10Fix#277
On Python 3.10,
dxs auth loginreported success but the next command saw you as signed out. The credential reader rejected theZsuffix 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 doctordiagnoses and repairs your installationNew#278A
uv toolinstall keeps the Python it was installed with, so upgrading system Python never fixes it.dxs doctorchecks 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 --yesdxs updateand the update check now honor the release'sRequires-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 --version Root help Local JSON command Linux / 3.11 90.8% 89.7% 62.0% Linux / 3.13 89.2% 88.4% 56.0% Windows / 3.11 86.1% 84.9% 52.5% Windows / 3.13 85.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
generateandgenerate-flownow 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-filtersAuto-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 fromoutParams, which the platform then rejected. Generation andvalidatenow 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 TEXTor--release-notes-file PATH. The text is sent exactly as written and previewed during dry runs. History readers expose it ascommitReleaseNotes, and YAML output preserves Markdown whitespace and line endings. Omitting the option leaves commit and cascade behavior unchanged. -
dxs env deployactivates versions againChanged#301The 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
HasDeployAccessgrant you need.dxs env deploy COMPONENT_ID --definition-id DEFINITION_ID [--force]--definition-idis now required.--forceskips 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 createanddxs cascade runnow use the sharedfeatureBranchroute 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 DataandMy 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
dxswas 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
dxspackage changes, and product telemetry collection is unchanged.
What might need a change on your side
- Platform API version. Branch creation and
cascade runrequire the platform'sfeatureBranchroute. Against an older API, they fail instead of falling back. dxs env deployscripts. Add--definition-id. Callers without theHasDeployAccessgrant, 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 tofilerequires a fresh sign-in. - Stuck on an old Python? If
dxs updatereports an incompatible runtime, rundxs doctor --fixto 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.