v1.2: New features, tests, docs, and code quality improvements #1

Merged
raupy merged 2 commits from dev into master 2026-06-22 22:53:15 +02:00
Owner

New Features

  • ListBuilder: Bulleted/numbered lists with nesting, custom bullets, and colors
  • Spinner: Animated indeterminate progress indicator (braille dots, ASCII fallback)
  • TerminalCanvas: Position content at arbitrary terminal locations with putCentered(), putCenteredHorizontally(), putCenteredVertically()
  • Cursor: Low-level ANSI cursor control (moveTo, hide/show, save/restore, clear)
  • TerminalInfo: Detect terminal width and height
  • ConsoleInput extensions: readMultiChoice(), readPassword(), readLong(), readMatching() (regex), confirm()

Bug Fixes

  • Fix TableBuilder.build() mutating color fields to null when ANSI is disabled (second call lost colors permanently)
  • Fix version references in README (was still showing 1.0)
  • Remove unused imports

Code Quality

  • Eliminate 40+ lines of duplication in LayoutRenderer (render() now delegates to renderToString())
  • Eliminate duplication in TableBuilder (horizontalSeparator() delegates to horizontalLine())
  • Translate all German UI strings to English for consistency
  • Add Javadoc to all 15 public classes

Tests

  • Add JUnit 5 dependency
  • 93 unit tests across 9 test classes covering FormattingUtil, AnsiUtils, BoxBuilder, TableBuilder, ListBuilder, LayoutRenderer, ProgressRenderer, BorderType, PlatformUtils

Full Changelog

https://git.paulinis.net/raupy/console-utils/compare/v1.1...dev

## New Features - **ListBuilder**: Bulleted/numbered lists with nesting, custom bullets, and colors - **Spinner**: Animated indeterminate progress indicator (braille dots, ASCII fallback) - **TerminalCanvas**: Position content at arbitrary terminal locations with `putCentered()`, `putCenteredHorizontally()`, `putCenteredVertically()` - **Cursor**: Low-level ANSI cursor control (moveTo, hide/show, save/restore, clear) - **TerminalInfo**: Detect terminal width and height - **ConsoleInput extensions**: `readMultiChoice()`, `readPassword()`, `readLong()`, `readMatching()` (regex), `confirm()` ## Bug Fixes - Fix `TableBuilder.build()` mutating color fields to null when ANSI is disabled (second call lost colors permanently) - Fix version references in README (was still showing 1.0) - Remove unused imports ## Code Quality - Eliminate 40+ lines of duplication in `LayoutRenderer` (`render()` now delegates to `renderToString()`) - Eliminate duplication in `TableBuilder` (`horizontalSeparator()` delegates to `horizontalLine()`) - Translate all German UI strings to English for consistency - Add Javadoc to all 15 public classes ## Tests - Add JUnit 5 dependency - 93 unit tests across 9 test classes covering FormattingUtil, AnsiUtils, BoxBuilder, TableBuilder, ListBuilder, LayoutRenderer, ProgressRenderer, BorderType, PlatformUtils ## Full Changelog https://git.paulinis.net/raupy/console-utils/compare/v1.1...dev
New features: ListBuilder, Spinner, TerminalCanvas/Cursor/TerminalInfo for
terminal positioning, extended ConsoleInput (readMultiChoice, readPassword,
readLong, readMatching). Code quality: fix LayoutRenderer duplication,
fix TableBuilder build() field mutation bug, fix German strings to English,
fix README version references, remove unused imports. Added 93 unit tests
with JUnit 5 and Javadoc on all public classes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
raupy merged commit 8c02d7c053 into master 2026-06-22 22:53:15 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
raupy/console-utils!1
No description provided.