Skip to content

Flip workbench creation: prompt box first, prefabs underneath - #308

Merged
TheGreatAxios merged 1 commit into
mainfrom
cl-6628-prompt-first
Aug 22, 2026
Merged

Flip workbench creation: prompt box first, prefabs underneath#308
TheGreatAxios merged 1 commit into
mainfrom
cl-6628-prompt-first

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Summary

Implements CL-6628: flips the New Workbench screen's hierarchy from
"choose a kind, then Create" to "say what you want, or pick a shortcut."

  • Prompt box on top, autofocused, placeholder "What do you want your
    Workbench to do?" Enter (or the send button) creates a blank
    workbench and delivers the typed text as the person's own first
    message via sendMessage/partsForSend from @corbits/chat-ui, so
    Myra's next line responds to the actual intent, not a kind label.
    Delivery happens after the template/setup greeting posts and before
    navigation, so the goal lands as the next message in the room
    rather than racing the greeting.
  • Prefab cards (Code review, Due Diligence, Just start talking) below
    the prompt box — one click creates immediately through the same
    createWorkbenchFromTemplate / instantiateWorkbenchTemplate paths
    as before. No radio-then-Create two-step anywhere on the screen.
  • Fixes the ~300ms blank-pane flash on create (CL-6623 finding Bench chat defaults with per-channel context-window overrides #3):
    the creating branch now renders WorkbenchLoadingState with
    delayMs={0} instead of the default 200ms hold-back, since the
    moment Enter/a card is clicked is already a known-genuine wait, not
    a maybe-fast one.
  • Dropped the disabled "More kinds soon" row along with the
    radiogroup — three prefab cards, no dead entry.

react-ui-drift's snapshot count moved 48 → 49 for the prompt box's
<textarea> — react-ui has no Textarea primitive, and this matches
every other multi-line input in the codebase (composer.tsx,
form-block.tsx, general-section.tsx, …), so it's the same convention
carried forward rather than new drift needing a fix.

Live verification

Ran the app against a real hub+sidecar stack (own .env, isolated DB
so as not to touch another lane's running dev stack) signed in as
dana.reyes@example.com, with an Ollama credential planted against
the owner's remote tailscale box so Myra could actually reply — no
local inference was run.

  • Typed "Get our onboarding docs into shape for new hires" into the
    prompt box, hit Enter: loading state showed immediately (no blank
    frame), the room opened with Myra's setup greeting followed by the
    typed goal as dana's own message, and Myra started a real reply
    turn. (The reply itself 401'd against Anthropic in that ad hoc
    verification environment — a model-routing/credential concern in my
    throwaway stack, unrelated to this change; the message delivery and
    turn kickoff both worked.)
  • Clicked the Due Diligence card: same immediate loading treatment,
    no blank flash, and the room opened with Myra + Scout in the roster
    and the template's own greeting — a single click, no intermediate
    step.

Test plan

  • WORKBENCH_CHECK_SINCE=origin/main bun run typecheck — clean
  • WORKBENCH_CHECK_SINCE=origin/main bun run lint — clean
  • WORKBENCH_CHECK_SINCE=origin/main bun run test — 849 pass, 0 fail
  • bun run check:structural — all checks pass (including
    react-ui-drift after the snapshot bump)
  • Rewrote apps/web/test/new-workbench-picker.test.tsx and
    apps/web/test/toast-single-system.test.tsx for the new prompt
    box + prefab-card shape
  • Manual browser verification (see above)

Note on scope

This branch only touches apps/web (plus one snapshot-count line in
scripts/checks). No changes to packages/chat-ui — the other
in-flight lanes there (failed-turn-strip, retry wiring, timeline perf)
are untouched.

Replace the radiogroup-then-Create picker with a prompt box on top
("What do you want your Workbench to do?") and one-click prefab cards
below. Submitting the prompt creates a blank workbench and delivers
the typed text as the person's own first message, so Myra responds
to their actual intent instead of a kind label; a prefab click still
creates immediately through the same template paths as before.

Also fixes the ~300ms blank-pane flash on create (CL-6623 finding #3)
by rendering the loading treatment with delayMs=0 instead of holding
it back for a wait that's already known to be genuine.

Rewrites apps/web/test/new-workbench-picker.test.tsx and
toast-single-system.test.tsx for the new shape (prompt submit,
prefab-card click) in place of the old radiogroup assertions.
@TheGreatAxios
TheGreatAxios merged commit 411afb1 into main Aug 22, 2026
5 checks passed
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.

1 participant