Tagged 2026-05-11 (commit 0b478446). First release after the repo flipped public. Four user-visible changes, one freshness pass, one known follow-up.

Shipped

cidx workflow watch

  • What — watch GitHub Actions runs without an open PR.
  • Whycidx pr watch required an open pull request. Pushing to main, working pre-PR, or monitoring a scheduled workflow had no cidx-native answer; users fell back to gh run watch.
  • Choice — use ListRepositoryWorkflowRuns rather than the per-PR API, so the command works on any repo, not only ones using cidx-generated workflows.
$ cidx workflow watch              # latest run on current branch
$ cidx workflow watch --branch main
$ cidx workflow watch 12345678
$ cidx workflow watch -q           # CI-friendly minimal output

cidx init --diff / --update

  • What — re-running cidx init on an existing project is now safe.
  • Why — previously it either errored out or clobbered cidx.toml. First-time users would lose work on the second invocation (the typo-then-rerun loop).
  • Choice--update is strictly additive: new containers detected from the project get merged in, user-configured overrides are never removed. --diff is preview-only, touches nothing.

Log replay fix (#127)

  • Whatcidx no longer replays output from previous runs.
  • Why — after fixing a lint violation, cidx would still print “violation” lines from the prior run. Misdiagnosed for weeks as a cache-invalidation problem.
  • Choice — root cause was ContainerLogs returning the full history of a reused container. Fix: capture time.Now() immediately before ContainerStart, pass it as Since to ContainerLogs. Four-line change in pkg/executor/docker.go. No cache layer added.

cidx.toml split: 491 → 84 lines

  • What — root config trimmed to functional minimum; full catalog moved to examples/cidx-complete.toml.
  • Why — the 491-line root file was serving two contradictory roles (build config for cidx itself + exhaustive catalog of every option with pedagogical comments). A new project’s cidx init output should be 15–20 lines; a 491-line example sent the wrong signal — this is how much config you need.
  • Choice — keep root at 84 lines (only what cidx run ci, cidx run docker, cidx action release actually need). Move 493-line catalog (all options explicit, all comments preserved) to examples/cidx-complete.toml. cidx check drift output is byte-identical pre/post — pure ergonomics, zero behavioral change.

Maintenance

Bumped or fixed without user-facing surface change:

  • Go toolchain: 1.25 → 1.26
  • actions/checkout in cidx’s own CI: v4 → v6
  • go-git/v5: 5.17.2 → 5.19.0
  • Rust presets: switched from Docker Hardened Images to public Docker Hub (rust:1.83-alpine3.21); works on clean CI runners without DHI credentials
  • cidx generate github for external projects: emits go install github.com/cidx-org/cidx/cmd/cidx@latest (was hardcoded to go build ./cmd/cidx, valid only inside the cidx repo)
  • Per-key env override in [containers.X]: TOML inline-table type coercion was silently dropping user env overrides; fixed

What we learned

Two lessons from the work that ended up in this release.

Wrong-direction debugging is a category of bug. The log replay confusion was tweaked toward “cache invalidation” for weeks because the first hypothesis felt plausible enough that subsequent fixes stayed in its orbit. Two cache-related variants didn’t move the symptom. The real fix was a four-line change in the Docker logs call — found only by suspecting the diagnosis, not the implementation. When a fix doesn’t budge the symptom, the diagnosis is the bug.

An example file is a public signal, not internal documentation. The 491-line cidx.toml worked perfectly as a reference catalog while embarrassing itself as a starting template — the same artifact, two roles, opposite aesthetic requirements. No amount of comment cleanup would have fixed it; the fix had to be structural (two files). For more on what going public surfaced, see Reading My Own README.

Open

#138cidx generate github still emits actions/checkout@v4 in generated workflows. GitHub removes Node.js 20 / v4 from runners on June 2, 2026. Affects every downstream user who runs the generator after that date. Natural v1.7.1 or early v1.8.0 fix.

Install

go install github.com/cidx-org/cidx/cmd/cidx@latest