goswinr/Fesh
64.2
Weak · 2 October 2026
12.3k
lines of production code
F#
primary language
2
measurements over time
What this system is
Fesh is an F\# scripting editor that provides both a standalone application and a hosted component for embedding in other software. It features an interactive F\# session with asynchronous evaluation, MSBuild-based compilation, and a rich text editor with syntax highlighting and auto-completion. The system manages user configuration, file tabs, and automatic updates via Velopack, while also including utilities like a custom XML parser and code alignment tools.
Features
Fesh: New F\# editor with async evaluation, MSBuild compilation, and Velopack updates
Fesh is a new F\# editor application that provides a hosted editor component for embedding in other applications and a standalone mode. It features an F\# Interactive (FSI) session with support for both synchronous and asynchronous evaluation modes, allowing users to run code interactively. The editor compiles scripts using MSBuild or the dotnet CLI, automatically handling NuGet package references, DLL references, and \#load directives. It includes syntax highlighting, code folding, error squiggles, and auto-completion. The standalone version uses Velopack for automatic updates, checking for new releases on startup and applying them with a restart. The application supports multiple file tabs, file watching, and customizable settings.
Src · high confidence
Initial project structure and documentation
The repository is initialized with core documentation files including a CHANGELOG.md (adhering to Keep a Changelog and Semantic Versioning), a CLAUDE.md providing project overview and build instructions, and a LICENSE.md (MIT). The initial codebase includes utility modules for synchronization and timers (03\_Util.fs), WPF helpers (04\_UtilWPF.fs), configuration management (05\_Config.fs), UI layout and appearance (11\_UI.fs), log output handling (12\_UI\_Log.fs), background rendering for errors and column rulers (31\_UI\_BackgroundRenderer.fs), tab management (32\_UI\_Tab.fs), tooltip formatting (33\_ToolTipFormatter.fs), and type info tooltips (34\_UI\_TypeInfoTooltip.fs).
(repo-wide) · high confidence
Introduce Fesh, a new F\# scripting editor
This change introduces the core UI components for Fesh, a new interactive F\# scripting editor. The new files in Src/Views define the main application window (FeshWindow), the tabbed editor interface (Editor, TabsAndLog), and the command system (Commands) which provides features like evaluating code in FSI, file management, and syntax highlighting. It also includes a file watcher (FileWatcher) that detects external changes to open files and prompts the user to reload them, and a font manager (Fonts) for configuring editor and log typography.
Src/Views · high confidence
New editor features: code alignment, auto-reference fixes, and bracket highlighting
The editor now includes an alignment tool that formats selected code by aligning characters like equals signs, colons, and commas while ignoring those inside string literals. It also automatically detects missing assembly references in script files and prompts the user to insert the corresponding \#r directive to resolve errors. Additionally, a new bracket highlighter provides visual pairing for brackets, parentheses, and braces, including support for F\# record and array delimiters.
Src/Editor · high confidence
Behavioural changes
2 commits (1 fix) modifying .ionide
A change to existing behaviour in .ionide — 2 commits (1 fix), 1 file.
.ionide · medium confidence · unverified
New configuration system for Fesh editor settings
The application now uses a new configuration module in Src/Config to manage user preferences and state. This includes tracking recently used files, managing open tabs across sessions, and persisting code folding states. It also handles F\# Interactive (FSI) arguments, auto-completion statistics, and default code templates for new files. Settings are now stored in the user's Roaming AppData folder to ensure they are preserved during application updates, with specific subfolders for hosted environments like Rhino, Revit, and AutoCAD.
Src/Config · high confidence
Updated application icon resource
The application's icon resource has been updated to use a new logo file (logo.ico) instead of the previous LogoFSharp.ico. This change affects the icon displayed in the application installer and popout views, providing a refreshed visual identity for the software.
Media · high confidence
Test coverage
Added tests for custom error-tolerant XML parser
Added a new test file (Test/Test custom XML parser.fsx) that exercises a custom, error-tolerant XML parser implementation. The tests verify the parser's ability to handle malformed XML and whitespace trimming, addressing issues with the standard System.Xml.Linq parser.
Test · high confidence
Dependencies
Split project into FeshHosting and FeshStandalone, removing legacy Seff
The build structure has been refactored to separate the library and executable concerns. A new FeshHosting.fsproj defines the core library targeting net8.0-windows with conditional package references for FSharp.Core and FSharp.Compiler.Service across net472, net8, net9, and net10 targets. A new FeshStandalone.fsproj defines the WinExe application targeting net48 and net10.0-windows, bundling necessary runtime assets like netstandard.xml for tooltips. The legacy Seff.fsproj project has been removed entirely.
(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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 56 → 64 (+8.5)
- Rubric changed (rubric-2026.09.13 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 92 → 90 (-1.5)
- Architecture 96 → 98 (+1.5)
- Maturity 62 → 62 (+0.0)
- Readiness 51 → 51 (-0.1)
- Security 47 → 88 (+40.9)
Resolved (33)
- Change coupling: ErrorHighlighter.fs ↔ SemanticHighlighter.fs (Src/Editor/ErrorHighlighter.fs)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (13–14 lines × 2) (Src/Editor/SelectionHighlighter.fs)
- Duplicated block (14 lines × 3) (Src/Editor/RectangleSelection.fs)
- Duplicated block (15 lines × 2) (Src/Views/FileWatcher.fs)
- Duplicated block (16–18 lines × 2) (Src/Views/FileWatcher.fs)
- Duplicated block (6 lines × 2) (Src/Views/StatusBar.fs)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 13 more
New (6)
- Duplicated block (14 lines × 3) (Src/Editor/RectangleSelection.fs)
- Duplicated block (6–7 lines × 2) (Src/Editor/RectangleSelection.fs)
- Duplicated block (7 lines × 2) (Src/Editor/RectangleSelection.fs)
- Duplicated block (8 lines × 2) (Src/Editor/SelectionHighlighter.fs)
- FileTooLong: Src/Fsi.fs (Src/Fsi.fs)
- Outdated: Ionide.KeepAChangelog.Tasks
Changes since last survey
- 29 commits — 14 feature/other, 15 fixes
By area
- Src/Views — 12 commits
- Src/Fsi.fs — 6 commits
- (root) — 5 commits
- Src/Editor — 4 commits
- .github/workflows — 1 commit
- Src/Config — 1 commit
Notable commits
- fix: fix .NET version display
- fix: fix Close and Delete deleting the file when closing the tab is canceled
- fix: fix Rename deleting the file when the name stays the same
- fix: fix Save Incrementing dropping the character before a single digit
- fix: fix bracket highlighter
- fix: fix crash when deleting in a rectangular selection on the first line
- fix: fix crash when swapping the last word of the document to the right
- fix: fix endless loop in selection highlighter when the word is cleared while searching
- fix: fix file watcher false positives and stale state
- fix: fix file watcher not resuming after a file was deleted
- fix: fix file watcher state handling
- fix: fix go to error line after a runtime error in FSI
- fix: fix scrollbar adorners piling up on every tab switch
- fix: fix tab shown as unsaved after saving a document with tabs or LF line endings
- fix: watch bug 1
- change: Separate FSI evaluation request from code data
- change: add libFolders to HostedStartUpData
- change: ask before resetting FSI during an evaluation and raise OnReset
- change: changelog 0.33.0
- change: changelog for 0.33.1
- …and 9 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
goswinr/Fesh 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 2 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 d6fa59b84f67c98db2280f06d966da2d5c0f6149 — 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-351388015767.