Skip to content

Received friend's typed line: the NEW divider stays after the message was read (header and People with access name fixed in #292) #275

Closed

Description

@Birfy

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

Repro

  1. On B, open SelfA1220's Chief and type Hi from B, what's 2+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.
  3. Stay on the chat or scroll past the line, then look at the NEW divider.
  4. 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 is SelfB1220.

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), matching docs/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 as Uib1415 (@uib1415.home)", now lowercase.

Hunch (code read on ab723ac)

  • plugins/social/src/social.js L1309 builds the model-facing sender name ${typedBy} (typed via ${handle}, Bot Social) and passes it as from.name. The host stores it as source.senderName.
  • A has no record of B's Chief, since it was not shared back. So remoteSpeaker() (core/src/client/cells.js L205–221) falls back to source.senderName for the carrier Bot's name. remoteBotTitle() (core/src/shared/remote-label.js L90) then adds · ${owner}'s Bot, with the owner taken from the handle (selfb1220). RemoteMessage (L230–233) prints person + 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.grants stores name: "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.js L227+).

Activity

  1. Birfy commented on Oct 18, 2026

    @Birfy
    CollaboratorAuthor

    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.

  2. changed the title [-]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)[/+] on Oct 18, 2026
  3. Birfy commented on Oct 18, 2026

    @Birfy
    CollaboratorAuthor

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

  4. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    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.

  5. added
    area:socialFriends, invites, grants, Bot Social
    area:uiWeb/desktop UI and copy
    self-testFiled by the product self-test routine (issues only)
    needs-infoWaiting for the reporter or a maintainer decision
    on Oct 19, 2026
  6. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    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.

  7. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    Still reproduces on main a7f51e8 (#416), product self-test 2026-10-19 12:38 Asia/Shanghai, focus A Friend DM (fresh A :3090 SelfA1238 / B :3091 SelfB1238; 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):

    • It sticks while staying in the chat. On A, the first line from B (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.png all show the NEW divider right under B's first line.
    • It also showed after a page reload of A (the first line only appeared after a reload, see Friend's line on the sharing home: lands unmarked in the Bot's own chat with no unread badge, first line needs a reload; social/overview lists no per-Bot friendships #420), i.e. the reload did not count as "seen" either.
    • Not tested: switching to another chat and back.

    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.

  8. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

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

  9. added
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    and removed
    needs-infoWaiting for the reporter or a maintainer decision
    on Oct 19, 2026
  10. added
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 19, 2026
  11. self-assigned this
    on Oct 19, 2026
  12. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    Claimed by Birfy's maintenance Bot at 2026-10-19 17:59 Asia/Shanghai. Working on branch fix/275 (Birfy/FlyBot) off main 245be0b.

  13. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    Development (2026-10-19 18:25 Asia/Shanghai), PR #441. Minor details I decided while building it:

    • Cause: the divider is the same for every chat and is not specific to friend lines. It is drawn from the visit's seen / entered clock, 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.
    • What "seen" means now: the divider goes once it has been on screen and the chat moves on, meaning a shown turn begins after the visit opened (the friend's next line, or my own message). That has the same effect as leaving the chat and coming back. Hidden Bot-to-Bot exchange turns do not count.
    • No read timer: nothing is cleared just because time passed, and a divider still scrolled out of view (the ↑ pill points at it) stays. If you only sit in the chat and nothing new comes in, it stays until you leave, as before. This avoids marking things read too early and avoids flicker.
    • Same rule in every chat, not a friend-line special case, so the divider behaves the same everywhere. The sidebar unread dot (Friend's line on the sharing home: lands unmarked in the Bot's own chat with no unread badge, first line needs a reload; social/overview lists no per-Bot friendships #420) is unchanged.
  14. removed
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    on Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:socialFriends, invites, grants, Bot Socialarea:uiWeb/desktop UI and copybugSomething isn't workingself-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