Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/1053-face-first-create.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
A fresh 6-digit code no longer answers with an empty-result line. When nobody is waiting, the dialog's primary line is **Start a new room with …** and **Start a new room** is the first button; the note under it still says to ask for an invite link if that room already opened ([#1053](https://github.com/ThinkFlowLab/FlyBot/issues/1053)).
4 changes: 4 additions & 0 deletions core/client.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
// Generated from src/client by `npm run build` (scripts/build-client.mjs). Do not edit by hand.
window.__ModuleLoader__.load({
id: 'ds-bot',
Expand Down Expand Up @@ -57,6 +57,10 @@
"Meet people nearby with a 6-digit number": "用同一组 6 位数字和身边的人见面",
// #892: one entry for both ways in, a number entered together or a group's invite link, and its dialog.
"Join or create by number or link": "面对面建群或用链接加入",
// #1053: a fresh 6-digit code offers to start the room. The hint still covers a number whose room already opened (#999).
"Start a new room with {code}": "用 {code} 开一个新房间",
"No one is waiting under this number. If someone already opened the room, the number no longer works — ask them for an invite link.": "这个号码下还没有人在等。如果已经有人开过这个房间,号码就不再有效——向他们要一条邀请链接。",
"Start a new room": "开一个新房间",
"Enter a number, or paste a group invite link": "输入数字面对面建群,或粘贴邀请链接加入",
"Pick your Bots. Enter the same 6-digit number as everyone nearby to build a room together, or paste a group invite link or scan its QR code to join that group.": "选好你的 Bot。和身边的人输入同一组 6 位数字一起建群,或粘贴群邀请链接、扫描二维码加入那个群。",
"Or paste a group invite link (https://…/r/…)": "或粘贴群邀请链接(https://…/r/…)",
Expand Down
4 changes: 4 additions & 0 deletions core/src/client/i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ const ZH = {
'Meet people nearby with a 6-digit number': '用同一组 6 位数字和身边的人见面',
// #892: one entry for both ways in, a number entered together or a group's invite link, and its dialog.
'Join or create by number or link': '面对面建群或用链接加入',
// #1053: a fresh 6-digit code offers to start the room. The hint still covers a number whose room already opened (#999).
'Start a new room with {code}': '用 {code} 开一个新房间',
'No one is waiting under this number. If someone already opened the room, the number no longer works — ask them for an invite link.': '这个号码下还没有人在等。如果已经有人开过这个房间,号码就不再有效——向他们要一条邀请链接。',
'Start a new room': '开一个新房间',
'Enter a number, or paste a group invite link': '输入数字面对面建群,或粘贴邀请链接加入',
'Pick your Bots. Enter the same 6-digit number as everyone nearby to build a room together, or paste a group invite link or scan its QR code to join that group.': '选好你的 Bot。和身边的人输入同一组 6 位数字一起建群,或粘贴群邀请链接、扫描二维码加入那个群。',
'Or paste a group invite link (https://…/r/…)': '或粘贴群邀请链接(https://…/r/…)',
Expand Down
2 changes: 1 addition & 1 deletion docs/subsystems/core-client.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
---
subsystem: core-client
owned_paths:
Expand Down Expand Up @@ -69,7 +69,7 @@

### Held-send approval card

A `flybot.session.dock` component also gets the host translator `t`, so a plugin's card can read in the interface language (the social hold card's *Held for your approval: contains …* line, #371; its words are in `i18n.js`).
A `flybot.session.dock` component also gets the host translator `t`, so a plugin's card can read in the interface language (the social hold card's *Held for your approval: contains …* line, #371; its words are in `i18n.js`). The face-room create prompt (*Start a new room with {code}*, and the hint under it, #1053) is in that same map, so a zh UI reads it in Chinese.

The overlay (`flybot-slots.js` `FlyBotApprovals`) is the fallback, not a second copy (#260): an approval whose policy a `flybot.session.dock` entry declares (`policy`, e.g. social) is drawn by that dock in its chat, which reports the ids it shows through `claim(ids)`; the overlay skips claimed ids. A docked approval no open chat shows becomes a small pointer (`Sender → Recipient`, `Waiting for approval`, **Review** opens the chat via `actions.openSession`) after 1.2 s, so moving between chats never flashes it; the chat that is open never gets a pointer for its own approvals (each `FlyBotSessionDock` reports its chat through `chatOpened`, #271). An approval's chat is its room, else the chat whose turn a held reply answers (`meta.replyIn`, #418), else the friend's chat it is addressed to, else the Bot that wrote it; the pointer's Review opens that one (#278). The claims live in `approval-claims.js` so a chat cell can claim without the slot components. Any other policy's approval is a card in the overlay, with the same two lines as the dock's card (`Waiting for approval` / `Not sent`, then `Sender → Recipient`; the policy's long reason is the tooltip) and Approve / Reject (Retry for a failed send `canRetry()` allows, #968). Approve / Reject is drawn only for a status `isApprovalWaiting()` calls waiting (`pending`, `pending_approval`), the same rule the held-reply card asks (#734); a settled status gets no button the host would refuse, and a failed send keeps Retry only while `canRetry()` allows it (#968). The recipient is the person who gets it (#418, #498): the host's `recipientName`, else the owner of the friend's chat (`friendBotOwner`), else as the host named it, so a card reads `Chief → SelfB1233`, never two Bot names. `senderName` / `targetName` are resolved server-side and a delegated marker follows a relayed send (`hop > 0`). The decision itself is owner-bound in the host (#52); see [core-host](core-host.md).

Expand Down
Loading
Loading