v1.223.0-rc.4
Pre-release
Pre-release
Add topic-specific CLI help Erik Osterman (Cloud Posse) (@osterman) (#2696)
## what- Add topic-specific help modes for
--help=usage,--help=flags, and--help=all. - Keep default help focused on command-specific flags while preserving full global flag output behind
--help=all. - Add tests, a PRD, and a blog post announcing the help improvement.
why
- Help pages had become noisy because global flags buried command-specific options.
- Focused help topics make usage examples, command flags, and full reference output easier to discover.
- Validated with
go test ./cmd -count=1,go test ./internal/tui/templates -count=1, and commit/push hooks.
references
- n/a
Summary by CodeRabbit
- New Features
- Added topic-specific CLI help via
--help=<topic>:usage,flags, andall. - Default
--helpis now command-focused and omits inherited/global flags; use--help=allfor full reference. - Added in-help guidance pointing users to
--help=usageand--help=all.
- Added topic-specific CLI help via
- Bug Fixes
- Improved
--help=<topic>parsing/validation, including a clear error and valid-topic list for unknown values.
- Improved
- Documentation
- Added PRD, blog post, and roadmap entry for topic-specific CLI help.
- Tests
- Expanded unit coverage and updated CLI help golden snapshots.
Add configurable CI log grouping Erik Osterman (Cloud Posse) (@osterman) (#2669)
## what- Add provider-agnostic CI log grouping with step, phase, and invocation dimensions.
- Implement GitHub Actions
::group::/::endgroup::support, grouping mode config, and nested Atmos suppression. - Wrap workflow/custom-command steps, terraform/tofu phases, and optional whole-command invocations in collapsible groups.
- Document the feature in the native CI PRD, user docs, roadmap, and changelog.
why
- CI logs from Atmos workflows and Terraform runs are hard to scan when all output is flat.
- A single
ci.groups.modeavoids unsupported nested groups while letting users choose step/phase grouping or whole invocation grouping. - Invocation labels omit flags and flag values so grouped CI logs stay readable and avoid exposing noisy or sensitive CLI values.
references
- GitHub Actions workflow command groups: https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-commands#grouping-log-lines
Summary by CodeRabbit
- New Features
- Added collapsible CI log groups for supported CI providers (including GitHub Actions) with step-, phase-, and invocation-level grouping.
- Introduced
ci.groups.mode(auto,invocation,off) andATMOS_CI_GROUPS_MODE.
- Bug Fixes
- Improved nested/recursive CI grouping to avoid duplicate group markers and refined invocation label formatting (ignoring flags/flag values and respecting
--). - Added Terraform phase grouping (init vs main subcommands).
- Improved nested/recursive CI grouping to avoid duplicate group markers and refined invocation label formatting (ignoring flags/flag values and respecting
- Tests
- Expanded coverage for grouping activation, sentinel/no-op behavior, label formatting, and provider escaping; updated related CLI snapshots.
- Documentation
- Added docs for
ci.groups, published the release blog post, and updated CI PRD/framework materials.
- Added docs for
feat: add validation for unsupported YAML tags Erik Osterman (Cloud Posse) (@osterman) (#1515)
## what - Add validation to detect and error on unsupported YAML tags instead of silently ignoring them - Create comprehensive list of all supported YAML tags for validation - Provide clear error messages that include the unsupported tag, file location, and list of supported tagswhy
Currently, when Atmos encounters an unsupported YAML tag (like !invalid or typos like !envv instead of !env), it silently strips the tag and keeps the value. This makes it very difficult to track down configuration errors and typos in YAML files.
By explicitly validating tags and providing clear error messages, we:
- Help users catch typos and invalid tags early
- Prevent silent configuration failures
- Improve debugging experience with clear error messages
- Make the system more reliable and predictable
Example Error Messages
When an unsupported tag is encountered:
unsupported YAML tag '!invalid' found in file '/path/to/stack.yaml'.
Supported tags are: !exec, !store, !store.get, !template, !terraform.output,
!terraform.state, !env, !include, !include.raw, !repo-root
When there's a typo in a tag:
unsupported YAML tag '!envv' found in file '/path/to/stack.yaml'.
Supported tags are: !exec, !store, !store.get, !template, !terraform.output,
!terraform.state, !env, !include, !include.raw, !repo-root
Test Results
- Added comprehensive unit tests for unsupported tag detection
- Tests verify that unsupported tags trigger errors
- Tests verify that valid tags continue to work correctly
- Tests verify error message content and clarity
references
- Closes DEV-2986
- Linear issue: https://linear.app/cloudposse/issue/DEV-2986/atmos-should-error-for-unsupported-yaml-functions
🤖 Generated with Claude Code
Summary by CodeRabbit
-
New Features
- Added stricter custom YAML tag validation: unsupported tags now fail fast with an error that lists supported tags.
- Built-in YAML tags (
!!*) are ignored by custom-tag validation to avoid false positives. - Updated supported YAML tag set used for validation and messaging.
-
Tests
- Expanded test coverage for supported/unsupported tags, nested YAML traversal, edge cases, and error-message details.
- Added additional YAML fixtures to verify error handling.
-
Chores
- Updated test command wiring and CI/Make targets to use a unified
acceptancemode with--cover. - Refreshed related docs/blog examples to match the new command surface.
- Updated test command wiring and CI/Make targets to use a unified
🚀 Enhancements
Migrate devcontainer commands to flag handler Erik Osterman (Cloud Posse) (@osterman) (#2595)
## what- Migrates devcontainer subcommands with positional names or passthrough semantics to
flags.StandardFlagParser. - Centralizes devcontainer name positional arg setup with
flags.NewPositionalArgsBuilder. - Updates
devcontainer execto preferexec <name> -- <command> [args...]while preserving the legacy no-separator form. - Adds parser coverage for required/optional devcontainer names, flag extraction, and
exec --validation.
why
- Keeps upgraded devcontainer commands on the command registry and flag handler path consistently.
- Avoids manual
args[0]/args[1:]handling bypassing positional and separated-arg parsing. - Ensures native command flags after
--are preserved fordevcontainer exec.
references
- Follow-up to #2594.
Summary by CodeRabbit
Release Notes
-
New Features
- Added retry-focused integration coverage for custom shell steps, including attempt-count assertions.
-
Refactor
- Standardized flag parsing and auto-generated usage across all devcontainer commands (attach/config/exec/shell/logs/rebuild/remove/start/stop).
- Centralized step execution to apply configured retries consistently.
-
Tests
- Expanded devcontainer parser tests with early invalid-input rejection prior to manager invocation.
-
Chores
- Improved CI reliability by adding a reusable Colima setup action and tuning timeouts.
- Updated formatting guidance to require gofumpt.