All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Changed:
- Only support the latest version of the developer environment image for the
linux-containerdeveloper environment type
Fixed:
- Fix race condition in the telemetry daemon payload processing logic
Fixed:
- Fix the allowed range of exposed developer environment ports
- Fix locating the repository root for the
info owners codecommand - Ensure that atomically-written files remain readable and writable by the owning group
Added:
- Support Python 3.14
Fixed:
- Improve the behavior of pseudo-terminals on Windows
- Improve the help text of the
invcommand when no arguments are provided
Added:
- Add dependencies for working with DotSlash files
- SubprocessRunner.wait returns command exit code
- Add -v flag on dda env dev to mount an arbitrary volume
- Add dda env dev fs import/export to interact with devenv file system
- Merge dependency group of legacy-tasks with legacy-test-infra-definitions
Added:
dda gh backportbackports a merged PR labeled withbackport/xxxto targetxxx
Fixed:
- Fixed release artifacts.
Added:
userfield for feature flags is also sent from Gitlab CI
Fixed:
- Lazily import Feature Flag manager when needed
Added:
- Add Feature Flag evaluation support
- Add
dda validate ai-rulescommand to automatically sync Cursor rules to Claude.md
Changed:
- Rename the
self telemetry log showcommand toself telemetry show log
Added:
- Add
self telemetry show idcommand
Fixed:
- The
config showcommand now outputs to stdout instead of stderr - The error message when running an outdated version now outputs to stderr instead of stdout
- The
app.subprocess.captureandapp.subprocess.redirectmethods no longer include the standard error stream by default - Ignore rate limiting errors when checking for new releases
- Send anonymized telemetry by default
- Improve logging when developer environments fail to start
Changed:
- Rename
build bazelcommand tobzl
Added:
- Methods on the
app.tools.bazeltool now prevent exceeding platform-specific command line length limits
Changed:
- Rename the
[git.user]config section to[tools.git.author] - The
Toolinterface now uses a single execution context instead of the dedicated methodsformat_commandandenv_vars
Added:
- Add
gittool - Add
[user]section to the configuration - Add abstract context manager
execution_contextmethod to theToolinterface - Updated Atlassian API to 4.0.7
Added:
- Implement the
info owners codecommand for getting codeowner info - Add new
virustotaldependency group
Changed:
- Rename the
env dev lscommand toenv dev show
Added:
- Persist the UV cache directory for the
linux-containerdeveloper environment type - Update dependencies
Fixed:
- Don't notify users of previous telemetry submission errors when telemetry is disabled
Added:
- Add
build bazelcommand - Add
tools bazelcommand group - Add
HOST_UIDandHOST_GIDenvironment variables to thelinux-containerdeveloper environment type when running on non-Windows platforms
Fixed:
- Properly set the dimensions of pseudo-terminals on Linux
- Ensure that CLI formatting utilizes the full width of the terminal
- Don't use pseudo-terminals when running in CI
Fixed:
- Properly default to
stderrfor the non-raw text output methods
Added:
- Update binaries to use Python 3.12.11
Fixed:
- Prevent notification of new releases when running in CI
Added:
- Add telemetry regarding the source of execution
Added:
- No longer build pre-configured Python distributions for release builds
- The top-level
--interactiveflag now disables the use of pseudo-terminals for subprocesses
Fixed:
- Fix telemetry daemon spawning on Windows when installed inside a virtual environment
Added:
- Add
DDA_TELEMETRY_LOG_LEVELenvironment variable to control the log level of the telemetry daemon - The user will now see a warning if the most recent telemetry submission resulted in an error
- The user will now be notified of new releases by default
- Add
updateconfiguration section to control the update functionality - Add
self dep showcommand
Fixed:
- Decrease the default verbosity of the telemetry daemon
- Relax the allowed versions of Python
- Safely write code editor configuration when parent directories do not exist
- Remove environment-dependent dependency from the
legacy-kernel-matrix-testingdependency group
Added:
- The
env dev codecommand now starts the MCP server inside the developer environment - Update dependencies
Changed:
- Telemetry is now enabled by default
Added:
- Add MCP support for the
ddacommand - The
app.subprocess.spawn_daemonmethod now returns the PID of the spawned process
Added:
- Persist the VS Code extensions directory in the cache for the
linux-containerdeveloper environment type - Make the editor configurable for the
codemethod of thelinux-containerdeveloper environment type - Add
--editor/-eflag to theenv dev codecommand
Added:
- Persist cache directories for the
linux-containerdeveloper environment type - Add
clean_cacheandcache_sizemethods to thelinux-containerdeveloper environment type - Add
env dev cachecommand group - Use the configured waiting style for terminal statuses
Fixed:
- Fix dynamic dependency installation for non-
invcommands
Fixed:
- Fix telemetry for the
invcommand when using rootddaflags - Fix dynamic dependency installation for the
invcommand for a newly deprecated feature flag
Added:
- Update dependencies
Fixed:
- Workaround a limitation of the PTY dependency on Windows
- Properly handle executable paths with spaces on Windows when using a pseudo-terminal
Added:
- Add
app.tools.gotool for callinggocommands with the proper version - Add Git author details to telemetry
- Improve telemetry for the
invcommand
Fixed:
- Update dependencies
Added:
- Pass local Git author details to developer environments
- Mount the Docker socket in the
linux-containerdeveloper environment type
Fixed:
- Prevent passing
TERMenvironment variable to SSH connections
Fixed:
- Fix the
invcommand when legacy tasks require user input
Fixed:
- Allow user input on non-Windows platforms for
app.subprocessmethods that use a pseudo-terminal
Fixed:
- Most
app.subprocessmethods no longer force the use of a pseudo-terminal when the parent process is not interactive - Update dependencies to remove spurious warnings on newer versions of Python
Fixed:
- Fix the
env dev shellcommand when using thelinux-containerdeveloper environment type - Prevent issues on Windows when using the
uvdependency to upgrade itself
Fixed:
- Fix the
env dev startcommand when using thelinux-containerdeveloper environment type - Fix the
checkparameter of theapp.subprocess.capturemethod
Changed:
- The
app.subprocess.runmethod now uses a pseudo-terminal in order to capture output from subprocesses while displaying it. A newapp.subprocess.attachmethod is available which retains the original behavior and should be preferred when subprocesses require user interaction. - The
app.subprocess.runmethod now returns an integer representing the exit code of the completed subprocess call
Added:
- Automatically send telemetry for failed subprocesses
- Add
app.subprocess.redirectmethod for redirecting the output of a command to a file-like object - Update dependencies
Fixed:
- Properly apply Python path modifications when loading dynamic commands
Added:
- Switch to traces for telemetry
Fixed:
- Only show the help text of the
invcommand when no arguments are provided
Changed:
- The paths used to search for local commands are no longer added to the Python search path and instead a sibling directory
pythonpathis used
Added:
- Add
dda.utils.platform.get_machine_idfunction - Add
dda.utils.dateutilities - Add
dda.utils.network.httputilities - Add proper backoff for the retry utilities
- Add
binaryandrichto the global legacy dependencies used for theinvcommand
Fixed:
- Properly persist Python search path modifications for local commands when using subprocesses
- Fixed locally running config restoration tests when telemetry is enabled
Added:
- Add initial dependency features for common functionality (
http,github,gitlab) - Telemetry is now submitted immediately after the command completes rather than a short wait
- Prevent Docker CLI hints/tips output
Fixed:
- Fix ignored directory heuristic for finding local commands
- Reduce log verbosity of telemetry daemon
- Fix
self telemetry log showcommand when the log file contents do not fit within memory
Fixed:
- Fix telemetry log API submission
- Support telemetry submission within the
linux-containerdeveloper environment type
Added:
- Add support for dynamically loading local commands
Fixed:
- Properly collect telemetry for the
invcommand on non-Windows platforms
Added:
- Telemetry now uses logs instead of events
Fixed:
- Fix the
self telemetry log removecommand
Fixed:
- Fix escaping on the non-Windows entry points of prebuilt distributions
- Fix the help text of commands that have dynamic parameters
- Fix the read permissions of the
ddabinary within the PKG installer
Fixed:
- Fix the read permissions of the
ddabinary on non-Windows platforms
Added:
- Add
--featand--depflags to theinvcommand to install extra features and dependencies
Fixed:
- Update legacy dependency definitions
Fixed:
- Remove dynamic installation of
legacy-kernel-matrix-testingdependencies
Changed:
- Rename package to
dda
Added:
- Add telemetry collection for Datadog employees
- Update dependencies
- Update prebuilt distributions to use Python 3.12.9
Fixed:
- Use the proper Python executable when running the
invcommand without dynamic dependencies
Fixed:
- Repository-specific version files (
.dda-versionor.dda/version) now define the minimum required version rather than the exact version
Fixed:
- Relax the allowed version of the
cryptographydependency - Backport dependency update of
pyright
Added:
- Add
self depcommand group to manage dependencies of theddatool itself - Use a lock file for dependency management
Added:
- Add PKG installer for macOS
Fixed:
- The
invcommand now supports the dependencies of tasks defined in thetest-infra-definitionsrepo
Changed:
- Use local versions of repositories rather than remote clones for developer environments by default
Added:
- Allow repositories to require specific versions in a
.dda-versionor.dda/versionfile - Add
--cloneflag to theenv dev startcommand to clone repositories rather than using local checkouts - Add binary releases for all supported platforms
Added:
- Add
env devcommand group to manage developer environments
This is the initial public release.