Modern Java 21 terminal UI library with 29 AWT-like widgets, ncurses backend, Virtual Threads, and interactive mouse/keyboard support.
active 2026-05-28 → 2026-07-16 (UTC)
Activity over time
Daily event counts in the loaded window
Line chart, 50 days from 2026-05-28 to 2026-07-16. Pushes: 14 total, peak 5 in a day. Pull requests: 0 total, peak 0 in a day. Issues: 61 total, peak 59 in a day. Comments: 9 total, peak 5 in a day. Stars: 0 total, peak 0 in a day.
- Pushes
- Pull requests
- Issues
- Comments
- Stars
Stars, PRs, issues and forks are under-captured in the later part of this window. GH Archive progressively stopped capturing non-push events during 2026 — −95% or worse by the end of the window. Every series here except Pushes fades for that reason, so a decline above reflects the archive, not this repository. Pushes stay reliable throughout, so read them, and the contributor counts derived from them, as the real signal. Data health has the measurements.
Top contributors
Pushes, PRs, issues, reviews and comments — stars and forks excluded, so this is contribution rather than popularity
| Contributor | Contributions | Pushes | PRs | Comments |
|---|---|---|---|---|
| sfloess | 77 | 11 | 0 | 5 |
| dependabot[bot] | 7 | 3 | 0 | 4 |
Recent activity
Latest issues, pull requests and releases
- Issue#227sfloess2026-06-11 00:13ScrollPane.updateScrollBars() is a no-op stub
- Issue#225sfloess2026-06-11 00:13Choice.java has unnecessary import of java.lang.Math
- Issue comment#44dependabot[bot]2026-06-07 01:32ci(deps): bump actions/upload-artifact from 4 to 7
- Issue comment#48dependabot[bot]2026-06-07 01:32deps(dev)(deps-dev): bump mockito.version from 5.14.2 to 5.23.0
- Issue comment#32dependabot[bot]2026-06-07 01:32deps(dev)(deps-dev): bump org.apache.maven.plugins:maven-compiler-plugin from 3.11.0 to 3.15.0
- Issue comment#38dependabot[bot]2026-06-07 01:32deps(dev)(deps-dev): bump org.codehaus.mojo:versions-maven-plugin from 2.16.0 to 2.21.0
- Issue#208sfloess2026-06-06 22:04InteractiveDemo catches generic Exception, masks OutOfMemoryError and code bugs
- Issue comment#208sfloess2026-06-06 21:53InteractiveDemo catches generic Exception, masks OutOfMemoryError and code bugs
- Issue#209sfloess2026-06-06 21:50ComboBox.paint() stream filtering causes 3x GC pressure vs ArrayList copy
- Issue#206sfloess2026-06-06 21:50ComboBox selectedIndex out of bounds after null filtering in paint()
- Issue#75sfloess2026-06-06 21:42Thread safety: Component getters access position/size fields without synchronization
- Issue#88sfloess2026-06-06 21:39Bounds checking: Container.getComponentAt - Array access without bounds check
- Issue#88sfloess2026-06-06 21:39Bounds checking: Container.getComponentAt - Array access without bounds check
- Issue#89sfloess2026-06-06 21:39Thread safety: ScrollPane - multiple unsafe accesses
- Issue comment#86sfloess2026-06-06 21:39Bounds checking: BorderLayout.doLayout - Negative remainingWidth possible
- Issue#95sfloess2026-06-06 21:39Null safety: Button constructor should validate null label parameter
- Issue#92sfloess2026-06-06 21:39Bounds checking: DiffEngine.computeDiff - Potential ArrayIndexOutOfBoundsException
- Issue#90sfloess2026-06-06 21:39Null safety: Container.add() should validate null child parameter
- Issue#64sfloess2026-06-06 21:23App crashes with ArrayIndexOutOfBoundsException when widget exceeds terminal bounds
- Issue#79sfloess2026-06-06 21:23Thread safety: ProgressBar.getPercent - unsafe read
- Issue#86sfloess2026-06-06 21:23Bounds checking: BorderLayout.doLayout - Negative remainingWidth possible
- Issue#87sfloess2026-06-06 21:23Thread safety: CheckboxGroup fields accessed without synchronization
- Issue#90sfloess2026-06-06 21:23Null safety: Container.add() should validate null child parameter
- Issue#96sfloess2026-06-06 21:23Bounds checking: FileDialog.render - No bounds check on files.get(i)
- Issue#97sfloess2026-06-06 21:23Null safety: Button.setLabel() should validate null label parameter
Totals cover only the window loaded into ClickHouse and count events, not GitHub's lifetime totals — 0 stars here means stars gained during the window, not the repo's star count.