Skip to content

...#1

Merged
igarbayo merged 19 commits intomasterfrom
develop
Mar 18, 2026
Merged

...#1
igarbayo merged 19 commits intomasterfrom
develop

Conversation

@igarbayo
Copy link
Owner

@igarbayo igarbayo commented Mar 18, 2026

Description

Full implementation of a terminal text buffer in Java — the core data structure
used by terminal emulators to store, edit, and render text output.

The project is released as free software under the MIT License, compliant with
the REUSE Specification 3.2 (SPDX headers on all source files, dep5 for
generated and binary files). Source code, build system, and documentation are
all included in the repository, allowing anyone to study, modify, and redistribute
the software without restriction, per the four freedoms defined by the FSF.

What is implemented:

  • TerminalBuffer — 80×24 grid of character cells with configurable dimensions and scrollback
  • Cell attributes: foreground/background color (16 ANSI colors + DEFAULT), text styles (bold, italic, underline)
  • Full cursor control with bounds clamping
  • writeText — overwrite at cursor with pending-wrap (xterm behaviour)
  • insertText — insert with push-down wrapping across lines
  • fillLine, insertEmptyLine, clearScreen, clearAll
  • Content access from both screen and scrollback via signed row index
  • Wide character support (CJK, emoji) using WIDE_LEFT/WIDE_RIGHT placeholder strategy
  • resize with intelligent content and scrollback preservation
  • Interactive REPL (./gradlew run) for manual exploration
  • 140+ JUnit 5 tests covering all features, edge cases, and boundary conditions

Type of change

  • feat — new feature
  • fix — bug fix
  • test — tests only
  • docs — documentation only
  • refactor — code change, no feature or fix
  • chore — tooling, dependencies, build

Checklist

  • I branched from develop (not from master)
  • The PR title is a valid Conventional Commit message (e.g. feat: add X)
  • ./gradlew test passes locally
  • New or changed files have SPDX license headers
  • I have updated documentation if needed

@igarbayo igarbayo merged commit 7b1e392 into master Mar 18, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant