feat(notifications): a Rust notification on a phone (module-rust phase 11) #50
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/rust-phase-11-notifications"
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?
What & why
module-rustphase 11, R10's leg C (M16). The inbox and preferences screen already render every Rust trigger from the wire, and/rust/servers/<id>already opens natively. This PR fixes the three places where the app still assumed its site was a UO shard. Design of record:docs/modules/rust/PLAN.md§26 (D69–D72), in docs#266.NotificationSettingsViewModeldecided "linked" by callingmodule-uo's/player/shard/accounts. On a Rust site that failed, so the whole raid alert row was disabled, in every channel: it could not be switched on or off. The newLinkedAccountRepositoryasks/player/rust/linksor/player/shard/accountsdepending on capability.pushNeedsLink/canSetModereplaceitemSelectable: the link holds back only switching push on, and turning anything off is never refused.PushContentResolverpulls the first inbox page (five-second timeout) and titles the notification with the row thenotification:<id>ref names. The row's trigger must match the tickle's stream. Any failure falls back to the per-stream title, which is also the lock-screen public version (VISIBILITY_PRIVATE).PushServicenow launches each tickle in its own job, because insidecollectLatestthe next tickle would cancel a pull./player/rustgoes to My Rust account, and/rust/servers/<id>?tab=<tab>opens on that tab, only for exactlytab=and a tab the app has.?tab=clansstill hands off to the browser.How it was tested
testDebugUnitTest: 672 tests, 0 failures (657 onedge). New:LinkedAccountRepositoryTest,PushContentTest, and D71 cases inRustNavigationTest. The gating tests are rewritten for the new rule.lintDebugandassembleDebugare green.s22_ultra) against real core onmain, with module-rust installed, the protocol-7 sidecar in the Oxide rig's container, and the relay on publicntfy.sh(D72):https://ntfy.sh/<topic>. A rig raid reached the phone 19 s later as "Your base is being raided — A door was destroyed in P16 on Oxide rig." (vis=PRIVATEplus a public version). The tap opened the inbox, and the row opened the server natively.?tab=leaderboardopened on Leaderboard,/player/rustopened My Rust account, and?tab=clansopened a Custom Tab.dumpsys).Checklist
AI-assisted contributions (required)
Claude Code (Claude Opus 5.5). I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with aCo-Authored-By/Assisted-Bytrailer.License
🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY