Repository navigation
id: world directory feed — presence counts + public directory frame (#812) - #4954
Conversation
…812) - WorldInfo gains presence (live session lease count per world, hub list()); directory_json emits it — a count only, never an identity (#812 shape ruling 2026-10-29). - New public ClientFrame::Directory: lists worlds with no admin token; the reply is directory metadata only (names, loaded, default, presence counts), creates/opens nothing. Admin ListWorlds unchanged. - WorldClient::directory() + shared worlds-reply parser; list_worlds now also returns presence. - id world list: --admin-token optional; without it the CLI reads the public directory. Plain row shape unchanged (#3089 contract). - Web world explorer renders from directory_json (shared serializer), showing presence counts. - Tests: directory_json shape asserts presence; new session test proves the directory frame answers without an admin token.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 33 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. CodeRabbit Verify
|
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Codex findings gate — disposition (task 7685, lane code-e resume) The Codex code review on this PR failed to run: the Disposition: no findings to address. Merge proceeds under the standing criteria — the |
Closes the queue task 7685 remainder of #812 (presence counts + public world directory feed on the shared
directory_jsonserializer). Slice 1 (shared serializer, honestloadedfield) landed as PR #1808.What
WorldInfogainspresence— the hub's live session lease count for that world (0 for stored worlds).WorldHub::list()fills it from the slot lease counters (read-only, no world is opened).directory_jsonemits"presence"per world. Per Drew's 2026-10-29 shape ruling on id phase-10: the world directory feed was not built — id world list --json is admin-only, has no presence counts, and 'open' means loaded-in-memory #812, the directory carries a count only, never an identity — who is present is not directory data, and nothing here writes us into a corner on making more private later.ClientFrame::Directory(wire{"type":"directory"}) answersServerFrame::Worldswith no admin token. The auth boundary is deliberate and documented on the frame: directory metadata only (names, loaded state, default, presence counts); the frame creates and opens nothing. The adminListWorldsframe is unchanged.WorldClient::directory()added;list_worldsshares the reply parser and now also returns presence.id world list:--admin-tokenis now optional — without it the CLI reads the public directory, with it the admin listing. The plain row shape is byte-unchanged (the id(world): world list plain output renders host-supplied names raw — a newline in a world name forges extra rows, and a tab forges columns #3089 two-field contract); presence shows in--jsonand the web UI.directory_json(the shared serializer, same shape asid world list --json) and shows "N active" when a world's presence count is non-zero.Auth-boundary decision (recorded per packet)
The directory is public read-only metadata on a mostly-public server (2026-10-29 ruling framing). Exposed: world names that the host serves, whether each is loaded, the default world's name, and live-session counts. Not exposed: user IDs, pseudonyms, true names, or which user is in which world — per-user visibility remains tracked on #812 (design, excluded from this packet).
Tests (laptop, pkgs/id)
cargo test --lib directory_— 79 passed (incl. updateddirectory_json_shape_names_loaded_not_openassertingpresence, and newdirectory_frame_lists_worlds_without_an_admin_tokenproving the public frame answers with no token).cargo test --lib world_hub::15 passed;world_session::57 passed;web::128 passed;cli::11 passed;commands::worldsuite passed — 0 failures anywhere.Remaining on #812 after this: per-user visibility toggles / true-name opt-in plumbing (design, explicitly excluded).
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.