Hardt-Coded/Terminal.Gui.Elmish
55.3
Weak · 24 September 2026
5k
lines of production code
F#
primary language
5
measurements over time
What this system is
This system is a .NET library that integrates the Elmish architecture with the Terminal.Gui framework to build terminal-based user interfaces. It provides a custom implementation of Elmish that manages state updates and view rendering within the Terminal.Gui event loop. The codebase includes example applications demonstrating various UI components and state management patterns.
Features
Custom Elmish implementation for Terminal.Gui integration
The Elmish core library has been copied and adapted into the project to support Terminal.Gui-specific requirements, including a custom dispatch loop that integrates with the Terminal.Gui application lifecycle and a ring buffer for message handling. This enables the framework to manage state updates and view rendering within the Terminal.Gui event loop.
src/Terminal.Gui.Elmish/ElmishImplementation · high confidence
New Elmish Console example app with multiple interactive elements
A new example application has been added to the \examples/Elmish.Console.Elements\ directory, demonstrating the capabilities of the Terminal.Gui Elmish integration. The app features a multi-page navigation system that includes interactive components such as a counter, text fields, radio buttons, checkboxes, a list view, a scrollable view, text views with file dialogs, message boxes, wizards, and tab views. This provides a comprehensive showcase of the framework's UI elements and state management patterns.
examples/Elmish.Console.Elements · high confidence
Architecture
Complete rewrite of the Terminal.Gui.Elmish library with a new architecture
The library has been completely rewritten to use a new internal architecture. The previous implementation, which relied on reflection to manage events and state, has been replaced with a direct, strongly-typed approach using a \TerminalElement\ hierarchy. This change introduces a new \Interop\ module for handling property mapping and event binding, and a \TreeDiff\ module for efficient virtual DOM-style reconciliation of the UI tree. The old helper modules (\Helpers.fs\, \Program.fs\) and assembly metadata have been removed in favor of this new structure.
src/Terminal.Gui.Elmish · high confidence
Behavioural changes
Migrate build system and update Visual Studio configuration
The legacy FAKE-based build scripts (build.cmd, build.fsx, build.proj, build.sh, paket.references) have been removed, replacing the previous build process. The Travis CI configuration has been updated to use .NET 6.0.300 on Linux, and the solution file has been upgraded to support Visual Studio 2022 (version 17.2). Additionally, a new example project (Elmish.Console.Elements) has been added to the solution.
(repo-wide) · high confidence
Refactored ElmishConsoleTest01 example to use Terminal.Gui v1.14
The ElmishConsoleTest01 example has been updated to use Terminal.Gui version 1.14, which includes a fix for button focus after click when a new page is rendered. The example's internal model and view logic have been refactored to align with the new API, including changes to how radio and list selections are handled (using integer indices instead of custom enum types) and the addition of a visibility toggle. Additionally, the example now includes a data module that parses an embedded XML dataset into a DataTable, and the project's Paket dependency files have been removed.
examples/ElmishConsoleTest01 · medium confidence
Dependencies
Migrate examples to .NET 6 and update Terminal.Gui.Elmish to .NET 7
The \Elmish.Console.Elements\ example project was added and configured for .NET 6, while the \ElmishConsoleTest01\ example was updated from .NET Core 2.2 to .NET 6. The \Terminal.Gui.Elmish\ library was updated to target .NET 7 (alongside .NET 6 and .NET Standard 2.1), and its dependency on \Terminal.Gui\ was bumped to version 1.14. Additionally, the project was converted from Paket-based dependency management to native .NET SDK package references.
(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 56 → 55 (-0.4)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 89 → 93 (+4.3)
- Architecture 100 → 99 (-1.4)
- Maturity 41 → 40 (-0.5)
- Readiness 44 → 44 (-0.1)
- Security 100 → 92 (-8.0)
Resolved (21)
- App.update (cognitive 43) (examples/Elmish.Console.Elements/App.fs)
- App.update (cyclomatic 46) (examples/Elmish.Console.Elements/App.fs)
- App.view (cognitive 17) (examples/Elmish.Console.Elements/App.fs)
- App.view (cyclomatic 27) (examples/Elmish.Console.Elements/App.fs)
- Duplicated block (11 lines × 2) (examples/Elmish.Console.Elements/TextView.fs)
- Duplicated block (12 lines × 2) (examples/Elmish.Console.Elements/MessageBoxes.fs)
- Duplicated block (13 lines × 2) (examples/Elmish.Console.Elements/MessageBoxes.fs)
- Duplicated block (13 lines × 27) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (14 lines × 2) (examples/Elmish.Console.Elements/Counter.fs)
- Duplicated block (14 lines × 2) (examples/Elmish.Console.Elements/MessageBoxes.fs)
- Duplicated block (14 lines × 2) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (7 lines × 2) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (7 lines × 2) (src/Terminal.Gui.Elmish/Interop.fs)
- Duplicated block (7 lines × 2) (src/Terminal.Gui.Elmish/Props.fs)
- Duplicated block (7 lines × 2) (src/Terminal.Gui.Elmish/Props.fs)
- Duplicated block (8 lines × 2) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (9 lines × 2) (examples/Elmish.Console.Elements/MessageBoxes.fs)
- Duplicated block (9 lines × 7) (examples/Elmish.Console.Elements/TextFields.fs)
- No exposed public API
- Test reliability not included
- …and 1 more
New (26)
- Duplicated block (10 lines × 2) (examples/Elmish.Console.Elements/ScrollView.fs)
- Duplicated block (10 lines × 3) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (11 lines × 2) (examples/Elmish.Console.Elements/Start.fs)
- Duplicated block (12 lines × 2) (examples/Elmish.Console.Elements/MessageBoxes.fs)
- Duplicated block (12 lines × 27) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (13 lines × 2) (examples/Elmish.Console.Elements/MessageBoxes.fs)
- Duplicated block (13 lines × 2) (examples/Elmish.Console.Elements/MessageBoxes.fs)
- Duplicated block (13 lines × 2) (examples/Elmish.Console.Elements/TextFields.fs)
- Duplicated block (13 lines × 2) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (13–15 lines × 26) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (15 lines × 2) (examples/Elmish.Console.Elements/MessageBoxes.fs)
- Duplicated block (16 lines × 2) (examples/Elmish.Console.Elements/Counter.fs)
- Duplicated block (5 lines × 3) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (6 lines × 2) (examples/Elmish.Console.Elements/Counter.fs)
- Duplicated block (7 lines × 2) (src/Terminal.Gui.Elmish/Elements.fs)
- Duplicated block (7 lines × 2) (src/Terminal.Gui.Elmish/Interop.fs)
- Duplicated block (7–8 lines × 2) (src/Terminal.Gui.Elmish/Props.fs)
- Duplicated block (8 lines × 3) (src/Terminal.Gui.Elmish/Props.fs)
- Duplicated block (8 lines × 7) (examples/Elmish.Console.Elements/ListView.fs)
- Duplicated block (8–9 lines × 2) (src/Terminal.Gui.Elmish/Elements.fs)
- …and 6 more
Architecture
- Containers 0 added · 0 removed · contexts 3 added · 0 removed · edges 0 added · 0 removed
Added bounded contexts (3)
- Elmish.Console.Elements
- ElmishConsoleTest01
- Terminal.Gui.Elmish
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Hardt-Coded/Terminal.Gui.Elmish 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 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 42d391c4da1471cb108fc0378dc7feb417a203aa — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-923689c465cf.