| Label | Meaning |
|---|---|
| β Done | Fully ported and working identically to the upstream Go example |
| π‘ In Progress | Under active development; TUI4J logic may still be changing to conform |
| βͺ TODO | No effort started yet |
| β Wonβt do | Not planned, due to technical limitations or an alternative approach taken (see Notes) |
Bubble Tea examples
Each entry represents a single Bubble Tea example and the status of its migration to a Java equivalent.| Example | Status | Notes |
|---|---|---|
| altscreen-toggle | β Done | |
| autocomplete | β Done | Uses help, key, and textinput bubbles |
| cellbuffer | β Done | Uses harmonica spring physics |
| chat | β Done | Uses textarea and viewport bubbles |
| composable-views | β Done | Uses timer bubble |
| credit-card-form | β Done | Uses textinput with validation |
| debounce | β Done | Demonstrates rate limiting pattern |
| exec | β Done | Uses terminal suspend/resume for external commands |
| eyes | β Done | Blinking eyes animation |
| file-picker | β Done | Uses filepicker bubble |
| focus-blur | β Done | |
| fullscreen | β Done | |
| glamour | β Done | Glamour not ported; renders raw markdown in a viewport |
| help | β Done | Uses help and key bubbles |
| http | β Done | |
| list-default | β Done | |
| list-fancy | β Done | |
| list-simple | β Done | |
| mouse | β Done | |
| package-manager | β Done | Uses progress bubble |
| pager | β Done | Uses viewport bubble |
| paginator | β Done | |
| pipe | β Done | Demonstrates piped input handling |
| prevent-quit | β Done | Uses help, key, and textarea bubbles |
| progress-animated | β Done | Uses progress bubble with tick-based animation |
| progress-download | β Done | Uses progress bubble |
| progress-static | β Done | Uses progress bubble |
| realtime | β Done | Uses background thread and Program.send() for message injection |
| result | β Done | Demonstrates Program.runWithFinalModel() |
| send-msg | β Done | Demonstrates Program.send() for external message injection |
| sequence | β Done | Nested sequences and batches not yet supported, needs revisiting |
| set-window-title | β Done | |
| simple | β Done | Basic counter example |
| spinner | β Done | |
| spinners | β Done | Multiple spinner styles demo |
| split-editors | β Done | Uses textarea bubble |
| stopwatch | β Done | Uses help, key, and stopwatch bubbles |
| suspend | β Done | Uses JLine pause/resume for terminal state management |
| table | β Done | Uses table bubble |
| table-resize | β Done | Uses table bubble with dynamic sizing |
| tabs | β Done | Tab navigation with lipgloss styling |
| textarea | β Done | Standalone textarea demo |
| textinput | β Done | |
| textinputs | β Done | |
| timer | β Done | Uses timer bubble |
| tui-daemon-combo | β Done | CLI mode switching demo |
| views | β Done | Multi-view navigation demo |
| window-size | β Done |
Bubbles
| Bubble | Status | Notes |
|---|---|---|
| cursor | β Done | |
| filepicker | β Done | Directory browser with filtering and symlink support |
| help | β Done | |
| key | β Done | |
| list | β Done | |
| paginator | β Done | |
| progress | β Done | Spring animation, gradient colors, percentage display |
| runeutil | β Done | |
| spinner | β Done | |
| stopwatch | β Done | Go-style duration formatting, Elm Architecture compliant |
| table | β Done | Columns, rows, keyboard navigation |
| textarea | β Done | Multi-line editor with cursor movement and word ops |
| textinput | β Done | |
| timer | β Done | Countdown timer with start/stop/reset |
| viewport | β Done | Scrollable content with keyboard nav and line wrapping |
Lipgloss
| What | Status | Notes |
|---|---|---|
| Colors and color profiles | β Done | ANSI, ANSI256, RGB, HSL, adaptive colors |
| Borders | β Done | Normal, rounded, thick, double, hidden, etc. |
| Margins and paddings | β Done | |
| Width and wrapping | β Done | Uses x/ansi for proper grapheme width calculation |
| Alignment | β Done | |
| Max width and max height | β Done | Text truncation with ellipsis support |
| Horizontal and vertical join | β Done | |
| Whitespace | β Done | Background fill with pattern support |
| List component | β Done | |
| Tree component | β Done | |
| Table component | β Done |
x/ansi
The core x/ansi files and theparser sub-package are partially ported. Several sub-packages (iterm2, kitty, sixel) remain unstarted.
| What | Status | Notes |
|---|---|---|
| StringWidth | β Done | Grapheme-aware string width using ICU4J |
| Truncate | β Done | ANSI-aware truncation with left/right variants |
| Cut | β Done | Extracts visible portion of ANSI-styled text |
| Strip | β Done | Removes all ANSI escape sequences |
| GraphemeCluster | β Done | Proper Unicode grapheme cluster handling |
| Parser (state machine) | β Done | State, Action, TransitionTable for ANSI parsing |
| Wrap | βͺ TODO | Word wrapping with ANSI awareness |
| Style (SGR) | βͺ TODO | SGR (Select Graphic Rendition) utilities |
| Hyperlink | βͺ TODO | OSC 8 hyperlink support |
| Cursor | βͺ TODO | Cursor movement sequences |
| Mouse | βͺ TODO | Mouse input parsing and sequences |
| Clipboard | βͺ TODO | OSC 52 clipboard access |
| Notification | βͺ TODO | Terminal notifications |
| Graphics (Sixel) | βͺ TODO | Sixel graphics support |
| Kitty extensions | βͺ TODO | Kitty terminal protocol extensions |
| iTerm2 extensions | βͺ TODO | iTerm2 protocol extensions |
x/ansi source file detail
x/ansi root files
x/ansi root files
| Go file | Status | Java mapping |
|---|---|---|
ansi/ansi.go | βͺ TODO | β |
ansi/ascii.go | β Done | ansi/Ansi.java |
ansi/background.go | βͺ TODO | β |
ansi/c0.go | β Done | ansi/Ansi.java |
ansi/c1.go | β Done | ansi/Ansi.java |
ansi/charset.go | βͺ TODO | β |
ansi/clipboard.go | π‘ In Progress | ansi/Code.java |
ansi/color.go | βͺ TODO | β |
ansi/ctrl.go | βͺ TODO | β |
ansi/cursor.go | βͺ TODO | β |
ansi/cwd.go | βͺ TODO | β |
ansi/doc.go | βͺ TODO | β |
ansi/finalterm.go | βͺ TODO | β |
ansi/focus.go | βͺ TODO | β |
ansi/graphics.go | βͺ TODO | β |
ansi/hyperlink.go | βͺ TODO | β |
ansi/inband.go | βͺ TODO | β |
ansi/iterm2.go | βͺ TODO | β |
ansi/keypad.go | βͺ TODO | β |
ansi/kitty.go | βͺ TODO | β |
ansi/method.go | β Done | ansi/Method.java |
ansi/mode.go | βͺ TODO | β |
ansi/mouse.go | βͺ TODO | β |
ansi/notification.go | βͺ TODO | β |
ansi/palette.go | βͺ TODO | β |
ansi/parser.go | βͺ TODO | β |
ansi/paste.go | π‘ In Progress | ansi/Code.java |
ansi/reset.go | βͺ TODO | β |
ansi/screen.go | βͺ TODO | β |
ansi/sgr.go | βͺ TODO | β |
ansi/style.go | βͺ TODO | β |
ansi/title.go | βͺ TODO | β |
ansi/truncate.go | β Done | ansi/Truncate.java, ansi/Cut.java |
ansi/width.go | β Done | ansi/StringWidth.java, ansi/GraphemeCluster.java, ansi/Strip.java |
ansi/wrap.go | βͺ TODO | β |
x/ansi/parser sub-package
x/ansi/parser sub-package
| Go file | Status | Java mapping |
|---|---|---|
ansi/parser/const.go | β Done | ansi/parser/State.java, ansi/parser/Action.java |
ansi/parser/seq.go | β Done | ansi/parser/Action.java |
ansi/parser/transition_table.go | β Done | ansi/parser/TransitionTable.java |
x/ansi/iterm2 sub-package
x/ansi/iterm2 sub-package
| Go file | Status | Java mapping |
|---|---|---|
ansi/iterm2/file.go | βͺ TODO | β |
ansi/iterm2/file_test.go | βͺ TODO | β |
ansi/iterm2/iterm2_test.go | βͺ TODO | β |
x/ansi/kitty sub-package
x/ansi/kitty sub-package
| Go file | Status | Java mapping |
|---|---|---|
ansi/kitty/decoder.go | βͺ TODO | β |
ansi/kitty/encoder.go | βͺ TODO | β |
ansi/kitty/graphics.go | βͺ TODO | β |
ansi/kitty/options.go | βͺ TODO | β |
ansi/kitty/writer.go | βͺ TODO | β |
x/ansi/sixel sub-package
x/ansi/sixel sub-package
| Go file | Status | Java mapping |
|---|---|---|
ansi/sixel/color.go | βͺ TODO | β |
ansi/sixel/decoder.go | βͺ TODO | β |
ansi/sixel/encoder.go | βͺ TODO | β |
ansi/sixel/palette.go | βͺ TODO | β |
ansi/sixel/raster.go | βͺ TODO | β |
ansi/sixel/repeat.go | βͺ TODO | β |
Harmonica
| What | Status | Notes |
|---|---|---|
| Spring | β Done | Spring-based physics animation for smooth UI transitions |
The harmonica examples (
examples/particle, examples/spring/opengl, examples/spring/tui) are not yet ported.x sub-packages not yet ported
The followingcharmbracelet/x packages have no Java mapping and no active work planned at this time:
| Package | Description | Status |
|---|---|---|
| x/cellbuf | Cell buffer for efficient terminal rendering | βͺ TODO |
| x/colors | Color conversion and manipulation utilities | βͺ TODO |
| x/editor | Launch external text editor | βͺ TODO |
| x/conpty | Windows ConPTY integration | βͺ TODO |
| x/errors | Error helpers (join) | βͺ TODO |
| x/etag | ETag helpers | βͺ TODO |
Do not depend on these packages being available in TUI4J. There is no committed timeline for porting them.