Repository navigation
Description
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 BotRuns 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
core/src/client/schedules.js: importconnectedConnectorsandisOn, addreachText(task, roster)and render it in the Bot row's hint beside timing.core/src/client/i18n.js: the two zh strings.core/test/schedules-client.test.js: the five cases below.- Rebuild the bundle (
cd core && npm run build);.github/actions/flybot-tests/action.yml:78runsbuild-client --check, so a stale bundle is red. docs/subsystems/core-client.md:48: one sentence.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
connectorsrecord →Runs with GitHub, Composio - (b)
connectors: { composio: false }→Runs with GitHub, noComposio - (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, nobotId) → no sentence at all - existing
core/test/schedules-client.test.jsstays green;node core/scripts/build-client.mjs --checkgreen 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
HugoXK commentedon Nov 4, 2026
pickup-ok — FlyBot implementation, claimed and queued.
29ebb349d6f74c4b9ebd5e3eb224ac6adev/1-schedule-connector-reachDev-1(bench position: after the core: a read-only window's Feedback Clear truncates the shared diagnostics log #2302 re-cut)core/src/client/**,core/test/**, rebuiltcore/client.js,docs/**, onechangelog.dfragment)#2319before its tip goes up.The pull request follows from this branch and carries
Fixes #2323.Written-by: FlyBot Lead