v1.206.0-rc.1
Pre-release
Pre-release
feat: version-aware JIT source provisioning with TTL-based cleanup @osterman (#2010)
## what- Implement version-aware JIT source provisioning that automatically re-provisions workdirs when remote source version or URI changes
- Add incremental local sync using per-file checksum comparison (SyncDir) instead of full directory copy
- Support TTL-based cleanup for stale workdirs with
--expired,--ttl, and--dry-runflags - Move workdir metadata from
.workdir-metadata.jsonto.atmos/metadata.jsonfor better organization - Track
source_uri,source_version, andlast_accessedtimestamps in metadata
Additional Fixes
- Closes #2019 - Fix JIT provisioning gaps in generate commands
terraform generate varfile/terraform generate backend- now support JIT-sourced componentshelmfile generate varfile- now supports JIT-sourced componentspacker output- now supports JIT-sourced components
why
- Previously, changing a component's source version required manually cleaning the workdir before changes took effect
- Full directory copy was inefficient for local development with frequent small changes
- No mechanism existed to automatically clean up stale workdirs that accumulate over time
- Enhanced metadata enables intelligent provisioning decisions and better observability
- Generate commands failed with JIT-sourced components because they lacked source provisioning (#2019)
references
- New
pkg/durationpackage extracted for reusable duration parsing - Updated
workdir listandworkdir showcommands display version and access information - Blog post:
website/blog/2025-01-22-version-aware-jit-provisioning.mdx
Summary by CodeRabbit
- New Features
- JIT source provisioning now takes precedence over local components across all terraform commands when source and workdir are enabled.
- Automatic component refresh when version or source URI changes.
- TTL-based cleanup for stale workdirs using
--ttlflag (e.g.,--ttl=7d). - Enhanced workdir information displays source type, version, and last accessed timestamp.
- Incremental file synchronization—only changed files sync to workdirs.
🚀 Enhancements
fix: Terraform shell command not working from Atmos interactive UI @aknysh (#2055)
## what- Fix
terraform shellcommand when invoked from the Atmos interactive UI (TUI) - Route
terraform shelldirectly toExecuteTerraformShell()from the UI dispatcher, bypassingExecuteTerraform() - Add
AuthManagerpropagation toterraform shellfor YAML functions like!terraform.state - Add
--identityflag support toterraform shellcommand - Extract testable helpers (
shellInfoFromOptions,resolveWorkdirPath,shellOptionsForUI) from inline logic - Add auth orchestration functions (
createAndAuthenticateAuthManager,getMergedAuthConfig,storeAutoDetectedIdentity) toutils_auth.go
why
- The Atmos interactive UI dispatches commands through
ExecuteTerraform(), which had no handler for theshellsubcommand. Sinceterraform shellis an Atmos-only command (not a native Terraform subcommand), it fell through and attempted to executeterraform shellas a native command, which doesn't exist, resulting in:Terraform has no command named "shell" AuthManagerwas not being passed toProcessStacksin the shell command, causing!terraform.stateand!terraform.outputYAML functions to fail with authentication errors- The
--identityflag was missing fromterraform shell, preventing users from specifying which AWS identity to use for authentication
references
- Closes #2017
Summary by CodeRabbit
-
New Features
- Added
--identityflag (alias-i) to the terraform shell command to specify AWS identity.
- Added
-
Improvements
- Shell execution now surfaces identity in dry-run output, uses improved workdir resolution, and routes the UI path through the interactive shell flow.
- Enhanced authentication handling with merged global/component auth and auto-detected identity fallback.
-
Documentation
- CLI docs updated with
--identityflag and examples.
- CLI docs updated with
-
Tests
- Extensive unit tests for auth merging, identity handling, shell options mapping, and workdir logic.