Hermes 2b6fc32425 review fixes: 3 blocking bugs + 2 improvements
B1: modern-backend now inherits from backend (was standalone class)
B2: draw-rect y-position bug — loop now tracks row offset
B3: Layout module added to ASDF system definition
I1: 6 smoke tests replaced with behavioral tests (captured output)
I3: 6 edge case tests: empty, single-child, zero-size, deep
    nesting, large padding, negative grow

Also fixed:
- Added missing make-simple-backend constructor to simple.lisp
- Added in-package to classes.lisp and simple.lisp (SBCL's load
  restores *package* after each load, breaking batch-mode loading)
2026-05-11 14:08:51 +00:00
2026-05-11 11:45:59 +00:00

cl-tui — Reusable Common Lisp Terminal UI Framework

cl-tui

A reusable Common Lisp framework for building rich terminal user interfaces. Built on croatoan (ncurses) with Yoga for Flexbox layout. Provides a component tree model with dirty-tracking, incremental rendering, layered keybinding, theme engine, and full mouse support — the primitives needed to match the TUI quality of Claude Code and OpenCode from Common Lisp.

Why

Common Lisp has no reusable terminal UI framework at the level of Python's Rich/prompt_toolkit or Go's Bubble Tea. Every CL project that wants a terminal UI either builds ncurses from scratch or uses a text-only REPL. cl-tui fills that gap — a component library with Flexbox layout, semantic theming, layered keybinding, and full mouse support. Build a terminal UI once, reuse it everywhere.

Terminal UIs also work over SSH. A Qt or browser-based UI requires a local display. A cl-tui application runs remotely — same code, same components, accessible from anywhere.

Architecture

``` Application code (any CL project) └── cl-tui (layout, components, theme, events, dialogs) └── Yoga (Flexbox layout — C library via FFI) └── croatoan (ncurses terminal rendering) ```

cl-tui depends only on croatoan and Yoga. It is not tied to any application.

Dependencies

  • Common Lisp (SBCL tested)
  • croatoan — ncurses binding for terminal rendering
  • Yoga — Flexbox layout engine (C library, loaded via CFFI)
  • Quicklisp libraries as needed (ironclad for hashing, bordeaux-threads)

Status

v0.1.0 — Layout engine (in progress)

See docs/ROADMAP.org for the full release plan.

License

TBD

Description
Reusable Common Lisp Terminal UI Framework
Readme GPL-3.0 1.8 MiB
Languages
Common Lisp 58.5%
Python 36.2%
Shell 5.3%