diff --git a/README.md b/README.md index caa4035..4bcd7f0 100644 --- a/README.md +++ b/README.md @@ -63,3 +63,36 @@ POST /api/minesweeper/start idempotent; builds the prefix on a cold install POST /api/minesweeper/stop /api/plugin-ws/minesweeper the display, as RFB ``` + +## Where this came from + +Built first as a standalone directory, `officer-dev/wine-minesweeper`, and folded in here when it became a +plugin. Two things from that work are worth keeping, because both are judgement calls somebody will +otherwise make again from scratch. + +**Wine came from Ubuntu noble, not the WineHQ repository.** The distribution package is older — 9.0 — and +that is fine for a 2017 VB6 application. The alternative was adding a third-party apt source, with its key +and its update cadence, to a machine that runs a bitcoin wallet and a mail store, for a game of Minesweeper. +If a future version genuinely needs newer wine, that trade is worth revisiting; until then it is not. + +**Enabling i386 pulled four krb5 libraries forward** within noble-updates. That was checked before +installing rather than after: nothing moved near libc, systemd, openssl or postgres. Worth re-checking on +any host where `dpkg --add-architecture i386` is new, since it is the one step here that changes how the +whole machine resolves packages and is never undone by uninstalling the plugin. + +### The original verification baseline + +From the standalone build, on Ubuntu noble with wine 9.0. Useful as a comparison when something feels wrong +rather than as a test to run: + +- The game launches in about a second and draws the classic beginner board at **152x214**. +- A synthetic `xdotool` click opens a region and starts the timer — so **input reaches the game**, which is + the part that matters for a playable stream and the part a screenshot cannot tell you. +- x11vnc completes an **RFB 003.008** handshake and reports an 800x600 32bpp framebuffer. +- Cold start, display through to game window, in under two seconds. That excludes building the prefix, + which happens once and takes minutes. + +The shell prototype that ran all this (`bin/session.sh`) is not kept. Everything it knew — waiting for a +usable display rather than a live pid, parking the window at the origin, and clearing the whole wine +process family on stop — is in `sidecar/session.ts`, with the reasoning attached to the code that depends +on it.