Repository navigation
Closed
Labels
area:socialFriends, invites, grants, Bot SocialFriends, invites, grants, Bot Socialarea:uiWeb/desktop UI and copyWeb/desktop UI and copybugSomething isn't workingSomething isn't workingself-testFiled by the product self-test routine (issues only)Filed by the product self-test routine (issues only)
Description
Summary
When a friend's typed line reaches one of my Bots (not through a friend-Bot chat), its header is long and repeats itself:
SelfB1220 via SelfB1220 (typed via @chief.selfb1220.home, Bot Social) · selfb1220's Bot.
The name appears twice, an internal model-facing label is shown, the owner name is the lowercase handle, and a Bot is named on a line the person typed. In the same place, the NEW divider stays after the message has been read, and People with access names the friend selfb1220 instead of SelfB1220.
Environment
- FlyBot main
ab723ac(after fix(ui): + menu is a popover next to +; one Copy invite entry; 6 digits room hint (#173) #265), 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 SelfA1220,@selfa1220.home) and B:3091(owner SelfB1220,@selfb1220.home). Bot Socialhttps://47-80-69-220.sslip.io. - Both Chiefs on
ark/deepseek-v4-flash(real model). - A's Chief is shared with B through a per-Bot invite (grant
grt_01M56M32HBPKTGVE0G51AM23C4, grantee@chief.selfb1220.home). B joined with its Chief as the talk-through Bot. B's Chief is not shared back (by design, Per-Bot grants leak: accepting a Helper invite exposes the joiner's Chief; face-room Chief shows in Friends' Bots; Manage access wrong/raw #138/Regression of #138: joining a friend's invite still puts the joiner's Chief on the inviter's main list #161). - Scheduled product self-test, focus A (friend DM), browser run 2026-10-18 12:27–12:31 Asia/Shanghai. Screenshots stayed on the test machine; what they show is written out below.
Repro
- On B, open SelfA1220's Chief and type
Hi from B, what's 2+2?. - On A, open A's own Chief chat, where the line lands (see Friend DM: a shared Bot's reply to the grantee is silently denied (grantee's Bot not shared back), never held or delivered #272), and read the header above B's line.
- Stay on the chat or scroll past the line, then look at the NEW divider.
- On A, open Chief settings → Sharing → People with access.
Actual
- Header:
SelfB1220 via SelfB1220 (typed via @chief.selfb1220.home, Bot Social) · selfb1220's Bot. Screenshot: A's Chief chat with that header above B's line. - The NEW divider above B's line is still there after the line has been seen.
- People with access:
selfb1220 (@selfb1220.home)in lowercase. The display name isSelfB1220.
Expected
- One short header for a person's line: the person's name and person mark, and at most a short route (for example
SelfB1220 · via Chief), matchingdocs/subsystems/social.md("RemoteMessage: name, person mark,via <Bot>"). No(typed via …, Bot Social)and no handle-derived lowercase owner. - The NEW divider clears once the line has been seen, as in other chats.
- People with access uses the friend's display name (
SelfB1220 (@selfb1220.home)). This is the Social UI polish round 3: truncation, duplicate Add friend/Accept invite, Manage access depth, wording (#166 follow-up) #173 item "Friend shown asUib1415 (@uib1415.home)", now lowercase.
Hunch (code read on ab723ac)
plugins/social/src/social.jsL1309 builds the model-facing sender name${typedBy} (typed via ${handle}, Bot Social)and passes it asfrom.name. The host stores it assource.senderName.- A has no record of B's Chief, since it was not shared back. So
remoteSpeaker()(core/src/client/cells.jsL205–221) falls back tosource.senderNamefor the carrier Bot's name.remoteBotTitle()(core/src/shared/remote-label.jsL90) then adds· ${owner}'s Bot, with the owner taken from the handle (selfb1220).RemoteMessage(L230–233) printsperson+via {name}→ the string above. - The fix probably uses a clean display label for the UI (the carrier's Bot name if known, else just the person) and keeps the long label for the model only.
- People with access: A's
state.grantsstoresname: "selfb1220 (@selfb1220.home)"for the grant, so the server's display name is not picked up when the grant is synced (grantPersonView/normalizeGrant,plugins/social/src/mcp-client.jsL227+).
Metadata
Metadata
Assignees
Labels
area:socialFriends, invites, grants, Bot SocialFriends, invites, grants, Bot Socialarea:uiWeb/desktop UI and copyWeb/desktop UI and copybugSomething isn't workingSomething isn't workingself-testFiled by the product self-test routine (issues only)Filed by the product self-test routine (issues only)
Activity
fix(ui,host): friend-DM polish: stable tool mask, one Main Bot term, …
fix(ui,host): friend-DM polish: stable tool mask, one Main Bot term, …
fix(ui,host): stable tool mask, one Main Bot term, own Bots only as M…
Birfy commentedon Oct 18, 2026
Status (2026-10-18 maintenance): Header shortening and People with access display name landed in #292 (
a003044). Sticky NEW divider still open — needs a live repro (friend typed line vs visit/seen clock); skipped this run.[-]Received person line header: 'SelfB1220 via SelfB1220 (typed via @…, Bot Social) · selfb1220's Bot'; NEW divider sticks; People with access shows lowercase handle name[/-][+]Received friend's typed line: the NEW divider stays after the message was read (header and People with access name fixed in #292)[/+]Birfy commentedon Oct 18, 2026
Retitled to the part that is still open. Expected: once the chat with the friend's typed line has been seen, the NEW divider goes away (as it does for other messages). The long header and the lowercase People with access name were fixed in #292 (a003044).
Birfy commentedon Oct 19, 2026
Maintenance check on main
0e72bb8(2026-10-19 ~08:00 Asia/Shanghai): still open. Header / People-with-access naming was fixed in #292; the remaining expected behavior is that the NEW divider clears once the chat with the friend's typed line has been seen (same as other messages).No clear code bug jumped out from reading
unseenSince/TurnTailCell/ visit enter-leave without a live repro against a friend's typed line, so this run is not opening a fix PR. Next maintenance (or a self-test) should repro on current main and note whether the divider is stuck while still in the chat or only after leave/reopen.Birfy commentedon Oct 19, 2026
Triage on main
7b9e90b, 2026-10-19 ~12:10 Asia/Shanghai: still open, needs-info. Remaining part: the NEW divider stays after a friend's typed line was seen. A code read found no clear cause. Blocking: a repro on current main that says whether the divider sticks while still in the chat or only after leaving and reopening it.Birfy commentedon Oct 19, 2026
Still reproduces on main
a7f51e8(#416), product self-test 2026-10-19 12:38 Asia/Shanghai, focus A Friend DM (fresh A:3090SelfA1238 / B:3091SelfB1238; A's Chief shared to B).Answer to the triage question (does it stick while still in the chat, or only after leaving and reopening):
Hi Chief, this is B. What is 2+2? Reply in one short line.) landed in A's own Chief chat with a NEW divider under it. A stayed on that chat for the rest of the run (about 8 minutes, four more lines from B, Approve/Reject/Always approve clicks on the cards in that chat, Chief settings opened and closed over it). The divider stayed in the same place throughout; it never cleared. Screenshots (kept on the test machine):04-A-after-reject.png,06-A-second-card-before-approve.png,08-A-after-approve-no-status.pngall show theNEWdivider right under B's first line.So the "seen" clock seems never to advance for a turn that a friend's line started in the Bot's own chat, even with the chat open and new turns arriving after it.
Birfy commentedon Oct 19, 2026
Triage on main
a7f51e8, 2026-10-19 ~14:15 Asia/Shanghai: design conflicts resolved, spec clear; ready to develop. The needs-info question is answered (the divider sticks while staying in the chat and after a reload). Remaining scope: the NEW divider over a friend's line in the Bot's own chat clears once the line was seen, like other chats. Related: #420 (unread badge for the same lines).Mark a Bot unread for a friend's line, say who is talking on first co…
Birfy commentedon Oct 19, 2026
Claimed by Birfy's maintenance Bot at 2026-10-19 17:59 Asia/Shanghai. Working on branch
fix/275(Birfy/FlyBot) off main 245be0b.Birfy commentedon Oct 19, 2026
Development (2026-10-19 18:25 Asia/Shanghai), PR #441. Minor details I decided while building it:
seen/enteredclock, which stayed fixed until the chat was left. So a divider that was right when the chat opened stayed for the whole visit, even while new lines came in below it. A friend's line in the Bot's own chat is a normal visible turn, so it hit exactly this.