Go CLI 20260713.01
Pre-release
Pre-release
Dev Container CLI (Go)
This is the Go rewrite of the @devcontainers/cli. Supported platform: Linux (amd64, arm64).
Installation
Download the binary for your platform and add it to your PATH:
# Linux amd64
curl -Lo devcontainer.tar.gz https://github.com/spin-stack/devcontainer-cli/releases/download/v20260713.01/devcontainer_20260713.01_linux_amd64.tar.gz
tar xzf devcontainer.tar.gz
chmod +x devcontainer
sudo mv devcontainer /usr/local/bin/
# Linux arm64
curl -Lo devcontainer.tar.gz https://github.com/spin-stack/devcontainer-cli/releases/download/v20260713.01/devcontainer_20260713.01_linux_arm64.tar.gz
tar xzf devcontainer.tar.gz
chmod +x devcontainer
sudo mv devcontainer /usr/local/bin/Changelog
Features
- 65b78b8 feat(build): --secrets-file → build secrets de BuildKit (divergencia Go-only)
- ef16b7b feat(build): cablear --docker-compose-path + ajustar 2 diferidos (RW-004/RW-005)
- eed5a80 feat(build): cablear config.build.cacheFrom (campo muerto)
- a37a721 feat(build): puente de credenciales del CLI hacia el subproceso docker build
- 556fb24 feat(changelog): enhance changelog configuration with categorized groups and regex filters
- 3d18593 feat(check): add SELinux enforcing preflight
- c4245ff feat(cli): add
devcontainer opento launch VS Code in the dev container - 6c57d01 feat(cli): add
stopanddownfor workspace lifecycle - 676bd97 feat(cli): disambiguate multiple devcontainer.json configs by config_file
- 3f527a3 feat(config): deep-merge de --override-config (divergencia de paridad aprobada)
- 51d23aa feat(config): implement --mount-git-worktree-common-dir
- d1f12c8 feat(coverage): add coverage tasks for E2E and parity contract, update README and .gitignore
- 0ea5308 feat(coverage): add parity runtime and publish tasks, update README and Taskfile
- f1a1d1b feat(docker): stream build/compose progress live instead of on exit
- ab790e0 feat(doctor): comandos check/setup de diagnóstico del host
- a9f2bee feat(features): make direct-tarball download match the TS CLI
- 77d354b feat(features): publish reports version; add hermetic publish parity test
- b8f20a9 feat(features): unificar el grafo de dependencias (RW-002) + override en install (RW-001)
- 9df1f86 feat(http/cli): contexto+redirects en httpx.Do y tee de --log-file a archivo (RW-014)
- 1e75c5d feat(image): distribuir el CLI como imagen OCI multi-arch (RW-016)
- 389b796 feat(oci): RW-007/006/008 — retire dead index types, metadata interop, hermetic auth tests
- 72d4edd feat(parity): implement sharding for parallel CI jobs and add tests for partitioning
- 7db986e feat(read-configuration): --cache-key content-addressed (Go-only, aditivo)
- f0774c5 feat(release): T7 pipeline Linux-only + tag workflow + perf metrics
- 77975f5 feat(up): --cache-image para arrancar de imagen prebuildeada (Go-only)
- eccb57f feat: enhance feature installation with transitive dependency resolution and cycle detection
- 2f2ae79 feat: port upstream #1225 (Dockerfile metadata), #1078 (feature build secrets), #1241 (up --platform)
- 2ed07f9 feat: resolve upstream bugs #8, #319, #876, #881
Bug fixes
- 745781b fix(build): defer --output/--push to feature build for Dockerfile configs
- 373f35a fix(build): omitir BUILDKIT_INLINE_CACHE=1 cuando --cache-to es inline
- e5d5688 fix(build): preserve sibling .dockerignore on rename (#969)
- 7d56d5e fix(build): registrar --no-lockfile/--frozen-lockfile públicos + mutua-exclusión
- c8caff1 fix(ci): correct merged-coverage artifact path + log merged lanes
- 911cefa fix(cli): 0.88 parity — workspace-folder defaults to cwd, error-path alignment
- 232f2ac fix(cli): flags hidden/alias faltantes (paridad TS) — cierra hallazgos RW-013
- 190bc20 fix(cli): restore up parity flags + gate the inventory against the oracle
- 467b748 fix(config): omit workspaceMount consistency= on Linux (0.88)
- 4a02ef0 fix(config): port upstream #1213 (colon defaults) and #1261 (worktree custom mount)
- 64aeee3 fix(config): preserve portsAttributes.protocol and requireLocalPort (spec)
- 87da481 fix(docker): default the base-image ARG in updateUID.Dockerfile (#1242)
- ff07003 fix(dockerfile): unbound ARG shadowing ENV, and dockerfile:1 build-context support
- 878e592 fix(features test): chmod -R 777 the test workspace (parity with TS)
- 34474cc fix(features): _REMOTE_USER_HOME per-RUN and ${localEnv} in Feature metadata
- 34e8af3 fix(features): consecutiveId = _ (paridad read-configuration)
- e705ff0 fix(features): emit dependency mermaid graph for resolve-dependencies
- e8a4abc fix(features): emit devcontainer-collection.json with preserved key order
- e86774c fix(features): features test — cd into workspace, match TS report format
- 4b8c756 fix(features): match TS features-info text rendering (box, tags, manifest order)
- 67c065b fix(features): omit user/group names in packaged tarballs; document mtime limit
- 4131c3a fix(features): package single-feature folder (product gap con TS)
- 2f0e327 fix(features): parse local feature metadata as JSONC
- c93a2a3 fix(features): resolve-dependencies defaults --workspace-folder to cwd (0.88)
- 5eff5e7 fix(features): test imprime banner + error de src/test faltante en STDOUT
- df20932 fix(features,templates): rewrite generate-docs to match TS byte-for-byte
- c5c1420 fix(http): transporte compartido con proxy + CA uniforme en todos los paths
- fffa6b3 fix(imagemeta): correct four metadata merge rules to match the spec
- 4e354a4 fix(lifecycle): stop surfacing the userEnvProbe's benign shell stderr
- d17abb8 fix(oci,ci): bound registry ops, fail-closed on tag-list errors, unskip OCI tests
- 6c697e4 fix(oci,mounts,config): identity-token build auth, mount target subst, comma-path mount
- 9093087 fix(outdated,upgrade): report concrete feature versions; add parity cases
- 0c5a35c fix(parity): 3 divergencias TS↔Go destapadas por la auditoría de cobertura
- eb34e19 fix(parity): 5 divergencias + 8 casos nuevos (wave A, batch 1)
- 4963877 fix(parity): features info verbose emite Published Tags antes de Dependency Tree
- fc7e231 fix(parity): fixture-path de los casos workspace-secrets (2 inconclusive → matched)
- c9ae70d fix(release,packaging): prep Docker for release parity, fail-closed packaging, hermetic gitroot test
- 7d9045e fix(security): enforce disallowed-features blocklist in up/build (0.88 parity)
- 6c0f191 fix(security): guard feature tarball extraction against path traversal (zip-slip)
- ae21fe9 fix(taskfile): ts:compile depende de ts:install (reference 0.88)
- b46e1b4 fix(templates): metadata preserves source key order; cover templates publish/metadata
- 628a140 fix(up): pull the Dockerfile base image before reading its metadata
- bfc6f47 fix(upgrade,outdated): validar --feature/--target-version y paridad de la tabla text
- b0973a6 fix: 0.88 parity — metadata label array, additional-features lockfile, cwd defaults, matrix TS path
- 90a060c fix: apply --remove-existing-container before initializeCommand (#844) and --label on compose build (#930)
- b72972b fix: three upstream bugs we reproduced (updateUID chown, cred-helper hang, dotfiles ~)
Internal improvements
- 702b301 build: versionado CalVer YYYYMMDD.
- f7f0cc4 ci(parity): emulación QEMU arm64 en el lane runtime
- f05eaee ci(parity): scope runtime matrix to affected commands on PR, full run daily
- c929b62 ci(release): add a workflow_dispatch UI button that tags after the gates pass
- c47c3d2 ci(release): make the image tags immutable-tag-safe
- aa87de8 ci: alinear el gate de paridad con arm64 experimental + runtime determinista
- 6e26294 ci: arm64 experimental sólo en workflow_dispatch (no en cada push)
- 748e000 ci: code coverage nativo (Cobertura) + dependabot (gomod/actions/docker)
- 8e28c45 ci: harden gates with race detector, govulncheck, and a coverage floor
- 3093ba1 ci: liberar disco agresivamente en las lanes runtime (el runner moría por disco)
- 7da3c60 ci: mover data-root de Docker a /mnt en las lanes runtime (No space left on device)
- f195136 ci: runtime parity — containerd image store + serial + fail-fast builder probe
- 28958f9 ci: use the official go-task/setup-task action
- eaba237 refactor(cli): centralize duplicated TS-parity messages into constants
- 1c87ef1 refactor(cli): extract featureFromMetadata, dedup processInstallFeature
- 48cb09b refactor(cli): extract prepareDockerfileBuild shared by up and build
- cae1faf refactor(cli): extract resolveComposeProjectName from fromCompose
- 3cd1c37 refactor(cli): give runOutdated an options struct
- 9eda226 refactor(cli): introduce upRunner/buildRunner receivers for up/build
- e5a491d refactor(cli): split helpers.go grab-bag by concept
- 16a712a refactor(cli): thread cmd.Context() through commands, cancel on signal
- 811cd22 refactor(cli): tidy runUp and fromCompose
- 70ee1e2 refactor(compose): drop dead code (Down, v1 fallback, IsV2)
- 3d232fa refactor(config): phased VariableResolver with an inline ${...} scanner
- 012191e refactor(coverage,ci): extract Taskfile bash to scripts, unify coverage, reuse in CI
- 8c269d4 refactor(docker): migrate off deprecated docker/docker to moby/moby v29
- 76f6c48 refactor(dockerfile): drop all regexp; delete dead code; add missing build-context syntax directive
- c275036 refactor(dockerfile): parse with BuildKit's real parser instead of regex
- 94283d1 refactor(errors): errors.As over hand-rolled walk; %w wraps; drop "failed to"
- c01f897 refactor(exec): borrar PTY muerto + endurecer contrato 128+N (RW-003/RW-010)
- 28f7ee7 refactor(exec): enhance concurrent output handling with syncWriter for OSRunner
- d508355 refactor(features): embed README templates from files; add hermetic docs tests
- 2b87c28 refactor(go): thread context, fix hook/write-path bugs, drop stutter
- c7c66e2 refactor(lifecycle): run hooks via the Docker exec API (drop docker exec shell-out)
- e5b8f7d refactor(metadata): extract compactTemplateMetadata function and add tests
- 6bfb04b refactor(parity): streamline parity matrix tasks and enhance reporting
- 2d90641 refactor(seams): introduce four small interfaces for external effects (RW-011)
- fb0fc3b refactor(tests): enhance features test validation and add E2E scenario
- 0f5296d refactor(tests): enhance test result reporting and add new test cases
- 2ca7742 refactor(tests): separate unit and integration tests, enhance parity filtering
- 3c68460 refactor(workflows): streamline task commands and enhance parity matrix structure
- c0582c8 refactor: add coverage task and improve context handling in OCI client
- 86a4647 refactor: delete dead internal/clihost package; use struct{} sets
- ac3e0ac refactor: drop low-value regexp from compose/merge/outdated (perf + clarity)
- f8657b5 refactor: eliminar código muerto (staticcheck U1000)
- 6b462b9 refactor: enhance container labeling in test setup to prevent conflicts
- ed53c71 refactor: flatten internal/core/* to internal/*
- 71a725c refactor: remove legacy migration scripts and tests
- 6bfa4f1 refactor: replace boolean/variadic flag args with explicit options
- 7cf85a4 refactor: resolve docker context + git root in-process (drop docker/git shell-outs)
- a8d28a4 refactor: streamline variable substitution methods and enhance template rendering
- 0e24e82 refactor: use map[string]struct{} for membership sets
Other changes
- 766692d Bump reference a v0.88.0, binario estático, README
- 314be71 Import Go dev container CLI (parity-validated) + TS reference submodule
- 092f8ab Merge pull request #5 from spin-stack/dependabot/github_actions/actions-cde9163d52
- 5329f47 deps: parchear vulnerabilidades (crypto/net/otel)
- f3ed0e0 docs+release: fix release URLs/tags, image contract, and README scope
- 29eb478 license: relicenciar de MIT a Apache 2.0
- 0a78e9f merge: RW-002/001 features graph (T1)
- cabf099 merge: RW-003 exec Linux + PTY delete (T2)
- 230dcaf merge: RW-004/005 compose-path + deferred (T3)
- 70e1c90 merge: RW-007/006/008 oci (T4)
- c9c2a28 merge: RW-011 seams (T5 keystone)
- 3495f0d merge: RW-012 cov-docker
- 08ac8de merge: RW-012 cov-lifecycle
- 8ba7e99 merge: RW-012 cov-oci
- 75cc41f merge: RW-012 templates + cross-layer (T-cov-templates2)
- 72a271c merge: RW-013 flag inventory (T6)
- 934b758 merge: RW-014 http ctx/redirects + log-file (T-http)
- 331a42a merge: RW-015/017 release (T7)
- 1bf69e9 merge: RW-016 OCI image (T-image)
- 1265322 merge: fix/build-lockfile-flags
- 4681785 merge: fix/features-package-single
- b25cdfe merge: fix/features-test-missing-folders
- c89cdfc merge: fix/upgrade-outdated
- 10bf153 revert(parity): drop expect_ts_failure; reuse divergence was a setup artifact