ChrisPritchard/Xelmish
52.4
Weak · 17 September 2026
1.8k
lines of production code
F#
primary language
1
measurement over time
What this system is
Xelmish is an F\# framework that integrates the Elmish MVU architecture with the MonoGame XNA game loop to facilitate functional game development. It provides core utilities for managing game states, handling input, and rendering declarative UI elements within a game context. The system is demonstrated through sample applications that implement basic interactions, nested state management, and classic arcade game mechanics like Tetris and Space Invaders.
Features
Added Xelmish sample demonstrating basic game loop and input handling
A new sample application has been added at samples/xelmish-first that demonstrates the core Xelmish workflow. It implements a simple interactive program where a colored rectangle can be moved and resized using keyboard inputs (arrow keys for movement, plus/minus for resizing) and exited with the Escape key, showcasing the integration of Elmish's model-update-view pattern with Xelmish's game loop and viewable helpers.
samples/xelmish-first · high confidence
Added single-counter sample demonstrating Xelmish integration with Elmish
The samples/single-counter directory now includes a functional sample application that showcases Xelmish's compatibility with the standard Elmish ecosystem. The sample features a counter with adjustable step size, where the model, messages, and update logic are directly ported from the Elmish.WPF sample to demonstrate interoperability. The view layer is implemented using Xelmish-specific viewables, including custom button components built from core primitives (colour, text, onclick) and font rendering via a loaded SourceCodePro spritefont. This entry covers the specific implementation of this sample's program logic, view definition, and content assets.
samples/single-counter · high confidence
Initial release of Xelmish framework and samples
This change introduces the Xelmish project, which integrates the MonoGame XNA Game loop with the Elmish MVU architecture for F\# game development. The release includes the core solution file (Xelmish.sln), licensing (MIT and SIL Open Font License), and a comprehensive README detailing usage, dependencies (.NET 8, MonoGame 3.8.4, Elmish 5), and cross-platform support. It also provides several sample projects demonstrating basic rendering, state management, and game logic, including a Tetris clone and a Space Invaders clone with audio support.
(repo-wide) · high confidence
Initial release of Xelmish, an Elmish-based game framework for XNA
This change introduces the core Xelmish library, providing a functional, Elmish-style architecture for building games on the XNA framework. It includes a GameLoop that manages the update/draw cycle, a Model module defining configuration, input, and asset types, and a Program module with entry points to run Elmish programs. The framework also provides a UI module for declarative layout (rows, columns, buttons, text) and a Viewables module with helper functions for drawing primitives, handling input events, and managing sound queues.
src · high confidence
New Space Invaders clone sample
A new sample application has been added to the samples/space-invaders-clone directory, providing a partial recreation of the 1979 Space Invaders arcade game. The implementation uses the Xelmish framework and features a complete game loop with a start screen, gameplay, and a game-over screen that tracks high scores. Key gameplay mechanics include player movement (using arrow keys or A/D), shooting with a single-projectile limit, and invader behavior that involves shuffling across the screen and dropping down. The sample includes destructible bunkers, invader animations, and a custom sound system using a queue to manage audio playback. It also demonstrates sprite sheet usage for graphics and pixel-perfect rendering.
samples/space-invaders-clone · high confidence
New Tetris clone sample demonstrating Xelmish game architecture
Adds a complete Tetris clone sample to the samples/tetris-clone directory, showcasing the Xelmish framework for game development. The sample implements a multi-screen state machine (Start, Playing, Game Over) using Elmish components, featuring core gameplay mechanics such as block movement, rotation, collision detection, line clearing, and scoring. It includes a persistent high-score system stored in a local file, a preview window for the next shape, and level-based speed adjustments. The project also demonstrates integration with MonoGame DesktopGL, including DPI awareness configuration via an app.manifest and custom font rendering.
samples/tetris-clone · high confidence
New sub-model sample demonstrating nested Elmish models
The sub-model sample demonstrates how to compose nested Elmish models within the Xelmish framework. It features a Clock sub-model and a CounterWithClock composite model, showing how child messages are lifted to parent handlers (e.g., ClockMsg) and how relative positioning parameters are passed through view functions to manage layout without built-in UI containers. The sample includes a timer subscription that updates two independent CounterWithClock instances and uses the SourceCodePro font.
samples/sub-model · high confidence
Dependencies
Initial release of Xelmish for .NET 8 with Elmish 5 and MonoGame 3.8.4
The Xelmish library and its accompanying sample projects (single-counter, space-invaders-clone, sub-model, tetris-clone, and xelmish-first) are introduced, targeting .NET 8. This release integrates Elmish version 5.0.2 and MonoGame version 3.8.4, providing a foundation for building XNA/MonoGame games using the Elmish architecture. The core library is packaged as a NuGet package (xelmish v1.0.0.1) and includes helpers for models, views, UI, and game loops.
(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
Baseline
- First survey — no prior run to compare against. CAI 52.
Lenses
- Code Health 94
- Architecture 97
- Maturity 53
- Readiness 34
- Security 77
Changes since last survey
- 275 commits — 258 feature/other, 17 fixes
By area
- samples/space-invaders-clone — 99 commits
- samples/tetris-clone — 40 commits
- samples/single-counter — 33 commits
- (root) — 32 commits
- src/GameLoop.fs — 20 commits
- src/Viewables.fs — 14 commits
- samples/sub-model — 12 commits
- samples/single-counter-directx — 4 commits
- src/Xelmish.fsproj — 4 commits
- (repo) — 3 commits
- .config/dotnet-tools.json — 2 commits
- lib/Elmish — 2 commits
- samples/directx-simple — 2 commits
- samples/xelmish-first — 2 commits
- src/Model.fs — 2 commits
- src/Program.fs — 2 commits
- sample/Program.fs — 1 commit
- src/UI.fs — 1 commit
Notable commits
- fix: Updated dependencies in xelmish and fixed use of elmish fields, as these now require explicit accessor/settor functions
- fix: bug fix for lines not being removed
- fix: bug fixes for case sensitivity on linux
- fix: bugfix for out of range exception
- fix: comment fix
- fix: fix for #2: switched to using a mutable last tick var, in order to ensure double ticks dont occur
- fix: fixed bug with shape jumping on spawn
- fix: fixed links
- fix: fixed order of viewable processing so draw order makes sense
- fix: fixed reference issue
- fix: fixed slight delay when transitioning from across to down
- fix: fixed so that side overalp doesnt stop blocks
- fix: fixed up L and J shapes
- fix: fixed up dx project for net 6
- fix: fixed up main to work again with invader extraction
- fix: fixed up nuget badge and bumped version
- fix: second fix for bug #2: removed message changing on new turn seemed to be causing timing issues
- change: #3 and #4: added a social logo image and uploaded to nuget
- change: Add nuget badge
- change: Added a colours module, with common colours
- …and 255 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ChrisPritchard/Xelmish 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 17 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 ada01cf32ad43962be5c717abdd6fbd1c6c656c4 — the exact code this score is about.
- Scored under rubric-2026.09.13 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d1ef6c0bd534.