diff --git a/PLAN.md b/PLAN.md index 80e01da..557f2ad 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1076,7 +1076,7 @@ hashed off each object's serial, so a re-run reproduces the same world and a scr be retaken later and still match. **What the rig found.** A screenshot rig is an integration test with a human in the loop, and -this one turned up five things nothing else had: +this one turned up six things nothing else had: - **A fresh `module-uo` install pinned wire protocol 3 while the sidecar speaks 4**, so a new deployment 409s on every shard read until an admin edits the number by hand. The protocol-4 @@ -1096,6 +1096,9 @@ this one turned up five things nothing else had: the site connects is therefore invisible — the page said none while the shard had two. - **The Android news list prints raw ISO timestamps.** Found while choosing the phone captures; the news screen was dropped from that set rather than shipping a picture of it. +- **The app says "1 players online".** `shard_online_count` and `ShardEventText.kt` both + interpolate a count into a fixed plural. Found in the retake after a character was signed in, + and it is in the shipped phone capture — a `plurals` resource is the fix, in the app. The first is fixed. The rest are raised as product observations, with the rig working around them: the guilds are built *after* the rename, and the IDOC staging is two passes with a wait @@ -1114,15 +1117,24 @@ The shard screen is the one worth having. It shows the two houses entering IDOC activity feed — the same event that reached `/uo/houses` in the browser, on the same rig, in the same minute. -**One thing that did not happen: a character logged in.** The org lead asked for it, so the -scaffolding sets a known password on a seeded account and a client was driven as far as its -login screen. ClassicUO stores its password crypted and mangles a plaintext one from -`settings.json`, so auto-login fails; synthetic clicks reach the client but synthetic text -does not; and the remaining route — taking the foreground and typing — was tried once, missed -the client, and typed into the browser window the person at this machine was using. It was -not tried again. **Players online therefore reads 0, and the page is honest about a quiet -realm.** The client is left at its login screen: one manual sign-in and -`npm run screens:capture shard-status app-shard` retakes the two frames that would change. +**The character that had to be logged in by hand.** The org lead asked for a player in the +world, and the scaffolding does its half — it sets a known password on a seeded account, +because `BridgeSeeder` gives every account a random GUID nobody kept. Driving the client is +where automation stopped. ClassicUO stores its password crypted, so a plaintext one in +`settings.json` decrypts to garbage and auto-login fails; posted mouse clicks reach the client +but posted text does not; and the remaining route — taking the foreground and typing — was +tried once, failed to take focus, and typed into the browser window the person at this machine +was using. It was not tried again. + +The org lead signed in instead, and the two frames that depended on it were retaken: the shard +page now reads **1 player online, in Britain**, and the app's shard card agrees. Both came from +the same `npm run screens:capture shard-status app-shard`, which is the whole point of D45 — +the thing that changed was the world, not the recipe. + +Two things that pass is worth noticing here. Presence reaches the public page as **counts and +regions, not names**, which is the visibility framework doing its job unprompted. And the +**guild board's "online" column did not move**: it is refreshed only when a guild's signature +changes, which is the same defect as the stale roster above wearing a different hat. **A layout decision worth recording.** The `/features/` figures are one-up at the column's full width, not a two-column grid. Two-up was built first and is the obvious layout for a set diff --git a/public/screens/app-shard.webp b/public/screens/app-shard.webp index 75d01cf..931a6d4 100644 Binary files a/public/screens/app-shard.webp and b/public/screens/app-shard.webp differ diff --git a/public/screens/shard-status.webp b/public/screens/shard-status.webp index 7923977..be8a545 100644 Binary files a/public/screens/shard-status.webp and b/public/screens/shard-status.webp differ diff --git a/src/components/home/WhatItLooksLike.astro b/src/components/home/WhatItLooksLike.astro index a15169c..1b00c9f 100644 --- a/src/components/home/WhatItLooksLike.astro +++ b/src/components/home/WhatItLooksLike.astro @@ -22,9 +22,9 @@ import Screenshot from '../Screenshot.astro';

What it looks like

The other end of that diagram

- A demo deployment with a real shard behind it. The gold supply, the uptime and the online - count are read from the game server over the bridge — none of it is typed in, and the page - is honest about a quiet realm. + A demo deployment with a real shard behind it. The gold supply, the state of the link and + the player online in Britain are all read from the game server over the bridge. None of it + is typed in, and none of it is a mock-up.

diff --git a/src/data/screens.mjs b/src/data/screens.mjs index 6bc4957..0647203 100644 --- a/src/data/screens.mjs +++ b/src/data/screens.mjs @@ -71,9 +71,9 @@ export const screens = [ id: 'shard-status', route: '/uo/shard', admin: false, - alt: 'The shard page of a Runic Gateway site, showing the shard online, its gold supply, the state of the shard link and how many players are online.', + alt: 'The shard page of a Runic Gateway site, showing the shard online, its gold supply, the state of the shard link, and one player online in Britain.', caption: - 'The shard console. Every number on it came over the bridge from a running game server — nothing here is stored by hand.', + 'The shard console. Every number on it came over the bridge from a running game server — including the player who was standing in Britain when this was taken.', family: 'web', }, { @@ -187,9 +187,9 @@ export const screens = [ id: 'app-shard', route: '/shard', admin: false, - alt: "The app's shard screen, showing the shard online with its gold supply, links to champion spawns, guilds, governors and falling houses, and a live activity feed.", + alt: "The app's shard screen, showing the shard online with one player and its gold supply, links to champion spawns, guilds, governors and falling houses, and a live activity feed.", caption: - 'The same bridge feeds the phone. The activity list is live — those two houses entered their final decay stage while this was open.', + 'The same bridge feeds the phone: the same player online, and an activity list that is live — those houses entered their final decay stage while it was open.', family: 'phone', }, {