A test-harness release. No change to how the app behaves — v0.3.0 is what you get, plus the confidence that it was actually checked.
What was wrong
MSMS has eleven smoke gates that run the app end to end. They had only ever been run against the development build. Nobody had run them against the packaged binary — the thing you download — and when I finally did while verifying v0.3.0, two of them failed. They had been failing since at least v0.2.5.
Neither was a fault in the app. Both were the tests reading files that only exist in the source repository:
- four checks read the TypeScript source itself, to assert things about the code rather than about a running process — that every declared IPC channel has a handler, that the bundled Bridge plugin jar matches what it was built from, that every route in the web router appears in the documented API surface
- one rewrites the checked-in
openapi.json
A packaged app has none of that. It is compiled JavaScript in an archive, extracted to a temp folder with no src in it — so those checks crashed and took their whole gate down with them, after having already passed everything they could genuinely test.
Why nobody could see it
A packaged Windows app has no console attached. Every message the gates print went nowhere, so a packaged gate could only ever report a bare exit code — no assertion name, no reason, nothing to act on.
The gates now write their transcript to msms-data/logs/smoke.log as well. That one change turned an opaque 1 into the actual defect on the first run.
What is different now
- The transcript is readable in a packaged run.
- Source-derived checks skip when there is no source tree, and say so instead of crashing — and the guard is itself guarded: it refuses to skip when a source tree is present, and fails loudly if it is standing in the repository and the file it looks for has moved. A check that silently stops running is worse than one that fails.
npm run gatesandnpm run gates:packagedrun all eleven, against the dev build or the built binary, printing the transcript of anything that fails. Verifying the artifact is now a command rather than an intention.
v0.3.1 dev build 11/11 pass
packaged binary 11/11 pass (v0.3.0: 9/11)
If you are on v0.3.0
There is no functional reason to update — the app code is identical. Take it if you would rather run a build whose full gate set has been verified end to end.
Everything in the v0.3.0 notes still applies, including the one thing that needs a manual step: if you had a website configured before v0.3.0, set "Round to (blocks)" to 0 in Website settings to publish exact player positions. That value is saved in your config and was deliberately not rewritten.
Windows x64. The portable exe keeps all its data next to itself; the setup installs normally.