Skip to content
CAI
Software that uses CAICheck a score

HelgeSverre/fedit

64.7

Adequate · 3 October 2026

22.5k

lines of production code

F#

with JavaScript

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Fedit is a cross-platform, terminal-based text editor written in F\# that features a NativeAOT-compatible core and an out-of-process plugin system. It provides extensible capabilities through a JSON-RPC API, allowing plugins to manage buffers, interact with language servers, and customize the UI. The system includes built-in syntax highlighting for numerous languages, performance benchmarking tools, and a comprehensive CLI for configuration and plugin management.

Features

Add modality and shell design explorer

Introduces a new static HTML page at design/modality-explorer.html that serves as a visual design system and documentation hub. The page defines a dark-themed UI kit with CSS variables for colors, typography, and spacing, and includes structured sections for a table of contents, component cards, keymap definitions, interaction flows, and pros/cons analysis to help users and developers understand the shell's modality and command bar behaviors.

design · high confidence

Add syntax highlighting for 15+ programming and markup languages

Fedit now includes built-in syntax highlighting for a broad set of languages, including AppleScript, Astro, Bash, C, C\#, CSS, Dart, F\#, Go, HTML, Just, Make, Markdown, PHP, Python, ReScript, Rust, Sema, TOML, TypeScript, TSX, XML, and Zig. This update also adds language injection support for embedded code in HTML, Markdown, and PHP, as well as TypeScript in Astro, ensuring that code blocks within these formats are highlighted correctly.

src/Fedit/Resources · high confidence

Added syntax highlighting support for 11 new programming and markup languages

The editor now supports syntax highlighting for AppleScript, Astro, Dart, F\#, Just, Make, Markdown, ReScript, Sema, TOML, XML, and Zig. This capability is enabled by vendoring the corresponding tree-sitter grammars as submodules, allowing the application to parse and highlight code in these formats without relying on external system installations.

vendor · high confidence

Automated documentation sync and Open Graph image generation

The website build now includes scripts to automatically mirror and transform core documentation (LSP, macros) into the site's content directory, ensuring the docs stay in sync with the source repository. Additionally, a new script generates branded Open Graph images for key pages (such as commands, themes, and plugins) using specific fonts and color swatches, improving how links to the site appear when shared on social media.

website/scripts · high confidence

Establishes the fedit brand identity and design system

Introduces the core brand assets for fedit, defining the visual identity with a phosphor green accent (\#00B86B), Departure Mono for branding, and JetBrains Mono for code. This change adds the canonical color palette (JSON, CSS custom properties, and F\# modules for TUI rendering), SVG symbols (caret mark, favicon), and comprehensive usage guidelines covering typography, voice, and theme constraints. It also documents the ten available editor themes (green, blue, orange, cyan, teal, yellow, red, graphite, evergreen, mono-amber) and the rules for switching them via the command bar.

brand · high confidence

Introduce extensible plugin API with host, actions, and context

Fedit now supports a plugin system, exposing a new \Fedit.PluginApi\ namespace that defines the interface (\IPluginHost\) and data types (\PluginContext\, \PluginAction\, \PluginEvent\) for extensions. Plugins can register commands, keybindings, language servers, syntax grammars, and completion providers, and can interact with the editor by inserting text, managing buffers, opening files, and displaying panels or status bar items. The core editor has been refactored to interpret a unified \Action\ vocabulary, allowing plugins to trigger standard editor behaviors like navigation, editing, and LSP operations through a structured, AOT-safe RPC protocol.

src/Fedit · high confidence

New CLI subcommands for dumping commands, keybinds, themes, and plugins

The CLI now includes four new subcommands that allow users to inspect the editor's configuration and capabilities from the terminal. \fedit commands\ dumps the built-in command-palette specs, \fedit keybinds\ dumps the default keymap, and \fedit themes\ dumps the bundled themes; all three support a \--json\ flag to emit machine-readable data for documentation or tooling. Additionally, \fedit plugins\ provides a full interface to manage installed plugins, including listing, installing, removing, and validating them, with options like \--plain\ for script-friendly output.

src/Fedit/Cli · high confidence

New Caret Rise mascot animation added to website

A new ambient mascot component, Caret Rise, has been added to the website's mascot collection. This pure CSS animation features a field of caret symbols (^) that rise from below the frame, brighten at mid-height, and fade out at the top, echoing the brand mark without repeating the wordmark. The component is implemented as an Astro file with responsive SVG and respects user motion preferences via prefers-reduced-motion.

website/src/components/mascots · high confidence

New documentation site layout with SEO and responsive sidebar

The website now includes a new Astro-based layout system that enhances the user experience for documentation and general site browsing. The DocsLayout introduces a responsive sidebar navigation that groups documentation entries, automatically collapsing on smaller screens to preserve content visibility, and features a sticky sidebar on desktop for easy access. The Site layout provides comprehensive SEO support, including Open Graph and Twitter card meta tags for better social sharing, canonical URLs, and structured metadata, ensuring the site is well-indexed and presented across platforms.

website/src/layouts · high confidence

New example plugins for counting TODOs and words

Added two new example plugins for the F\# editor: a 'todo-count' plugin that scans the workspace for TODO markers and displays a breakdown in a panel, and a 'wordcount' plugin that counts words in the active buffer. These examples demonstrate the new MVP plugin API, including workspace traversal, command registration, and UI actions like ShowPanel and SetStatusItem.

examples/todo-count · high confidence

New example plugins for session jottings and TODO scanning

Added two new example plugins to the \examples\ directory: \jot\ and \todo-list\. The \jot\ plugin provides a session scratchpad where users can append current file locations (\:jot\), toggle checkbox status (\:jotdone\), and jump back to those locations (\:jotgo\). The \todo-list\ plugin scans the workspace for \TODO:\ markers and opens a clickable listing buffer (\:todolist\) that allows users to navigate directly to the source code (\:todo-jump\). Both plugins demonstrate the new MVP plugin API capabilities, including scratch buffer management, command registration, and interactive buffer activation.

examples/todo-list · high confidence

New example plugins for timestamp insertion and TODO navigation

Added two new F\# example plugins to the examples directory: 'journal' and 'todo-next'. The journal plugin adds a command to insert a local timestamp at the cursor and reveal the file in the sidebar. The todo-next plugin adds a command and Ctrl+T keybinding to jump the cursor to the next 'TODO:' marker in the active buffer, wrapping to other open buffers if necessary. Both plugins demonstrate the new plugin API capabilities including command registration, keybindings, and buffer manipulation.

examples/journal, examples/todo-next · high confidence

New installation scripts and Homebrew formula for fedit

Users can now install fedit via a curl-based shell script (install.sh) for macOS and Linux, a PowerShell script (install.ps1) for Windows, and a Homebrew formula (fedit.rb.tmpl) for macOS/Linux package management. The shell and PowerShell installers automatically detect the platform and architecture, download the appropriate release archive, verify checksums, and place the binary along with its required sidecars (PluginApi.dll and tree-sitter runtimes) in standard user directories, adding the binary to the PATH where necessary. The Homebrew formula template is rendered by a helper script (render-formula.sh) that populates version and SHA256 hashes for all supported Unix architectures, enabling easy installation via \brew install\.

scripts · high confidence

New marketing site components for fedit

The website now includes a new Astro-based marketing site with a sticky header, a footer featuring social links (GitHub, X, Bluesky, LinkedIn), and theme preview cards. The header provides navigation to install, commands, themes, plugins, docs, and changelog, with a skip-link for accessibility. The footer includes links to the brand page, plugin references, keybindings, and architecture docs, along with source and license information. Theme cards display a preview of the theme in a simulated editor interface, showing syntax highlighting and UI elements. The site also includes a TUI frame component for displaying terminal output with optional labels and footers.

website/src/components, website/src/pages · high confidence

Out-of-process plugin host with JSON-RPC protocol

The application now runs plugins in a separate out-of-process host that communicates with the editor via a newline-delimited JSON-RPC protocol over stdin/stdout. This architecture allows the main editor process to remain NativeAOT-compatible, as only command specifications and results cross the process boundary. The host supports concurrent command invocations with unique request IDs, enabling cancellation of individual slow commands without stalling others, and implements read-backs for editor services like clipboard access.

src/Fedit.PluginHost · high confidence

Repository hygiene and cross-platform consistency configuration

The repository now includes foundational configuration files to standardize development workflows and ensure consistent behavior across operating systems. An \.editorconfig\ defines language-specific formatting rules (e.g., 4-space indentation for F\#), while \.gitattributes\ enforces LF line endings for all text files to prevent cross-platform checkout issues. Repository hygiene is improved with \.gitignore\ patterns (via \.prettierignore\ and \.fantomasignore\), a \CHANGELOG.md\ for release tracking, and standard GitHub templates (\.github/\). Additionally, \vendor/\ tree-sitter grammars are managed as git submodules, and a \justfile\ provides automation for build and release tasks.

(repo-wide) · high confidence

Showcase plugin demonstrates full extension API surface

The new \examples/showcase\ plugin exercises the editor's extension capabilities, providing a reference implementation for end-to-end testing. It registers commands for UI panels, status items, and async operations with cancellation, along with event hooks for buffer saves. The plugin also demonstrates user interaction via pickers and text prompts, integration with external language servers and tree-sitter grammars for syntax highlighting, gutter decorations for TODO markers, clipboard read-backs, and a completion provider for \.showcase\ files.

examples/showcase · high confidence

User-configurable keybindings via external file

Users can now customize keybindings by creating a \keybinds\ file in their configuration directory (\\~/.config/fedit/keybinds\). This file allows remapping existing chords, defining global bindings that work across all contexts, creating multi-key sequences, and unbinding keys. The user-defined bindings layer on top of the compiled-in defaults and can be reloaded without restarting the editor using the \:keybind reload\ command.

examples · high confidence

Website launches as an Astro-based marketing site with automated content generation

The website has been rebuilt using Astro, introducing a new static site architecture that includes automatic generation of reference data (keybindings, themes, and commands) from the core F\# project, a brand showcase, and SEO enhancements like sitemaps and Open Graph cards. The site now features specific navigation pages for documentation and plugins, implements redirects for legacy paths (such as /how and /extend), and serves install scripts via Vercel redirects. This change also establishes a new development workflow using Justfile for building, linting, and syncing canonical documentation.

website · high confidence

Website now includes generated reference data for commands, keybindings, themes, and documentation navigation

The marketing site now features a structured data layer in \website/src/data\ that powers its reference documentation. This includes a changelog parser that renders release notes from markdown, a static JSON manifest of all editor commands (such as \open\, \write\, \lsp\, and \hex\), and a comprehensive keybinding reference that maps strokes to actions with context-aware descriptions. Additionally, the site now hosts a curated list of bundled themes (including the default 'green' and variants like 'blue' and 'orange') with full color palette definitions for previewing, alongside a navigation index that organizes documentation into groups like 'use', 'language tooling', and 'internals'.

website/src/data · high confidence

Behavioural changes

Introduces global design system and accessibility styles

The website now uses a centralized global stylesheet that establishes a consistent visual identity and improved accessibility. This includes a cohesive color palette with light and dark mode support, standardized typography using JetBrains Mono, and accessible focus indicators for interactive elements. Users will notice a unified look across the site, with smooth scrolling, reduced motion preferences respected, and consistent styling for code blocks and links.

website/src/styles · high confidence

Test coverage

Add Fedit benchmark suite for performance regression tracking; Added comprehensive test coverage for core editor components.

Dependencies

Upgrade to .NET 10 and centralize package management

The project has upgraded its target framework to .NET 10.0 across all components, including the main editor, plugin host, benchmarks, and tests. To support this, the project now uses Central Package Management via \Directory.Packages.props\, which defines the versions for key dependencies such as \FSharp.Core\ (10.1.401), \xunit\ (2.9.3), \BenchmarkDotNet\ (0.15.2), and \TreeSitter.DotNet\ (1.3.0). The website dependencies have also been updated, with \astro\ moving to 6.4.7 and \prettier\ to 3.8.4.

(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 64 → 65 (+0.6)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 55 → 55 (+0.2)
  • Architecture 89 → 95 (+5.9)
  • Maturity 73 → 73 (-0.3)
  • Readiness 77 → 77 (-0.1)
  • Security 82 → 82 (+0.0)
  • Accessibility 66 → 66 (+0.0)
  • Performance 100 (new)

Resolved (1)

  • Documentation: written for insiders (docs/archived/research/wip-keybinds.md)

New (12)

  • FunctionTooLong: prototype-v2.html.themeDemo (docs/superpowers/plans/revised-theme-system/prototype-v2.html)
  • FunctionTooLong: prototype.html.themeDemo (docs/superpowers/plans/revised-theme-system/prototype.html)
  • Outdated (npm): mdast-util-gfm-strikethrough
  • Outdated (npm): mdast-util-to-markdown
  • Outdated (npm): micromark
  • Outdated (npm): micromark-core-commonmark
  • Outdated (npm): micromark-factory-space
  • Outdated (npm): micromark-util-types
  • Outdated (npm): source-map-js
  • Outdated: coverlet.collector
  • prototype-v2.html.themeDemo.treeMarker (cognitive 19) (docs/superpowers/plans/revised-theme-system/prototype-v2.html)
  • prototype.html.themeDemo.treeMarker (cognitive 19) (docs/superpowers/plans/revised-theme-system/prototype.html)

Architecture

  • Containers 0 added · 0 removed · contexts 2 added · 0 removed · edges 1 added · 0 removed

Added bounded contexts (2)

  • Fedit.PluginApi
  • fedit

Added dependency edges (1)

  • fedit → Fedit.PluginApi (coupling)

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

Survey your own repository

HelgeSverre/fedit 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 47f7f100317233f26133dfe140992f89fa8f4555 — 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.