fix(rust): say who is online is withheld, never that nobody is #49

Merged
whitlocktech merged 1 commits from fix/rust-presence-visibility into edge 2026-09-23 05:36:36 +00:00
Member

The app's half of Module-Rust's presence fix (docs/modules/rust/PLAN.md §23; docs/android/PLAN.md gains an M14 amendment). The org lead's rule: nothing names who is online by default. Below an operator-chosen audience (staff unless widened), the module now withholds the Online list and every feed item that names a player who was on. The count stays public.

Without this, the app would render the withheld list as "the island is empty" on a full server.

  • RustOnlineDto carries hidden, count and audience; RustEventListDto carries presenceHidden and presenceAudience. The repository and view model keep the whole answer rather than its rows.
  • The Online tab says "2 players online" and who can see the names. The feed says once, above the rows, that joins, deaths and chat are not shown.
  • An older module without the flags decodes as visible, as before.
  • The app's leaderboard never rendered lastSeen, so nothing changes there.

Verified

652 unit tests (6 new), lintDebug, assembleDebug. Walked on an emulator against a core with the module installed: the withheld panel and the feed note at the staff default as a signed-in player, then the names arriving on the next poll after the fleet was widened to signed-in. That also proves the app's bearer session reaches the module's viewer check.

AI disclosure

Written with Claude Code (Opus 5.5).

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

The app's half of Module-Rust's presence fix (`docs/modules/rust/PLAN.md` §23; `docs/android/PLAN.md` gains an M14 amendment). The org lead's rule: **nothing names who is online by default.** Below an operator-chosen audience (staff unless widened), the module now withholds the Online list and every feed item that names a player who was on. The **count** stays public. Without this, the app would render the withheld list as "the island is empty" on a full server. * `RustOnlineDto` carries `hidden`, `count` and `audience`; `RustEventListDto` carries `presenceHidden` and `presenceAudience`. The repository and view model keep the whole answer rather than its rows. * The Online tab says **"2 players online"** and who can see the names. The feed says once, above the rows, that joins, deaths and chat are not shown. * An older module without the flags decodes as visible, as before. * The app's leaderboard never rendered `lastSeen`, so nothing changes there. ### Verified 652 unit tests (6 new), `lintDebug`, `assembleDebug`. Walked on an emulator against a core with the module installed: the withheld panel and the feed note at the staff default as a signed-in player, then the names arriving on the next poll after the fleet was widened to signed-in. That also proves the app's bearer session reaches the module's viewer check. ### AI disclosure Written with Claude Code (Opus 5.5). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-09-23 05:33:32 +00:00
fix(rust): say who is online is withheld, never that nobody is
Some checks failed
PR Checks / android-build (pull_request) Failing after 17m40s
f695eb6c45
Module-Rust now withholds who is online below an operator-chosen
audience - staff by default (org lead, 2026-09-22: nothing names who is
online by default). The Online route answers an empty list with hidden,
count and audience; the feed answers presenceHidden and
presenceAudience.

Before this the app would have rendered the withheld list as "the
island is empty" on a full server. Now:

* RustOnlineDto and RustEventListDto carry the flags; the repository
  and view model keep the whole answer instead of its rows.
* the Online tab says "2 players online" and who can see the names;
  the feed says, once above the rows, that joins, deaths and chat are
  not shown.
* an older module without the flags decodes as visible, as before.

Walked on an emulator against a core with the module installed: the
withheld panel and the feed note as a signed-in player at the staff
default, and the names appearing on the next poll after the fleet was
widened to signed-in - which also proves the app's bearer session
reaches the module's viewer check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit 8e3c62d966 into edge 2026-09-23 05:36:36 +00:00
whitlocktech deleted branch fix/rust-presence-visibility 2026-09-23 05:36:36 +00:00
Sign in to join this conversation.
No description provided.