Skip to content

Releases: Neftedollar/FsLangMCP

FsLangMcp 0.18.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 12:59
84e2b5d

FsLangMcp 0.18.0 hardens semantic search and project loading. It retains 35 MCP tools, but deliberately changes the find continuation contract. This is still a pre-1.0 release.

Highlights

  • Consistent find pagination: continuations are bound to the query and complete result/coverage stream. Changed requests or source results are rejected explicitly instead of mixing pages and silently skipping/repeating sites. Incomplete continuation validation delivers no sites and can request a retry with the same cursor.
  • Project reloads reclaim MSBuild threads: ProjInfo/MSBuild evaluation runs in short-lived helper processes, preventing those retained worker threads from accumulating in the long-lived MCP host. Cancellation drains the helper process tree; cache hits start no helper.
  • Compiled backtick names resolve correctly: definition lookup finds source-spelled names, including unquoted queries, while retaining semantic identity and ambiguity rules.
  • Explicit snippet placement: check accepts snippetPosition="start"|"end"; the default remains end, preserving final-source-file visibility and snippet-only diagnostics.
  • Test infrastructure hardening: nested outline workers are drained before fixture cleanup, fragile one-second regex assertions were replaced, and lifecycle tracing improves future diagnostics.

Upgrade and compatibility

dotnet tool update --global FsLangMcp --version 0.18.0
fslangmcp --bootstrap-tools

Restart the MCP connection/server process after updating, and call set_project again if you use active project context.

Discard old find cursors and repeat the original query without cursor; old offset-only tokens now return cursor_version_unsupported. A changed query returns cursor_query_mismatch, and a changed result stream returns cursor_stale. Follow retrySameCursor only when the response explicitly permits it. Other tools keep their cursor formats. Cursors do not provide an atomic filesystem snapshot or act as authorization tokens.

The supported SDK floor remains .NET 10.0.100; release/runtime validation uses 10.0.400. Bootstrap installs the exact external-tool versions embedded in this release, not the latest upstream releases, and can downgrade manually updated tools.

Known boundaries

  • External runtime-tool pins are unchanged. The README dependency guidance documents their known advisory risk; this release does not patch those bundled dependencies.
  • Issue #199 remains open. The included test hardening does not prove the historical intermittent testhost hang's root cause. Its separate unmerged fixture-stream candidate is not included.

Validation

  • Strict Release builds and all 978 tests passed on both the primary and minimum SDKs; the primary CI run measured 81.3% line coverage.
  • The tag-level publication workflow independently passed all 978 tests for the release bits and packaged-runtime checks on Linux, macOS, and Windows, including actual project-reload thread reclamation.
  • The published GitHub package matches the workflow's verified SHA-256. NuGet.org adds a repository signature, so its archive checksum differs; that signature was verified, and all 149 extracted payload files match the GitHub package byte-for-byte.
  • An isolated installation of the publicly downloaded NuGet package reports 0.18.0 in the CLI, MCP initialization, and fslangmcp_version.

See the full changelog and changes since 0.17.1.

FsLangMcp 0.17.1

Choose a tag to compare

@github-actions github-actions released this 05 Sep 19:08
1c00084

FsLangMcp 0.17.1 is a correctness-hardening patch. The 35-tool MCP surface remains compatible; this is not the 1.0 contract freeze.

Highlights

  • find and project_health retain missing declared solution members, so incomplete workspaces cannot silently become authoritative not_found results.
  • find shares one deadline across admission, position resolution, discovery, project loading, semantic work, fallback, and response construction. Shared workers follow all live callers and retain their actual admission lifetime.
  • Complete find responses are bounded to 60,000 UTF-16 code units in production JSON. Snippets and optional sections are capped; blocked pages never advance a cursor.
  • Evaluated external linked Compile items remain visible under the explicit project-inspection policy, without weakening ordinary workspace containment.
  • Pre-cancelled process requests are checked immediately before launch.
  • check no longer starts fallback discovery after every caller has expired; deterministic tests cover surviving callers, retries, busy admission, and exact-worker cleanup.

Compatibility and validation

  • .NET SDK 10.0.100 is the supported build floor; release/runtime validation remains pinned to 10.0.400.
  • The complete patch passed 805 tests, strict Release builds, the minimum-SDK gate, and live Linux/macOS/Windows checks.
  • Publication uses one tested and version-verified package artifact, with the same bytes uploaded to GitHub and NuGet. The attached checksum covers the GitHub asset; NuGet.org adds a repository signature, so its downloaded archive has a different checksum. After publication, the NuGet signature was verified, all extracted payload files matched the GitHub package, and an isolated installation confirmed 0.17.1 in the CLI and both MCP version responses.
  • Query/snapshot-bound cursor runtime remains deferred to #259 for 0.18.0. Existing cursor compatibility is unchanged.

Update with dotnet tool update --global FsLangMcp --version 0.17.1, then restart existing MCP server processes so clients use the new runtime.

See the full changelog for details.

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 16:56
765177c

What's Changed

Full Changelog: v0.16.0...v0.17.0

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 18:18
e04acc1

What's Changed

  • fix: return a typed sdk_not_found error instead of a lost transport on unsatisfiable SDK pins by @Neftedollar in #200
  • fix: honest not_warmed readiness state and tear-safe workspaceReadyAt by @Neftedollar in #201
  • fix: resolve NuGet packageId to the assemblies it ships; self-explaining miss payloads by @Neftedollar in #203
  • fix: explain check's totalDiagnostics with infoCount, belowSeverityFloorCount, and a note by @Neftedollar in #202
  • fix: find reports sweep breadth honestly via scopeNote by @Neftedollar in #204
  • fix: reconcile check workspace perProject entries with infoCount by @Neftedollar in #210
  • feat: per-site inferred type context for record-field sweeps (find includeSiteTypes) by @Neftedollar in #211
  • fix: budget public_api and file_outline pages by rendered size; hint the narrowing in-band by @Neftedollar in #212
  • chore(release): 0.16.0 by @Neftedollar in #214

Full Changelog: v0.15.0...v0.16.0

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 00:48
ad448fe

What's Changed

  • fix: stabilize FsLangMCP 0.14.0 by @Neftedollar in #171
  • docs: fix reference drift from Codex review threads (config TOML, arg names, quickstart numbers) by @Neftedollar in #162
  • fix: normalize MSBuild backslash Include paths on Unix; honest partial coverage (#160) by @Neftedollar in #161
  • chore(deps): bump actions/setup-dotnet from 5.4.0 to 6.0.0 by @dependabot[bot] in #173
  • chore(deps): bump actions/checkout from 4.2.2 to 7.0.1 by @dependabot[bot] in #174
  • chore(deps): bump actions/setup-node from 4.4.0 to 7.0.0 by @dependabot[bot] in #175
  • Bump the analyzers group with 2 updates by @dependabot[bot] in #176
  • Bump Microsoft.NET.StringTools from 18.4.0 to 18.9.6 by @dependabot[bot] in #180
  • chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in #172
  • Bump FSharp.Compiler.Service from 43.12.203 to 43.12.400 by @dependabot[bot] in #177
  • feat(deps): migrate to FsMcp.Server / FsMcp.TaskApi 2.0.0 by @Neftedollar in #182
  • chore(deps): bump softprops/action-gh-release from 2.6.2 to 3.0.2 by @dependabot[bot] in #181
  • chore(deps): sweep the packages Dependabot's PR cap hid by @Neftedollar in #183
  • fix: make includeGeneratedFiles reachable; scope snippet diagnostics to the snippet by @Neftedollar in #188
  • chore(release): 0.15.0 by @Neftedollar in #185
  • docs: document the 0.15.0 behavior changes agents will hit by @Neftedollar in #189

New Contributors

Full Changelog: v0.13.2...v0.15.0

v0.13.2

Choose a tag to compare

@github-actions github-actions released this 10 Aug 11:51
bb19a2a

What's Changed

Full Changelog: v0.13.1...v0.13.2

v0.13.1

Choose a tag to compare

@github-actions github-actions released this 01 Aug 23:48

Full Changelog: v0.13.0...v0.13.1

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 23:02

Full Changelog: v0.12.3...v0.13.0

v0.12.3

Choose a tag to compare

@github-actions github-actions released this 06 Jul 05:40
7b6b284

What's Changed

  • fix(0.12.3): address Codex P2 review — find-timeout coverage + Directory.Build.props analyzers by @Neftedollar in #149

Full Changelog: v0.12.2...v0.12.3

v0.12.2

Choose a tag to compare

@github-actions github-actions released this 05 Jul 08:57
f41c025

What's Changed

  • docs: DX + discoverability overhaul (accurate README, user docs, examples, launch kit) by @Neftedollar in #143
  • docs: terminal demo (SVG) in README — real grep-vs-find contrast by @Neftedollar in #145
  • docs: animated agent-session GIF in README (agent calling our MCP) by @Neftedollar in #146
  • fix(0.12.2): find-hang timeout + 10 confirmed correctness findings (#100) by @Neftedollar in #147

Full Changelog: v0.12.1...v0.12.2