# harlock v0.2.0 - Table of Contents > A pure-Elixir TUI framework for Unix terminals. TEA-style model / update / view loop on top of OTP, with first-class focus traversal, layout constraints, ANSI cell-diff rendering, and a thin termios NIF for direct /dev/tty control. ## Pages - [Harlock](readme.md) - [Harlock Roadmap](roadmap.md) - [Changelog](changelog.md) - [LICENSE](license.md) - [Termios NIF](termios_nif.md) ## Modules - [Harlock.Element](Harlock.Element.md): A node in the view tree returned by an app's `view/1`. Plain struct, no macros — built via the constructor functions in `Harlock.Elements` (`text/2`, `vbox/1`, `box/1`, etc.). - [Harlock.Layout](Harlock.Layout.md): Ratatui-style constraint layout solver. - [Harlock.Layout.Rect](Harlock.Layout.Rect.md): A rectangle in cell coordinates, returned by `Harlock.Layout.split/3`. - [Harlock.Render.Buffer](Harlock.Render.Buffer.md): A 2D grid of cells of fixed dimensions, returned by `Harlock.Test.cells/1`. - [Harlock.Render.Cell](Harlock.Render.Cell.md): A single terminal cell. - [Harlock.Terminal.Termios](Harlock.Terminal.Termios.md): POSIX termios access for `/dev/tty` via a small NIF. - Apps - [Harlock](Harlock.md): Harlock — a pure-Elixir TUI framework for Unix terminals. - [Harlock.App](Harlock.App.md): Behaviour for Harlock applications. - [Harlock.Cmd](Harlock.Cmd.md): Side-effect descriptors returned from `init/1` and `update/2`. - [Harlock.Element.Column](Harlock.Element.Column.md): Column spec for `Harlock.Elements.table/1`, built via `Harlock.Elements.column/1` - [Harlock.Elements](Harlock.Elements.md): View-tree constructors. Auto-imported into apps via `use Harlock.App`, so most apps use `text(...)`, `vbox(...)`, `box(...)` etc. directly without qualification. - [Harlock.Focus](Harlock.Focus.md): Read access to focus state during `view/1` and `update/2` callbacks. - [Harlock.Sub](Harlock.Sub.md): Subscriptions — long-running sources of events that the runtime starts and stops as the model changes. - [Harlock.TextBuffer](Harlock.TextBuffer.md): Pure helpers for editing a `(value, cursor)` pair. - [Harlock.Theme](Harlock.Theme.md): Visual theme tokens used by the renderer. - Testing - [Harlock.Test](Harlock.Test.md): Test harness for Harlock apps. - Rendering - [Harlock.Render.Style](Harlock.Render.Style.md): Visual attributes for a rendered cell. - [Harlock.Width](Harlock.Width.md): Display-column width of strings and graphemes for terminal rendering.