chore(release): cut edge over to main — the Rust screens and the app's words (v0.6.0) #59
Reference in New Issue
Block a user
No description provided.
Delete Branch "edge"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This is the Android cutover.
edge→maincarries 20 commits (and their merges) since v0.5.0: the whole Rust leg plus M20. After it merges I tagv0.6.0, a minor bump for new features on a pre-1.0 app, andrelease.ymlbuilds the signed APK and publishes the release.What ships
Rust (Module-Rust's screens, gated on the
rustcapability)Core
StringVocabularyTest; Moderation and Support queue appear only where the UO module is installedFixes: who is online is said to be withheld, never "nobody"; a link's when and where; the emulator walk's findings; CI's
setup-androidpackage fix.Verified
edgeatc41aff9(identical to this head),./gradlew testDebugUnitTest lintDebug assembleDebugpasses: 758 unit tests, 0 failures. This PR's ownpr-checksrun gates the merge.After the merge
v0.6.0on the merge commit, which triggersrelease.yml.platform.json(Android-app v0.6.0, Module-Rust v0.5.1 once Module-Rust#61 releases) together with the retakenrust-feed/app-rust-serverscreenshots.🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
RustServerDto gains nextWipe { at, source }, null both when the operator set no schedule and against a module older than phase 16. The server list row and the server screen's header read "Next wipe Thu 1 Oct, 19:00 · in 6 days" in the phone's own zone, and "(rescheduled)" for a one-off date the operator set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeYEach leaderboard row carries `titles: [{ text, color }]` from a phase-17 module: the chat titles the player holds now. Drawn as chips under the name, in the operator's colour with black or white ink chosen by WCAG contrast (the website's rule). Absent from an older module, so the field defaults to empty and nothing is drawn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY- The map (D302, D303), as the site draws it: - an NPC's card is its name, or "(boss)" or "(a boss's add)"; - the card names its event, with the title from the run resolver's existing calendar read; - a boss is bigger and magenta; - a boss outside any event is a world-layer marker with its name. - The event screen renders the live occurrence's progress lines (MODULE_API 1.12.0, D304): "Bandit: 2 of 3 left", "Walk Juggernaut: 59%". It re-reads quietly every 15 s while the event is live. - DTOs gain the new fields with defaults, so an older site decodes as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeYFound by the M20 trace, and fixed in this PR by the org lead's decision. Both rows call /admin/shard/*, module-uo's admin mount, but they carried no capability. So a moderator on a Rust-only site saw "Moderation" in the drawer and opened a UO form ("Serial (0x…)", kick or ban by UO account) where every action failed. Both rows now declare Capability.SHARD, as the player rows do, so they are UO screens and their strings belong in strings_uo.xml, where step 1 put them. A new MenuCapabilityGatingTest case covers it: a moderator on a Rust-only backend sees neither row but keeps the Dashboard, and on a UO backend sees both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY