-
Notifications
You must be signed in to change notification settings - Fork 2
setup consolidation
How Builder and Crew setup views were consolidated into shared Identity,
Integrations, and Playbooks surfaces. Companion to ui-design-guidelines.md.
WorkflowCapabilitiesPanel serves three sections, in toolbar order
Identity → Integrations → Playbooks:
| View | Tabs | Contents |
|---|---|---|
| Identity | General, Secrets, File access, Models |
WorkflowIdentityPanel (name, icon, soul, GitHub-style delete), SecretSelectionSection, WorkflowFolderAccessView, WorkflowLLMConfigurationPanel
|
| Integrations | MCPs, Skills, Slack, WhatsApp, Gmail | Tool selection + ConnectorsBrowser, SkillsManagerPanel, WorkflowBotsPanel pinned per channel via fixedChannel, WorkflowEmailPanel
|
| Playbooks | — | PlaybooksPanel |
The standalone Bots / Gmail / Secrets / Folders / LLM views were retired;
the UI-control contract was regenerated (18 views). The Setup toolbar is an
open/close WorkspaceToolbarGroup, matching Crew.
Each Integrations tab splits workflow picks from the shared shelf: a "This
workflow" group on top, "Platform connected" below (MCPs render two
ToolSelectionSection lists; skills use splitSelectionGroups). Ticking
moves a row between groups; empty groups hide. Search is per tab (below the
platform list on MCPs, above the list on Skills) and refresh lives only in
the header; the skills toolbar keeps Import plus an Ask AI install button.
Crew mirrors Builder with project nouns (frontend/src/products/work/):
-
WorkIdentityPanel: General (name, icon, role, instructions, delete request), Secrets, File access, Models (embeddedWorkModelsPanelwithhideHeader). -
WorkIntegrationsPanel: MCPs (server picker +ConnectorsBrowser), Skills, Slack, WhatsApp (WorkflowBotsPanelwithfixedChanneland a Crew target), Gmail. Every inner panel joins the single tab scroll viamanageOwnScroll={false}. -
WorkWorkspaceViewisdashboard | database | files | browser | costs | schedules | identity | mcp. Legacy saved views and agent presentation ids (bots,skills,secrets,models,email,folders,llm) map onto the consolidated views inWORK_UI_PRESENTATION_VIEWS, so old preferences and agent commands keep working.
No server changes were needed for gating: workViewGating.ts reuses the
legacy feature panel ids (mcp, skills, bots, secrets, folders,
models). Identity is always reachable (General is the project's own
name and deletion); Integrations needs any of mcp/skills/bots;
inner tabs follow their own panel id. This also fixed Crew Gmail, which
had no server panel id and was previously gated off as a standalone view.
Crew identity edits persist through updateProductProjectIdentity
(platform/chat/productProjects.ts, mirrored by the set_work_identity
agent tool): omitted fields preserved, empty fields removed, stored in
product.json. Crew deletion reuses the surface confirm dialog, upgraded
to GitHub-style type-the-name confirmation.
Both General tabs edit icons through the shared IconUploadField: an
emoji field plus an image upload that downscales to a ~128px thumbnail
(utils/downscaleImage.ts) stored inline as a data URL in the existing
icon field. All 16 render sites pick it up with no prop threading because
they funnel through EntityIdentityIcon. Server validation
(agent_go/pkg/workflowtypes/icons.go, used by workflow-manifest and Crew
identity validation) accepts emoji (≤8 chars) or image data URLs (≤100k
chars); prompt/tool rendering redacts image bytes. Creation dialogs stay
emoji-only; uploads live in Identity.
SecretSelectionSection, SecretsManagerPanel, and
SecretSelectionDropdown were migrated to the kit: theme tokens instead
of hardcoded palettes, kit Badge pills, SettingsCard blocks, the empty
list box hidden when there is nothing to show, and the dropdown's text ✕
replaced with the X icon. Behavior is unchanged, including the native
confirm() dialogs pinned by contract tests. The amber bot-enabled toggle
is the one intentional semantic color, documented in its own copy.
Tab content follows the shared-knowledge-bases card, extracted into the
shared SettingsCard (components/ui/SettingsCard.tsx): primary icon +
semibold title + SettingsCount pill, optional right action, muted
explainer, content, SettingsEmpty dashed empty state. Adopted by both
General tabs, the secrets surfaces, and both folder views
(KnowledgebaseSources itself already matches and was left untouched).
-
npx vitest run(frontend; only pre-existing peer-owned provider / session-restore failures remain) -
npx tsc -b,npx eslinton touched files -
go build ./agent_go/...,go testonpkg/workflowtypes,internal/workproduct, manifest validation - Kit adoption is pinned by
formsKitAdoption.test.ts; Crew consolidation byWorkWorkspacePane.test.ts/WorkWorkspaceToolbar.test.ts/workViewGating.test.ts.
Auto-synced from docs/ on main. Edit there, not here.