Skip to content

Connectors: a failed connector's error text is only reachable by hand-selecting it #2027

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: db3db67d2c824345bf5577b2fd3de232
Branch: dev/1-connector-error-copy
Base: e807b26
At: 2026-11-01T11:06:25Z

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

Written-by: FlyBot Lead

What

Since #2022 a connector row in the error state can carry up to 2,000 characters of the host's own failure text (REASON_MAX, host/connectors.js), but the row's only actions are Try again and Disconnect. The text is drawn as one wrapping status span (client/connectors.js:43 → bt-connector-status, white-space: normal), so a person who wants to hand that sentence to someone — paste it in a chat, send it to whoever runs the gateway — has to select it by hand, which on a phone is close to impossible.

Proposal

Add a Copy error button to the row while connector.state === 'error', next to Try again:

Acceptance (red first, on the live base)

  1. With a connector in error state carrying the 2,000-character stored text, clicking Copy error hands the full stored text to navigator.clipboard.writeText, and the button then reads Copied.
  2. With no clipboard (no navigator.clipboard, or writeText not a function) or with writeText rejecting, the button reads Could not copy the error and never Copied.
  3. A connector that is ready or off renders no Copy error button; a row in error still renders Try again and Disconnect unchanged.

Each of 1–3 must be red on the base commit with only the new test file added, and green at the tip. Put the red-first output and one mutation per assertion in the PR body.

Scope

  • core/src/client/connectors.js — the button and its state.
  • core/src/client/i18n.js — ZH entries for Copy error and Could not copy the error (Copied already exists).
  • core/test/connectors-page.test.js — new file; follow the esbuild + stub rendering pattern of core/test/schedules-client.test.js.
  • core/client.js and patches/ds-bot/0008-client-bundle.patch — generate output only.
  • changelog.d/<issue>-connector-error-copy.fixed.md.
  • Do not create patches/ds-bot/files/src/client/connectors.js: checked on e807b261, that mirror does not exist (35 mirrors under files/src/client/, connectors.js is not one of them); it ships inside the 0008 bundle.

Dedup (live main e807b2616cf91a3546ebd460cffbb7325d2dc279, 2026-11-01)

  • grep -n "Copy error" core/src/client/connectors.js core/src/client/i18n.js → 0 hits; copiedToClipboard is not imported by connectors.js.
  • GitHub issue search repo:ThinkFlowLab/FlyBot connector error clipboard → 1 hit, #504 (invite/friend-chat polish, closed, unrelated).

Notes

  • Base is e807b261; if main moves before the PR opens, rebase and re-run the red-first on the new base.
  • Do not touch the 2,000-character window itself: this issue is only about making the text reachable.

Activity

  1. HugoXK commented on Nov 1, 2026

    @HugoXK
    ContributorAuthor

    Dispatch: FlyBot Dev-1 — branch dev/1-connector-error-copy.

    • Base: start from live main 40e7a798fa53fd6ea5959376d4ac57100114129a. This issue's recorded base e807b2616cf9 is one commit behind it (Pin the rename that leaves the computed name alone, and the settings line's signer #2025 merged at 11:06:38Z), so branch from 40e7a798 (or rebase onto it before opening the PR) and use the same ref as ARCH_DOCS_BASE; the PR body must name the actual base it was verified on.
    • Do not create patches/ds-bot/files/src/client/connectors.js: there is no such mirror on live main (35 files under patches/ds-bot/files/src/client/, connectors.js is not one of them). The client bundle change goes through 0008-client-bundle.patch, regenerated by generate only.
    • Fixes #2027. Checkpoint claim and the Owner: line use the same spelling (Dev-1); maintainer_can_modify: true.
    • Acceptance 1–3 above must each be red on 40e7a798 with only the new test file added, and each needs one mutation in the PR body, alongside the full verify counts.
  2. HugoXK commented on Nov 1, 2026

    @HugoXK
    ContributorAuthor

    Base update: main moved to 5f1103561dd1279040e473b0c3dea3b536e5baf4 (#2023 merged at 11:09:52Z). Branch from 5f110356, not 40e7a798/e807b261, and use the same ref as ARCH_DOCS_BASE.

    Because #2023 changed core/client.js and patches/ds-bot/0008-client-bundle.patch, this issue's generated artifacts must be regenerated on the new base: generate twice (second must be a no-op), check, canonical, build-client --check, then the red-first runs and the full verify on the rebased tree — do not carry over numbers measured on an older base.

  3. HugoXK commented on Nov 1, 2026

    @HugoXK
    ContributorAuthor

    Heartbeat

    Written-by: FlyBot Lead
    Still-working: db3db67d2c824345bf5577b2fd3de232
    At: 2026-11-01T11:36:50Z

  4. HugoXK commented on Nov 1, 2026

    @HugoXK
    ContributorAuthor

    Heartbeat

    Written-by: FlyBot Lead
    Still-working: db3db67d2c824345bf5577b2fd3de232
    At: 2026-11-01T11:39:06Z

  5. HugoXK commented on Nov 1, 2026

    @HugoXK
    ContributorAuthor

    Release

    Written-by: FlyBot Lead
    Released: db3db67d2c824345bf5577b2fd3de232
    Reason: merged as PR #2028, merge sha f6fcb7f
    At: 2026-11-01T11:42:06Z

  6. added a commit that references this issue on Nov 1, 2026
    f6fcb7f
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