Show all blog posts on single page @osterman (#1731)
## SummaryChanged the blog configuration to display all posts on a single page instead of paginating with 10 posts per page.
What Changed
- Updated
postsPerPagefrom10to'ALL'inwebsite/docusaurus.config.js - Blog now shows all 22+ posts on a single page
- Posts are automatically organized by year in the sidebar navigation
Why This Change
Users were unable to discover older blog posts because they were hidden behind pagination. With only the first 10 posts visible by default, readers had no easy way to browse the complete changelog history.
Benefits
- Improved discoverability - All posts are now visible without clicking through pagination
- Better user experience - Simpler navigation with all content in one place
- Year-based organization - Docusaurus automatically groups posts by year
- Better for SEO - All content indexed on a single page
Testing
- ✅ Website builds successfully (
npm run build) - ✅ All 22 blog posts appear on the blog index page
- ✅ Posts are organized by year (2025)
- ✅ No pagination controls present
🤖 Generated with Claude Code
Summary by CodeRabbit
- New Features
- Blog now shows all posts on a single page (no pagination).
- Blog sidebar lists all posts and displays an updated header ("All posts").
- Sidebar can optionally group posts by year and month, with collapsible month groups and sensible initial expansion for the most recent months.
🚀 Enhancements
fix: Resolve CI regression where terraform fails without TTY for identity selection @osterman (#1735)
## SummaryFixed critical regression in v1.196.0 where atmos terraform plan fails in CI environments with "interactive identity selection requires a TTY" error even when no authentication is configured.
The Problem
Running atmos terraform plan in CI (non-TTY) fails with:
Error: default identity error: interactive identity selection requires a TTY
This happens even when:
- No authentication is configured
- No
--identityflag is provided - No identity-related environment variables are set
Root Causes
- Viper global state pollution:
viper.BindPFlag()incmd/auth_shell.gocreated two-way binding that persisted the__SELECT__value across commands - Incorrect fallback logic: Code would read from viper when the flag wasn't provided, getting polluted values from previous command executions
Solution
Key Changes
cmd/terraform_utils.go (lines 75-128):
- Only process
--identityflag when explicitly provided (flags.Changed()) - Never read from viper global state (which can be polluted)
- Check TTY availability BEFORE attempting interactive selection
- Skip identity selection with debug log when no identities configured
cmd/auth_shell.go and cmd/auth_exec.go:
- Remove duplicate identity flag definitions that shadowed parent
PersistentFlags - Remove
viper.BindPFlag()calls (the pollution source) - Identity flag properly inherited from parent
authCmd
All 6 Scenarios Now Handled Correctly
✅ No flag + default identity configured → Use default identity (TerraformPreHook)
✅ --identity + TTY + identities available → Show interactive selector
✅ --identity + no TTY → Fast fail with clear error message
✅ --identity + no identities → Skip with debug log (no error)
✅ --identity=value + exists → Use that identity
✅ --identity=value + missing → Error from auth manager
Tests
Added comprehensive test suites covering all scenarios:
cmd/viper_bindings_test.go- Proves BindPFlag pollution mechanismcmd/viper_identity_flag_test.go- Tests viper resolution scenarioscmd/terraform_identity_flag_test.go- Tests terraform command behaviorcmd/cobra_flag_defaults_test.go- Tests Cobra NoOptDefVal behavior- Updated auth command tests to check flag inheritance
All tests use t.Setenv() per CLAUDE.md guidelines and check inherited flags via cmd.Flag().
Documentation
Created pkg/auth/docs/identity-flag-behavior.md documenting:
- All 6 scenarios and expected behavior
- Authentication flow and precedence order
- Architecture decisions and rationale
- Non-functional requirements
- Future enhancements
Verification
- ✅ Build passes
- ✅ All tests pass
- ✅ Pre-commit hooks pass (excluding pre-existing lint issues in unrelated files)
- ✅ No viper pollution between command executions
- ✅ Default identity authentication works without
--identityflag - ✅ Interactive selection works in TTY
- ✅ Fast failure with clear error in CI (no TTY)
Related Issues
Fixes v1.196.0 regression where CI pipelines fail unnecessarily.
Summary by CodeRabbit
Release Notes
-
New Features
- Added interactive identity selection when
--identityflag is used without a value - Implemented SSO token caching to prevent re-authentication prompts
- Added unified, secure command-line argument parsing for trailing arguments
- Added interactive identity selection when
-
Bug Fixes
- Fixed authentication chain truncation in container environments
- Improved shell safety for custom commands with special characters and whitespace
- Enhanced identity flag handling across CLI commands
-
Documentation
- Added comprehensive guides on safe argument parsing and shell quoting
- Documented authentication chain and credential caching fixes
- Updated CLI help text for identity flag behavior
-
Chores
- Updated dependencies to latest versions