Skip to content
CAI
Software that uses CAICheck a score

ChrisNikkel/SharpVG

73.5

Strong · 3 October 2026

5.1k

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

SharpVG is an F\# library for programmatically generating, parsing, and mutating SVG graphics. It provides a comprehensive type system for constructing vector elements, styling, and animations, alongside robust parsing capabilities that support round-trip workflows by preserving unknown elements. The system includes helper utilities for file and random number operations, and is demonstrated through various interactive examples such as a clock, Conway's Game of Life, and fractal patterns.

Features

Add SharpVG F\# notebook example with animation support

A new interactive notebook example for SharpVG has been added to the Examples/Notebooks directory, providing a runnable F\# demonstration of the library. The example includes a NuGet configuration file to resolve package sources and demonstrates creating styled SVG elements (rectangles) with stroke and fill pens. It also showcases advanced features such as applying transforms (rotation, scaling, translation) and defining timed animations to create dynamic visual effects within the notebook environment.

Examples/Notebooks · high confidence

Added Fable-based SVG clock example

A new interactive clock example has been added to the Examples/FableClock directory, demonstrating how to use the SharpVG library within a Fable/JavaScript environment. The example renders an analog clock with hour markers and dynamic hands (hour, minute, second) by generating SVG markup in F\# and injecting it into the DOM every second.

Examples/FableClock · high confidence

Added SVG Life example demonstrating Conway's Game of Life with animations

A new Life example has been added to the Examples directory, implementing Conway's Game of Life logic to generate an animated SVG output. The program creates a board of cells that evolve over 100 iterations, using CSS animations to toggle cell visibility, and saves the resulting HTML file to the program's execution directory.

Examples/Life · high confidence

Initial implementation of SharpVG SVG generation library

SharpVG introduces a new F\# library for generating SVG graphics programmatically. The release provides a comprehensive type system for SVG elements (such as shapes, text, and groups), styling capabilities including gradients, filters, and animations, and helper modules for constructing complex vector graphics. This foundational commit establishes the core API for creating and serializing SVG content.

SharpVG · high confidence

New Sierpinski triangle example with animation and SVG enhancements

Added a new Triangle example that generates a recursive Sierpinski triangle pattern. The output is an HTML file containing an SVG with animated transformations (scaling, rotation, and offset) applied to the geometric shapes. This example demonstrates new SVG features including ViewBox support, styling, and animation capabilities within the SharpVG library.

Examples/Triangle · high confidence

New file and random number helper modules

Added two new helper modules to the codebase: \Helpers.File\ provides utilities for determining the program's execution directory, generating temporary filenames with specific extensions, and writing lines to files; \Helpers.Random\ introduces a function to generate an infinite sequence of random integers within a specified range, seeded by a combination of the current time and a provided seed value.

Helpers · high confidence

SharpVG 1.0.0: SVG parsing, mutation, and editing capabilities

SharpVG now supports loading existing SVG files back into the domain model via the new \SvgParser\ module (parsing strings, files, streams, SVGZ, and embedded HTML), enabling round-trip workflows where unknown elements are preserved as raw passthrough nodes. The library introduces a comprehensive mutation API (\Svg.mapElements\, \findById\, \replaceById\, etc.) and an element attribute API for reading, writing, and removing attributes and animations. A new \HRef\ type safely distinguishes between element-ID references and URL references, replacing bare strings in href positions. The release also adds \\<style\>\ block parsing for CSS rules, a \ParseMode\ (Lenient/Strict) for handling unknown elements, and \Svg.toStringForEditing\/\toHtmlForEditing\ which annotate elements with \data-edit-id\ attributes to support interactive editor rendering and path-based element lookup.

(repo-wide) · high confidence

Test coverage

Comprehensive test suite for SharpVG SVG generation

Added a new test project covering the SharpVG library's SVG generation capabilities. The suite includes property-based and unit tests for core modules including Anchor, Animation, Area, Attribute, Circle, ClipPath, Color, Element, Ellipse, Filter, Gradient, Graphic, Group, and more. It also introduces helper modules for basic checks (tag validation, safe ID generation) and SVG XML validation using xmllint to ensure generated output is well-formed.

Tests · high confidence

Dependencies

Migrate build system to .NET SDK style and modernize dependencies

The project has migrated from legacy Visual Studio project formats to the modern .NET SDK-style project system, removing the Paket dependency manager in favor of standard NuGet package references. The core SharpVG library now targets netstandard2.1, net8.0, and net9.0, while the test suite has been updated to use .NET 8.0 with XUnit, FsCheck, and Coverlet. The FableClock example now uses Vite 8 and targets .NET 8.0, and new examples (Life, Triangle) target .NET 9.0.

(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 73 → 73 (+0.2)
  • Rubric changed (rubric-2026.09.13 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 79 → 79 (+0.0)
  • Architecture 88 → 95 (+7.0)
  • Maturity 72 → 72 (+0.0)
  • Readiness 68 → 68 (+0.0)
  • Security 98 → 92 (-6.3)

Resolved (3)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Low coverage: Color.fs (Color.fs)

New (3)

  • End-of-life runtime: .NET net9.0
  • Low coverage: SharpVG/Color.fs (SharpVG/Color.fs)
  • No test project references Helpers (Helpers/Helpers.fsproj)

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

Survey your own repository

ChrisNikkel/SharpVG 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 cebc549717a87a9bcf9a66e8db073a213528314e — 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.