.changes/v0.20.4.md
dagger up to start module-defined services on the host, including @up annotations, workspace/module services() APIs, and configurable port mappings by Yves Brissaud in https://github.com/dagger/dagger/pull/11959@cache directive for module function cache control by Alex Suraci in https://github.com/dagger/dagger/pull/12920--failfast to dagger check and WithFailFast in SDKs by @kpenfound in https://github.com/dagger/dagger/pull/11956Changeset.diffStats() and structured DiffStat entries for renames and line-count summaries by @grouville + @tiborvass in https://github.com/dagger/dagger/pull/12002Directory.chown() with usernames and group names by @alexcb in https://github.com/dagger/dagger/pull/12128ADD --unpack support by @tiborvass + @grouville in https://github.com/dagger/dagger/pull/12096COPY --exclude and COPY --parents by @alexcb in https://github.com/dagger/dagger/pull/12896@check and @generate directives by Alex Suraci in https://github.com/dagger/dagger/pull/12830@up annotation support by Yves Brissaud in https://github.com/dagger/dagger/pull/12919Enum types by @Nero-F in https://github.com/dagger/dagger/pull/12862internal/dagger/<dep>.gen.go files by @TomChv in https://github.com/dagger/dagger/pull/11962Config by @fdiakh in https://github.com/dagger/dagger/pull/12832dagger connect faster by reducing driver probing and setup work before command execution by @tiborvass in https://github.com/dagger/dagger/pull/11769checks() and generators() APIs, richer workspace metadata, and clearer path/boundary semantics by @shykes in https://github.com/dagger/dagger/pull/11995dagger check and dagger generate now resolve against the current workspace rather than only the current module by @shykes in https://github.com/dagger/dagger/pull/11995RUN heredoc failing with command not found (exit 127) by preserving /dev/pipes/ mounts in the OCI spec by @majiayu000 in https://github.com/dagger/dagger/pull/12020dagger init crashing when .env exists as a directory by @paikend in https://github.com/dagger/dagger/pull/12868WithExec with Expand=true so environment variables are also expanded in RedirectStdout, RedirectStderr, and RedirectStdin paths by @shykes in https://github.com/dagger/dagger/pull/12846envFrom.secretRef indentation in the engine StatefulSet by @fixeasy in https://github.com/dagger/dagger/pull/12906dagger shell object-argument errors to show a clear message when a string literal is passed instead of an object ID by @shykes in https://github.com/dagger/dagger/pull/12842ContainerDagOp returns by @marcosnils in https://github.com/dagger/dagger/pull/12861/dagger-sdk behavior by Alex Suraci in https://github.com/dagger/dagger/pull/12830Config.log_output handling for in-memory streams such as StringIO by @paikend in https://github.com/dagger/dagger/pull/12867Config behavior, and improve GraphQL error parsing by @fdiakh in https://github.com/dagger/dagger/pull/12832Special thanks to our external contributors this release!