#+TITLE: cl-tui — Reusable Common Lisp Terminal UI Framework #+STARTUP: content #+FILETAGS: :project:cl-tui:readme: * 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 # Test