Repository navigation
Invite and friend-chat polish: coding-agent placeholder in a friend's Bot chat (regression of #419), two inconsistent invite UIs, Add friend leftovers, Sharing hint #499
Copy link
Copy link
Closed
Labels
agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a templateMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a templateagent-workingAn agent has claimed this issue (the claim comment names the branch)An agent has claimed this issue (the claim comment names the branch)area:socialFriends, invites, grants, Bot SocialFriends, invites, grants, Bot Socialarea:uiWeb/desktop UI and copyWeb/desktop UI and copyenhancementNew feature or requestNew feature or requestself-testFiled by the product self-test routine (issues only)Filed by the product self-test routine (issues only)
Description
Summary
These are small problems in the invite UI and the friend-chat composer. Each is minor, but together they make sharing feel unfinished:
- Coding-agent placeholder in a friend's Bot chat (regression of Friend's Bot chat on the receiving home: 'Tool removed' line, turns/steps/tok/s footer, composer placeholder flips to coding copy #419): the composer sometimes shows the coding copy instead of
Message Chief (SelfA1233). - Two different invite UIs: + New… > Add friend and Bot settings > Sharing make the same invite with different controls and feedback.
- Add friend panel leftovers: a stale error line, and the panel stays open after a successful accept.
- The Sharing hint mentions People with access when that list is empty.
Environment
- FlyBot main
a7adfe0882d3e37c81616871e24b442bd4a5047f, core + plugins/social + plugins/tree on@deepseek-ai/dsh@0.2.0-rc.2, Node 24.21.0. - Two fresh installs on one Linux box: A
:3090(owner SelfA1233,@selfa1233.home, one Bot: Chief =@chief.selfa1233.home) and B:3091(owner SelfB1233,@selfb1233.home, one Bot: Chief =@chief.selfb1233.home). Bot Social prodhttps://47-80-69-220.sslip.io. Both Chiefs onark/deepseek-v4-flash. - Product self-test 2026-10-20, focus C (Invites and grants), browser run 12:37–12:42 Asia/Shanghai, API checks about 12:45 Asia/Shanghai. Screenshots stayed on the test machine; what they show is written out below.
1. Composer placeholder flips to coding copy (regression of #419)
Repro: on B (who accepted A's Chief invite), open Chief SelfA1233 for the first time and look at the composer. Then send a first message and look again.
- Actual: on first open the placeholder read
Describe what you want to build, / commands, @ files or sessions. After the first message it readMessage or run a task…. At other moments the same chat shows the correctMessage Chief (SelfA1233), so it switches between these. - Screenshot (B, empty chat with A's Chief): the header pill reads
Chief (SelfA1233)and the composer showsMessage Chief (SelfA1233). It was taken after the coding copy had been seen, so the bad state is transient. - Expected: a friend's Bot chat never shows coding-agent copy (no build/commands/@ files/sessions wording). It always shows
Message <friend's Bot name>, from the first paint on, before and after a send. Friend's Bot chat on the receiving home: 'Tool removed' line, turns/steps/tok/s footer, composer placeholder flips to coding copy #419 fixed the after-send flip, and the first-open state (and maybe the after-send one again) has come back. - Hunch: the placeholder is picked before the chat is known to be a remote Bot (the first render uses the local-session default), and again by another code path after a send.
2. Two inconsistent invite UIs
| + New… > Add friend | Chief settings > Sharing | |
|---|---|---|
| Control | Copy invite link for Chief |
full link field + Copy link, Copy with instructions, New link |
| Feedback after copy | none (no Copied) |
Copied. |
| Link visible | no. The paste box above is clipped (https://47-80-69-220.sslip.io/i/…, placeholder Paste invite link or code) |
yes, full link |
| Which Bot | fixed to Chief. With one Bot there is no choice (with more Bots a picker should appear per #343, not re-checked here) | the Bot whose settings are open |
- Screenshot (B, Chief settings > Sharing): the hint
Invite grants Chief only. Revoke anytime in People with access., the full linkhttps://47-80-69-220.sslip.io/i/…, the buttons Copy link (blue), Copy with instructions and New link, then People with access:Nobody has this Bot yet. Invite a friend to grant it. - Expected (simple, consistent): one invite component used in both places. It names the Bot, shows the link (or at least a
Copiedconfirmation with the Bot named:Invite link for Chief copied.), and offers the same actions. Add friend can keep a single button but must give the same feedback. The paste box must show enough of a pasted link to recognise it (full width, or wrap).
3. Add friend panel leftovers
- After a failed accept, the red error line stays in the panel until the next action (it is not cleared when the result no longer applies).
- After a successful accept (
SelfB1233 shared Chief with you.), the panel stays open until Done is clicked. - Expected: clear the error as soon as the paste box changes. After a successful accept, show the result for a moment and then close the panel, or keep it open but clear the paste box and focus the new friend's Bot in the list. Either way, the result should not need a second click.
4. Sharing hint with an empty list
Invite grants Chief only. Revoke anytime in People with access. shows even when People with access says Nobody has this Bot yet.. Expected: when the list is empty, show only Invite grants Chief only., and add the Revoke sentence once someone has access. Small, but the current hint points at a control that does not exist yet.
Suggested scope
plugins/social/client.js: extract the Sharing invite block (link + Copy link / Copy with instructions / New link +Copied.) into one component and use it in the Add friend panel's "Invite a friend" section. Name the Bot in the copy feedback. Fix the paste box width.plugins/social/client.jsAdd friend panel: clear the error on input, and auto-close (or reset) after a successful accept.- Composer placeholder for remote Bot chats: core
ds-bot/client.jsplaceholder selection, so that a remote (bot.remote) chat always usesMessage <name>from the first render on. Add a test that renders a remote Bot chat before and after a send.
Acceptance criteria
- A friend's Bot chat never shows coding-agent placeholder copy (first open, after a send, after a reload).
- Add friend and Sharing use the same invite control, and both confirm a copy naming the Bot.
- A pasted link is readable in the Add friend paste box at the default sidebar width.
- The error line clears on input. A successful accept needs no extra Done click.
- The Sharing hint mentions Revoke only when People with access has someone.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a templateMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a templateagent-workingAn agent has claimed this issue (the claim comment names the branch)An agent has claimed this issue (the claim comment names the branch)area:socialFriends, invites, grants, Bot SocialFriends, invites, grants, Bot Socialarea:uiWeb/desktop UI and copyWeb/desktop UI and copyenhancementNew feature or requestNew feature or requestself-testFiled by the product self-test routine (issues only)Filed by the product self-test routine (issues only)
Activity
Birfy commentedon Oct 20, 2026
Triage (2026-10-20 12:57 Asia/Shanghai, Birfy maintenance). Minor details decided (owner-delegated): (1) a remote Bot chat always shows
Message <Bot (owner)>from first paint, before and after a send, with a test; (2) one shared invite component in Add friend and Sharing, copy feedback names the Bot (Invite link for Chief copied.), the paste box shows the full link (wraps); (3) the error clears when the paste box changes, and after a successful accept the panel shows the result briefly, closes and selects the new friend's Bot; (4) the Revoke sentence in the Sharing hint shows only when People with access has someone.Waiting for the owner's confirmation before
agent-ready(needs-human).Birfy commentedon Oct 20, 2026
Owner decision (2026-10-20): option (a) — fix all four polish items (code placeholder regression, unify invite UI, auto-close Add friend on success, empty People-with-access copy).
Birfy commentedon Oct 20, 2026
Claimed by maintenance run (2026-10-20 13:54 Asia/Shanghai). Working on branch
fix/499-invite-friendchat-polish(fork Birfy/FlyBot), developed in parallel with #495-#499; scope per the Owner decision only.Birfy commentedon Oct 20, 2026
Minor details decided while implementing (2026-10-20 14:10 Asia/Shanghai, owner-delegated; PR #504):
Message <Bot (owner)>in a layout effect, so it is in place before the first paint. It covers botharia-labelanddata-placeholder, and the observer rewrites them in its own callback with no rAF delay. When the chat closes, the shell's latest copy is handed back.Invite link for {Bot} copied./Invite for {Bot} copied with instructions.; on failure:Could not copy. Select the link and copy it by hand.Invite grants {Bot} only., plusRevoke anytime in People with access.once that list has someone. The empty list readsNobody has this Bot yet. Copy an invite link above and send it to a friend.People with access gained only a count callback; its grant logic is untouched (People with access hides live shares once two friends have joined each other's invite: owner can't see or Revoke them (side effect of #383 fix) #495).Merge origin/main into fix/499-invite-friendchat-polish (resolve after …
Merge origin/main into fix/499-invite-friendchat-polish
Merge origin/main into fix/506-invite-copy-leftovers
Polish invites and friend chats: friend Bot placeholder, one invite c…
Name a friend's Bot one way and approval cards by the receiving person (
Point leftover Invite to this Bot copy at Sharing → Copy invite link (#…