README: the plugin API line it builds against, and the stand-in backend

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-25 13:39:53 +02:00
parent aec0ddb8d7
commit ab81ec8988

View file

@ -11,12 +11,18 @@ byte-for-byte what the DECAL plugin sent and accepted; the golden tests under
## Building ## Building
The plugin contract comes from the OpenAC release of the version named in The plugin contract is `AcDream.Plugin.Abstractions` of the version named in
`Directory.Build.props` (`PluginApiPackageVersion`). Put that release's `Directory.Build.props` (`PluginApiPackageVersion`), currently 0.1.19-mm.1:
`AcDream.Plugin.Abstractions.<version>.nupkg` in `packages-local/`: the OpenAC branch `claude/mm-plugin-api` (peer relay, status board, object
headers and the other additions this plugin needs) packed with
`dotnet pack src/AcDream.Plugin.Abstractions -c Release -p:Version=0.1.19-mm.1`.
The package sits in `packages-staging/`; copy it to `packages-local/`.
Once that branch is released the package comes from the OpenAC release
instead. The client must be built from the same line (with
`-p:Version=0.1.19-mm.1` when built from source), or it refuses the plugin.
``` ```
gh release download v0.1.18 -R eriknihlen/OpenAC -p "AcDream.Plugin.Abstractions.0.1.18.nupkg" -D packages-local cp packages-staging/*.nupkg packages-local/
dotnet build OpenAC.MosswartMassacre.slnx dotnet build OpenAC.MosswartMassacre.slnx
dotnet test OpenAC.MosswartMassacre.slnx dotnet test OpenAC.MosswartMassacre.slnx
``` ```
@ -37,3 +43,16 @@ Streaming is off until you turn it on. The shared secret is never compiled in:
``` ```
`/mm help` lists every command. `/mm help` lists every command.
## Testing against a stand-in backend
`tools/FrameRecorder` accepts the plugin's socket like the backend does,
records every frame to a JSON-lines file, relays `share_*` frames between
subscribed clients as the backend does, and compares two recordings by
frame shape:
```
dotnet run --project tools/FrameRecorder -- record 18765 frames.jsonl
/mm ws url ws://localhost:18765/websocket/
dotnet run --project tools/FrameRecorder -- compare decal.jsonl port.jsonl
```