Skip to content

client: a schedule card does not say which connectors its unattended run will carry #2323

Closed

Description

@HugoXK

Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.

Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: 29ebb349d6f74c4b9ebd5e3eb224ac6a
Branch: dev/1-schedule-connector-reach
Base: e40cecf
At: 2026-11-04T00:45:57Z

Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.

Written-by: FlyBot Lead

What goes wrong for the user

A schedule's reach is not stored with the schedule: it is the Bot's reach at the moment the task fires.
core/src/client/connector-bots.js:18 connectedConnectors(roster) and :23 isOn(bot, id) (bot.connectors?.[id] !== false) decide it per Bot, and core/src/host/channel.js:217 (connectors: rt.connectorsView()) is the source. So a "summarise every morning at 9" task created while the Bot had GitHub only silently gains Composio the day the owner turns it on for that Bot — an unattended turn with a write-capable outbound tool — and the task card says nothing about it. The owner learns after the fact.

What the card should say

The Bot task row gains one sentence naming the connectors that unattended run would carry:

  • Runs with GitHub, Composio — two connected connectors, no per-Bot record (no record means on)
  • Runs with GitHub — connectors: { composio: false } on that Bot
  • Runs with no connectors — every connected connector turned off for that Bot

Both primitives already exist and the roster is already in the row's hands: core/src/client/schedules.js:124 TaskRow({ …, roster, … }), :156 const room = task.roomId ? roster.roomsById[task.roomId] : undefined, and today's hint at :157-159 carries timing and in {room} only. No new endpoint, no new predicate, no host-side DSH change.

v1 boundary: a room task (roomId, no botId) does not get the sentence. Room reach is not a single Bot's switch, so drawing one would state a falsehood.

What to change

  1. core/src/client/schedules.js: import connectedConnectors and isOn, add reachText(task, roster) and render it in the Bot row's hint beside timing.
  2. core/src/client/i18n.js: the two zh strings.
  3. core/test/schedules-client.test.js: the five cases below.
  4. Rebuild the bundle (cd core && npm run build); .github/actions/flybot-tests/action.yml:78 runs build-client --check, so a stale bundle is red.
  5. docs/subsystems/core-client.md:48: one sentence.
  6. changelog.d/2323-schedule-connector-reach.added.md: one fragment — this is a user-visible enhancement, so the kind is .added.md, not .fixed.md.

Acceptance (red first on live main e40cecf6f5a5b0d19c95797792e98c98bf6382f5, green after)

  • (a) two connectors connected, Bot has no connectors record → Runs with GitHub, Composio
  • (b) connectors: { composio: false } → Runs with GitHub, no Composio
  • (c) both false → Runs with no connectors
  • (d) a kind: 'sender' connector in the roster → absent from the sentence (a sender has neither tools nor a way in)
  • (e) a room task (roomId, no botId) → no sentence at all
  • existing core/test/schedules-client.test.js stays green; node core/scripts/build-client.mjs --check green after the rebuild

Scope

  • In: the sentence, its two i18n strings, the five cases, the bundle rebuild, one docs line.
  • Out: storing reach with the task (that is a host schema change, its own issue), room-task reach, and any warning/confirm dialog at creation time — this issue only makes the current reach visible on the card.

Dedup

search_issues for this face returns 0 open: the two nearest hits are closed #378 (bundle default-on) and #1543/#1555 (run-time Bot connector grants), neither of which draws reach on a schedule card. Code search finds no reachText. The idea came from Claude Code v2.1.317's /schedule warning about unrequested connectors; the FlyBot gap was re-read on live main, not assumed.

Lane

Touches core/client.js (rebuilt) + core/src/client/**: it is in the single bundle lane. It must not be pushed while another bundle PR is in flight — queue it behind the bubble-image fix (#2319).

Activity

  1. HugoXK commented on Nov 4, 2026

    @HugoXK
    ContributorAuthor

    pickup-ok — FlyBot implementation, claimed and queued.

    The pull request follows from this branch and carries Fixes #2323.

    Written-by: FlyBot Lead

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions