This repository was archived by the owner on Sep 17, 2026. It is now read-only.
Changes
- [deps] Switch bundling from webpack to esbuild #142
- [deps] Migrate the build from yarn and lerna to pnpm workspaces #144
- [launch] Expose the address a launcher bound to via
listeningandportonJsonRpcGLSPServerLauncher, so an embedder no longer has to parse the startup message to learn an OS-assigned port #150 - [launch] Add an
onConnectionevent toSocketServerLauncherandWebSocketServerLauncher, so an embedder can observe accepted connections without reaching for the protected server field #150- the web socket event carries the upgrade request next to the socket, which is the only place its headers and query are still available
- [launch] Release the server socket again when a restarted launcher is shut down #150
WebSocketServerLaunchernow also closes the HTTP server it mounts on, whichwsleaves listening because it did not create it
- [mcp] Return results that satisfy the declared output schema, so a
create-edgesdry run returns its verdicts instead of an output-validation error #152 - [mcp] Stop reporting success for work that was not done #152
save-modelwrites to an explicitfileUrieven when the command stack is clean, instead of skipping a save-asundoandredoreport how many commands they applied, not how many were requestedmodify-nodesandmodify-edgesreport an error for entries that request no change, instead of counting them as modified
- [mcp] Reject unknown element ids in
validate-diagramandset-view, which previously dropped them and returned an empty, clean-looking result #152 - [mcp] Keep tools out of the MCP catalog when no diagram type supports them, so
layoutis no longer advertised without a boundLayoutEngine#152- the new
isSupportedByDiagramType()hook on the diagram tool and resource bases covers statically bound dependencies;canRegister()keeps gating capabilities of the connected GLSP client
- the new
- [mcp] Align tool schemas and descriptions with what the tools actually accept and apply #152
set-selectionaccepts the documented empty-array form for clearing the selection, andundo/redorequire integer countsmodify-nodespositions are parent-relative andcreate-nodespositions absolute, matching the dispatched operations- the
create-*tools echo the created element when its type differs from the requestedelementTypeId, instead of reporting a creation failure
Potentially Breaking Changes
- [elk] Replace the no-op ELK factory in web worker contexts with a working in-process implementation #141
elkLayoutModulewas effectively a no-op in the browser and now actually performs layout, so adopters that relied on that behavior have to adapt accordingly
- [layout] Keep applying computed bounds when an individual entry cannot be applied #149
applyRoutenow returnsGEdge | undefinedinstead ofGEdgeapplyElementAndBounds,applyAlignmentandapplyRouteno longer throw for an element the index cannot resolve, they report it as not applied.applyRoutingPointsstays strict.
- [launch] Launchers register what
shutdownhas to release in the newGLSPServerLauncher.registerDisposableshook, called once per launch, rather than in their constructor #150- A custom launcher that pushes into
toDisposefrom its constructor keeps compiling but loses that cleanup after the firstshutdown, becausedisposeempties the collection. Move those registrations into an override ofregisterDisposables.
- A custom launcher that pushes into
- [mcp] The MCP tool handler bases take an optional output type parameter, e.g.
AbstractMcpDiagramToolHandler<I, O>, bound to the handler's declaredoutputSchema#152- The parameter defaults, so a handler without an
outputSchemais unaffected. A subclass that passessuccess()a payload not matching the overridden handler's output schema now fails to compile, instead of producing an error result at call time.
- The parameter defaults, so a handler without an
- [mcp]
modify-nodesrejectsposition/sizefor elements that are not aGNode, which core's bounds handler silently ignored while the tool reported success #152- Adopters who bind a bounds handler covering more element kinds override the guard in
ModifyNodesMcpToolHandler.
- Adopters who bind a bounds handler covering more element kinds override the guard in
Full Changelog: v2.7.0...v2.8.0