Skip to content
CAI
Software that uses CAICheck a score

HenryKovalevsky/Thuja

43.9

Weak · 3 October 2026

1.3k

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a terminal user interface (TUI) framework for F\# that provides a declarative API for building interactive console applications. It supports complex layouts, text rendering, and keyboard input handling, with an ANSI-based backend for visual styling. The codebase primarily consists of the core library and several sample applications demonstrating features like tables, menus, and image viewing.

Features

Add static Kubernetes-style table sample

A new sample program in sample/Table demonstrates a static table view displaying Kubernetes pod information (namespace, name, status, etc.) using the Thuja framework's table and panel elements.

sample/Table · high confidence

Introduce ANSI terminal backend and core UI framework

Thuja now includes a new ANSI-based backend that renders UI elements to the terminal using escape codes for colors and styles, replacing previous dependencies. The core module defines the fundamental data structures for the UI, including Style, Color, KeyInput, and the ViewTree, while the Program module provides the main application loop for handling model updates, view rendering, and keyboard input. Additionally, the Styles module offers utilities for defining colors (including hex and RGB), text attributes, and various border styles for terminal-based interfaces.

src/Thuja · high confidence

Introduce core UI element library with layout, styling, and text capabilities

The \src/Thuja/Elements\ module now provides a comprehensive set of UI components for building terminal interfaces. This includes layout primitives (\Layout.fs\) for columns, rows, and grids using absolute or fractional sizing, and a \Region\ element supporting margins and alignment. Visual elements such as \Panel\ (with customizable border styles and colors), \Rule\ (horizontal/vertical lines), and \Table\ (with headers, data, cell styling, and borders) are available. Text handling is enhanced via the \Text\ element, which supports color, background, attributes, overflow modes (wrap, clip, ellipsis), and horizontal/vertical alignment. Helper utilities in \Helpers.fs\ provide text truncation and word-wrapping logic, while \List\ and \Raw\ elements allow for simple item lists and custom rendering.

src/Thuja/Elements · high confidence

New SimpleMenu sample with keyboard navigation and text wrapping

A new sample application (sample/SimpleMenu) demonstrates a split-panel UI using the Thuja framework. The interface features a list of text items (including multi-byte characters) in the left panel and instructional text in the right panel. Users can navigate the list using Up/Down arrow keys, and the text elements support overflow wrapping. The sample also implements basic key bindings for exiting the application via Ctrl+C or 'q'.

sample/SimpleMenu · high confidence

New terminal-based image viewer sample with key bindings and ANSI rendering

Added a new sample application in sample/ImageViewer that displays images in the terminal using the chafa tool for ANSI/sixel rendering. The app features a sortable file list menu, custom key bindings (j/k for navigation, s to sort, q/c to quit), and demonstrates integrating external CLI tools within the Thuja framework.

sample/ImageViewer · high confidence

Removals

Removal of core TUI framework and sample application

The core terminal user interface library (Thuja) and its accompanying sample application have been removed from the codebase. This deletion eliminates the Elmish-style architecture that previously handled model/view/update cycles, including the DSL for defining UI layouts (columns, rows, panels, lists, text, and raw output), the layout engine, and the main program loop responsible for rendering and keyboard input processing.

sample, src · high confidence

Behavioural changes

Calendar sample now displays table with centered text and borders

The Calendar sample application now renders its schedule data in a table format that includes visible borders and center-aligned text, providing a clearer visual structure for the weekly task view.

sample/Calendar · high confidence

Thuja library API and usage updates

The Thuja F\# terminal UI library has updated its public API and documentation. The program entry point now uses \Program.make\ instead of \Program.run\, requiring explicit configuration via \Program.withKeyBindings\ for input handling. The view API has changed: layout columns now accept \Fraction\ values, and list/text components take configuration lists as their first argument. Keyboard input is now handled via structured events (\Up\, \Down\, \Char\) rather than raw string matching, and the exit command is accessed via \Program.exit()\. The README also reflects these changes and points to a new Wiki for documentation.

(repo-wide) · high confidence

Dependencies

Restructure project layout and migrate sample apps to .NET 8

The project has been reorganized to separate the core library from sample applications. The main library is now located in src/Thuja/Thuja.fsproj, while sample applications (Clock, SimpleMenu, Table, Calendar, ImageViewer) have been moved to the sample/ directory. All projects now target .NET 8.0. The Calendar sample has been refactored to reference the core library as a project reference instead of using the external Tutu package, and the ImageViewer sample has been renamed and updated to reference the new library location.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 47 → 44 (-2.6)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 93 → 93 (+0.0)
  • Architecture 100 → 91 (-8.9)
  • Maturity 53 → 46 (-7.0)
  • Readiness 15 → 15 (+0.0)
  • Security 100 → 100 (+0.0)

Resolved (3)

  • Documentation: no architecture or design documentation (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Hotspot: src/Thuja/Backend.fs (src/Thuja/Backend.fs)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

HenryKovalevsky/Thuja was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 301ba1db686b50909aab0b8f46d2f21a46e13b73 — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.