Skip to content

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

Closed

Description

@Birfy

Summary

These are small problems in the invite UI and the friend-chat composer. Each is minor, but together they make sharing feel unfinished:

  1. 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).
  2. Two different invite UIs: + New… > Add friend and Bot settings > Sharing make the same invite with different controls and feedback.
  3. Add friend panel leftovers: a stale error line, and the panel stays open after a successful accept.
  4. 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 prod https://47-80-69-220.sslip.io. Both Chiefs on ark/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 read Message or run a task…. At other moments the same chat shows the correct Message Chief (SelfA1233), so it switches between these.
  • Screenshot (B, empty chat with A's Chief): the header pill reads Chief (SelfA1233) and the composer shows Message 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 link https://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 Copied confirmation 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.js Add 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.js placeholder selection, so that a remote (bot.remote) chat always uses Message <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.

Related: #419 (regressed), #343, #173, #166.

Activity

  1. added
    enhancementNew feature or request
    area:socialFriends, invites, grants, Bot Social
    area:uiWeb/desktop UI and copy
    self-testFiled by the product self-test routine (issues only)
    on Oct 20, 2026
  2. Birfy commented on Oct 20, 2026

    @Birfy
    CollaboratorAuthor

    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).

  3. added
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 20, 2026
  4. Birfy commented on Oct 20, 2026

    @Birfy
    CollaboratorAuthor

    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).

  5. added
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    and removed
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 20, 2026
  6. self-assigned this
    on Oct 20, 2026
  7. Birfy commented on Oct 20, 2026

    @Birfy
    CollaboratorAuthor

    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.

  8. Birfy commented on Oct 20, 2026

    @Birfy
    CollaboratorAuthor

    Minor details decided while implementing (2026-10-20 14:10 Asia/Shanghai, owner-delegated; PR #504):

    • Placeholder: the header holds Message <Bot (owner)> in a layout effect, so it is in place before the first paint. It covers both aria-label and data-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.
    • One invite control for Add friend and Sharing. Before a link: one button, Copy invite link for {Bot} (makes and copies; it replaces Sharing's old Invite to this Bot). After: the link field plus Copy link (primary) / Copy with instructions / New link. New link makes a fresh link without copying it. Copy notes: Invite link for {Bot} copied. / Invite for {Bot} copied with instructions.; on failure: Could not copy. Select the link and copy it by hand.
    • Paste box: a wrapping textarea (grows up to about 5 lines). Enter accepts, Shift+Enter and IME composition do not. Only an error is cleared when you type; a success result stays until the next action.
    • Auto-close: only after an accept that shared a Bot. The result shows for 1.8 s, then the panel closes and opens that friend's Bot chat if it is already in the list. A join without a Bot, or a request sent, stays open until Done.
    • Sharing hint: Invite grants {Bot} only., plus Revoke anytime in People with access. once that list has someone. The empty list reads Nobody 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).
  9. added a commit that references this issue on Oct 20, 2026
    8c68aa7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agent-readyMaintainer-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)area:socialFriends, invites, grants, Bot Socialarea:uiWeb/desktop UI and copyenhancementNew feature or requestself-testFiled by the product self-test routine (issues only)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions