Releases: aeshell/aesh
Releases · aeshell/aesh
Release 3.15.1
Release 3.15
What's New in 3.15 (since 3.13)
Breaking Changes
- #526 —
@GroupCommandDefinitionremoved. Use@CommandDefinition(groupCommands={...})instead. - #523 —
BooleanConverternow rejects invalid values (only acceptstrue/false/yes/no/1/0). Numeric converters throwOptionValidatorExceptionon invalid input.
3.15
- #530 — Dynamic prompt supplier,
Shell.printAbove(),Shell.registerStatusLine(), multi-line prompts, right prompt - #529 —
--help=skill/markdown/asciidocformat support for any command or subcommand - #528 — Command duration in prompt (enabled by #527 + #530)
- #527 — Command execution listener with duration tracking (
CommandExecutionListener.onCommandComplete) - #526 — Remove deprecated
@GroupCommandDefinition - #525 — PowerShell (pwsh) completion support
- #531 — Resolve
${ROOT-COMMAND-NAME}and other variables in completion script descriptions
3.14.3
- #524 — Preserve completion candidate order in Fish and Bash scripts
3.14.2
- #523 — Boolean and numeric converter validation
- #521 — Env var defaults take priority over
DefaultValueProvider - #520 — Deferred
${env:...}resolution to parse time - aesh-charts — New terminal charting module (Sparkline, BarChart, LineChart, TimeSeriesChart, MultiPlot)
3.14.1
- #519 —
ClassValue-based classloader-safe provider caching - #518 —
ProcessedOption.setConverter()for programmatic converter override - #517 — Configurable
CommandContainerBuilderfor framework integration (CDI, Spring) - #516 — Shell split-screen:
enableSplitScreen(),splitScreen(),setCurrentRegion() - #515 —
@OptionGroupkey-only entries withdefaultValue - #514 — Cascading
${env:A:-${sys:B:-default}}fallback syntax - #513 —
@OptionGrouppreserves insertion order (LinkedHashMap) - #512 —
${env:...}/${sys:...}resolved on annotation processor path - #511 — Custom
OptionParserfallback chain - EOF handling fix for readline 3.14
Performance (vs 3.13)
| Benchmark | Generated | Reflection |
|---|---|---|
| Command creation | 76% faster | 21% faster |
| Full startup (per cmd) | 27% faster | — |
| Parse+execute (12 cmds) | 21% faster | 21% faster |
Dependency Changes
- aesh-readline: 3.12 → 3.15
Full Changelog: v3.14.3...v3.15
Release 3.14.3
What's New in 3.14.3
Issues
#524feat: add --keep-order (-k) to generated Fish completion script
Changes
- Preserve completion candidate order in Fish and Bash scripts (#524)
- use aesh-readline 3.14.1
- Fix BOM: use readline.version for readline/terminal modules
Full Changelog: v3.14.2...v3.14.3
Release 3.14.2
What's New in 3.14.2
Issues
-
#520Defer ${env:...} and ${sys:...} resolution to parse time instead of construction time -
#521DefaultValueProvider always overrides annotation defaultValue — no way to express env var > config priority -
#523BooleanConverter silently accepts invalid values — should reject unrecognized boolean strings
Changes
- Validate boolean and numeric converter input (#523)
- Give env var defaults priority over DefaultValueProvider (#521)
- Defer ${env:...} resolution to parse time for testability (#520)
- Add interactive chart example with 6 demo commands
- Add change detection markers and threshold lines to charts
- Add aesh-charts module — terminal charting library
Full Changelog: v3.14.1...v3.14.2
Release 3.14.1
What's New in 3.14.1
Issues
- #508 Tail tip suggestions — show parameter hints after cursor
#511Apply fallback value chain after custom OptionParser that sets no value#512PropertiesLookup not resolving ${env:...} variables on annotation processor path#513@OptionGroup should preserve insertion order (use LinkedHashMap instead of HashMap)#514Support cascading variable resolution in defaultValue/fallbackValue (picocli-style)#515Support custom Converter on @OptionList and @OptionGroup#516Shell split-screen integration: route output to configurable regions#517Allow configurable CommandContainerBuilder in lazy child resolution#518Add setConverter and setActivator methods to ProcessedOption#519MetadataProviderRegistry static cache causes ClassCastException with classloader reloading
Changes
- Remove temporary CI cache cleanup step
- Fix CI: delete stale aesh-readline jars before build
- Add -U to CI Maven command to fix stale terminal-api cache
- Fix duplicate /** in PropertiesLookup MAX_DEPTH javadoc
- Add split-screen example demonstrating Shell.enableSplitScreen() (#516)
- Add split-screen methods to Shell interface (#516)
- Use ClassValue for classloader-safe provider caching (#519)
- Handle EOF (Ctrl+D) in ReadlineConsole request handler
- Add setConverter method to ProcessedOption (#518)
- Allow configurable CommandContainerBuilder in lazy child resolution (#517)
- Fix pre-release review findings
- Improve @OptionGroup.defaultValue javadoc for key-only entries (#515)
- Add tests for @OptionGroup key-only entries with defaultValue (#515)
- Add recursion depth limit and fix javadoc in PropertiesLookup
- Support cascading variable resolution with :- fallback syntax (#514)
- Use LinkedHashMap for @OptionGroup to preserve insertion order (#513)
- Replace regex with string operations in PropertiesLookup
- Resolve ${env:...} and ${sys:...} in fallbackValue (#512)
- Resolve ${env:...} and ${sys:...} in defaultValue on processor path (#512)
- Add tail tip suggestions — parameter hints after cursor (#508)
- Apply fallback value chain after custom OptionParser (#511)
- Add test coverage, fix synopsis bugs, unify doc renderers
- Fix flaky testChildFormatter CI failure: remove clearOutputBuffer race
- Fix pre-release review findings
Full Changelog: v3.13...v3.14.1
Release 3.13
What's New in 3.13
Issues
#505Startup regression: addLazyChildWithAliases uses annotation reflection on processor path#506DocumentationGenerator synopsis missing negatable short names in flag cluster#507Unified option value resolution: integrate DefaultValueProvider with fallbackValue lifecycle
Changes
- Add DefaultValueProvider.fallbackValue() for unified value resolution (#507)
- Include negatable short names in doc generator synopsis (#506)
- Eliminate annotation reflection for aliases on processor path (#505)
Full Changelog: v3.12.2...v3.13
Release 3.12.2
What's New in 3.12.2
Issues
#503DocumentationGenerator creates duplicate nav entries for commands with aliases#504Negatable options with short names should still appear in grouped flags cluster
Changes
- Include negatable short names in synopsis flag cluster (#504)
- Fix duplicate nav entries for commands with aliases (#503)
Full Changelog: v3.12.1...v3.12.2
Release 3.12.1
What's New in 3.12.1
Issues
- #502 fix: resolve group subcommand aliases in getChildParser
Changes
- Simplify subcommand alias resolution: register at addLazyChild time
- fix: resolve group subcommand aliases in getChildParser
Full Changelog: v3.12...v3.12.1
Release 3.12
What's New in 3.12
Issues
#5Support special characters#488DefaultValueProvider should skip inherited options on child commands#489Respect NO_COLOR environment variable#491Auto-list valid enum values in option help#492Annotation processor generates file in last round, causing javac warning#493Fish completion: call __fish_complete_path when no candidates returned#494Per-argument file completion control for shell completion scripts#495Cache negative lookups in MetadataProviderRegistry#496Support --option=key=value syntax for @OptionGroup (backwards compatibility with picocli)#497Sort completion candidates alphabetically in --aesh-complete output#498Completion missing descriptions for group subcommands and most options#499NO_COLOR environment variable not suppressing ANSI codes in help output#500Completion descriptions missing for group command children#501Completion descriptions missing for command-own and mixin options
Changes
- aesh-readline 3.12
- Fix processor parity: Path type detection and positional index validation
- Cache ParsedCommand instance to avoid allocation storm during completion
- Extract shared completion install logic to eliminate duplication (#5)
- Emit @Option.selector and @OptionList.selector in annotation processor
- Fix thread safety issues found in full codebase review
- Fix code review findings before release
- Fix completion descriptions for joined args format (#501)
- Add regression tests for mixin and own option completion descriptions (#501)
- Fix group child completion descriptions with trailing-space args (#500)
- Add regression test for group child completion descriptions (#500)
- Fix NO_COLOR not suppressing ANSI in help output (#499)
- Cache negative lookups in MetadataProviderRegistry (#495)
- Sort completion candidates alphabetically in --aesh-complete output (#497)
- Fix completion descriptions for options and group subcommands (#498)
- Support --option=key=value syntax for @OptionGroup (#496)
- Add per-argument completion fallback control (#494)
- Fix fish completion: use -f with __fish_complete_path fallback (#493)
- Remove dead code and unused fields across aesh and aesh-processor
- Fix javac warning: generate registry in normal round, not final round (#492)
- Auto-append valid enum values in option help output (#491)
- Respect NO_COLOR environment variable (#489)
- Skip DefaultValueProvider for inherited options on child commands (#488)
- Improve release workflow to generate structured release notes
Full Changelog: v3.11...v3.12
Release 3.11
What's New in 3.11
Issues
#483Documentation of sub-commands not generated#486Format-specific documentation and AI skill output for --aesh-doc#487Fish completion script suppresses file completion when no candidates returned
Changes
- Fix fish completion: fall back to file completion when no candidates (#487)
- Add AI skill doc format and format-aware HelpSectionProvider (#486)
- Fix --aesh-doc: include subcommand docs and remove duplicated description (#483)
- make reset() public
Full Changelog: v3.10...v3.11