Flip workbench creation: prompt box first, prefabs underneath - #308
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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."
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/partsForSendfrom@corbits/chat-ui, soMyra'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.
the prompt box — one click creates immediately through the same
createWorkbenchFromTemplate/instantiateWorkbenchTemplatepathsas before. No radio-then-Create two-step anywhere on the screen.
the
creatingbranch now rendersWorkbenchLoadingStatewithdelayMs={0}instead of the default 200ms hold-back, since themoment Enter/a card is clicked is already a known-genuine wait, not
a maybe-fast one.
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 matchesevery 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 DBso as not to touch another lane's running dev stack) signed in as
dana.reyes@example.com, with an Ollama credential planted againstthe owner's remote tailscale box so Myra could actually reply — no
local inference was run.
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.)
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— cleanWORKBENCH_CHECK_SINCE=origin/main bun run lint— cleanWORKBENCH_CHECK_SINCE=origin/main bun run test— 849 pass, 0 failbun run check:structural— all checks pass (includingreact-ui-driftafter the snapshot bump)apps/web/test/new-workbench-picker.test.tsxandapps/web/test/toast-single-system.test.tsxfor the new promptbox + prefab-card shape
Note on scope
This branch only touches
apps/web(plus one snapshot-count line inscripts/checks). No changes topackages/chat-ui— the otherin-flight lanes there (failed-turn-strip, retry wiring, timeline perf)
are untouched.