Repository navigation
Closed
Labels
area:socialFriends, invites, grants, Bot SocialFriends, invites, grants, Bot SocialbugSomething isn't workingSomething isn't working
Description
Summary
On A, Chief > Edit Bot > Sharing > People with access lists the same friend twice:
SelfB0023 (@selfb0023.home) [Revoke]
SelfB0023 (@selfb0023.home) [Revoke]
One row is A's real share of Chief. The other is the server's talk-through grant that was created when A's Chief joined B's invite for Helper. The talk-through grant should not be shown as a share (it is filtered correctly when the joining Bot was not already shared, see #342/#178), and People with access should show one row per person in any case.
Environment
- FlyBot main
6d04db6682fa87033e58a176121f878b3ba293ce(About FlyBot describes FlyBot: its repository, stars, links, build and update text #375), core + plugins/social + plugins/tree on@deepseek-ai/dsh@0.2.0-rc.2, Node 24. - Two fresh installs on one Linux box: A
:3090(owner SelfA0023,@selfa0023.home, own Bots Chief + Scratch) and B:3091(owner SelfB0023,@selfb0023.home, own Bots Chief + Helper). Bot Social prodhttps://47-80-69-220.sslip.io. - Setup: A made an invite for A's Chief, B joined it with B's Chief. Then B made an invite for Helper, A joined it with A's Chief. So A sees friend's Bot Helper, B sees friend's Bot Chief (A's).
- Product self-test, focus D (Social list and + menu), 2026-10-19 00:23–00:35 Asia/Shanghai. Screenshots stayed on the test machine; what they show is written out below.
Repro
- On A, make an invite for Chief (Chief > Edit Bot > Sharing > Invite to this Bot, or right-click > Copy invite link). On B, + > Add friend, paste it, talk through Chief, Accept invite. (In this run: local API
social/create-invite/social/join-invite, 00:28:20.) - On B, make an invite for Helper. On A, + > Add friend, paste it, talk through Chief, Accept invite. (00:28:40.)
- On A, hover Chief in the sidebar, click the gear (Edit Bot), open Sharing, look at People with access.
Actual
- Two identical rows
SelfB0023 (@selfb0023.home), each with its own Revoke button. Screenshot: A's Chief Sharing section, People with access with the two identical SelfB0023 rows stacked, each with a Revoke button on the right. - The local access API for A's Chief (
verify/post2-access-chief-a.json) returns two grants for the same grantee:grt_01M57XFF848JSFGSE9M2REVM8F, relationshiprel_01M57XFF82CC8RE69TS4HD0MMH(invite 1: A shared Chief with B, the real share);grt_01M57XG2HB5TPSS83YHTNVTMYP, relationshiprel_01M57XG2H9WXDQ4BDK2MMSVY6M(invite 2: the talk-through grant on the joiner Bot, A's Chief).
- After step 1 only (
verify/post1-access-chief-a.json) there was one grant. B's Chief (which joined invite 1 and was never shared) correctly hasgrants: [], so Accepting an invite never shows the inviter's Bot to the joiner, and the joiner's Chief lists the inviter in People with access (regression of #178 from #334) #342 does not reproduce. - Everything else is correct: A sees friend's Bot Helper, B sees friend's Bot Chief (A's).
Expected (per-Bot grants, simplicity)
- A talk-through grant is never listed in People with access, also when the same Bot is already shared with that person.
- People with access shows one row per person (merge grants by grantee), with one Revoke that removes the real share.
- Revoke must not remove the talk-through grant A's Chief needs to talk to B's Helper.
Pointers for the fixer (not verified)
plugins/social/src/social.jsisTalkThroughGrant()matches a grant only when a roster home entry hasrelationshipId === grant.relationshipId.list_remote_botson A returns one entry for@selfb0023.homewithrelationshipId: rel_01M57XFF82CC8RE69TS4HD0MMH(invite 1), while the talk-through grant belongs torel_01M57XG2H9WXDQ4BDK2MMSVY6M(invite 2). So with two relationships to the same home, the second one's talk-through grant may never be recognised. That fits "only when the Bot was already shared" but needs checking.- Hunch only: clicking Revoke on the second row may revoke A's talk-through grant and break A's chat with Helper. Not tried.
Related
#342, #178, #138 / #161 (joiner's Bot is not shared back), #336 (talk-through grant semantics), #275 (People with access naming).
Metadata
Metadata
Assignees
Labels
area:socialFriends, invites, grants, Bot SocialFriends, invites, grants, Bot SocialbugSomething isn't workingSomething isn't working
Activity
People with access lists each person once; a talk-through grant on an…
Birfy commentedon Oct 19, 2026
Owner decision (2026-10-19): The old-data follow-up from #387 (backward-compatible
sidefield in Bot Social) is approved: Birfy/bot-social#24 . Prod deploy still needs the owner's explicit yes.Keep live shares in People with access using Bot Social's reply_only (T…
Split People with access into one row per Bot (ThinkFlowLab#1009)