Skip to content

Face rooms person-first; per-Bot face-room Auto-send (#457) - #468

Merged
Birfy merged 3 commits into
ThinkFlowLab:mainfrom
Birfy:fix/457-face-room-person-first
Oct 20, 2026
Merged

Birfy merged 3 commits into
ThinkFlowLab:mainfrom
Birfy:fix/457-face-room-person-first

Conversation

@Birfy

@Birfy Birfy commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #457

What

Face-to-face rooms are now person-first, as the owner decided on 2026-10-20:

  • One tile / row per person. The waiting grid and the room overview draw one tile per person (FacePersonTile: the person's name, Me (you) for me, with that person's Bots underneath). Group settings and the details drawer show Members · N, where N counts people, with one FacePersonRow per person (person mark, name, Bots; my Bots open their chat). faceRoomCount counts people through the new facePeople.
  • "(you)" only on people. Every Bot is Bot (person), mine too (Chief (SelfB)). This applies in bubble headers (faceBotLabel), Members, and the @ menu. In a face room, Everyone in @ shows the Bot count (2 Bots).
  • Mentions stay bound after a person leaves. faceMentionables also matches left seats, after the live ones, so @Chief (SelfA) no longer re-binds to my own Chief.
  • Leaner bubble headers. A friend's Bot in a face room reads Researcher (SelfA), name only, with the handle on hover. The globe/handle line and the lowercase id are gone.
  • My own line stays mine. It is no longer greyed as "held" while a Bot's reply waits, so it no longer flips colour. It carries my person mark and name.
  • Auto-send is one switch per Bot (owner option a, off by default):
    • The overview shows Auto-send Chief → room for each of my Bots in the room. It calls social/face-auto { botId, on } and is stored in this home's settings.faceAutoSend.
    • When that Bot's line comes back pending_approval and Bot Social's hold has no DLP reason or risk flag, the host approves it at once. A flagged line, or a line from a Bot whose switch is off, still waits for the owner's click.
    • The old account-wide auto_approve_face_rooms reads as "every switch on". The first per-Bot change keeps the others on locally and turns the account-wide flag off.
    • Auto-send from now on on a face-room card turns on only the writing Bot's switch.

Why

Before this fix, the room was still Bot-first: two tiles per person, Members counted Bots, "(you)" appeared on Bots, mentions re-bound after a leave, and bubble headers were bloated. Auto-send was a single account-wide switch.

Test

  • New test core/test/face-person-first.test.js covers: people and count, (you) only on people, FacePersonRow, faceBotLabel, a mention after a leave, the remote header, and my own line.
  • Core tests updated: at-menu, mention-rule, face-at-filter, face-people, user-bubble.
  • Plugin tests: per-Bot face-auto with the legacy flag migration, an MCP write failure, a host test that auto-approves a clean held line but leaves flagged lines and other Bots' lines held, person tiles, and per-Bot toggles.
  • ARCH_DOCS_BASE=origin/main TZ=UTC npm run verify: passes, 0 failures (core 1025, social 283).
  • Not run: live Mac instances or the production Bot Social server.

Risk tier: T3 (estimate; matches the risk-gate report; the controller sets the label). It changes when face-room Bot lines are approved, though only behind an explicit per-Bot owner switch and never for flagged holds.

@Birfy Birfy added the agent-pr Pull request opened by an agent label Oct 20, 2026
@Birfy Birfy self-assigned this Oct 20, 2026
@Birfy Birfy added bug Something isn't working area:social Friends, invites, grants, Bot Social area:ui Web/desktop UI and copy labels Oct 20, 2026
@Birfy

Birfy commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator Author

Self-review: PASS
Tip SHA: d03379b
Ran:

  • cd core && npm test: pass 1025, fail 0
  • cd plugins/social && TZ=UTC npm test: pass 283, fail 0
  • cd core && npm run build, then node scripts/ds-bot-patches.mjs generate and check: ok, 10 patches apply cleanly, core/ equals ds-bot/ + patches
  • node .github/scripts/changelog.mjs check: ok
  • ARCH_DOCS_BASE=origin/main TZ=UTC npm run verify: exit 0, all suites 0 failures, arch-docs OK
  • CI on the tip: all checks green (tests-ok, ubuntu Node 24, plugins social/tree/timeline, package)
  • Read through the diff: person-first face-seats/Members/tiles, mentions bound to left seats, face-room bubble headers, my own line no longer greyed, and per-Bot Auto-send (host approves only that Bot's clean hold, never a DLP- or risk-flagged one; the old account-wide flag migrates on the first per-Bot change)
    Not run:
  • Live Mac instances (3080/3081) and the production Bot Social server: not restarted or deployed
  • A live two-home face room end to end

@Birfy
Birfy added this pull request to the merge queue Oct 20, 2026
@Birfy Birfy added the awaiting-approval PR is green and waits for the maintainer's approval (T2/T3) or a review PASS at its tip label Oct 20, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 20, 2026
# Conflicts:
#	docs/subsystems/core-client.md
#	docs/subsystems/social.md
@Birfy
Birfy added this pull request to the merge queue Oct 20, 2026
@Birfy

Birfy commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator Author

Self-review: PASS
Tip SHA: cdff039
Ran:

Merged via the queue into ThinkFlowLab:main with commit bae4128 Oct 20, 2026
8 checks passed
@Birfy
Birfy deleted the fix/457-face-room-person-first branch October 20, 2026 00:48
@Birfy Birfy removed the awaiting-approval PR is green and waits for the maintainer's approval (T2/T3) or a review PASS at its tip label Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-pr Pull request opened by an agent area:social Friends, invites, grants, Bot Social area:ui Web/desktop UI and copy bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Face room still Bot-first: two tiles per person, Members counts Bots, '(you)' on Bots, mention re-binds after leave, bloated bubble headers

1 participant