MeshWeaver 3.0.0

Support lifetime

MeshWeaver 3.x is based on .NET 10 LTS. Its support ends on November 14, 2028, matching Microsoft's published .NET 10 lifecycle. Official 3.x release artifacts are retained throughout that support period. See the Release Support Policy.

3.0.0 is the first clean release of the 3.x line. It ran as 3.0.0-rc1 through 3.0.0-rc13 between 2026-08-13 and 2026-08-31, and none of those was a release of this build: each candidate was rebuilt on tagging rather than promoted, and SemVer sorts rc13 below rc2, so the last four were invisible to anything that asked for "the newest". Both defects are gone: 3.0.0 is one sealed continuous build, 3.0.0-ci.<n>, given its clean name, and there are no candidates any more (details in Release Process & Versioning).

Everything below shipped as continuous builds and has been running on production portals for weeks. The day-by-day record — 837 entries since 2026-07-08, 668 of them fixes — is the What's New feed under Settings; this page is the map.


A release is a promotion

3.0.0 is the same bytes as one 3.0.0-ci.<n> build. Pushing the annotated tag resolves that build's already-promoted, already-sealed image set, retags it with the clean version, copies the release marker under that name, publishes this page as the GitHub Release, and opens the pull request that moves the line to 3.1.0. Nothing is compiled twice, so what is released is exactly what was tested, baked and sealed. NuGet publication is retired with the rc line: modules compile against the platform image, never against a package feed.

The platform is modular

The AI engine, the view packs, approvals, import, mail, Teams, the MCP server, web search, course delivery, collaboration and the AKS update mechanics all left the platform image and ship as modules — installed and updated from the Store, carrying their own dependency closures, gated by the framework identity they were built against. A new installation arrives with the platform plugins already installed and granted; a plugin install brings its dependencies with it; a release states which packages it can carry and where their assemblies are.

Installations update, verify and describe themselves

Content is compiled once on CI and adopted at boot, so a platform update prepares in about a minute and no installation bakes at startup. An update waits for the packages it needs and, when it is held, says why. Every installation can state exactly what it runs, the header names the build serving you and when it was deployed, and a fresh install asks to be set up instead of assuming. Local installations consume the cloud registry, update from it, and arrive through Homebrew.

Home, apps and navigation

The home is tabbed — apps on top, one content list, pins and spaces — with one search across it. Threads have their own app, apps can be arranged in groups, the Store opens with its categories, and your deployments appear in the mesh switcher. A click can open a thread beside the page, a suggested prompt is something you can run, and a page inside a package wears that package's mark.

Documents, decks and collaboration

Select any text and comment on it; track changes come from the document's own history and the redline lives in the version comparison. Link previews render as cards, decks export exactly as they look, slide shows carry the whole deck, and a document can be shared as an email in your own name. GitHub sync is two-way and compares what you authored, not compile bookkeeping.

Language services for NodeType authoring

Roslyn-backed language services run over every NodeType's live compilation and drive three surfaces from one backend: the Coder agent's Lsp plugin (LspCheckNode, LspDiagnosticsForNode, LspHoverForNode, LspCompletionsForNode), the same four tools on the MCP server for Claude Code and any other MCP client, and live squiggles in the portal's Monaco editor. LspCheckNode is a full-substitution pre-flight: it rebuilds the whole source set with the proposed file in place, so cross-file breakage is caught before a commit, and #r "nuget:…" directives resolve through the same resolver the production compile uses.

Around it: a page waiting on a compile shows live progress, a compile reports what it costs per type, rebuilds scope to what a type actually uses, a sync or install no longer reverts a type's compile state, and a node type can say where its instances live.

AI

Models are picked by what they are for and Auto is the default; agents keep working files in the mesh and load their guidance on demand; Claude Code and GitHub Copilot are opt-in per user; OpenRouter threads cache their prompts and the token counter counts cached tokens.

The portal speaks German

Every platform string ships in English and German, on the Blazor portal and on the web and mobile clients alike, and you choose your language when you sign up. Authored content renders as authored; platform chrome inside it follows the viewer.

Clients

The React frontend looks and works like the portal, the new home is on React, React Native and Next.js, the portal can run as Blazor, the Next shell, or both, mobile deployments are configurable, and your browser tabs tell themselves apart.

Data and storage

A Snowflake storage backend joins Postgres; many nodes are created in one round-trip and plugin installs land their nodes in bulk; durable streams are mesh nodes; long activity logs stay fast, old notifications clear themselves away, and interactive kernels release their memory.

Operating a deployment

Errors in production open their own tickets; imports and startup builds report what they cost; each environment declares what it carries; a deployment can be checked for currency from inside or outside; admins enroll a user in one step; and there is a playbook for host crashes.

Security

Every release is scanned with OWASP ZAP against the deployment serving the candidate build, in two runs — a public active scan and an authenticated passive baseline — and the tag is pushed only after every finding has a disposition (OWASP ZAP Scan — Every Release). For 3.0.0, scanned on 2026-09-06: the public run reads FAIL-NEW: 0 · WARN-NEW: 5 · PASS: 136 and the authenticated run FAIL-NEW: 0 · WARN-NEW: 9 · PASS: 58. The one Medium finding unique to the signed-in portal — a DOMPurify with published cross-site-scripting advisories inside the code editor's bundle — is fixed on this line: the portal builds its own Monaco editor with a current sanitiser and a guard test keeps it there. Every other warning has a measured disposition on that page: two are false positives (the icon route synthesises an icon for any name; TRACE and OPTIONS answer 405), two more leave with the old editor loader, and the content-security policy and the cross-origin headers are carried by design, with the reasons written beside them.

How the platform itself is built

Core main merges through a merge queue with a steward; a platform change runs the plugin suites before it merges; a change that spans two repositories lands in the right order; a rule shared between repositories can no longer drift apart unnoticed; and the test tree holds zero hand-woven concurrency gates.


Upgrading from a 3.0.0-rc build

Fixes

668 fixes shipped on this line, bundled by day in the What's New feed. The classes that recur are worth naming because each now has a guard: hand-woven concurrency gates and async bridges on the actor model (the test tree holds zero and cannot regain one), writes that ran as the hub instead of the user (every write primitive carries the caller's access context), point reads of nodes that may not exist yet (the storm-breaker no longer suppresses the write it is waiting for), and builds that produced two copies of one module for one identity (a release can no longer ship modules that disagree).

Reconnecting…
The server was updated. Reloading the page to pick up the latest version.