Skip to content

Roadmap

cl-tty-kit is scoped to terminal primitives. This page lists capabilities outside that scope.

Scope boundaries

  • full terminal emulation
  • window manager or multiplexer behavior
  • editor UI
  • shell application logic
  • CLI framework behavior
  • event bus or general application runtime
  • broad utility helpers unrelated to TTY work

See Compatibility for the parallel, narrower deferral of multi-implementation (non-SBCL) support.

Possible future improvements

  • richer diff rendering strategies for large screens
  • more examples for embedding the library in real terminal tools

Depending on a nerima-lisp sibling is not itself out of scope: cl-tty-kit's core :depends-on already carries cl-codec-kit (the UTF-8 codec) and cl-concurrent-kit (raw mode's lock), because each replaces logic this library would otherwise hand-roll. The projects below are excluded on their own merits — a dependency cycle, or no call site — not by a blanket rule against org dependencies.

cl-process-kit's cl-process-kit/pty subsystem already depends on cl-tty-kit (for terminal-size's default rows/cols) and layers session/job-control semantics -- spawn-pty, pty-resize, session-wide SIGTERM/SIGKILL -- on top of a native PTY trampoline. A caller wanting that layer should reach for cl-process-kit/pty directly rather than cl-tty-kit growing an equivalent; the reverse dependency also means cl-tty-kit itself must never depend on cl-process-kit, which would create a cycle. cl-log-kit (structured logging) and cl-boundary-kit (swappable-fake testing seams for external effects) were evaluated too: both are application-level concerns with no current call site in this primitives library, and cl-boundary-kit's own docs are explicit that its process boundary is a testing seam, not a PTY-shaped runner.

Deferred capabilities

The feature audit note lists terminal-toolkit capabilities and their corresponding public APIs. The items below are outside the supported scope:

  • Wide-cell skip flag — a design alternative to the spacer-cell model already used for double-width glyphs, not a capability gap.
  • Kitty graphics protocol — format-sixel (see Widgets) covers bitmap output through Sixel; a second image mechanism would duplicate it.
  • Non-SBCL portability — would require shipping the Unicode tables the library borrows from sb-unicode, which limits portability beyond SBCL.

Implemented capabilities include grapheme-cluster segmentation, constraint-based layout-split, the full kitty input surface (event kinds, associated text, shifted/base-layout alternates), the CSI in-place editing escapes, and format-sixel graphics. The items above are outside the supported scope.

New features

New features must align with terminal primitives rather than application framework behavior.