- Initial release
- Dual DSL: class-based and block-based command definitions
- Zeitwerk autoloading
- Recursive subcommand resolution via Runner
- Tool base class with auto-created command base (
MyTool::Command) - Custom
command_classfor shared command behavior - Colorized help output with box-drawing characters
- Did-you-mean suggestions for unknown commands (Levenshtein)
--helpand--versionflag handling- Core extensions (blank?, present?, try, underscore, demodulize, Array.wrap, Hash#&)
- OptionParser#order_recognized! for multi-level flag passthrough