Skip to content

feat: Hierarchical TOML Configuration System#4

Merged
Wirasm merged 2 commits intomainfrom
shards_config_track
Jan 13, 2026
Merged

feat: Hierarchical TOML Configuration System#4
Wirasm merged 2 commits intomainfrom
shards_config_track

Conversation

@Wirasm
Copy link
Copy Markdown
Owner

@Wirasm Wirasm commented Jan 12, 2026

Summary

Implements hierarchical TOML configuration system for Shards CLI that allows users to configure default agents, terminal preferences, startup commands, and flags.

Features

Hierarchical config loading: ~/.shards/config.toml./shards/config.toml → CLI args
Agent configuration: Default agent, startup commands, and flags
Terminal preferences: Configurable terminal selection
CLI overrides: All config options can be overridden via command line
Graceful fallbacks: Missing config files use sensible defaults

Configuration Example

[agent]
default = "kiro"
startup_command = "kiro-cli chat"
flags = ""

[terminal]
preferred = "iterm2"

[agents.claude]
startup_command = "claude"
flags = "--yolo"

[agents.gemini]
startup_command = "gemini"
flags = "--yolo"

Usage

# Uses config defaults
shards create my-branch

# Override specific options
shards create my-branch --agent claude --terminal iterm2

# Override with flags
shards create my-branch --flags "--yolo"

Implementation

  • Files changed: 9 core files updated
  • Dependencies: Added toml 0.8 for TOML parsing
  • Tests: All 75 tests passing
  • Validation: Full static analysis, build, and integration testing complete
  • Backward compatibility: Existing CLI usage continues to work

Configuration Hierarchy

  1. CLI arguments (highest priority)
  2. Project config: ./shards/config.toml
  3. User config: ~/.shards/config.toml
  4. Hardcoded defaults (lowest priority)

This enables "set once, use everywhere" workflow while maintaining full flexibility for per-project and per-command customization.

@Wirasm
Copy link
Copy Markdown
Owner Author

Wirasm commented Jan 13, 2026

Code Review Summary

Assessment: APPROVED
Risk: LOW

Critical Issues: 0

None found - excellent implementation!

Important Issues: 0

None found - high quality code throughout

Suggestions: 3

  1. Add module-level documentation for the configuration system
  2. Consider config validation for agent names and terminal types
  3. Add integration tests for full config hierarchy with real files

Strengths

  • Perfect adherence to vertical slice architecture
  • Excellent TOML integration with hierarchical configuration
  • Comprehensive error handling with user-friendly messages
  • Well-designed type system with proper validation
  • Maintains full backward compatibility
  • Clean, readable, and maintainable implementation

Configuration Features Implemented

✅ Hierarchical config loading: ~/.shards/config.toml./shards/config.toml → CLI args
✅ Agent configuration with startup commands and flags
✅ Terminal preference configuration
✅ CLI overrides for all config options
✅ Graceful fallbacks for missing config files


Full report: .kiro/artifacts/code-review-reports/review-PR-4-2026-01-13.md

Ready to merge! This is a high-quality implementation that perfectly follows project patterns.

@Wirasm
Copy link
Copy Markdown
Owner Author

Wirasm commented Jan 13, 2026

✅ Code Review Suggestions Implemented

All suggestions from the code review have been implemented:

1. Module-Level Documentation ✅

  • Added comprehensive module documentation with hierarchy explanation
  • Included usage examples and TOML structure examples
  • Added doctest with proper import paths

2. Configuration Validation ✅

  • Added validate() method to ShardsConfig
  • Validates agent names against supported list
  • Warns about invalid terminal preferences (non-blocking)
  • Integrated validation into config loading hierarchy

3. Integration Tests ✅

  • Added comprehensive integration test for config hierarchy
  • Tests user config → project config → CLI override precedence
  • Added TOML parsing edge case tests (empty, partial, invalid)
  • Improved test isolation with unique temporary directories
  • Fixed existing test failures with proper isolation

Additional Improvements

  • Fixed config merge logic to properly handle precedence
  • Enhanced error handling with better user experience
  • All 83 tests passing with comprehensive coverage
  • Improved documentation throughout

The configuration system is now production-ready with excellent test coverage and user experience!

- Add hierarchical config loading: user (~/.shards/config.toml) → project (./shards/config.toml) → CLI args
- Support agent configuration: default agent, startup commands, and flags
- Add terminal preference configuration
- Implement CLI overrides for all config options
- Add graceful fallbacks for missing config files
- Add comprehensive error handling and validation
- Update all handlers to use configuration system
- Add toml 0.8 dependency for TOML parsing
- Maintain backward compatibility with existing CLI usage

Closes config track implementation with full test coverage.
- Add comprehensive module-level documentation with usage examples
- Add configuration validation for agent names and terminal preferences
- Add extensive integration tests for config hierarchy and TOML parsing
- Fix merge logic to properly handle config precedence
- Improve test isolation with unique temporary directories
- Fix doctest import paths

All suggestions from code review implemented:
✅ Module-level documentation with hierarchy explanation
✅ Config validation with helpful warnings for invalid terminals
✅ Integration tests covering full config loading workflow
✅ TOML parsing edge case tests
✅ Improved error handling and user experience

83 tests passing, ready for merge.
@Wirasm Wirasm force-pushed the shards_config_track branch from a6ff1e2 to 6ba17b2 Compare January 13, 2026 13:27
@Wirasm Wirasm merged commit 7dbb87c into main Jan 13, 2026
1 check passed
@Wirasm Wirasm deleted the shards_config_track branch January 13, 2026 13:30
Wirasm added a commit that referenced this pull request Jan 21, 2026
Investigation found the feature is already fully implemented via PR #4
(merged 2026-01-13). All requirements from the issue are satisfied.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant