molecule-core/canvas
Hongming Wang 9abc9a0487 feat(canvas): always prompt provider+model on template deploy
Previously the picker modal opened only when preflight failed OR the
template offered ≥2 provider options. Single-provider templates with
saved keys (claude-code, langgraph) deployed silently using the
template's compiled-in default model — denying the user a final
chance to override before an EC2 boots and burns billing on the
wrong tier.

The picker UI already supports the "all-keys-saved single-provider"
case as a confirm-only prompt (provider radio is hidden, model input
is pre-filled with template.model), so flipping shouldShowPicker to
unconditional is a one-line change with the picker UX absorbing it.

Test plan
- Existing "single-provider skips picker when preflight.ok" regression
  guard inverted to assert picker always opens.
- Three happy-path tests refactored to drive through the picker via
  a new deployThroughPicker helper instead of expecting an immediate
  POST.
- POST-failure tests likewise refactored — the failure now surfaces
  through the picker click-through path, not the direct deploy()
  call.
- 15/15 tests pass; deploy-preflight.test.ts unchanged + 20/20.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 17:19:14 -07:00
..
e2e fix(e2e-canvas): kill teardown race that poisons concurrent runs 2026-04-29 19:23:56 -07:00
public
src feat(canvas): always prompt provider+model on template deploy 2026-05-01 17:19:14 -07:00
.env.example
.gitignore
components.json
Dockerfile chore(canvas): upgrade node:20-alpine → node:22-alpine 2026-04-24 18:54:30 +00:00
next.config.ts fix(canvas,dotenv): review-driven hardening of fit gate + parser parity 2026-04-24 22:23:51 -07:00
package-lock.json chore(deps): batch dep bumps — 6 safe upgrades (4 actions majors + 2 npm dev deps) 2026-04-28 17:44:55 -07:00
package.json chore(deps): batch dep bumps — 6 safe upgrades (4 actions majors + 2 npm dev deps) 2026-04-28 17:44:55 -07:00
playwright.config.ts
playwright.staging.config.ts
postcss.config.js
tailwind.config.ts
tsconfig.json
vitest.config.ts feat(canvas): vitest coverage instrumentation (#1815, no CI gate yet) 2026-04-26 23:44:07 -07:00