Skip to content

fix(onboarding): show workers-only engines as disabled rows instead of hiding them - #415

Merged
chaitanyagiri merged 2 commits into
HarnessMD:mainfrom
Vasilispapg:fix/onboarding-show-ineligible-engines
Sep 6, 2026
Merged

chaitanyagiri merged 2 commits into
HarnessMD:mainfrom
Vasilispapg:fix/onboarding-show-ineligible-engines

Conversation

@Vasilispapg

Copy link
Copy Markdown
Contributor

What & why

The onboarding engine step filtered to inbox-capable providers, so Copilot (and Kimi) simply vanished — which reads as "not supported at all" (issue #355), while Settings → prerequisites happily shows Copilot two screens later. The real constraint is narrower: a print-mode / bridge-less CLI can be hired as a worker but cannot run Michael, because the orchestrator must drain hive mail. The step now shows every preset engine: the god-eligible set stays selectable exactly as before (same order), and the workers-only engines render at the bottom as disabled rows — muted, radio disabled, a WORKERS ONLY badge, and a one-line hint saying why and that hiring them as workers still works. custom stays hidden (a bring-your-own command, not a preset engine). The split lives in one tested helper (onboardingEngineChoices()), and the strings landed in all three locales (en / ar / zh-CN).

Closes #355

Type of change

  • Bug fix
  • New feature
  • Refactor / cleanup
  • Docs
  • Build / CI

Evidence

Before

Onboarding step 2 on main, scrolled to the bottom: the list ends at Cursor — Copilot and Kimi are nowhere, with no explanation:

Engine step on main — Copilot and Kimi simply absent

After

The same step, same window size and theme: Kimi Code and Copilot appear at the bottom as disabled WORKERS ONLY rows with the reason ("Can't drain hive mail yet, so it can't run your clone — still available when hiring workers"); the selectable set above is unchanged:

Engine step with workers-only rows shown disabled

How I tested it

  • OS: macOS 26 (Darwin 25.6.0), Node 22.23.2
  • Steps:
    • Wrote the failing test first (onboardingEngineChoices split: selectable === god-eligible set in the same order, workers-only === ['kimi','copilot'], custom in neither), watched it fail, then implemented: node test/provider-config.test.cjs — 8/8 pass.
    • npm run typecheck (node + web) passes; npm run test:focused — 746/746; npm run build succeeds.
    • npm run dev, walked onboarding to the engine step on this branch and on main at the same window size (screenshots above); confirmed the disabled rows can't be selected and the radio/model flow for eligible engines is untouched.
    • New UI uses existing tokens only (--cth-paper-100, --cth-ink-300/500, --cth-font-display) — no new colors or spacing values.

Discord (optional)

Discord:

Checklist

  • Before and after evidence is attached above, under both headings.
  • npm run typecheck passes.
  • npm run test:focused passes.
  • npm run build succeeds.
  • This PR is one change. Unrelated fixes belong in their own PR.
  • I read the diff myself before opening this, and there is no debug output, commented-out code, or unrelated formatting churn in it.
  • Any new UI derives from DESIGN.md / tokens.ts — no ad-hoc colors, spacing, or fonts.
  • If I added art, it's my own or compatibly licensed, and listed in ATTRIBUTION.md. (No art added — only existing tokens and icons.)

…f hiding them

The engine step filtered to inbox-capable providers, so Copilot and Kimi
simply vanished — which read as "not supported at all" (issue HarnessMD#355), when
the real constraint is narrower: a print-mode / bridge-less CLI can be
hired as a worker but cannot run Michael, who must drain hive mail.

List every preset engine instead: the god-eligible set stays selectable
(same order as before), and the workers-only engines render at the bottom
as disabled rows — muted, radio disabled, a WORKERS ONLY badge, and a
one-line hint saying why and that hiring them as workers still works.
`custom` stays hidden (bring-your-own command, not a preset engine).

New onboardingEngineChoices() in the config store keeps the split in one
tested place; strings added to en/ar/zh-CN.

Closes HarnessMD#355
@chaitanyagiri
chaitanyagiri merged commit eba922e into HarnessMD:main Sep 6, 2026
1 check passed
crottolo added a commit to singleflo/munder-difflin that referenced this pull request Sep 15, 2026
Rebasing onto main brought 146 commits, and two of them moved ground the
Italian locale was standing on.

HarnessMD#347 made the Stay Awake step cross-platform: stayAwakeDesc became three
per-OS strings and the surrounding copy stopped saying "your Mac". The key
tree still matched on three of those, so nothing failed — the Italian simply
told a Windows user their Mac would sleep. reliabilityDesc, keepAwakeDesc and
notificationsDesc now say computer and system, like the English does. The Mac
variant is the old string unchanged, so it carries over verbatim; Windows and
Linux name the panels those systems actually ship in Italian rather than
translating the English ones literally.

HarnessMD#415 stopped hiding engines that cannot drain hive mail and shows them as
disabled rows instead, which needed a badge and a reason in every locale.

Also picks up the token-limit wording, which now spells out that cache reads
do not count against the limit.

zh-CN and ar came with those changes already; it.json is the only locale that
was not in main to receive them.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Github Copilot is missing in the list of engines during onboarding

2 participants