feat(relay): add channel-scoped guest invites - #3673
Conversation
Signed-off-by: Roger Sterling <samgaddis@gmail.com>
|
@block/buzz-oss-team This is ready for maintainer review. GitHub did not auto-request the CODEOWNERS team on this fork PR, and outside contributors cannot assign the team directly, so I am flagging it here. The implementation closes #2475 with identity-bound, single-channel guest links. The PR description documents the isolation model, lifecycle revocation, test coverage, and known follow-ups. The fork Actions suites are waiting for maintainer approval. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 688dbd8c23
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Roger Sterling <samgaddis@gmail.com>
Signed-off-by: Roger Sterling <samgaddis@gmail.com>
|
@codex review @block/buzz-oss-team The review feedback is addressed and the branch is current with upstream main. What changed:
Verification:
All three review threads are resolved. Please take another look. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 74f0572974
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Roger Sterling <samgaddis@gmail.com>
Signed-off-by: Roger Sterling <samgaddis@gmail.com>
80ada84 to
3ec0954
Compare
|
@codex review Both follow-up findings are fixed at the current head ( |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Adds identity-bound guest invite links for one active private, non-DM channel. This lets a community invite a client or support user into a specific channel without giving them normal community-wide relay access or requiring a separate community.
Guests can read and post in the granted channel and see the minimum channel/member profiles needed for that conversation. They cannot access other channels, DMs, community-wide state, search, media uploads, repositories, audio, workflows, membership administration, or other privileged surfaces.
Related issue
Closes #2475.
Security model
REQ/COUNT/EVENT, HTTP query/count/write, profile visibility, and live fan-out.Lifecycle and revocation
Desktop
Channel owners/admins can create and copy a guest link, view every active link, and revoke links from channel management. Clipboard and revoke failures reload authoritative state; an uncertain copy attempts immediate revocation before reporting failure.
Testing
Local verification:
buzz-db: 95 non-Postgres unit tests passed; migration tests passed.buzz-relay: 779 available tests passed.buzz-admin: 2 focused role/privacy regression tests passed.git diff --checkpassed.The live Postgres guest suite could not run locally because this machine has no available Postgres/Docker runtime. CI creates a clean database from
schema/schema.sql, restarts the relay withBUZZ_REQUIRE_RELAY_MEMBERSHIP=true, and runs the real guest invite E2E selection. A pre-existing Flutter test failure reproduces on clean upstream and is unrelated to this change.Independent review
Fable 5 and GPT-5.6 Sol independently reviewed the final commit and returned GO. An earlier review found two release blockers—the incomplete canonical schema and a non-tombstoning operator removal path. Both were fixed and re-reviewed. The final privacy pass also excludes guest identities from the community-wide NIP-43 membership snapshot while preserving guest removal through the operator CLI.
Known follow-ups