HelgeSverre/fedit
64.7
Adequate · 3 October 2026
22.5k
lines of production code
F#
with JavaScript
2
measurements over time
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.