This is a multi-module Maven repository for miniterm, a small terminal-oriented Java library family.
- Use Java and Maven conventions already present in the repo.
- Keep changes minimal and module-scoped unless a root-level change is required.
- Prefer
./mvnwover a system Maven install. - Keep formatting compatible with Spotless and google-java-format (AOSP style).
- Root artifacts and release tooling live in
pom.xmlandjreleaser.yml. - Example programs live in
examples/and should stay aligned with the public APIs.
- Root build:
./mvnw clean install - Formatting is enforced through Spotless during
verify. - Release packaging uses the Maven
releaseprofile.
pom.xmlis the parent POM for the entire repo.- It defines the shared dependency and plugin versions.
- It manages
jreleaser-maven-pluginandspotless-maven-pluginfor all modules. - Keep module ordering in sync with the actual repository layout.
- Legacy implementation targeting Java 8.
- Keep compatibility with Java 8 APIs and language level.
- Native Windows support exists here; be careful with the
process-classesnative DLL build logic. - Integration tests may run in-process on macOS to preserve TTY behavior.
- Modern implementation targeting Java 22+.
- Preserve FFM-native access behavior and
--enable-native-access=ALL-UNNAMEDruntime/test wiring. - Keep the Java 22 compiler release and Java-version enforcement intact.
- This module has the same public terminal API shape as
miniterm, but different internals.
- Java 8+ ANSI escape parser.
- Keep the parser state machine small and allocation-conscious.
- It is used directly by
miniterm,miniterm-ffm,mousetrack, andtermcap. - Preserve both stateless (
AnsiParser) and stateful (AnsiReader) entry points.
- Java 8+ mouse tracking helper library.
- Keep protocol enable/disable helpers and event parsing aligned with the documented wire formats.
- Preserve support for X10, SGR, and URXVT, plus SGR-Pixels where applicable.
- Always clean up terminal tracking state in examples and tests.
- Java 8+ terminal capability detection library.
- Passive detection should remain side-effect free and not require terminal I/O.
TermProberis optional and depends onansiparserfor live probing.- Keep detection-layer precedence stable unless explicitly changing the contract.
- Java 8+ OSC palette querying and setting library.
- Query APIs expect raw mode and an
IntReaderthat signals timeout/EOF with negative values. - Keep the 256-entry palette helpers and reset/query sequences aligned with OSC semantics.
ansiparseris a required transitive dependency here for OSC response parsing.
- Keep root and module READMEs consistent with public APIs and Maven coordinates.
- Update example scripts and
examples/*.javawhen public usage changes. - Prefer concise docs that reflect the current module contracts rather than broad tutorials.