Skip to content
CAI
Software that uses CAICheck a score

ionide/ionide-vscode-fsharp

52.7

Weak · 23 September 2026

9.4k

lines of production code

F#

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an F\# language server and VS Code extension that provides IDE capabilities such as code completion, diagnostics, debugging, and interactive scripting. It bridges F\# tooling with JavaScript environments using Fable, managing build processes, project metadata, and real-time code analysis. The extension integrates with VS Code's interface to offer features like inline hints, reference tracking, and FSI watch windows for developers.

Features

Add Fable bindings for Node.js utilities, Semver, and XPath

New F\# modules have been added to bridge JavaScript libraries into the F\# codebase: Node.Util provides access to Node's util module and JSON parsing; Semver exposes the full semver library API for parsing, comparing, and manipulating version strings; and XPath enables querying XML documents using the xmldom and xpath libraries. These bindings allow the IDE to handle version constraints and XML-based project metadata more robustly.

src/Imports · high confidence

Introduction of new F\# IDE components

This change introduces a suite of new components for the F\# VS Code extension, including CodeLens helpers for showing references, a Debugger module for building and debugging projects, a Diagnostics module for generating issue reports, an FSI watcher with a dedicated webview panel, Gitignore management, Help integration, an HTML converter, an Info Panel for documentation, Inlay Hints configuration, Language Configuration for smart indenting, MSBuild task integration, QuickInfo status bar displays, and a Script Runner.

src/Components · high confidence

Architecture

Migrate build system to FAKE

The build process has been rewritten using the FAKE build automation tool for F\#. This change introduces a new \build/Program.fs\ script that handles project configuration, Fable compilation, VSIX packaging, and release management, replacing the previous build implementation. The build dependencies are now managed via \paket.references\, pulling in FAKE modules for targets, process execution, .NET CLI interactions, file system operations, and GitHub API access.

build · high confidence

Behavioural changes

Extract shared LineLens and PipelineHints infrastructure

The LineLens and PipelineHints components have been refactored to share a common base implementation in \LineLensShared.fs\. This change introduces a generic \LineLens\ class and a shared \DecorationUpdate\ module that handle caching, document versioning, and decoration creation, allowing both features to reuse the same logic for updating inline hints. The specific behaviors for LineLens (showing function signatures) and PipelineHints (showing type hints in pipelines) are now implemented as distinct configurations and decoration update functions that plug into this shared engine.

src/Components/LineLens · high confidence

Ionide for VSCode 7.31.1 release artifacts

This entry covers the release artifacts for Ionide for VSCode version 7.31.1. The release includes an updated CHANGELOG.md documenting the 7.31.1 update, which adds debug logs during feature activation and updates the F\# Auto Complete (FSAC) dependency to version 0.83.0. Additionally, the release package contains the language configuration file (language-configuration.json) defining F\# syntax rules such as comments and auto-closing pairs, and the snippets file (snippets.json) providing code templates for F\# constructs including literals, loops, pattern matching, types, and analyzer ignore directives. The release also includes the minified JavaScript toolkit (toolkit.min.js) used for UI components.

release · high confidence

Migrate core infrastructure from FunScript to Fable

The core module has been rewritten to use Fable instead of FunScript, replacing the previous .NET-based HTTP request implementation with Fable's JavaScript interop and introducing a new structured logging system (Logging.fs) that writes to VS Code output channels and the developer console. This change also updates the Data Transfer Object (DTO) definitions to include new fields such as document versions and file names, and replaces the old event-based communication pattern with VS Code event emitters for better integration with the language server protocol.

src/Core · high confidence

Modernized build system and added development environment configuration

The project has migrated its build process from the legacy Paket/FAKE system to a modern .NET SDK-based approach using \dotnet tool restore\ and \dotnet run\, replacing the old \build.fsx\ script with a \build.fsproj\. To support this and improve the developer experience, the repository now includes an \.editorconfig\ for consistent code formatting, a \.gitpod.yml\ for instant cloud-based development environments, and a \.tool-versions\ file to specify Node.js and Yarn versions. Additionally, the \CONTRIBUTING.md\ guide has been updated to reflect these new prerequisites and build steps, and the \README.md\ has been refreshed with current badges and feature descriptions.

(repo-wide) · high confidence

Removed FsAutoComplete.Suave.exe.config binding redirect

The FsAutoComplete.Suave.exe.config file, which previously enforced a binding redirect for FSharp.Core version 4.3.1.0, has been removed. This change eliminates the explicit constraint on the FSharp.Core assembly version for the Suave-based executable.

release/bin · high confidence

Fixes

FSI watcher now supports null-safe assembly inspection

The FSI watcher script has been updated to handle null values when inspecting assembly names and type full names. This change prevents runtime errors (such as 'no matching index' or null reference exceptions) that occurred when the FSI environment contained assemblies with null names or types without full names, ensuring stable evaluation of values in the watch window.

release/watcher · 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 52 → 53 (+0.7)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 86 → 86 (-0.2)
  • Architecture 100 → 100 (-0.2)
  • Maturity 52 → 52 (+0.5)
  • Readiness 42 → 42 (+0.0)
  • Security 53 → 57 (+4.1)

Resolved (50)

  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Dependency hygiene not measured — no packages were read
  • Duplicated block (10 lines × 2) (src/Core/LanguageService.fs)
  • Duplicated block (11 lines × 2) (src/Core/Project.fs)
  • Duplicated block (12 lines × 2) (src/Components/TestExplorer.fs)
  • Duplicated block (13 lines × 2) (src/Components/MSBuild.fs)
  • Duplicated block (17 lines × 2) (src/Components/Fsi.fs)
  • Duplicated block (7 lines × 2) (src/Components/SolutionExplorer.fs)
  • Duplicated block (7 lines × 2) (src/Components/SolutionExplorer.fs)
  • Duplicated block (7 lines × 3) (src/Components/Fsi.fs)
  • Duplicated block (8 lines × 2) (src/Components/Fsi.fs)
  • Duplicated block (9 lines × 2) (src/Components/SolutionExplorer.fs)
  • Duplicated block (9 lines × 2) (src/Components/SolutionExplorer.fs)
  • Duplicated block (9 lines × 2) (src/Core/LanguageService.fs)
  • Duplicated block (9 lines × 2) (src/Core/Project.fs)
  • FileTooLong: Components/TestExplorer.fs (src/Components/TestExplorer.fs)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • …and 30 more

New (67)

  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Duplicated block (10 lines × 3) (src/Components/Diagnostics.fs)
  • Duplicated block (10 lines × 3) (src/Core/LanguageService.fs)
  • Duplicated block (10 lines × 3) (src/Core/Project.fs)
  • Duplicated block (11 lines × 2) (src/Components/Diagnostics.fs)
  • Duplicated block (11 lines × 2) (src/Components/LineLens/LineLens.fs)
  • Duplicated block (11 lines × 2) (src/Core/LanguageService.fs)
  • Duplicated block (12 lines × 2) (src/Core/Project.fs)
  • Duplicated block (12 lines × 3) (src/Components/MSBuild.fs)
  • Duplicated block (13 lines × 2) (src/Components/TestExplorer.fs)
  • Duplicated block (16 lines × 2) (src/Components/MSBuild.fs)
  • Duplicated block (20 lines × 2) (src/Components/Fsi.fs)
  • Duplicated block (5 lines × 2) (src/Components/QuickInfo.fs)
  • Duplicated block (6 lines × 2) (src/Components/SolutionExplorer.fs)
  • Duplicated block (7 lines × 2) (src/Components/SolutionExplorer.fs)
  • Duplicated block (7 lines × 2) (src/Core/LanguageService.fs)
  • Duplicated block (7 lines × 3) (src/Core/LanguageService.fs)
  • Duplicated block (8 lines × 2) (src/Core/LanguageService.fs)
  • Duplicated block (8 lines × 4) (src/Core/LanguageService.fs)
  • …and 47 more

Changes since last survey

  • 4 commits — 4 feature/other, 0 fixes

By area

  • .github/workflows — 2 commits
  • (root) — 1 commit
  • src/Components — 1 commit

Notable commits

  • change: Bump version to 7.31.1
  • change: Update FSAC to 0.84 (#2177)
  • change: update repo assist
  • change: update repo assist

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

Survey your own repository

ionide/ionide-vscode-fsharp 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 23 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 0dcb6de4719d20dac5f4e3ca05ddfaf59b2a42d4 — 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-955b9cee9818.