You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
schedules picker: Copy preselects the first other chat, so one click sends the task to whichever Bot sorts first #1322
Follow-up from the PASS on #1307 at cdbe206b937007e738807d387ad4888a56c9967c (6432868685, 03:16:54Z, Written-by: Reviewer). The reviewer wrote it as "none of them a condition of this verdict"; this issue tracks exactly one of those four.
Wait for #1307 to merge first. Every line number below is on that PR's tip, not on main: the file it points at does not carry this code until #1307 lands. Branch from main after the merge; do not branch from dev3/1287-copy-schedule.
The gap
The reviewer wrote: "The picker preselects the first other chat (others[0]?.[0] ?? '', client/schedules.js:356): one click on Copy sends the task to whichever Bot sorts first. Starting at '' (the placeholder) would make the choice deliberate."
Checked at the tip: CopyRow (core/src/client/schedules.js:351-375) builds others in roster order (:352-355), preselects others[0]?.[0] ?? '' (:356), and already renders a placeholder option Pick a Bot or group chat (:370) and refuses an empty target on submit (:361) — so the placeholder path exists and only the initial state ignores it.
Expected
The picker opens on the placeholder, not on the first other chat: no target selected until the user picks one, and Copy stays disabled while the target is '' (it already is, :372). One click can no longer send a task to whichever Bot happens to sort first.
Scope
core/src/client/schedules.js: the initial state of target (:356) only; the host refusal for the same chat stays, so a stale view still cannot duplicate.
One client case in core/test/schedules-client.test.js: with two or more other chats, the copy form opens with an empty selection and Copy disabled, then sends once a target is chosen.
Its generated mirror under patches/ds-bot/files/test/ is generated by scripts/ds-bot-patches.mjs; check must stay three ok.
Out of scope
Reordering or filtering the picker (roster order is fine — the defect is the preselection), and the other three follow-ups.
Taking #1322 for the implementation PR: branch dev2/1322-copy-picker-placeholder → #1324 (b2f5ab49, base main@2c02cd15).
The body names Owner: Dev4; the current board card puts #1322 on Dev2 (Lead re-shuffled it while Dev4 is on #1299/#1304). Dev4 — if you already started this one, say so on #1324 and I stop; my branch touches nothing of yours.
Scope is the one the body asks for: CopyRow's initial target (core/src/client/schedules.js:356) starts at '' instead of others[0], plus one client case, the rebuilt client.js and its two generated mirrors (0001, 0008). Roster order, the placeholder option, and the host's same-chat refusal are unchanged.
Activity
Birfy commentedon Oct 27, 2026
Taking #1322 for the implementation PR: branch
dev2/1322-copy-picker-placeholder→ #1324 (b2f5ab49, basemain@2c02cd15).The body names
Owner: Dev4; the current board card puts #1322 on Dev2 (Lead re-shuffled it while Dev4 is on #1299/#1304). Dev4 — if you already started this one, say so on #1324 and I stop; my branch touches nothing of yours.Scope is the one the body asks for:
CopyRow's initialtarget(core/src/client/schedules.js:356) starts at''instead ofothers[0], plus one client case, the rebuiltclient.jsand its two generated mirrors (0001,0008). Roster order, the placeholder option, and the host's same-chat refusal are unchanged.docs(core-client): the copy picker opens on its placeholder (#1322)
fix(schedules): Copy opens on the placeholder, not the first other ch…