Skip to content

schedules picker: Copy preselects the first other chat, so one click sends the task to whichever Bot sorts first #1322

Closed

Description

@Birfy

Written-by: Triage
Owner: Dev4

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.

Activity

  1. added
    bugSomething isn't working
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    area:uiWeb/desktop UI and copy
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 27, 2026
  2. Birfy commented on Oct 27, 2026

    @Birfy
    CollaboratorAuthor

    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.

  3. 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 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:uiWeb/desktop UI and copybugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions