Skip to content

Latest commit

 

History

History
2090 lines (1562 loc) · 112 KB

File metadata and controls

2090 lines (1562 loc) · 112 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, adheres to Semantic Versioning, and is generated by Changie.

v0.20.0 - 2026-02-26

Added

  • Add support for individual gc settings in engine local-cache prune by @sipsma in dagger#11830
  • Add --pretty=logs - like dots, but without the dots by @vito in dagger#11847

Fixed

  • Fix git SSH socket not found errors when different clients use different SSH auth sock paths on the same repo by @sipsma in dagger#11828
  • Update internal bbolt db configuration to do less syncing and possibly avoid an upstream bug causing crashes by @sipsma in dagger#11850
  • Fix nullable function return types incorrectly being skipped for persistent cache by @sipsma in dagger#11855
  • Fix ONBUILD commands in Dockerfiles not being published when calling directory.dockerbuild().Publish() by @alexcb in dagger#11901

What to do next?

v0.19.11 - 2026-02-05

Added

  • Merge multiple changesets using changeset.withChangset(other) or changeset.withChangesets(others...) by @eunomie in dagger#11577
    Multiple strategies are available in case of conflict, and uses git under the hood to merge the changesets.
  • Add dagger generate command by @eunomie in dagger#11779
    Functions can be marked as 'generate' (// +generate in Go, @generate() in typescript, @generate in python). Those functions must expose a Changeset. By marking them as generate functions means they will be available under the dagger generate command. This command will run all of them and merge the resulting changesets before to apply it.
  • Add Documentation for using LLM.withMCPServer by @sukso96100 in dagger#11605
  • Add liveness probe to helm chart by @vmaffet in dagger#11703
  • Allow multiple versions of the same toolchain by @kpenfound in dagger#11697
  • Add checks support to Java SDK by @henkhofs in dagger#11704
  • Allow container address in default pragrams and customizations by @kpenfound in dagger#11714
  • Support AWS secret manager and parameter store as secret providers by @kpenfound in dagger#11728
  • Add support for --mount=type=ssh in Directory.dockerBuild by @sipsma in dagger#11793

Changed

  • Make engine logs more informative and less noisy by default by @sipsma in dagger#11705
  • Improve image pull/push performance by using igzip by @sipsma in dagger#11709
  • Improve parallelization of array results by @vito in dagger#11764
  • Allow exit codes >127 for ReturnType ANY and FAILURE by @nebojsaj1726 in dagger#11666
  • Speed up module loading in large monorepos by @sipsma in dagger#11799
  • Use more external libraries rather than generated ones in Go SDK by @TomChv in dagger#11708

Fixed

  • Fix incorrect "conflict detected" errors during filesync of dirs containing .gitignore by @sipsma in dagger#11748
  • Fix parsing of module SSH URLs using non-default ports by @wvell in dagger#11628
  • Fix support for kernels without legacy xtables (Linux 6.17+ and older ones with iptables disabled) by @shepherdjerred + @sipsma in dagger#11731
  • Fix TUI durations flickering between different values by @vito in dagger#11749
  • Fix case where disk full prevents client DB open by @sipsma in dagger#11785
  • Fix support for very old Linux kernels (pre v5.1) in container start by @sipsma in dagger#11789
  • Fix case where cache mounts become unmountable after restart by @sipsma in dagger#11795
  • Fix optional argument detection in generated client wrappers by @shykes in https://github.com/dagger/dagger/commit/42b4e400d87a2822517b36bc75b0fc89766bb900
  • Fix annotations with from __future__ import annotations by @grouville in dagger#11725
  • Fix conflict on tsconfig.json when generating multiple TypeScript clients by @TomChv in dagger#11654
  • Fix CLI crash on armv6/7 hosts by @sipsma in dagger#11801

Contributors

Special thanks to our external contributors this release!

  • @shepherdjerred
  • @wvell
  • @sukso96100
  • @henkhofs
  • @nebojsaj1726

What to do next?

v0.19.10 - 2026-01-14

Added

  • Improve memory usage of dagger develop --recursive when used with large number of modules by @grouville in dagger#11659
  • Add shareProcessNamespace option to Helm chart for sidecar process access by @sipsma in dagger#11680

Fixed

  • Fix invalid mounts leftover after hard engine crash by @sipsma in dagger#11673
  • Fix file not found errors when same module concurrently invoked by different clients from different paths by @sipsma in dagger#11625
  • Fix regression resulting in "failed to authorize" errors during image pulls by @grouville in dagger#11667
  • Fix regression resulting "no such file or directory" errors after use of WithName API by @alexcb in dagger#11671
  • Fix errors when using contextual GitRef arguments sourced from local dirs in combination with function caching by @sipsma in dagger#11688
  • Fix errors in some SDKs when invoking toolchain constructors by @TomChv in dagger#11690

What to do next?

v0.19.9 - 2026-01-07

Added

  • directory.Stat and container.Stat calls by @alexcb in dagger#11403
  • improve filesystem performance by reducing overlay fsync overhead by @sipsma in dagger#11559
  • improve changeset performance by @grouville in dagger#11580
  • add Check.Source to return the module source where the check is defined by @tiborvass in dagger#11630

Fixed

  • fix TypeScript cache setting type error by @TomChv in dagger#11539
  • Disable Git askpass prompts to prevent unexpected IDE credential dialogs (e.g., VS Code popups that appear even when credentials are already configured). Credentials still work via helpers or .netrc. For the rare case where no credentials are configured, Dagger now fails early with a clear error instead of triggering a subtle prompt that users sometimes miss by @sleiner-v in dagger#11437
  • fix invalid overlay mount creation race condition by @sipsma in dagger#11545
  • template in module name when initializing typescript modules by @kpenfound in dagger#11551
  • fix incorrect file contents caching race condition bug by @alexcb in dagger#11575
  • allow use of git module sources in Java SDK by @eunomie in dagger#11570
  • improve determinism of generate Go code by @kpenfound in dagger#11579
  • preserve shell exit codes in TUI mode by @grouville in dagger#11586
  • ensure typescript SDK correctly uses lockfile in modules by @TomChv in dagger#11592
  • fix chained calls across different depths in progress output by @vito in dagger#11596
  • correct spelling in withAnnotation doc by @hugginsio in dagger#11598
  • fix missing ignores of xattr copy failures by @sipsma in dagger#11606

Contributors

Special thanks to our external contributors this release!

  • @hugginsio
  • @sleiner-v

What to do next?

v0.19.8 - 2025-12-04

Added

  • Optimize WithDirectory and WithFile to avoid copying file data on disk in more cases by @sipsma in dagger#11497
    These APIs now avoid copying data on disk in all cases except when an owner, permission or timestamp is modified as part of the operation.
  • Add support for host environment variable expansion in .env files by @alexcb in dagger#11442
  • Add VCS support for on-premises Azure DevOps by @nilune in dagger#11500
  • Add ability to set app role mount path in Vault secret provider by @nilune in dagger#11471
  • Add toolchain customization configuration by @kpenfound in dagger#11480
  • Add configuration to ignore checks in a toolchain by @kpenfound in dagger#11489
  • TypeScript SDK: Add live telemetry support by @TomChv in dagger#11486
  • TypeScript SDK: Add tracing for tests using @otr/mocha-test lib by @TomChv in dagger#11508
  • Add File.AsJSON() to simplify handling JSON file contents by @suprjinx in dagger#11408

Changed

  • Go SDK: Make codegen deterministic by @kpenfound in dagger#11522
  • Refactor cloud auth to handle both CLI and token flows by @marcosnils in dagger#11520

Fixed

  • Fix caching of function errors within a single dagger session by @grouville and @sipsma in dagger#11488
  • Fix nested execs created by modules to not be module clients by @sipsma in dagger#11458
  • Fix module loading using content digest ID by @grouville in dagger#11491
  • Fix stale sessions handling in dag-op filesync, resolving occasional "session not found" errors by @sipsma in dagger#11448
  • Fix env to always load value from correct parent client by @sipsma in dagger#11459
  • Bump modernc to pick up ctx cancel fix by @sipsma in dagger#11492
  • Fix incorrect function name in comment by @black5box in dagger#11428
  • Fix panic in CI generate by @tiborvass in dagger#11483
  • Disable 'reveal' by default in util/parallel by @shykes in dagger#11517

Contributors

Special thanks to our external contributors this release!

  • @black5box
  • @nilune
  • @suprjinx

What to do next?

v0.19.7 - 2025-11-20

Added

  • Make Dependencies() and GeneratedContextDirectory() accessible from the CurrentModule API by @chrisjpalmer in dagger#11146
  • Add --eager-runtime flag to dagger functions by @TomChv in dagger#11413
  • Add SDK runtime debug mode by @grouville in dagger#11349

Fixed

  • Cache git.Remote() metadata in session cache by @grouville in dagger#11366
  • Miscellaneous fixes in LLM() by @vito in dagger#11370
  • Fix issue where Directory.File() was not caching based on file content by @alexcb in dagger#11329
  • Disable caching for engine clients query by @matipan in dagger#11416
  • Speed up local connect time to docker daemon by @tiborvass in dagger#11421
  • Prefer DAGGER_CLOUD_TOKEN over OAuth for cloud engine provider by @marcosnils in dagger#11438
  • Make error messages to users less verbose by @vito in dagger#11434
  • Improve performance during disk usage calculation by @sipsma in dagger#11327
  • Fixed rare panic during disk usage calculation by @sipsma in dagger#11450
  • Make LLM output less verbose when it's doing direct object function calls by @vito in dagger#11435
  • Fix "failed to add secret" errors when concurrently using a private git repo from multiple clients that each have a different auth token value by @sipsma in dagger#11456
  • TypeScript: Correctly resolve enum defaults in introspection to prevent unresolved warnings by @grouville in dagger#11319

Contributors

Special thanks to our external contributors this release!

  • @chrisjpalmer

What to do next?

v0.19.6 - 2025-11-07

Fixed

  • Fix dagger develop --recursive to use correct dependency name even when top-level module has a custom name for the dependency by @sipsma in dagger#11365
  • Fix "failed to update rootfs: session not found" errors caused by incorrect use of stale client metadata by @sipsma in dagger#11295
  • fix panic in filesync telemetry by @ in dagger#11371

Contributors

Special thanks to our external contributors this release!

  • @
  • @sipsma

What to do next?

v0.19.5 - 2025-11-05

Fixed

  • Significantly improve engine performance by reducing disk syncing and associated lock contention by @sipsma in dagger#11336
  • Fixed directory+file not found errors when using cached function calls with contextual arguments involved by @sipsma in dagger#11350

Contributors

Special thanks to our external contributors this release!

  • @sipsma

What to do next?

v0.19.4 - 2025-10-30

Added

  • Function cache control by @sipsma in dagger#10975
    Function calls now have configurable caching behavior, including TTLs. Function calls with cached results can skip execution, which often significantly speeds up your workflows. Instructions and more details on the configuration options can be found in the docs.
    🚨 Modules initialized before v0.19.4 will need to explicitly opt-in to the new caching behavior.
  • New GitRepository.uncommited API to get changeset of dirty changes in the working directory by @jedevc in dagger#11241
  • Add new engine clients API by @matipan in dagger#11308

Fixed

  • Optimize numerous core APIs to be less CPU+memory intensive by @sipsma in dagger#11320

Dependencies

Contributors

Special thanks to our external contributors this release!

  • @jedevc
  • @matipan
  • @sipsma

What to do next?

v0.19.3 - 2025-10-23

Added

  • allow modules to call their own functions through the engine (self calls) by @eunomie in dagger#10584
  • Allow to raise errors using withError by @eunomie in dagger#11222
    This is for instance really useful from inside self-chainable blocks (using with) where an error can't be returned.
  • New Changeset.isEmpty API by @jedevc in dagger#11237

Fixed

  • Avoid error when calling Directory.diff on identical directories by @jedevc in dagger#11268

Dependencies

What to do next?

v0.19.2 - 2025-10-08

Fixed

  • Fixed engine crash when container sourced from private image was used with terminal or as a service (and was not already cached in the engine) by @sipsma in dagger#11198

What to do next?

v0.19.1 - 2025-10-07

Added

  • User defaults: persist any dagger function argument to .env by @shykes in dagger#11034
    This feature allows user to save arguments to their dagger functions to a local file, instead of re-typing them at every call. This way, the sandboxing of functions is preserved without sacrificing end-user convenience.

    To use this feature, simply add variables to a local .env file reachable from your working directory. The format of the variables should be as follows:

    Variable names

    • If module mymod has a constructor argument foo: use variable name MYMOD_FOO
    • If module mymod has a type foo, with a function bar, with an argument baz: use MYMOD_FOO_BAR_BAZ

    As a convenience, if your .env is inside the module, you may omit the module name:

    • If the current module has a constructor argument foo: use variable name FOO
    • If the current module has a type foo, with a function bar, with an argument baz: use FOO_BAR_BAZ

    In all cases, variable names are case-insensitive.

    Variable values

    Any value which can be passed as a CLI flag, can also be used as a variable. The value will be interpreted the usual way, based on the argument's type. This includes:

    • Literal scalar values. Example: INSTANCES=42 or username=admin
    • JSON-encoded arrays. Example: regions=["us", "eu", "jp"]
    • Local directories. Example: MYAPP_SOURCE=~/dev/myapp/src
    • Remote git directories. Example: DOCS=https://github.com/dagger/dagger#v0.19.0:docs
    • Unix sockets. Example: dockerSocket=unix:///var/run/docker.sock
    • References to secrets in env variables or files. Example: githubToken=env://PROD_TOKEN or sshKey=file://~/.ssh/id_dsa
    • References to secrets in password managers or vaults. Example: password=op://my/vault/password/credential
    • References to container images. Example: base=index.docker.io/alpine:latest
    • References to TCP services running on the host. Example: TEST_DB=tcp://localhost:5432

    Note: one common issue with env files, is that they often contain secret values, and can be accidentally leaked via source control. Dagger helps avoid this issue, by requiring secrets to be stored as references. Even if your env file is accidentally leaked, it will only contain references, not actual secret values.

What to do next?

v0.19.0 - 2025-09-30

🔥 Breaking Changes

  • GitRepository.branch/GitRepository.tag/GitRepository.commit now only accept valid branches/tags/commits by @jedevc in dagger#11038
  • GitRepository's withAuthToken and withAuthHeader are now no-ops by @jedevc in dagger#11032
    Instead authentication should only be provided at the top-level git query, since it's now queried immediately.
  • Remove deprecated Host.setSecretFile method by @jedevc in dagger#11115
    Use the file:// secret provider instead.
  • Remove LocalCache.keepBytes field by @jedevc in dagger#11115
    Instead use the more specific LocalCache.reservedSpace, which it was an alias for.
  • Removed deprecated Container.build API by @jedevc in dagger#11118
    Use Directory.dockerBuild instead.

Added

  • engine: support registry mirror configs on engine.json by @matipan in dagger#11040

Fixed

  • Contextual git refs are correctly pinned by @jedevc in dagger#11092

What to do next?

v0.18.19 - 2025-09-18

Added

  • New address API: a unified address to load containers, directories, secrets, etc by @shykes in dagger#10770
  • New Changeset.export function to allow exporting changesets from the API by @jedevc in dagger#11064

Fixed

  • Fixes a regression in Directory.withFiles which set the wrong path by @jedevc in dagger#11087

What to do next?

v0.18.18 - 2025-09-16

Added

  • Add new EnvFile type by @shykes in dagger#10949
  • Mount client ~/.config/dagger/ca-certificates to engine by @jedevc and @matipan in dagger#11019
  • Add new Changeset type by @vito in dagger#10946
  • Add APIs for "find-up search": search up the directory tree for a file or directory, and return its path by @shykes in dagger#10956
    • Directory.findUp performs a find-up search in a directory snapshot
    • Host.findUp(): performs a find-up search in the host filesystem

Fixed

  • Fix blueprints for typescript modules by @kpenfound in dagger#11018
  • Fix regression where engine crashed after module function returned nil/null values by @sipsma in dagger#11056
  • Fix regression with automatic gitignore loading by @jedevc in dagger#11017
  • Ensure interactive TUI debugging works on all IDs by @jedevc in dagger#11054
  • Avoid setting invalid origin on git checkouts by @jedevc in dagger#11031
  • Allow git defaultPath values to contain / by @jedevc in dagger#11048
  • Avoid double service start by @marcosnils in dagger#11041

What to do next?

v0.18.17 - 2025-09-04

🔥 Breaking Changes

  • Automatically apply .gitignore patterns on directory loading for module call by @TomChv and @jedevc in dagger#10883 \

    • Apply when loading contextual directory argument.
    • Apply when a directory is sent as an argument to a module function.
    • Apply when a local module is loaded.

    Add NoGitAutoIgnore argument to Host.Directory to disable this behavior.

Added

  • New Host.containerImage API to load images from the host container image store by @jedevc in dagger#10810
  • New Container.combined API to get both standard output and standard error after withExec by @eunomie dagger#10924
  • New GitRepository.url API to get the fully resolved URL of a git repository by @jedevc in dagger#10959
  • New assorted filesystem APIs for searching/replacing by @vito in dagger#10937
  • Allow entering terminals from the TUI for Containers, Directorys and running Services by @jedevc in dagger#10867
  • Allow reading git credentials from client's .netrc file by @jedevc in dagger#10957

Fixed

  • git now automatically determines the protocol when using a scheme-less URL (instead of defaulting to https://) by @jedevc in dagger#10960
  • Ensure HTTP auth is propagated to git submodules by @grouville in dagger#10855
  • Detect more telemetry from github environment by @jedevc in ...

What to do next?

v0.18.16 - 2025-08-19

What to do next?

v0.18.15 - 2025-08-18

Added

  • New container.Exists and directory.Exists API for testing if a file exists, and optionally type (e.g. file or directory) by @alexcb in dagger#10449
  • Allow starting dagger engines in alternative container runtimes, including: by @jedevc in dagger#10714 \
    • Apple's container
    • podman
    • nerdctl
    • finch
  • cli: add support for passing build arguments to a docker build by @helderco in dagger#10779
  • Added new gitRef.commonAncestor API to find the common ancestor between two references by @jedevc in dagger#10849

Fixed

  • Prompt mode now handles interrupts more gracefully, continuing from where the agent left off rather than completely forgetting the prompt by @vito in dagger#10765
  • Switching to prompt mode now properly initializes and displays the model, logging an error if initialization fails by @vito in dagger#10765
  • shell: Fixed passing objects on http and git stdlib commands by @helderco in dagger#10845
  • shell: fix state mutability issue when chaining function by @helderco in dagger#10857
  • Ensure that introspection methods support includeDeprecated arg by @jedevc in dagger#10889

Contributors

Special thanks to our external contributors this release!

  • @alexcb

What to do next?

v0.18.14 - 2025-07-18

Fixed a regression causing the LLM to see malformed non-string scalar responses.

What to do next?

v0.18.13 - 2025-07-18

Added

  • New Container.exportImage API to load images to host container image store by @jedevc in dagger#10662
  • New GitRepository.latestVersion field to get a git ref of the latest semver tag by @jedevc in dagger#10679

Fixed

  • WithSymlink now returns "file exists" error when attempting to overwrite an existing symlink by @alexcb in dagger#10664
  • Fix dockerfile builds with optional secrets by @jedevc in dagger#10675
  • Module import resolution now supports repository paths containing tilde characters (~), commonly used in Bitbucket Server for user-scoped repositories (e.g., extranet.example.com/bitbucket/scm/~user/repo.git) by @grouville in dagger#10692
  • Fix memory leak in engine by @sipsma in dagger#10708

What to do next?

v0.18.12 - 2025-06-27

Changed

  • Ignore default OrbStack CA cert for automatic installation by @sipsma in dagger#10648
    OrbStack users were by default ending up with a custom CA in their engine and automatically installed in each container, adding overhead. We now ignore that CA cert by default to improve performance in the default case.

Fixed

  • Fixed a deadlock caused by concurrent schema introspection and modification by @vito in dagger#10643
  • Fixed an issue where old dagger versions would create an invalid typedef when the enum name equaled the enum value by @jedevc in dagger#10647
  • Fixed an issue where an issue where --help for enum default values was incorrect @jedevc in dagger#10647

What to do next?

v0.18.11 - 2025-06-25

🔥 Breaking Changes

  • The dagger CLI and shell must now be passed enums by name (instead of by value) for SDKs that support enum members (see SDK-specific release notes).
  • Default arguments are now validated on registration by @jedevc in dagger#9518
    This may break loading modules (including in compat mode) that were previously setting enum default values in function signatures, if those values weren't valid - these would only trigger an error on calling that function, while now it's triggered during module initialization.
  • Remove namespace argument from CacheVolume by @sipsma in dagger#10586
    This arg was only ever meant for internal usage within the API's implementation, but previously couldn't be hidden from the public API. Now it is properly internal-only and thus not accessible to external clients. Any use of the arg should just be removed.
  • Changed incorrect sweep engine option name to sweepSize by @jedevc in dagger#10560 This option was previously incorrectly named - the docs were correct, but the code was not properly updated.

Added

  • New top-level cloud API for getting information about the dagger cloud session by @marcosnils in dagger#10580
    This includes the cloud.traceURL field for getting the current trace URL.

  • Allow --no-mod/-M flag in more places to disable automatic module loading by @jedevc in dagger#10595

  • Propagate exit codes properly in shell by @helderco in dagger#10438
    The .exit builtin was added.

    The .wait builtin now accepts a list of job ids to wait for. For example:

    container | from alpine | with-exec false | stdout &
    job1=$!
    container | from alpine | with-exec echo ok | stdout &
    job2=$!
    .echo ".wait $job1 $job2"
    .wait $job1 $job2

    The above example should exit with status code 1 because .wait returns the exit of the first command that failed. This is different from Bash which returns the exit status of the last command in the list, even if it succeeded when others have failed.

  • Add httpAuthUsername parameter to git to allow basic auth with usernames by @grouville in dagger#10605
    Additionally this field is populated from the client's git credential helper, similarly to passwords.

  • You can now set $DAGGER_PROGRESS to configure your preferred progress format globally, instead of passing the --progress flag every time by @vito in dagger#10617

  • Added a new dots progress format, which is a much quieter alternative to plain suitable for use in CI by @vito in dagger#10617 This format focuses on printing logs and reduces everything else to just green dots and red Xes for success/failure, similar to test runners like RSpec. Demo

Changed

  • shell: use main object description as the fallback in .help <module> by @helderco in dagger#10487
  • When a service fails to start, the API will now return a proper ExecError so you can see the stdout/stderr and exit code programmatically by @vito in dagger#10585

Fixed

  • Fixed high engine memory usage exacerbated by high log volume and composing multiple modules by @vito in dagger#10578
    In one scenario this reduced heap usage from 14GB to 7GB.
  • Schema introspection is now cached, as long as the schema doesn't change by @vito in dagger#10579
    In the same scenario as the high log volume fix, this further reduced heap usage from 7GB to 1.4GB.
  • shell: fixed arguments with pipelines to interpreter builtins not being resolved by @helderco in dagger#10635
  • Fixed the plain progress format being way more verbose than intended by @vito in dagger#10636
  • Fixed Directory.withSymlink accidentally escaping from the selected sub-directory by @alexcb in dagger#10563

What to do next?

v0.18.10 - 2025-06-10

Added

  • Improved TUI progress visualizer by @vito in dagger#10468

  • Added E hotkey in TUI for -E/--no-exit at runtime by @vito in dagger#10511

  • Add support for using engine-wide default GC policy when triggering manual local cache prunes by @sipsma in dagger#10505
    The manual prune API now supports an optional arg to enable honoring the engine-wide default automatic GC configuration. e.g.

    dagger core engine local-cache prune --use-default-policy
    
  • New container.WithSymlink and directory.WithSymlink API for creating symbolic links by @alexcb in dagger#10435

  • Unbundle the SDK interface to support partial implementation by @TomChv in dagger#10525
    When you implement a custom SDK, you can now choose to just implement part of the SDK interface depending on your needs. That means:

    • dagger develop no longer fails if your SDK just implement the Runtime interface, it will simply not call Codegen if not defined.
    • dagger call and dagger functions give a clear error message if it's not supported by the SDK.

    See dagger#7707 for more information.

Fixed

  • Fix occasional "no such file or directory" errors during filesync caused by concurrent syncs by @sipsma in dagger#10541

Dependencies

What to do next?

v0.18.9 - 2025-05-27

Added

  • New gc.sweepSize setting for engine.json by @jedevc in dagger#10420
    This setting allows controlling how much data to clear in a single GC sweep.

Changed

  • Add noCache arg to Host.directory to auto reload contextual directories in persistent shell/prompt sessions by @cwlbraa in dagger#10342

Fixed

  • shell: fixed _ prefix not being reserved for interpreter builtins by @helderco in dagger#10452
  • shell: fixed parsing arguments with list of objects by @helderco in dagger#10441

What to do next?

v0.18.8 - 2025-05-14

Fixed

What to do next?

v0.18.7 - 2025-05-13

Fixed

  • Ensure git API calls consistently respect proxy settings by @jedevc in dagger#10352
  • Lazily load LLM API keys by @cwlbraa in dagger#10357

Added

  • Add new optional parameters to Query.http by @jedevc in dagger#10317
    • name allows overriding the filename to download
    • permissions allows setting the permissions on the resulting file
    • authHeader allows passing a secret in the Authorization HTTP header

What to do next?

v0.18.6 - 2025-05-06

🔥 Breaking Changes

  • Cache URI-based secrets based on their plaintext value rather than the URI by @sipsma in dagger#10311
    Previously, the "cache key" for URI-based secrets (e.g. env://FOO, file:///some/path, etc.) was the URI string. This meant that operations including the secret (e.g. as an environment variable in a Container) would be cached based on the URI value. If two secrets from different clients had the same URI but different plaintext values, cache for operations that include them would be shared.

    In many cases, even when URIs were the same, the plaintext of secrets could be meaningfully different, which made this behavior surprising and lead to unexpected results.

    Now, URI-based secrets are cached based on secure hashes of their plaintext value. Two secrets that have the same URI but different plaintext values will be cached separately, and operations that include them will not share cache.

    However, there are cases where users do want secrets with different plaintexts to share cache, e.g. secrets that rotate in plaintext value frequently but aren't meaningfully different and thus shouldn't bust the cache of operations that include them.

    To continue supporting those use cases, there is a new optional cacheKey argument to Secret that can be used to specify a custom cache key. If provided, the cache key will be used instead of the default plaintext-based cache key, allowing any secrets sharing that cache-key to be cached together.

    SDKs can provide this as an optional argument to the Secret constructor. Other example usages:

    dagger shell:

    • dagger shell -c "some-function --secret-arg $(secret env://FOO --cache-key my-cache-key)"

    dagger call (supports a special syntax that sets the cache key via a query param in the URI):

    • dagger call some-function --secret-arg env://FOO?cacheKey=my-cache-key

Added

  • New GitRepository.branches API by @jedevc in dagger#10250
  • New File top-level field added to allow easier creation of File objects by @jedevc in dagger#10290

Fixed

  • GitRepository.tags patterns arg is now respected for local git repositories by @jedevc in dagger#10250
  • Return an error when a function argument conflicts with a persistent flag in dagger call by @helderco in dagger#10305
  • Fix "failed to return error" and "failed to emit telemetry" errors when two identical functions execute at the same time and one client cancels the request by @sipsma in dagger#10264
  • Fix panic in vault secret provider when path exists but secret doesn't by @sipsma in dagger#10311
  • Fix panic when using Container.build with a Dockerfile that is FROM scratch by @sipsma in dagger#10332

What to do next?

v0.18.5 - 2025-04-25

Added

  • New depth arg to GitRef.tree to control the depth of a clone by @jedevc in dagger#9980
  • New GitRef.ref field for resolving the full ref string for a reference by @jedevc in dagger#9980

Fixed

  • Ensure consistent git state in Git.tree checkouts by @jedevc in dagger#9980
  • Fix cache invalidation of withExec when secrets created by SetSecret in function calls are included by @sipsma in dagger#10260
  • Fix handling of optional args in LLM by @vito in dagger#10254
  • Fix handling of Python SDK modules using requirements.lock by @helderco in dagger#10252

What to do next?

v0.18.4 - 2025-04-22

Fixed

  • shell: fixed relative paths in Directory and File flags by @helderco in dagger#10169
  • Fix re-use of LLM config from other concurrently running dagger sessions by @sipsma in dagger#10184
  • Fix "session not found" errors when invoking modules by @sipsma in dagger#10168
  • Fix errors using CurrentModule API during SDK module initialization by @sipsma in dagger#10213
  • Fix caching of contextual directory args when multiple clients invoking the same function by @sipsma in dagger#10187
  • Fix "client not found" errors when loading cached modules from private repos by @sipsma in dagger#10223
  • Fix API authentication errors when calling llm.withModel from a module function by @sipsma in dagger#10230
  • Fix "buildkit session not found" errors when calling .plaintext on a URI-based secret from a module w/ cache hit by @sipsma in dagger#10223
  • Fixed error when setSecret provided empty plaintext value and passed between function calls by @sipsma in dagger#10223

Experimental

  • Experimental API methods are now all marked as such by @jedevc in dagger#10058

What to do next?

v0.18.3 - 2025-04-14

Added

  • New --recursive flag for dagger develop by @jedevc in dagger#9860
  • Add the ability to load a module without specifying an SDK by @grouville and @tiborvass in dagger#9984
  • Add support for skipping automatic init process when using Container.build and Directory.dockerBuild by @sipsma in dagger#10088
  • Allow specifying ttl for local secret caching for vault by @rajatjindal in dagger#9997

Fixed

  • Fix error when parsing multi-line git config files by @marcosnils in dagger#10087
  • Fix edge-case panic when attempting shell completion by @kasattejaswi in dagger#10125

Experimental

  • Expose Dagger Core API as MCP tools by @grouville and @tiborvass in dagger#10090

What to do next?

v0.18.2 - 2025-04-04

Changed

  • shell: skip CSV flag parsing when spreading with-exec positional arguments by @helderco in dagger#10063

Fixed

  • client: bump min connect timeout to 10s by @marcosnils dagger#10070

What to do next?

v0.18.1 - 2025-04-01

What to do next?

v0.18.0 - 2025-03-31

Changed

  • use dockerignore files during docker build by @rajatjindal in dagger#9857

Fixed

  • Fixed an issue when reusing a variable with a pipeline, in the same run by @helderco in dagger#10018
  • Fixed executing a dagger shell script from the root command by @helderco in dagger#10020

What to do next?

v0.17.2 - 2025-03-27

Added

  • New Directory.filter API for improved ergonomics by @rajatjindal in dagger#9976
    This was previously possible by doing Query.directory.withDirectory("", dir), but this breaks the chain.

Changed

  • Various LLM API changes and improvements to tool calling scheme by @vito in dagger#9956

What to do next?

v0.17.1 - 2025-03-24

  • BREAKING(llm): fix go sdk capitalization of "Llm" to "LLM" instead, consistent with engine code and the rest of the go ecosystem (dagger#9933)
    • this will break compilation of modules referencing the LLM API like dag.Llm. To fix, simply change to dag.LLM
  • when prompting for remote module LLM access, error early in non-interactive situations where we would previously hang indefinitely. (dagger#9957)

What to do next?

v0.17.0 - 2025-03-20

Added

Changed

  • The default unix socket used to connect to the engine is now at /run/dagger/engine.sock by @sipsma in dagger#9866
    The previous socket path still exists for backwards compatibility but may be removed in a future version.
  • Fields that return directory paths such as Directory.glob and Directory.entries now return a trailing slash to distinguish from regular files by @jedevc in dagger#9118

What to do next?

v0.16.3 - 2025-03-12

Added

  • Add new Directory.asGit API for converting a directory into a git repository by @jedevc in dagger#9730
  • Allow CLI flags in dagger call for GitRepository and GitRef types by @jedevc in dagger#9844
  • Improved caching of Container.asTarball by @jedevc in dagger#9395

Changed

  • Improved visualization of chains with content digests by @vito in dagger#9739

Dependencies

What to do next?

v0.16.2 - 2025-02-27

Added

  • Add Directory.name field to retrieve current directory name by @TomChv in dagger#9617

Fixed

  • Fixed panic when dagger call or dagger functions called in directory with no modules - it now errors cleanly by @sipsma in dagger#9658
  • Improve load time when dagger commands run in directories with no dagger.json by @sipsma in dagger#9659
  • Fixed secret when using context directories from a private HTTPS module by @jedevc in dagger#9697

Dependencies

What to do next?

v0.16.1 - 2025-02-19

Fixed

  • Fix typescript modules on arm64 using tsx for wrong platform by @sipsma in dagger#9633
  • Fix internal error cannot sub-select 1th item from *dagql.PostCallTyped by @sipsma in dagger#9634

What to do next?

v0.16.0 - 2025-02-19

🔥 Breaking Changes

  • To match automatic configuration, insecure-entitlements now includes security.insecure when configuring the engine manually by @jedevc in dagger#9513

  • Module load performance is improved and related API refactored by @sipsma in dagger#9505
    Loading of modules (the load module step shown in progress output) is faster now in many cases. In particular:

    • Cache utilization of module loading is greatly improved, which can decrease load times by up to a factor of 10 when re-calling functions after changing source code in a Daggerized repo.
    • Less extraneous files are loaded from the source repository

    Users of modules with large numbers of dependencies or in large git repositories are expected to see the most immediate benefit.

    For some concrete numbers, here are load module times for the dagger-dev's module in Dagger's repository under different scenarios:

    • dagger call --help on new engines with an empty cache
      • v0.15.4: 1m20s
      • v0.16.0: 1m1s
      • ~23% faster
    • re-running dagger call --help with no file changes in the repo:
      • v0.15.4: 10.9s
      • v0.16.0: 2.8s
      • ~74% faster
    • re-running dagger call --help after making a change to a random source code file in the repo:
      • v0.15.4: 32.1s
      • v0.16.0: 2.8s
      • ~91% faster

    These improvements in cache utilization are also setup for future improvements not only in load module times but function call times more generally.

    This improvement comes with a few breaking changes that are not expected to impact most users. However, the changes require that users upgrade their CLI to v0.16.0 in order to connect to v0.16.0 engines. Older CLIs will error when connecting to newer engines.

    In terms of the breaking changes, impacted users are those who:

    • have function code that imports local libraries outside of the dagger module source directory
    • rely on a package manager configuration file (e.g. go.mod) that exists in a parent directory of the dagger module source directory

    They may need to update their dagger.json configuration file to add an explicit "include" setting to ensure those extra files or directories are loaded with the module. This is because numerous files previously implicitly loaded are now skipped by default, which contributes to the performance improvements.

    For example, if your module code is in .dagger and relies on the go.mod file in the parent directory, you would add the following to your dagger.json file:

    {
      "include": ["../go.mod", "../go.sum"]
    }

    The values in the "include" array are relative to the directory containing dagger.json. They can be also be glob patterns (e.g. "**/*.txt"). To explicitly exclude some files matched by a previous include pattern, you can prepend the include pattern with a ! character (e.g. "!**/foo.txt").

    • Previously, the exclude setting existed but has now been superseded by prefixing an include pattern with a ! character. However, this is backwards-compatible, so existing exclude settings will be automatically turned into equivalent !-prefixed include settings when running dagger develop. No user intervention is needed.

    The core API's ModuleSource and Module types have also undergone some cleanup that includes breaking changes. Most users do not interact with these APIs, but any that do may need some minor adjustments to their code. In particular:

    • Module.initialize no longer needs to be called; the module is initialized on creation
    • ResolveFromCaller no longer needs to be called for local module sources; context is automatically loaded and resolved efficiently as needed by other API calls

Added

  • Allow tilde home expansion in dag.Host operations by @jedevc in dagger#9610

What to do next?

v0.15.4 - 2025-02-12

Added

  • Move dagger.json sdk field to sdk.source by @rajatjindal in dagger#9454

Fixed

  • Fix various memory leaks in dagger engine by @sipsma in dagger#9468
  • Fix weird secret transfer errors when using context directories with private modules by @jedevc in dagger#9530
  • Cache function calls per-client in a session by @sipsma in dagger#9483

What to do next?

v0.15.3 - 2025-01-29

Added

  • Add float support in the engine by @TomChv in dagger#9396
    Note: the precision of float is limited to float64 inside the engine.

Fixed

  • Fix incorrectly namespaced cache volumes by @jedevc and @sipsma in dagger#9400 and dagger#9204
  • Allow trailing slashes in destination directory in Container.WithFiles by @jedevc in dagger#9457
  • Correctly resolve dependency context directories by @jedevc in dagger#9418
  • Improve initial engine startup time by @jedevc in dagger#9430
  • Allow automatic CA certificate provisioning to work in Wolfi containers by @jedevc in dagger#9404

Dependencies

  • OTEL bumped to v1.32.0 by @vito in dagger#8991
    • Modules that use old versions of the OTEL Go SDK may need to be manually updated.

What to do next?

v0.15.2 - 2025-01-14

Added

  • New dagger update command to update dependencies in dagger.json by @rajatjindal in dagger#8839
  • Allow $schema property in dagger.json by @JacobLey in dagger#9069

Changed

  • CacheVolumes are now namespaced between different modules by @rajatjindal in dagger#8724
  • Print CACHED operations for --progress=plain output by @marcosnils in dagger#9344

Fixed

  • Provide a better out-of-the-box experience for AsService by @marcosnils in dagger#9247
  • Prevent interactive terminal sessions from crashing in Windows terminal by @rajatjindal in dagger#9244
  • Allow using old dockerfile syntax pragmas by @jedevc in dagger#9246
  • Avoid frozen progress output when using Container.terminal by @jedevc in dagger#9338
  • Ensure that Container.up behaves as identically as possible to Container.AsService.up by @jedevc in dagger#9231
  • Ensure dagger install always inserts dependencies in the right order by @jedevc in dagger#9052

What to do next?

v0.15.1 - 2024-12-12

Fixed

  • Metrics display in the TUI is fixed to display for all executed containers, rather than just services by @sipsma in dagger#9171

What to do next?

v0.15.0 - 2024-12-11

🔥 Breaking Changes

  • Container.asService now uses the command specified by withDefaultArgs instead of the last withExec command by @rajatjindal in dagger#8865
    Users can override the args by providing the args option to asService. They can also configure the container to use the container entrypoint by using useEntrypoint option.

Added

  • Better TUI errors, new cached/pending states, duration accounting and fewer spans by @vito in dagger#8442

  • Custom dagger engine.json config file by @jedevc in dagger#8800
    This new config file format is intended to eventually replace the old buildkit-style engine.toml file that's currently used for configuration.

    This file can be either mounted directly into a manually started engine at /etc/dagger/engine.toml, or it will automatically mounted from the user's ~/.config/dagger/engine.json when the engine is started.

  • Filesync performance is improved by @sipsma in dagger#8818
    The engine now re-uses previously loaded data more reliably and in more cases, which speeds up repeated reloads of the same or similar (i.e. overlapping data).

    Uncached filesyncs of large amounts of data is also faster and uses less memory in the engine.

  • Added dagger uninstall command to remove a dependency by @rajatjindal in dagger#8745

  • Added memory and network telemetry for execs by @cwlbraa in dagger#8880 dagger#8902

  • Added DAGGER_LEAVE_OLD_ENGINE environment variable to optionally prevent removal of old engine containers during upgrades by devin in dagger#8195

Fixed

  • Directory.terminal API works now by @sipsma in dagger#8952
  • Fix resource leaks in the engine that occurred after each debug terminal was opened by @sipsma in dagger#9013
  • Fix cache mounts not being included in interactive debug containers by @sipsma in dagger#9034
  • Allow Container.withExec expect to catch exit code 128 by @jedevc in dagger#9027
  • Correctly apply ignore pattern when pulling a directory from git by @TomChv in dagger#8931
  • Fix panic on null Directory.digest by @jedevc in dagger#8946

What to do next?

v0.14.0 - 2024-11-08

🔥 Breaking Changes

  • Rename dagger-engine core GraphQL query to engine by @marcosnils in dagger#8568
  • Remove deprecated Container.withFocus and Container.withoutFocus by @jedevc in dagger#8647

Added

  • Add support for git credential managers to retrieve Personal Access Tokens (PAT) when loading private dagger modules by @grouville in dagger#8805 \
    • Enables private git repository support for HTTP/HTTPS refs
    • Works alongside existing SSH authentication support
    • Compatible with standard git credential managers and credential helpers
    • Supports common git hosting platforms (GitHub, GitLab, Bitbucket, etc.)

Fixed

  • Ensure that gitdns support token support works with all Git server providers. Bitbucket Cloud requires a specific auth format for Git operations using tokens, where the username must be 'x-token-auth'. This fixes token authentication for Bitbucket while maintaining compatibility with other Git providers like GitHub and GitLab, and Azure by @grouville in dagger#8778

What to do next?

v0.13.7 - 2024-10-31

Added

  • New expect arg for Container.withExec by @jedevc in dagger#8466
    This enum arg allows specifying valid return statuses for which the command can return without failing immediately.
  • New Container.exitCode field to get the exit code of the last withExec by @jedevc in dagger#8466

Changed

  • Updated default cache policies to avoid consuming too much disk by @jedevc in dagger#8725
    The new policies attempt to co-operate with other applications using the disk and will adjust its cache usage accordingly.
  • cli: limit printing objects to state by @helderco in dagger#8788
    Previously, when a function chain in dagger call ended in an object, we'd print all functions that return a simple value and don't have any arguments. Now, only object fields will be included, not all functions.

Fixed

  • Fix excessive cache invalidation of withExecs using the ExperimentalPrivilegedNesting flag by @sipsma in dagger#8776

What to do next?

v0.13.6 - 2024-10-24

Added

  • Show metrics for execs in TUI by @sipsma in dagger#8506
    The engine now supports collecting metrics from individual execs and publishing them as OTel metrics.

    To start, just disk read/write byte totals and CPU/IO pressure time are supported, but more like memory/network/etc, will be added soon.

    Currently, metrics will be displayed in the TUI at verbosity level 4 (-vvv).

Changed

  • dagger init defaults to use .dagger folder during if current directory . is not empty by @rajatjindal in dagger#8557
  • dagger install now preserves the original source input, and tracks a separate pin field for the exact remote commit by @jedevc in dagger#8587

Fixed

  • Allow custom enums that include ambiguous names (such as true/false) by @jedevc in dagger#8682

  • Optimize Container.from for image refs with digests by @sipsma in dagger#8736
    Previously, if Container.from was given an image ref with a digest and that image already existed in the local cache, the engine would still waste time resolving metadata over the network from the registry.

    Now, if a digested image ref already exists locally, the network requests are skipped entirely.

  • Allow cloning hidden commits that are not fetched as part of a normal clone by @jedevc in dagger#8747
    For example, refs/pull/<pr>/head, or refs/pull/<pr>/merge.

  • Speed up fully cached initialize time by caching more internal SDK operations by @sipsma in dagger#8735
    Dagger wasn't caching as many SDK operations as it could. With this change Dagger's own CI modules initialize ~1s faster when fully cached.

  • Speed up initialization of modules with lots of dependencies using the Go SDK in engines with no cache by @sipsma in dagger#8761
    Various dependencies of Go SDK modules are now pre-cached in the engine image, which avoids significant CPU pressure when building Go SDK modules in parallel with no cache.

    The engine image size increase is expected to be offset by these improvements.

What to do next?

v0.13.5 - 2024-10-10

Fixed

  • Fix MarshalJSON error in git API when called by older module versions by @jedevc in dagger#8667

What to do next?

v0.13.4 - 2024-10-09

🔥 Breaking Changes

  • Changed behavior of Git to default keep the .git directory by @jedevc in dagger#8318
    This can be disabled with tree's new discardGitDir option. Modules with older engineVersions will keep the old behavior.
  • Deprecated git's keepGitDir argument by @jedevc in dagger#8318

Added

  • Services can now be given an explicit hostname via Service.withHostname by @vito in dagger#8641
    Previously, you could only express a DAG of services, because each service hostname was derived from the service's configuration, and changing a service to point to another service would inherently change that service's configuration.

    Now you can set your own hostnames ahead of time, tell your services about each other's hostnames, and start they manually.

    Services with custom hostnames are namespaced to the module that starts them, to prevent conflicts.

  • Allow expanding environment variables in more Container functions by @rajatjindal in dagger#8427

  • Apply ignore function parameter metadata on Directory passed from the CLI by @TomChv in dagger#8436
    This extends the usage of ignore to not only dir loaded with defaultPath but directory passed as function's param from the CLI.

    Note: ignore patterns are not applied for module to module calls.

  • Enabled Container.withMountedTemp size configuration by @cwlbraa in dagger#8652

  • Add noInit option to Container.withExec to support disabling automatic init process by @sipsma in dagger#8656
    Use cases that strictly require the user exec is PID 1 of the container are now supported by setting noInit to true.

Fixed

  • Include container annotations on Export and AsTarball by @jedevc in dagger#8543
  • Correctly resolve relative path for modules fetched from git by @TomChv in dagger#8565
  • Fix include/exclude patterns from a dependency incorrectly affecting a parent module by @helderco in dagger#8575

What to do next?

v0.13.3 - 2024-09-20

Fixed

  • fixed version nag showing up even when up-to-date by @vito in dagger#8521

What to do next?

v0.13.2 - 2024-09-20

Added

  • New Container.up API by @rajatjindal in dagger#8479
    This is an alias to .AsService().Up().

Fixed

  • removed noisy "check for updates" span by @vito in dagger#8491
  • fix log output having extra blank lines by @vito in dagger#8500

What to do next?

v0.13.1 - 2024-09-18

Added

  • Added new methods Container.withoutFiles and Directory.withoutFiles by @jedevc in dagger#8216
  • Add Container.withAnnotation to set OCI annotations by @aluzzardi in dagger#8409
  • ignore combined with defaultPath now works if the module is fetch from git instead of local by @TomChv in dagger#8430
  • New Directory.withoutFiles and Container.withoutFiles core APIs by @jedevc in dagger#8216
    These can be used to remove multiple files from a filesystem in one call.

Fixed

  • Fix Directory.digest on scratch directory by @jedevc in dagger#8445
  • Allow private secrets to pass between different modules by @jedevc in dagger#8358
  • Handle session-wide cached functions that return secrets by @jedevc in dagger#8358
  • cli: fix plaintext being printed on screen when calling a function that returns a dagger.Secret by @helderco in dagger#8468

What to do next?

v0.13.0 - 2024-09-11

🔥 Breaking Changes

  • Remove deprecated fields and arguments by @jedevc in dagger#8065
    • Remove Container.withExec's skipEntrypoint argument - this is now the default (see useEntrypoint)
    • Remove pipeline, Container.pipeline and Directory.pipeline
    • Remove GitModuleSource.cloneURL (see GitModuleSource.cloneRef)

Added

  • Added new Directory.digest and ModuleSource.digest fields by @jedevc in dagger#8282
    These fields mirror the behavior of the File.digest field, computing a unique cryptographic digest over the contents of the object.
  • TUI: add --no-exit/-E so you can poke around after the call completes by @vito in dagger#8389

Changed

  • The trace url is printed just before the final output to make it easy to find by @rajatjindal in dagger#8366
    Also, the url will be printed only for a subset of dagger commands to reduce noise.
  • Increase the minimum connect timeout from 1s to 3s by @neutronth in dagger#8328
    Connecting to a distant remote engine could otherwise fail if it was not reachable in 1s.

Fixed

  • Fixed void types from core incorrectly being seen as named scalars by @helderco in dagger#8336
  • Fix setting secrets on module object in constructor by @sipsma in dagger#8149
  • Allow top-level field access with no constructor by @jedevc in dagger#8331
    Previously, if a field access was made immediately after the default constructor was called, then the access would fail.
  • Plain progress correctly displays carriage returns by @jedevc in dagger#8347
    Carriage returns could previously render weirdly in the output, displaying empty lines, and similar visual glitches.
  • cli: Fix default value on Platform flag by @helderco in dagger#8360

What to do next?

v0.12.7 - 2024-09-02

Fixed

  • Fixed regression in module ref parsing for no-protocol refs that had version suffixes by @jedevc in dagger#8298
  • Make Git.tags URL parsing consistent with Git.tree by @jedevc in dagger#8298
  • Load specified version when loading php or elixir sdk by @rajatjindal in dagger#8297

What to do next?

v0.12.6 - 2024-08-29

Added

  • Add new context directory support by @TomChv in dagger#7744
    This allows accessing their own source directory, without needing to explicitly pass directories around.
  • Support private modules with new SSH ref scheme and forward of SSH agent by @grouville in dagger#7708
    • Go-like public module refs (currently used) remain active
    • HTTP / HTTPS schemes are now supported as alternative public module refs
    • SSH refs are introduced, with support of SCP-like refs git@provider:user/repo and explicit ssh://provider/user/repo
  • Implements CLI call argument --interactive-command for overriding the default command used in interactive mode by @samalba in dagger#8171

Fixed

  • Error out if non-existent local module directory is passed to CLI by @jedevc in dagger#8193
    The file-not-found errors were previously silently ignored for the top-level module passed in the CLI.
  • Silence noisy failed to get repo HEAD CLI error by @jedevc in dagger#8189
  • Fix performance issues in Container.withExec after using withMountedTemp or withMountedSecret by @jedevc in dagger#8180

What to do next?

v0.12.5 - 2024-08-15

Added

  • cli: allow calling core functions directly by @helderco in dagger#7310
    Usage: dagger core <function>
    Example: dagger core container from --address=alpine terminal

    Works the same as dagger call, but instead of loading a user module, it only uses functions from the core API.

    Run dagger core --help for available functions.

    Note that this command is experimental and the DX for calling core functions in the CLI may change in the future.

  • New SDK aliases for elixir and php by @jedevc in dagger#8067
    SDKs with experimental module support (elixir and php) can now be accessed using --sdk=<sdk> (such as --sdk=elixir and --sdk=php respectively) instead of the full form --sdk=github.com/dagger/dagger/sdk/<sdk>@<version>.

  • Add File.digest method by @TomChv in dagger#8114
    This method provides an efficient way to compute a file's digest, which unlock optimized file comparison or check for file changes.

  • Bundle CLI in the Engine image so that both parts of Dagger (CLI+Engine) ship as a single artefact by @gerhard in dagger#8147

Changed

  • Reimplemented the OpenTelemetry data pipeline to avoid hangs and other complications by @vito in dagger#7996

Fixed

  • Fix Directory.glob to correctly handle globs with subdir prefixes by @jedevc in dagger#8110
    Previously, attempting to glob with a prefix subdir in a pattern like <subdir>/* would not match any files. This should now be fixed, and files in <subdir> will now be correctly matched.
  • Fix failed to collect IDs from parent fields error when module objects contain fields with nil values by @jedevc/@sipsma in dagger#8132
  • Fixed enum lists in modules by @helderco in dagger#8096
  • Fixed referring to module's own objects/interfaces/enums in constructor signature by @jedevc in dagger#8115
    Previously, modules would fail to launch if they declared a constructor that contained a reference to a type from it's own module in it's args.
  • Fixed using custom enum types as optional arguments by @jedevc in dagger#8148
    Previously, function calls that defined an optional argument would not be callable.
  • Make retrieving secret from command works on Windows by @wingyplus in dagger#8121

What to do next?

v0.12.4 - 2024-08-01

Changed

  • Deprecate old pipeline APIs by @jedevc in dagger#8064
    These operations have been no-ops since v0.11.0, and will be removed in v0.13.0.

Fixed

  • Fix errors when using Dockerfile builds from module functions that have secrets by @sipsma in dagger#8049
  • Fix dagger terminal prompt with debian-based images by @vmaffet in dagger#7960
  • Fix occasional leaks in secret scrubbing algorithm by @jedevc in dagger#8047
  • Fix frequent context switches in --progress=plain output by @jedevc in dagger#7956
  • Extend multi git server support to Azure devOps by @grouville in dagger#8063
    Our support for Azure refs was broken on monorepos. We special-case Azure DevOps since it doesn't work with the go standard convention of discovering the root of a git repository

What to do next?

v0.12.3 - 2024-07-25

Added

  • cli: propagate exit code from function by @helderco in dagger#8019

Fixed

  • Fix rare condition in which clients could use wrong files in filesync by @sipsma in dagger#7900
  • Fix missing secret errors when secrets are set in objects fields during chained function calls by @sipsma in dagger#8011

What to do next?

v0.12.2 - 2024-07-22

Changed

  • dagger init now generates files in the current directory by default and no longer in ./dagger by @TomChv in dagger#7824

Fixed

  • cli: fix handling of enum default values by @helderco in dagger#8000
  • cli: fix Cloud traces and GitHub checks always being succeeded by @vito in dagger#8001
    • note: this only affects telemetry; the command itself still fails.

What to do next?

v0.12.1 - 2024-07-18

Added

  • cli: add support for passing Sockets as arguments from the CLI to Functions by @sipsma in dagger#7804
  • cli: new --compat flag for develop to target a specific api version by @jedevc in dagger#7948

Changed

  • cloud: traces are not uploaded for dagger version/dagger login/dagger logout/etc by @jedevc in dagger#7928

Fixed

  • core: allow @ in local module name by @grouville in dagger#7891
  • cli: fix dagger version sometimes disappearing by @jedevc in dagger#7919
  • cli: avoid api errors when calling modules in compat mode by @jedevc in dagger#7924

What to do next?

v0.12.0 - 2024-07-12

This release is significant. All details (including videos & code examples) are captured in this blog post.

🔥 Breaking Changes

  • sdk: Various breaking changes to the Go SDK
    See the SDK-specific release notes for more information.
  • api: Align Container.withNewFile signature with Directory.withNewFile by @helderco in dagger#7293
    Callers of Container.withNewFile will need to change contents from optional to required argument.
  • api: Skip entrypoint by default in withExec by @helderco in dagger#7136
    Callers relying on a Container's entrypoint will need to be updated to opt-in with useEntrypoint.
  • api: Don't fallback to the default command on Container.stdout and Container.stderr by @helderco in dagger#7857
    Callers of stdout and stderr without a previous withExec will need to insert an explicit empty withExec.
  • api: Container.terminal now returns a Container by @aluzzardi in dagger#7586
    Callers of terminal will need be updated to handle the updated type.
  • api: Return absolute path on export instead of boolean by @helderco in dagger#7500
    Callers expecting a boolean return will need to be updated to instead handle a string path.
  • api: Removed deprecated sshAuthSocket and sshKnownHosts args from GitRef.tree by @jedevc in dagger#6934
    Callers should instead attach these arguments onto the top-level git call.
  • api: Removed id parameters for container, directory and socket by @jedevc in dagger#6934
    Users of these parameters should instead use the standalone loadContainerFromID, loadDirectoryFromID and loadSocketFromID respectively.
  • api: Removed checkVersionCompatibility field (versioning checks are now automatically performed on all connections) by @jedevc in dagger#7751
    Versioning checks are now all automatically performed on all connections, and never need to be manually performed through the API.

Upgrade Instructions

Thanks to the new compatibility mode feature, these breaking changes should not impact any existing Modules immediately. dagger call should still work on v0.12.0 without any changes to your Module code (any compat issues for modules are likely a bug, please report!)

After upgrading to Engine v0.12.0, you can upgrade your Module to use the latest v0.12.0 APIs by running dagger develop. That will update the engineVersion field of your module's dagger.json configuration file to v0.12.0 and enable the new APIs.

After that, if your code is impacted by any of the breaking changes, you will see errors when running dagger call. Once the errors are fixed, dagger call will work again and your module can be updated in Daggerverse if desired.

More detailed instructions on addressing the individual API incompatible changes can be found in the PR descriptions linked above.

Added

  • api: terminal can be inserted into the middle of Container and Directory pipelines to pop an interactive shell by @aluzzardi in dagger#7586
  • api: Introduced module versioning compatibility by @jedevc in dagger#7759
  • tui: Improved progress navigation and verbosity settings by @vito in dagger#7671
  • cli: Add -q flag and DAGGER_QUIET=1 to restore previous verbosity default by @vito in dagger#7822
  • cli: Expand tilde (~) in file, directory and secret file argument by @wingyplus in dagger#7818
  • api: Add git tags API by @grouville in dagger#7742
  • api: Add core APIs for local cache state by @sipsma in dagger#7767

Changed

  • cli: Print module object fields with dagger call by @helderco in dagger#7479

Fixed

  • cli: Allow absolute paths for local module paths by @Michael Albers in dagger#7476
  • cli: Generate LICENSE only if --sdk is set on dagger develop by @TomChv in dagger#7719
  • core: Correctly set new engine gc policy defaults by @jedevc in dagger#7749
  • tui: plain progress output updated to not use hyperlinks by @jedevc in dagger#7754
  • core: Prevent service healthchecks from using too long a retry interval by @sipsma in dagger#7848

What to do next?

v0.11.9 - 2024-06-24

Fixed

  • Fix engine local disk cache growing indefinitely by @sipsma in dagger#7738

What to do next?

v0.11.8 - 2024-06-18

🔥Breaking Changes

  • core: when manually connecting cli and engine, versions must be at least v0.11.8 by @sipsma in dagger#7643

Added

  • core: allow hosting modules outside of GitHub by @grouville in dagger#7511

Changed

Fixed

  • core: fixed telemetry draining when clients exit uncleanly by @vito in dagger#7660
  • cli: fixed infinite loop when simplifying on high verbosity levels by @jedevc in dagger#7679
  • cli: improve chunking of plain progress logs by @jedevc in dagger#7653

Dependencies

  • core: revert iptables to legacy to avoid use of nftables by @marcosnils in dagger#7670

What to do next?

v0.11.7 - 2024-06-11

🔥 Breaking Changes

  • core: when manually connecting cli and engine, versions must be at least v0.11.7 by @jedevc in dagger#7031
  • sdk: runtime module interface accepts schema as File instead of string for improved performance by @sipsma in dagger#7549

Changed

  • core: engine gc policy is less aggressive by @marcosnils in dagger#7563
  • cli: minor improvements to progress viewer by @jedevc in dagger#7474
  • cli: decrease connect timeout in gRPC dial by @marcosnils in dagger#7612

Fixed

  • core: fix File.export to local Windows client by @wingyplus in dagger#7564
  • core: handle secrets in dockerfile builds with syntax directives by @jedevc in dagger#7595
  • core: improved telemetry draining and prevents hangs by @vito in dagger#7452

What to do next?

v0.11.6 - 2024-05-30

Added

  • Add withName method to File by @TomChv in dagger#7491

Fixed

  • cli: don't validate flags when requesting --help by @helderco in dagger#7417
  • fix container init being wrong platform in arm image by @sipsma in dagger#7497
  • fix container DNS resolution when host has no search domains by @sipsma in dagger#7501
  • honor system proxy config during git operations by @sipsma in dagger#7504
  • fix windows-style paths used as file+directory arg values in dagger call by @sipsma in dagger#7506

What to do next?

v0.11.5 - 2024-05-27

Added

  • cli: dagger login cloud traces support by @aluzzardi in dagger#7125
  • cli: improved --progress=plain implementation for better visibility by @jedevc in dagger#7272

Changed

Fixed

  • core: fixed custom CA certs in modules by @sipsma in dagger#7356
  • cli: don't validate flags when requesting --help by @helderco in dagger#7417

What to do next?

v0.11.4 - 2024-05-09

Fixed

  • cli: Fix panic when calling function with list of scalars by @jedevc in dagger#7322
  • Avoid hang caused by client id conflicts by @sipsma in dagger#7335
  • Avoid unneccessary module cache invalidation from internal plumbing values by @sipsma in dagger#7336

What to do next?

v0.11.3 - 2024-05-08

🔥 Breaking Changes

  • cli: remove space stripping from secret arguments by @marcosnils in dagger#7271

Added

  • Added support for custom scalars and enums in function arguments by @jedevc in dagger#7158
  • Added support for propagating system proxy settings by @sipsma in dagger#7255
  • api: Added Container.withoutSecretVariable by @helderco in dagger#7291
  • api: Added Container.withoutDirectory and Container.withoutFile by @helderco in dagger#7292

Changed

  • cli: Added a visual cue for required flags in --help by @grouville in dagger#7262
  • cli: Conventionalized usage syntax in --help by @grouville in dagger#7143
  • cli: Use "functions" and "arguments" in dagger call --help by @helderco in dagger#7286

Fixed

  • api: Set Container.platform correctly when using Container.from by @marcosnils in dagger#7298
  • Avoid intermittent failed to get state for index errors by @sipsma in dagger#7295 dagger#7309
  • Avoid panic when masked parent is missing by @vito in dagger#7227
  • Fix terminal broken on Windows by @wingyplus in dagger#7305

What to do next?

v0.11.2 - 2024-04-25

Added

  • New version field to get engine version details by @jedevc in dagger#7029

Changed

  • cli: style headings in BOLD UPPERCASE to help break sections visually by @grouville in dagger#7126
  • cli: remove discrepancy in usage between dagger query and the rest of the commands by @grouville in dagger#7124
  • cli: move arguments section below functions/commands in usage, for better readability by @grouville in dagger#7134
  • cli: adopt options terminology instead of flags by @grouville in dagger#7170

Fixed

  • Fixed more windows path issues by @jedevc in dagger#7118
  • cli: Fixed using --help after arguments in dagger functions by @helderco in dagger#7187

What to do next?

v0.11.1 - 2024-04-16

Added

  • Add withAuthToken and withAuthHeader fields to GitRepository by @jedevc in dagger#6992

Fixed

What to do next?

v0.11.0 - 2024-04-03

🔥 Breaking Changes

  • Old clients <=0.10.3 cannot connect to a new >=v0.11.0 engine
  • Old progress interfaces removed by @vito in dagger#6835
  • --focus CLI flag removed by @vito in dagger#6835

Added

  • Add OTEL trace exports by @vito in dagger#6835
  • Add Head field to GitRepository to get the default branch by @jedevc in dagger#6994

Fixed

  • Fix DOCKER_HOST not working when DAGGER_CLOUD_TOKEN set by @sipsma in dagger#7006

What to do next?

v0.10.3 - 2024-03-26

Added

  • Add support for wipe arg to Directory.export by @sipsma in dagger#6909
  • Add new Secret.Name field by @jedevc in dagger#6924
  • Support directory arg filtering via views by @sipsma in dagger#6857
  • Make automatic .gitignore creation for modules configurable by @sipsma in dagger#6888

Changed

  • Allow id as argument name to functions by @sipsma in dagger#6912

Fixed

  • Fix Container.withFiles not respecting absolute paths by @helderco in dagger#6879
  • Fix Directory.glob on directories with a sub path by @helderco in dagger#6904
  • Allow unicode parent path components by @jedevc in dagger#6925

What to do next?

v0.10.2 - 2024-03-12

Fixed

  • Fix panic on unset default terminal arg by @TomChv in dagger#6838
  • Trim spaces on file and command secret source inputs by @kpenfound in dagger#6845
  • Fix name conflicts with Query by @jedevc in dagger#6849
  • Propagate GraphQL client to child clients by @jedevc in dagger#6851
  • Prevent glob from returning duplicate directories by @jedevc in dagger#6852
  • Do find-up of dagger.json for all relevant commands (works from subdirs) by @sipsma in dagger#6860

What to do next?

v0.10.1 - 2024-03-05

Added

  • Allow passing git URLs to dagger call file type args by @jedevc in dagger#6769
  • Support privileges and nesting in default terminal command by @TomChv in dagger#6805

Fixed

  • Fix panic in Contents for massive files by @jedevc in dagger#6772
  • Dagger go modules default to the module name instead of "main" by @jedevc in dagger#6774
  • Fix a regression where secrets used with dockerBuild could error out by @jedevc in dagger#6809
  • Fix goroutine and memory leaks in engine by @sipsma in dagger#6760
  • Fix potential name clash with "Client" in Go functions by @jedevc in dagger#6716

What to do next?

v0.10.0 - 2024-02-27

Added

  • New Dagger functions and modules
    • Modules allow bundling up and sharing reuable pipeline functions in a cross-language way.
    • New CLI commands (such as dagger call) provide a consistent interface to easily invoke functions inside modules.
    • A new TUI interface allows easily following along with what's going on.

What to do next?

v0.9.11 - 2024-02-20

Fixed

  • Improve docker error logging by @jedevc in dagger#6676

What to do next?

v0.9.10 - 2024-02-12

Added

  • Add new Directory.WithFiles and Container.WithFiles by @tomasmota in dagger#6556

Fixed

  • Avoid panic in secret scrubber caused by similar secret names @jedevc in dagger#6641

What to do next?

v0.9.9 - 2024-02-08

Added

What to do next?

v0.9.8 - 2024-02-01

🔥 Breaking Changes

  • Service.Stop now uses SIGTERM instead of SIGKILL by default by @jedevc in dagger#6354

Added

  • Add option to skip healthcheck on exposed ports by @KGB33 in dagger#6214
  • New kill option for Service.Stop by @jedevc in dagger#6354

What to do next?

v0.9.7 - 2024-01-18

Added

What to do next?

v0.9.6 - 2024-01-11

🔥 Breaking Changes

  • Argument to withDefaultArgs is now required by @helderco in dagger#6281

Fixed

  • Fix shim panic when exec-ing an unknown command by @Juneezee in dagger#6356
  • Fix potential panic when exporting cache by @jedevc in dagger#6378
  • Fix concurrent map access in api server by @jedevc in dagger#6388

What to do next?

v0.9.5 - 2023-12-21

Added

  • New withoutEntryoint and withoutDefaultArgs fields by @helderco in dagger#6278

Fixed

  • Clear defaultArgs on withEntrypoint by default by @helderco in dagger#6280

What to do next?

v0.9.4 - 2023-12-08

Added

  • New secret scrubbing implementation for more responsive logs by @jedevc in dagger#6034
  • Improved logging during engine startup by @jedevc in dagger#6075

Fixed

What to do next?

v0.9.3 - 2023-11-03

Fixed

  • Fixes + performance improvements to experimental features

What to do next?

v0.9.2 - 2023-10-30

Added

What to do next?

v0.9.1 - 2023-10-26

Added

What to do next?

v0.9.0 - 2023-10-20

🔥 Breaking Changes

Added

Changed

Fixed

What to do next?

v0.8.8 - 2023-10-11

Added

Fixed

What to do next?

v0.8.7 - 2023-09-18

Added

What to do next?

v0.8.6 - 2023-09-18

Added

What to do next?

v0.8.5 - 2023-09-13

Added

Fixed

What to do next?

v0.8.4 - 2023-08-17

Fixed

What to do next?

v0.8.3 - 2023-08-16

Added

Changed

Fixed

What to do next?

v0.8.2 - 2023-08-10

Added

Fixed

What to do next?

v0.8.1 - 2023-08-04

Fixed

What to do next?

v0.8.0 - 2023-08-03

🔥 Breaking Changes

Added

Fixed

What to do next?

v0.6.4 - 2023-07-19

Added

Deprecated

Fixed

What to do next?

v0.6.3 - 2023-07-04

Added

Fixed

What to do next?