This is a heavily interactive web application, and JavaScript is required. Simple HTML interfaces are possible, but that is not what this is.
Post
Ahmad Awais
ahmadawais.com
did:plc:ygieerqjsuajrl37t3qsxs7w
Core pipeline:
Backend -> Terminal -> Frame -> Buffer -> Cells
Widgets are pure render functions:
`(area: Rect, buf: Buffer) => void`
No classes, no `this`, no hidden mutable UI tree.
Frame loop is intentionally minimal:
1) render into current buffer
2) diff previous vs current (`bufferDiff`)
2026-03-01T22:21:56.799Z