You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Team] Add human and Chief membership to native rooms #50
Proposed issue / PR title:feat(rooms): support human and Chief participants with attributed messages.
Goal: two people and their Chiefs share one FlyBot room without collapsing people into “User.”
Scope: typed room membership, room roles, permitted participant management, persistent human/bot author IDs and visible attribution; update composer, @ menu, history and event delivery. Use Chiefs as the agent participants of cross-owner rooms. Keep specialist conversations private to the owner.
Out of scope: cross-owner task execution, channels in Slack/Teams and threaded project management.
Code area: group/roster/channel state, client group settings, cells, composer, sidebar and mention handling.
Acceptance and tests: Alice, Bob and both Chiefs appear with distinct authorship; concurrent messages retain order/identity; unauthorized history reads fail; joining/leaving follows the documented history-visibility rule; nonmembers cannot inject messages. Existing single-owner groups still display and function.
Delivery
One focused implementation PR for this issue. This is planned work, not a claim of shipped multi-human support. Preserve the pristine upstream pin and generated patch/client boundaries. Keep team mode disabled until the documented authorization gates pass. Record exact tested head, executed checks, missing checks and independent review. No production credentials or live deployment are part of this issue.
Decision from Danyang: a user can connect to another person's Chief or any Bot that person has published to friends, message it directly, and add it to a room. Cross-owner rooms are no longer limited to humans plus designated Chiefs. Unpublished Bots stay owner-private (denied server-side). This also sets the direction for #51: published Bots can be reached directly, a Chief is just one kind of published Bot, and #51 only has to keep unpublished Bots unreachable from outside.
Model changes
room.participants stays additive. Remote Bots are participants with kind: 'bot', remote: true, handle, ownerHome, ownerName, displayName, isChief?, plus invitedBy, invitedAt. room.members still holds local Bot ids only.
The remote owner gets a projection of the room (origin: 'inbound-share').
What each viewer sees
Viewer
Sees
May do
Inviter
Remote Bots as <Bot> · <owner>'s Bot (Chief: <owner>'s Chief) with an owner badge, attributed lines
Manage and post
Other human in the room
Same labels, from their own join point
Speak, leave
Remote owner
A "Shared room from " sidebar entry: participants, who invited their Bot and when, lines from the Bot's join point
Remove their Bot, approve or reject its replies
Remote Bot
Fenced room lines from its join point only
Reply through Bot Social, held unless the owner has auto-approve on
The DM sidebar and chat header use the same naming.
Checks
Run on 52657b3: core 641 pass, tree 49, social 38, build-client check, lint and arch-docs, patches generate and check. GitHub CI is green. Not run: smoke/Desktop, real model, live Bot Social, independent review.
Activity
feat(rooms): add published friend Bots with per-viewer room display
Birfy commentedon Oct 15, 2026
Design change after review (PR #82, head 52657b3)
Decision from Danyang: a user can connect to another person's Chief or any Bot that person has published to friends, message it directly, and add it to a room. Cross-owner rooms are no longer limited to humans plus designated Chiefs. Unpublished Bots stay owner-private (denied server-side). This also sets the direction for #51: published Bots can be reached directly, a Chief is just one kind of published Bot, and #51 only has to keep unpublished Bots unreachable from outside.
Model changes
room.participantsstays additive. Remote Bots are participants withkind: 'bot',remote: true,handle,ownerHome,ownerName,displayName,isChief?, plusinvitedBy,invitedAt.room.membersstill holds local Bot ids only.cleanRemote/social/remote-bots) can be added. Names are sanitized (cleanRemote: sanitize peer-controlled names (strip @ and control chars), not just length-cap #75 / fix(core): sanitize peer-controlled names in cleanRemote (#75) #76).origin: 'inbound-share').What each viewer sees
<Bot> · <owner>'s Bot(Chief:<owner>'s Chief) with an owner badge, attributed linesThe DM sidebar and chat header use the same naming.
Checks
Run on 52657b3: core 641 pass, tree 49, social 38, build-client check, lint and arch-docs, patches generate and check. GitHub CI is green. Not run: smoke/Desktop, real model, live Bot Social, independent review.
Related
participants,publishedRemoteOfandisPublishedRemote; do not add a second membership list.feat(rooms): support human and Chief participants with attributed mes…
Merge pull request #82 from Birfy/cursor/rooms-human-chief-participan…
Send a room-scoped line by naming the room
Send a room-scoped line by naming the room