Releases: aeshell/aesh
Releases · aeshell/aesh
Release list
Release 3.16.4
What's New in 3.16.4
Issues
#549Tab completion for bare options (acceptNameWithoutDashes) does not filter on prefix
Changes
- Fix bare option help, completion, and synopsis rendering (#549)
- Add BareOptionExample demonstrating acceptNameWithoutDashes
Full Changelog: v3.16.3...v3.16.4
Release 3.16.3
What's New in 3.16.3
Issues
#544pwsh completion not working#545make detectShell public#546Reduce reflection in generated metadata and runtime code- #547 [#546] Reduce reflection in generated metadata and runtime code
Changes
- Fix CI native-image: use specific JAR instead of glob
- Make detectShell() public without lambda overhead (#545)
- Fix pwsh trailing-space detection using cursorPosition (#544)
- Improve CI: add native-image smoke test and benchmark compile check
- [#546] Reduce reflection in generated metadata and runtime code
Full Changelog: v3.16.2...v3.16.3
Release 3.16.2
What's New in 3.16.2
Changes
- Lower Ctrl-C interrupt log from INFO to FINE
- Clear interrupt flag after Ctrl-C to prevent stale interrupt in readline restart
- Fix NewFeaturesExample for native-image: package-private fields, positional sleep arg
Full Changelog: v3.16.1...v3.16.2
Release 3.16.1
What's New in 3.16.1
Issues
#542GroupCommand.getCommands() not called when groupCommands annotation attribute is empty#543Ship generated metadata for internal commands (AliasCommand, UnAliasCommand, ExportCommand)
Changes
- use aesh-readline 3.16.1
- Fix flaky pipe test: use getStdin() null check instead of available()
- Ship generated metadata for internal commands (#543)
- Support GroupCommand interface without static groupCommands annotation (#542)
Full Changelog: v3.16...v3.16.1
Release 3.16
What's New in 3.16
Issues
#532Streaming pipe implementation with concurrent pipeline execution- #533 Bump actions/checkout from 6 to 7
- #534 Bump tamboui.version from 0.3.0 to 0.4.0
#536Align CommandResult values to POSIX exit codes#537detectShell() returns BASH when invoked from PowerShell via bash wrapper scripts#538PowerShell completion generator: correctness bugs and feature parity gaps#539Dynamic completion filters out options at positional positions, breaking subcommand completion#540Support native-image without ServiceLoader for MetadataRegistry discovery#541OptionList with shortName does not support attached values (e.g. -R-Xmx4G)
Changes
- use aesh-readline 3.16
- Support native-image without ServiceLoader for MetadataRegistry (#540)
- Support OptionList attached short-name values and add comprehensive tests (#541)
- Fix dynamic completion: show options at all positions (#539)
- Add comprehensive dynamic completion tests (#539)
- Revert "Stop filtering options in dynamic completion at positional positions (#539)"
- Stop filtering options in dynamic completion at positional positions (#539)
- Fix code review findings in streaming pipe implementation
- Fix PowerShell completion generator and add comprehensive tests (#538)
- Fix detectShell() returning BASH from PowerShell via wrapper scripts (#537)
- Align CommandResult to POSIX exit codes (#536)
- Streaming pipe implementation with concurrent pipeline execution (#532)
Full Changelog: v3.15.1...v3.16
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