From ab81ec8988734d7cb92717c973c089310a7d67f1 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 25 Sep 2026 13:39:53 +0200 Subject: [PATCH] README: the plugin API line it builds against, and the stand-in backend Co-Authored-By: Claude Opus 5.5 (1M context) --- README.md | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a076e9a..3677e82 100644 --- a/README.md +++ b/README.md @@ -11,12 +11,18 @@ byte-for-byte what the DECAL plugin sent and accepted; the golden tests under ## Building -The plugin contract comes from the OpenAC release of the version named in -`Directory.Build.props` (`PluginApiPackageVersion`). Put that release's -`AcDream.Plugin.Abstractions..nupkg` in `packages-local/`: +The plugin contract is `AcDream.Plugin.Abstractions` of the version named in +`Directory.Build.props` (`PluginApiPackageVersion`), currently 0.1.19-mm.1: +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 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. + +## 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 +```