Repository navigation
Name a group or face-room Bot by its name and owner username - #541
Conversation
A friend's Bot read four ways in one DM (ThinkFlowLab#498): the sidebar row was 'Chief' plus a muted owner, the header 'Chief (SelfB1233)', the @ menu fell back to the handle for a friend's chat, and the held reply card read 'Chief → Chief (SelfB1233)' after a reload but 'Chief → SelfB1233' before it. friendBotTitle / friendBotOwner in shared/remote-label.js are now the one formatter for a friend's chat: the sidebar row, header, tab, composer placeholder and @ menu call it, and the social plugin reads it from __flybot__.names. Approval cards (held reply, overlay, social dock) name the person who gets the message: the stored recipient first, else the friend chat's owner, so the card is the same live and after a reload. Face rooms are unchanged (ThinkFlowLab#457).
…owLab#481/ThinkFlowLab#501/ThinkFlowLab#505) Regenerated client bundle patch after merge; auto-merged social sources keep ThinkFlowLab#498 friend Bot name formatter with ThinkFlowLab#501/ThinkFlowLab#505.
Resolve generated ds-bot client-bundle patch via regenerate from merged core.
# Conflicts: # patches/ds-bot/0008-client-bundle.patch
# Conflicts: # core/src/client/header.js # patches/ds-bot/0008-client-bundle.patch # patches/ds-bot/0012-room-membership.patch
In a group chat or face-to-face room a friend's Bot read
"Reviewer · FlyBot 682b8a43 (flybot682b8a43)": Bot Social's member label
("<Bot> · <owner>") took the Bot-name slot and the owner came again from
the handle, and an owner who never set a name shows as the made-up
"FlyBot <install id>".
Owner decision on ThinkFlowLab#526 (2026-10-20, option a): reuse the ThinkFlowLab#498 person-first
format, Bot name plus owner username, "Reviewer (flybot682b8a43)".
remoteBotName drops a trailing " · <owner>" that is that Bot's owner;
ownerNameOf passes over an id-derived "FlyBot <hex>" owner to the username
in the home handle (seatOwnerName for my own seat), and the social
plugin's faceOwnerName applies the same rule to seats, join/leave/lead
lines and typed lines. The handle stays in the tooltip of member rows.
Fixes ThinkFlowLab#526
# Conflicts: # patches/ds-bot/0008-client-bundle.patch
|
Self-review (review-pr, Birfy reviewer agent, 2026-10-20 20:26 Asia/Shanghai): PASS Tip SHA: 6648eae
Security / display-name: the new helpers only choose between peer strings that were already cleaned (owner name vs the username part of the handle), and they never move a name out of a fence. Findings: no actionable findings. Not merge authority: T3 needs the maintainer's approval, and it merges after #502. |
# Conflicts: # core/src/client/at-menu.js # docs/subsystems/core-client.md # docs/subsystems/core-host.md # docs/subsystems/social.md # patches/ds-bot/0003-flybot-api-client.patch # patches/ds-bot/0008-client-bundle.patch
|
Self-review (review-pr, Birfy reviewer agent, 2026-10-20 20:48 Asia/Shanghai): PASS Tip SHA: 01c24e4
Security / display-name: unchanged from the previous review — the helpers only choose between peer strings that were already cleaned (owner name vs the username part of the handle) and never move a name out of a fence. Findings: no actionable findings. Not merge authority: T3 needs the maintainer's approval (#502 is on main, so nothing else blocks it). |
Generated client.js and patches regenerated from the merged core/; this branch adds no topics.json entries, so main's topics.json is kept as is.
|
Self-review (review-pr, Birfy reviewer agent, 2026-10-20 Asia/Shanghai): PASS (merge-main conflict fix; no feature change) Tip SHA: 2f979dc
Findings: none to act on. This review is not merge authority by itself; the maintainer's approval is recorded separately. |
|
Owner approval in chat 2026-10-20 21:46 Asia/Shanghai: merge. |
Fixes #526
#502 (the shared friend's Bot formatter this builds on) is on main (cf61952); this PR now carries only the #526 change.
In a group chat or face-to-face room a friend's Bot read
Reviewer · FlyBot 682b8a43 (flybot682b8a43). Two things caused it. Bot Social's member label (<Bot> · <owner>,face-rooms.tsmemberLabel) ended up as the Bot's name, soremoteBotTitlethen added the owner a second time from the handle (core/src/client/cells.jsremoteSpeakerfallback, from thesenderNamethatplugins/social/src/face-rooms.jstrustedFaceWhosets). And an owner who never set a name shows as the made-upFlyBot <install id>. Owner decision (2026-10-20, option a): use the #498 person-first name, Bot name plus owner username:Reviewer (flybot682b8a43).core/src/shared/remote-label.js:remoteBotNameremoves a trailing· <owner>only when it matches that Bot's owner.ownerNameOfskips an id-derived owner (isAutoOwnerName:FlyBot+ hex id that contains a digit) and uses the username from the home handle instead. If no handle is known, the made-up name stays.seatOwnerNameapplies the same rule to my own seat (face-seats.js,at-menu.js).plugins/social/src/face-rooms.js:faceOwnerNameapplies the same rule to seats (viewFaceMember.ownerName), join, leave and room-lead lines, and a person's typed line.FacePersonRowand the group Members rows (group-settings.js,details-drawer.js) now gettitle=<handle>, as bubble headers already had.Coder (Bob),Ops · Night (Bob),FlyBot,FlyBot2.Risk tier: T3 (
node .github/scripts/risk-gate.mjs --pr 541: display-name and remote-label paths, plugins/social/src/face-rooms.js). Needs the maintainer's approval and a PASS at the tip.Verification at 01c24e4 (main cf61952 merged in):
ARCH_DOCS_BASE=origin/main TZ=UTC npm run verify→ pass. core 1117, social 314, tree 83, timeline 93, .github scripts 93, interop 37, live-e2e 16; 0 failures. arch-docs OK; no new lint warnings (same count as before the merge).core/test/group-bot-label.test.js0/3 pass (actual: 'Reviewer · FlyBot 682b8a43 (flybot682b8a43)','Reviewer (FlyBot 682b8a43)'). At base the new social assertions fail on the missingfaceOwnerNameexport. Green at the tip.(cd core && npm run build),node scripts/ds-bot-patches.mjs generateandcheck→ ok.Not run:
core/index.jsorcore/src/host/changed. The host readsshared/remote-label.jsfor room labels; unit tests cover that, includingpresentRoom.