diff --git a/android/PLAN.md b/android/PLAN.md index 4afac85..8f02705 100644 --- a/android/PLAN.md +++ b/android/PLAN.md @@ -1716,6 +1716,24 @@ push, and Play (M6–M8) follow the designed app. `PlayerNotifications.jsx`, `coreTriggers.js`, `templateSeeds.js`), which belong to `website/`, not the app. + **Built 2026-10-23, Android-app#58 into `edge`.** 578 strings, split as 253 core / 189 UO / + 136 Rust, with the 14 core strings reworded as the table above says. Three outcomes beyond the + plan: + - **Moderation and the support queue are now gated on the shard capability** (org lead, + 2026-10-23). The trace found that both drawer rows carried no capability, yet both call + `/admin/shard/*`, which is module-uo's admin mount. So a moderator on a Rust-only site saw + a UO form whose every action failed. They are UO screens now, and their strings are in + `strings_uo.xml`. + - **The guard declares `src/main/res` as a Test input** in `app/build.gradle.kts`. A + reworded string changes no class, so without that input Gradle left `testDebugUnitTest` + UP-TO-DATE and the guard did not run again. + - **Found, not fixed: every 503 is "the game server is offline".** `ErrorKind.SHARD_OFFLINE` + takes every 503, and core's `siteMode` middleware also answers 503 (body + `mode: "maintenance"`) to signed-out content reads. So during maintenance, News says + *The game server is offline right now*. It said *The shard is offline* before, which was + just as wrong. A maintenance error kind, read from that body, is the likely fix. It is + outside M20 and waits for a decision. + ### Deferred (not a milestone) - **Platform Teams in the app** — **deferred 2026-08-17, no app work scheduled.** The website is