docs: add focused navigation and a first-class Steps reference @osterman (#3268)
## what- Add shared desktop/mobile focused section menus with linked overview titles, sidebar-wide filtering, independent expansion, compact styling, React icons, and section transitions that respect reduced motion; redesign Next Steps around a recommended project and simple topic rows.
- Promote Steps beside Workflows with a shared overview, complete type catalog, configuration reference, and context-specific guidance; migrate pages to
/steps, preserve legacy redirects and release markers, update website references, rename Custom Components, and update the Go documentation inventory test for the shared catalog and initialized registry.
why
- Make the documentation easier to browse and expose reusable steps directly while preserving existing links, execution-context distinctions, and CI coverage of registered step types.
references
- Validation: full step package tests, documentation inventory with the race detector, 9 navigation/release-history tests, production documentation build, 59 migrated page redirects, all 14 section overview links, and desktop/mobile browser checks including reduced motion and the redesigned Next Steps page.
Summary by CodeRabbit
-
New Features
- Added a searchable, section-based documentation sidebar with collapsible menus and clearer navigation.
- Added a shared Steps reference and catalog covering workflows, custom commands, and lifecycle hooks, including documentation for the
tflintstep. - Reorganized the “Next Steps” guide with topic-based learning paths.
-
Documentation
- Updated step documentation links to current
/stepsroutes and added guides for step configuration and usage. - Made documentation categories collapsed by default.
- Updated step documentation links to current
feat(terraform): treat component mocks as fallbacks for missing state @osterman (#3244)
## what-
With
--use-mocks,!terraform.stateand!terraform.outputnow use the real value when it exists and fall back to the component'smocksonly when the referenced state is not provisioned or the output is missing. Precedence: real value → mock → YQ//default → original error. -
Credential, network, and backend errors still fail; mocks never hide them.
-
New atmos.yaml setting
components.terraform.mocks.mode(fallback|always, envATMOS_COMPONENTS_TERRAFORM_MOCKS_MODE).alwayskeeps the previous hermetic behavior: mocks only, no Terraform init, credentials, or backend reads. -
--use-mocksis now value-bearing: absent/false= off, bare/true= on with the configured mode,fallback/always= on with a per-run override. It is still accepted only byatmos terraform planandatmos describe component. -
The new default is journaled as a config edition entry (2026-10-01,
always→fallback), following thecomponents.terraform.init.modeprecedent, so projects pinned to an earlier edition keep mocks-only behavior with no changes. -
An invalid
mocks.modein atmos.yaml fails loudly under--use-mocksinstead of silently disabling mocks. -
Updated the PRD, mocks/flag/YAML-function/configuration/environment-variable docs, Terragrunt migration page (also fixing its incorrect "any command" claim), example README, agent skills, help-text snapshots, defaults snapshot, and atmos.yaml JSON schema. Added a changelog post, a roadmap milestone, and a fix-log record.
-
Bumped
github.com/containerd/containerd/v2to v2.3.6 (go directive 1.26.6 → 1.26.8, which v2.3.6 requires) to fix GO-2026-6597, published 2026-10-01. Atmos reaches the affected package through the OPA SDK, which forced govulncheck into whole-program analysis that exceeds the standard runner's memory and failed the job repo-wide.
why
- Mocks were meant to fill gaps, but
--use-mocksshort-circuited every lookup to themocksmap, so a plan against a partly deployed environment showed fake values for components that already had real state. - Restricting the fallback to recoverable misses (the same classification YQ
//defaults use) keeps real infrastructure problems visible. - Bare
--use-mockschanges meaning in a released version, so the change is edition-gated to avoid surprising pinned projects.
references
- Original feature: #2755
- PRD:
docs/prd/terraform-component-mocks.md - Changelog:
website/blog/2026-10-01-terraform-component-mocks-fallback.mdx
🤖 Generated with Claude Code
Summary by CodeRabbit
-
New Features
- Added configurable Terraform mock modes:
fallbackprefers real state and outputs, using mocks when values are missing;alwaysuses mocks only. - Added mode selection through
--use-mocksand Terraform configuration, with clearer validation and command restrictions. - Output lookups using
.now return all outputs.
- Added configurable Terraform mock modes:
-
Bug Fixes
- AWS browser authentication can complete an in-flight token exchange if the spinner fails.
- NOTICE generation can reuse its existing tagline when GitHub’s description is unavailable.
-
Documentation
- Updated mock-mode guidance, examples, migration notes, and CLI help.
🚀 Enhancements
fix(mcp): respect .atmos.d fragments in mcp add/remove (#3269) @aknysh (#3270)
## whatatmos mcp add/atmos mcp removenow respect the.atmos.d/config-fragment convention when choosing which file to edit.- When no explicit
--configis given and the project already keeps its MCP config in an auto-discoveredatmos.d/or.atmos.d/fragment (one that declares anmcp:section), that fragment is edited instead of the rootatmos.yaml.mcp.enabled(flipped duringadd self) lands in the same file. - When no fragment declares
mcp:, behavior is unchanged: the rootatmos.yamlis edited. An explicit--config <file>still wins over detection. - Command help, embedded markdown, and the
atmos mcp adddocs now explain which file is edited and the--configescape hatch.
why
- Fixes #3269. Atmos auto-discovers and deep-merges
atmos.d//.atmos.d/fragments when it loads config, somcp.serversdeclared in a fragment are read correctly and show up inatmos mcp list. Only the write path lagged:mcp addalways targeted the rootatmos.yaml, splitting a modular-config project's MCP configuration across two files and risking duplicate or conflictingmcp.serversentries. - The reading convention and the writing convention now agree, so a project that keeps MCP config in a fragment stays consistent after
add/remove.
references
- Closes #3269
- Fix write-up:
docs/fixes/2026-10-04-mcp-add-respects-atmos-d-fragments.md - Docs:
atmos mcp add
Implementation
pkg/config/config_edit.go: newResolveEditableConfigFileForSection(atmosConfig, override, section)— same precedence asResolveEditableConfigFile(explicit override wins) but prefers an auto-discovered fragment that already declares the given top-level section before falling back to the rootatmos.yaml. HelpersfragmentDeclaringSection/fragmentSearchDirs(current working directory before git root, mirroringmergeDefaultImportsprecedence) andfileDeclaresTopLevelKey.pkg/mcp/config/config.go:ResolveFilenow callsResolveEditableConfigFileForSection(..., "mcp").
Testing
- Reproduction test fails before / passes after (
pkg/mcp/config), plus fallback and--config-override tests; direct unit tests for the newpkg/configfunctions (fragment variantsatmos.d/.atmos.d, nested,.yml; fallback; override; no-config error;fileDeclaresTopLevelKeyedge cases). New functions at 90–100% coverage. - End-to-end with the built binary: in a project with
atmos.yaml+.atmos.d/mcp.yaml,atmos mcp add <url> --name demo --yesaddeddemoto.atmos.d/mcp.yamland leftatmos.yamluntouched. go build ./..., affected test suites,golangci-lint(0 issues), andcd website && npm run buildall pass.
Summary by CodeRabbit
-
New Features
atmos mcp addandremoveselect a configuration file based on where the server is declared. Overwrites target the highest-precedence file declaring that server; new servers go to the highest-precedence file declaringmcp.servers, or the rootatmos.yamlif none does.- Changes to
mcp.enabledgo to the highest-precedence file declaring that setting, or the root config if none does. - Use
--config <file>to explicitly choose a target.
-
Documentation
- Clarified configuration-file selection, including fragments, and noted that
addwrites only to the configuration file unless--installis used.
- Clarified configuration-file selection, including fragments, and noted that
docs(support): point paid support to Atmos Pro and Cloud Posse @osterman (#3262)
## what- Updated the "Paid Support" section of
atmos support(CLI output and theatmos supportdocs page) to say paid support is available as part of Atmos Pro, or consulting from Cloud Posse, with links to https://atmos-pro.com and https://cloudposse.com/support. - Removed the GitHub Sponsors (Enterprise Tier) link and the sponsorship-tied "30-minute workshops twice a week" wording, and dropped the duplicate support link from the trailing note.
- Regenerated the
atmos supportgolden snapshot.
why
- GitHub Sponsors is no longer how paid support is offered; the old text pointed users at the wrong place.
references
- Not regenerated: the
atmos-support.castscreengrab still shows the old text and needs a screengrabs regeneration run.
🤖 Generated with Claude Code
Summary by CodeRabbit
- Documentation
- Updated paid-support information to list Atmos Pro and Cloud Posse Support, with help for Atmos, AWS Reference Architectures, related tools, troubleshooting, and architecture decisions.
- Added links to the support options and retained the note that paid support includes priority responses.
- The GitHub Sponsors Enterprise Tier offer and its twice-weekly workshops are no longer listed.