镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

Join a community right after creating it in Settings - #2991

Merged
loganj merged 5 commits into
mainfrom
loganj/create-community-joins
Nov 9, 2026
Merged

loganj merged 5 commits into
mainfrom
loganj/create-community-joins

Conversation

@loganj

@loganj loganj commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

🤖

Summary

  • Before: creating a hosted community in Settings → Plugins → Builderlab → Create community only copied the new address to the clipboard. The person was not joined, and the community did not appear in their community list until they pasted the address into Join a community themselves.
  • Now: after the community is created, the app opens the join dialog for it at once. The dialog connects to the new address without asking for it, so the person goes straight to the remaining join steps (access, when the community asks for it, then profile). When they finish, the app switches to the new community and it shows in the community list.
  • If the app cannot open the join (no signed-in identity yet), the card falls back to the old behavior and copies the address.
  • This matches first-run onboarding, where Create a community already looks up the new address and joins it without asking for it again. Settings now does the same, through the join dialog that the community picker uses.
create-community-join.mp4
Before create Create form Join opens by itself Listed and selected

Details

  • Plugins get a new optional host capability, communityJoin.open(address). It feeds the same invite intent that invite links and the community picker use, marked as already submitted, so the join dialog skips its Community URL step and starts connecting. It does not bypass admission or profile setup, and it returns false when no identity is ready. The plugin authoring guide documents it.
  • Deep links cannot set the "already submitted" mark: invite links are parsed into an explicit address and code, so auto-connect stays limited to calls from inside the app.
  • A create that finishes after the Settings card closed, or after the card's operation was replaced, does not open the join.
  • Which join steps appear depends on the build. With federated identity on a hosted community, the account's consent covers the access step, so it is skipped, as in first-run onboarding. In other builds (such as the development broker) the dialog shows the access step first, while first-run onboarding skips it for a just-created community when the community asks for no age or terms confirmation. The profile step offers Continue when the person already has a profile on that relay and Publish otherwise.

Testing

  • New browser case (+1/−0), tests/browser/hosted-create-join.spec.mjs: create from the picker's Create community flow, join opens without the address step, the person continues, the app switches to the new community and the picker lists it. It passes in Chromium and WebKit, and fails in both when the join call is removed. The recording and screenshots above come from this case.
  • The browser case uses a viewer that already has a profile on the new relay. Publishing a first profile and the access step are covered by the existing join dialog tests, not by this case.
  • Unit tests cover the card's join, the copy fallback, and a late create after the card retires or unmounts.
  • Not run: a native desktop build against a real hosted community service.

Known limits

  • If the identity changes while a create is in flight on the development broker, the join can open for the new identity. Signed-in builds remount the card on identity change, so this applies to the broker path only.
  • If the created address is already in the person's list (for example, a deleted community that was created again), the app selects the saved entry instead of running the join steps.
  • After the person dismisses the join dialog, the card offers no join button; they can use Copy address and then Join a community.

🤖 Generated with Claude Code

loganj and others added 4 commits November 7, 2026 09:13
Create community in Settings → Plugins → Builderlab only created the
relay, copied its address and told the person to join by hand, so the new
community never reached the community picker. It now opens the app join
dialog on the new address through a communityJoin host capability. The
request is marked submitted, so the dialog connects at once, as first
run Create a community does; the account consent covers its own hosted
community, so it goes straight to the profile step, then saves, selects
and lists the membership.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>
Settings → Builderlab → Create community, with the Builderlab API stubbed
and the new host pointed at the fixture second relay: the join dialog
connects by itself, and the community is listed and selected in the
picker. It proves the plugin capability, the invite intent and the
picker dialog over Settings together, which unit tests cover only one
at a time. It fails on the previous behavior, where Create only copied
the address.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>
A create that finishes after the Builderlab card retires or unmounts
(another account replaces it) now opens no join, as it already wrote no
clipboard: the handoff checks the card is live and the operation is still
current. Document communityJoin for plugin authors.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>
communityJoin.open now returns false when no identity is ready. The
Builderlab card then hands off the address, as it did before the join.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>
@loganj
loganj marked this pull request as ready for review November 7, 2026 19:56
@loganj
loganj requested review from a team as code owners November 7, 2026 19:56
wesbillman

This comment was marked as resolved.

@tellaho

This comment has been minimized.

@loganj

This comment has been minimized.

kalvinnchau

This comment was marked as resolved.

…in optional

communityJoin.open now hands back false for an address that is not a
community origin, as it does when no identity is ready, so a plugin can
hand the address off instead of catching an exception. The service is
declared optional, matching the plugin guide: older hosts lack it.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord automated source review via Wes’s account, with independent Rocket, Mantis and Groot coverage.

Follow-up reviewed at e4671cb5303c0b61a1207cc042aee1d2a7932d35, target/merge-base 70a8aebdc9656bd808f791d91b283937ec37cec9, focusing on the five-file delta since 5217b85c99950bd217d5e9a88d3cbddae58ed083.

No new actionable findings in this delta. Invalid origins now return false before invite state changes, enabling the caller’s existing copy fallback; the optional Context declaration and documentation now agree. Builderlab still explicitly requires injection, so its activation requirements are unchanged.

The prior navigation P2 remains unchanged and acknowledged/deferred to the separate all-entry-points follow-up described in the author’s reply. This revision does not repair that gap.

Source-only: no tests, builds, app or auth flows run. The delta adds no regression tests for these contract changes. PR description and attachment URLs are unchanged; prior inspection covered four screenshots and sampled recording frames, not the full recording. Native hosted provisioning and runtime identity timing remain unverified.

@tellaho

tellaho commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

🤖 Taylor’s follow-up: LGTM; no further follow-up planned.

Review context: earlier review at 5217b85c9995 (2026-11-07).

@kazemek21 kazemek21 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kyle reviewed this PR and the Nexus review-tracker notes and approved with no comments.

Posted by Codex (gpt-6.1-sol) on behalf of kylez

@loganj
loganj merged commit 9cc2881 into main Nov 9, 2026
60 checks passed
@loganj
loganj deleted the loganj/create-community-joins branch November 9, 2026 05:31
aharvard added a commit to aharvard/buzz-app that referenced this pull request Nov 9, 2026
Picks up c202642 (block#2837), which fixes the ThreadPanel catch-up test
that fails on every run of a merge with the older main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* origin/main: (155 commits)
  deps: accept RUSTSEC-2026-0459 for libsqlite3-sys 0.38, move rmcp to 3.9.0 (block#3077)
  fix(communities): accept invite links and bare hosts in Join a community (block#2412)
  fix(builderlab): open a remote agent's Activity on the conversation it was opened from (block#3051)
  refactor(builderlab): keep capabilities fresh in the session (block#3003)
  feat(moderation): show invite links as a QR code (block#3029)
  Keep Create agent's Model row readable and give Goose a Thinking row (block#2673)
  Join a community right after creating it in Settings (block#2991)
  Let new Solo chats start temporary by default (block#2874)
  fix(messages): fill a screen that a head of folded agent activity leaves empty (block#3037)
  fix(search): search saved conversations while the community is offline or connecting (block#2724)
  test(agents): make version-history date assertion time-zone independent (block#3010)
  feat(relay): gate artifact writers on NIP-AR support (block#2735)
  fix(channels): open the dock's community switcher from Personal space (block#2806)
  fix(members): keep the list's place after a member change (block#2818)
  fix(channels): keep a launcher's side panel open on Close all tabs (block#2803)
  fix(activity): show a remote agent's Buzz send as its reply (block#3025)
  refactor(settings): move external identity authorization to security (block#3032)
  test(typeahead): serve the fixture pages as a build so cold loads fit (block#2793)
  feat(channels): list unread top-level mentions in sidebar Activity, and count only unread mentions on the Inbox card (block#2722)
  fix(solo): delete a removed workspace's settings after the groups write (block#2819)
  ...

Signed-off-by: Andrew Harvard <aharvard@squareup.com>
gilgtm added a commit that referenced this pull request Nov 9, 2026
…pover-card-layout-7eeda1e0

* origin/main: (128 commits)
  deps: accept RUSTSEC-2026-0459 for libsqlite3-sys 0.38, move rmcp to 3.9.0 (#3077)
  fix(communities): accept invite links and bare hosts in Join a community (#2412)
  fix(builderlab): open a remote agent's Activity on the conversation it was opened from (#3051)
  refactor(builderlab): keep capabilities fresh in the session (#3003)
  feat(moderation): show invite links as a QR code (#3029)
  Keep Create agent's Model row readable and give Goose a Thinking row (#2673)
  Join a community right after creating it in Settings (#2991)
  Let new Solo chats start temporary by default (#2874)
  fix(messages): fill a screen that a head of folded agent activity leaves empty (#3037)
  fix(search): search saved conversations while the community is offline or connecting (#2724)
  test(agents): make version-history date assertion time-zone independent (#3010)
  feat(relay): gate artifact writers on NIP-AR support (#2735)
  fix(channels): open the dock's community switcher from Personal space (#2806)
  fix(members): keep the list's place after a member change (#2818)
  fix(channels): keep a launcher's side panel open on Close all tabs (#2803)
  fix(activity): show a remote agent's Buzz send as its reply (#3025)
  refactor(settings): move external identity authorization to security (#3032)
  test(typeahead): serve the fixture pages as a build so cold loads fit (#2793)
  feat(channels): list unread top-level mentions in sidebar Activity, and count only unread mentions on the Inbox card (#2722)
  fix(solo): delete a removed workspace's settings after the groups write (#2819)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants