Skip to content

Releases: aeshell/aesh

Release 3.15.1

18 Jun 17:25

Choose a tag to compare

What's New in 3.15.1

Changes

  • use aesh-readline 3.15.1

Full Changelog: v3.15...v3.15.1

Release 3.15

18 Jun 13:19

Choose a tag to compare

What's New in 3.15 (since 3.13)

Breaking Changes

  • #526@GroupCommandDefinition removed. Use @CommandDefinition(groupCommands={...}) instead.
  • #523BooleanConverter now rejects invalid values (only accepts true/false/yes/no/1/0). Numeric converters throw OptionValidatorException on invalid input.

3.15

  • #530 — Dynamic prompt supplier, Shell.printAbove(), Shell.registerStatusLine(), multi-line prompts, right prompt
  • #529--help=skill/markdown/asciidoc format 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

  • #519ClassValue-based classloader-safe provider caching
  • #518ProcessedOption.setConverter() for programmatic converter override
  • #517 — Configurable CommandContainerBuilder for framework integration (CDI, Spring)
  • #516 — Shell split-screen: enableSplitScreen(), splitScreen(), setCurrentRegion()
  • #515@OptionGroup key-only entries with defaultValue
  • #514 — Cascading ${env:A:-${sys:B:-default}} fallback syntax
  • #513@OptionGroup preserves insertion order (LinkedHashMap)
  • #512${env:...} / ${sys:...} resolved on annotation processor path
  • #511 — Custom OptionParser fallback 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

14 Jun 14:07

Choose a tag to compare

What's New in 3.14.3

Issues

  • #524 feat: 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

11 Jun 10:42

Choose a tag to compare

What's New in 3.14.2

Issues

  • #520 Defer ${env:...} and ${sys:...} resolution to parse time instead of construction time
  • #521 DefaultValueProvider always overrides annotation defaultValue — no way to express env var > config priority
  • #523 BooleanConverter 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

10 Jun 17:27

Choose a tag to compare

What's New in 3.14.1

Issues

  • #508 Tail tip suggestions — show parameter hints after cursor
  • #511 Apply fallback value chain after custom OptionParser that sets no value
  • #512 PropertiesLookup not resolving ${env:...} variables on annotation processor path
  • #513 @OptionGroup should preserve insertion order (use LinkedHashMap instead of HashMap)
  • #514 Support cascading variable resolution in defaultValue/fallbackValue (picocli-style)
  • #515 Support custom Converter on @OptionList and @OptionGroup
  • #516 Shell split-screen integration: route output to configurable regions
  • #517 Allow configurable CommandContainerBuilder in lazy child resolution
  • #518 Add setConverter and setActivator methods to ProcessedOption
  • #519 MetadataProviderRegistry 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

08 Jun 07:51

Choose a tag to compare

What's New in 3.13

Issues

  • #505 Startup regression: addLazyChildWithAliases uses annotation reflection on processor path
  • #506 DocumentationGenerator synopsis missing negatable short names in flag cluster
  • #507 Unified 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

06 Jun 14:31

Choose a tag to compare

What's New in 3.12.2

Issues

  • #503 DocumentationGenerator creates duplicate nav entries for commands with aliases
  • #504 Negatable 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

06 Jun 07:29

Choose a tag to compare

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

05 Jun 22:42

Choose a tag to compare

What's New in 3.12

Issues

  • #5 Support special characters
  • #488 DefaultValueProvider should skip inherited options on child commands
  • #489 Respect NO_COLOR environment variable
  • #491 Auto-list valid enum values in option help
  • #492 Annotation processor generates file in last round, causing javac warning
  • #493 Fish completion: call __fish_complete_path when no candidates returned
  • #494 Per-argument file completion control for shell completion scripts
  • #495 Cache negative lookups in MetadataProviderRegistry
  • #496 Support --option=key=value syntax for @OptionGroup (backwards compatibility with picocli)
  • #497 Sort completion candidates alphabetically in --aesh-complete output
  • #498 Completion missing descriptions for group subcommands and most options
  • #499 NO_COLOR environment variable not suppressing ANSI codes in help output
  • #500 Completion descriptions missing for group command children
  • #501 Completion 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

04 Jun 11:53

Choose a tag to compare

What's New in 3.11

Issues

  • #483 Documentation of sub-commands not generated
  • #486 Format-specific documentation and AI skill output for --aesh-doc
  • #487 Fish 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