JLine 4.2.0
JLine 4.2.0 is a minor release that bumps the version to reflect API and behavioral changes since the 4.1.x series.
Highlights:
java.loggingmodule dependency dropped — JLine now usesSystem.Logger(JEP 264), removing thejava.loggingmodule requirement and making JLine friendlier in custom JPMS runtimes (#1934)- ScreenTerminal unified — the two divergent copies (builtins vs terminal) are consolidated into
org.jline.utils.ScreenTerminal, with a fix for stale status rows when using bordered status displays (#1971) - Exit command made configurable — the built-in
exitcommand is now a regular, configurable command rather than hardcoded (#1870) - Prompt module — list and checkbox prompts now support per-item footers (#1933)
- Robustness fixes — EOF propagation in PtyInputStream, signal handling with ISIG cleared, resize sync, graphics protocol detection on basic terminals, and several out-of-bounds guards
🚀 New features and improvements
- refactor: unify ScreenTerminal — move from builtins to terminal module (#1971) @gnodet
- feat(prompt): add optional per-item footer to list and checkbox prompts (#1933) @ingokegel
- refactor: drop the java.logging module dependency and use System.Logger instead (#1934) @ingokegel
- refactor: make exit command a regular, configurable command (#1870) @Elec332
- feat: add custom name parameter to PicocliCommandRegistry (#1947) @gnodet
🐛 Bug Fixes
- fix: sync LineReader display model on resize (fixes #1940) (#1941) @zikolach
- fix: propagate EOF in PtyInputStream to avoid infinite loop (#1963) @gnodet
- fix: override bulk write in NonCloseableOutputStream to avoid byte-at-a-time writes (#1962) @gnodet
- fix: restore signal handling when ISIG is cleared (#1942) (#1959) @gnodet
- fix: skip graphics protocol detection for basic terminal types (#1957) @gnodet
- fix: keep polling the terminal probe response past a spurious EOF (#1944) @WouterGritter
- fix: guard ScreenTerminal.poke() against out-of-bounds cursor position (#1946) @gnodet
- fix: clamp cx in dumb_echo to prevent out-of-bounds cursor position (#1953) @gnodet
- fix: validate version format in release workflow (#1954) @gnodet
📦 Dependency updates
- chore: Bump com.palantir.javaformat:palantir-java-format from 2.92.0 to 2.93.0 (#1964) @dependabot[bot]
- chore: Bump org.codehaus.gmavenplus:gmavenplus-plugin from 4.3.1 to 5.0.0 (#1938) @dependabot[bot]
- chore: Bump org.graalvm.buildtools:native-maven-plugin from 1.1.1 to 1.1.2 (#1950) @dependabot[bot]
- chore: Bump com.palantir.javaformat:palantir-java-format from 2.91.0 to 2.92.0 (#1949) @dependabot[bot]
- chore: Bump sshd.version from 2.17.1 to 2.18.0 (#1926) @dependabot[bot]
- chore: Bump org.apache.maven.plugins:maven-dependency-plugin from 3.10.0 to 3.11.0 (#1928) @dependabot[bot]
👻 Maintenance
- chore: add security policy (SECURITY.md) (#1958) @gnodet
- chore: bump mvx to 0.13.0 (#1955) @gnodet
- chore: replace Thread.sleep with Awaitility in shell tests (#1956) @gnodet
- chore: upgrade CI build matrix from JDK 24 to JDK 25 (#1948) @gnodet
- chore: configure RB value with nisse (#1932) @hboutemy