Changelog
Unreleased
- MCP servers. Files in
mcp/tools/,mcp/resources/andmcp/prompts/expose the project over the Model Context Protocol, served at/mcpalongside routes. Definitions come fromclovejs/mcp; resource URIs derive from the file path with[param]segments becoming{param}template variables.session-scopeddivalues are scoped to one MCP session, andrequest-scoped ones to a single call. @modelcontextprotocol/sdkandzodare optional peer dependencies — a project with nomcp/directory never loads them.clove mcpprints the resolved tools, resources and prompts;clove mcp --stdioserves the project over stdio for clients that launch a server as a subprocess.clove routesand the dev-server banner now list the MCP endpoint.bootstrap()acceptsmcpPathandmcpServerInfo.
Fixed
clove devno longer misses a file saved just after startup. A recursive filesystem watch can report itself ready before the OS is actually delivering events, so a save in that window reached no listener at all — no error, no retry, and no reload until something else changed. The dev server now snapshots the source tree before it reads it and re-checks a few times over the first couple of seconds, reloading if the two have drifted apart.- A burst of saves — a branch switch, a formatter run — now triggers one rebuild rather than one per file.
close()waits for a rebuild already in flight, instead of leaving behind an application whose singletons are never disposed.- Watcher errors are reported rather than swallowed.
0.1.0
Initial release.
- Filesystem-driven routing from
api/, with[param]segments in both file and directory form, and boot-time validation that filenames match their handler wrappers. - WebSocket endpoints from
ws/, with per-connection request scopes. - Dependency injection from
services/anddi/, withsingleton,sessionandrequestlifetimes andonDestroyteardown hooks. - Middleware pipeline from
middlewares/, with numeric-suffix ordering. - Built-in JSON middleware,
error()responses andCloveBootErrorstartup diagnostics. - Sessions with a signed
clove.sidcookie and a pluggable store. - Express interop via
engine(), andcreateApp()for embedding. cloveCLI:dev,build,types,scaffold,routes.- Generated
.clove/types.d.tsfrom a path-level scan, typingctxwith no manual declarations.