fable-hub/Fable.Electron
64.5
Adequate · 3 October 2026
52.9k
lines of production code
F#
primary language
2
measurements over time
What this system is
This system is a toolset for generating and maintaining type-safe F\# bindings for the Electron framework. It automates the creation of these bindings by parsing Electron's API JSON specification and integrating with the Fable compiler. The project also provides a remoting library that enables type-safe inter-process communication between Electron's main and renderer processes.
Features
Initial release of the Electron API JSON parser
This change introduces the \ElectronApi.Json.Parser\ library, which parses the \electron-api.json\ specification and transforms it into F\# code. The parser handles decoding API types, documentation tags (such as OS availability and stability status), and normalizes documentation text (converting Markdown emphasis and code blocks to HTML). It also maps the parsed API definitions to Fantomas syntax trees, applying platform-specific preprocessor directives (e.g., \\#if\) to ensure generated code respects the operating system compatibility of each API.
ElectronApi.Json.Parser · high confidence
Initial release of the Electron API JSON parser and generator
This change introduces the core infrastructure for generating F\# bindings from Electron's API JSON definitions. It adds the \ElectronApi.Json.Parser\ module, which includes a code generator (\Generator.fs\) and Fantomas integration utilities (\Fantomas.Utils.fs\) to transform parsed API data into formatted F\# source code. The \Spec.fs\ file defines the target namespace (\Fable.Electron\), platform-specific compiler defines, and reserved keyword handling. Additionally, it includes initial setup for \Fable.Electron.Forge\, providing minimal global bindings for Electron Forge Vite environments, including environment variable access and Squirrel startup support.
src/ElectronApi.Json.Parser · high confidence
Introduce Fable.Electron.Remoting for type-safe IPC proxies
This release adds the Fable.Electron.Remoting library, enabling type-safe, Remoting-style IPC communication between the Electron Main and Renderer processes. It provides configuration records (RemotingConfig) and builder methods to generate proxy objects: Main process handlers can now expose functions via ipcMain.handle with automatic argument spreading and async/promise support, while Renderer processes can invoke these handlers or receive two-way messages through contextBridge-exposed proxies. The API includes new methods like buildProxySender and buildProxyReceiverDisposable, deprecating older buildClient and buildHandler methods.
Fable.Electron.Remoting · high confidence
New CI build infrastructure with GitHub CLI integration and release automation
The build system now includes a new GitHub CLI client (GhClient.fs) for managing releases and pull requests, alongside a comprehensive Workers module that handles npm operations, documentation building, and Git workflows. This enables automated versioning, tag pushing, and release creation directly from the CI pipeline, supporting the new automatic versioning workflow for main pushes.
Build · high confidence
New CI build system and automation infrastructure
The project introduces a comprehensive CI build system using Fake and EasyBuild, replacing previous ad-hoc scripts. This new infrastructure automates the download of Electron release assets, generates Fable.Electron bindings from the Electron API, and manages versioning and publishing via GitNet. It includes dedicated targets for building, testing, and packaging, with support for npm ci, documentation generation, and automated release workflows.
ci · high confidence
Architecture
Repository initialization and project structure reorganization
The repository has been initialized with a new solution structure (Fable.Electron.sln) that organizes the codebase into distinct projects for the core bindings (Fable.Electron), remoting utilities (Fable.Electron.Remoting), and a CLI tool (Fable.Electron.Forge). This change introduces a new SDK versioning strategy via global.json (targeting .NET SDK 10.0.203) and global-net9.json, adds an .editorconfig for consistent F\# formatting, and updates the README with build badges and contribution guidelines. The legacy Build.fsx script has been removed in favor of the new project-based build system.
(repo-wide) · high confidence
Behavioural changes
Fable.Electron bindings updated to match Electron v40.9.2
The Fable.Electron library bindings have been updated to align with Electron v40.9.2. This update refreshes the type definitions and API surface exposed to F\# developers, ensuring compatibility with the latest features and behaviors of Electron v40. Users relying on this library will benefit from up-to-date type safety and access to the latest Electron capabilities as defined in the v40.9.2 release.
Fable.Electron · high confidence
Removal of legacy Electron type definitions
The file \src/Electron.fs\, which contained Fable type definitions for Electron v0.37.7, has been deleted. This change removes the bundled legacy type bindings for the Electron framework from the source code, likely as part of an infrastructure update to align with newer Electron versions or external type management.
src · medium confidence
Test coverage
Added Fable.Electron.Remoting integration tests; Added build verification tests for project scoping and version delta logic; Added end-to-end tests for IPC communication and component unmounting; Added shared test types for IPC remoting validation.
Dependencies
Project restructured with .NET 9 build tooling and upgraded Fable/Electron dependencies
The project has been reorganized into a multi-project solution with a new .NET 9-based build tool (\Build.fsproj\) and a Docusaurus-based documentation site (\docs/Docs.fsproj\). The core Fable.Electron bindings have been upgraded to version 40.9.2, targeting .NET 8, and now depend on Fable.Core 5.0.0-beta.1 and Fable.Browser.Dom 2.20.0. The Fable.Electron.Remoting package is also updated to version 7.2.0. The old root-level \package.json\ and \package-lock.json\ files have been removed, with Node.js dependencies now managed within the docs and test subdirectories.
(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 65 → 65 (+0.0)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 91 → 91 (+0.0)
- Architecture 100 → 100 (+0.2)
- Maturity 72 → 72 (-0.0)
- Readiness 52 → 52 (+0.0)
- Security 69 → 69 (+0.0)
Resolved (3)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (docs/docs/guide/Overview/installation.md)
- Off-boarding risk: anonymized user #1
New (13)
- Off-boarding risk: anonymized user #1
- Outdated (npm): @types/d3-zoom
- Outdated (npm): @types/ws
- Outdated (npm): bundle-name
- 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): regenerate-unicode-properties
- Outdated (npm): regexpu-core
- Outdated (npm): source-map-js
Architecture
- Containers 0 added · 0 removed · contexts 0 added · 1 removed · edges 0 added · 1 removed
Removed bounded contexts (1)
- Fable.Electron.Remoting
Removed dependency edges (was a dependency, now gone) (1)
- Fable.Electron.Remoting → Fable.Electron
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
fable-hub/Fable.Electron 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 0108f1306724b08b2433dfef470fca7e6db5d8c9 — 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.