Skip to content

setup consolidation

github-actions[bot] edited this page Sep 20, 2026 · 1 revision

Setup Consolidation

How Builder and Crew setup views were consolidated into shared Identity, Integrations, and Playbooks surfaces. Companion to ui-design-guidelines.md.

Builder Setup

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 parity

Crew mirrors Builder with project nouns (frontend/src/products/work/):

  • WorkIdentityPanel: General (name, icon, role, instructions, delete request), Secrets, File access, Models (embedded WorkModelsPanel with hideHeader).
  • WorkIntegrationsPanel: MCPs (server picker + ConnectorsBrowser), Skills, Slack, WhatsApp (WorkflowBotsPanel with fixedChannel and a Crew target), Gmail. Every inner panel joins the single tab scroll via manageOwnScroll={false}.
  • WorkWorkspaceView is dashboard | 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 in WORK_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.

Custom icons

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.

Secrets UI

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.

Card standard

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).

Verification

  • npx vitest run (frontend; only pre-existing peer-owned provider / session-restore failures remain)
  • npx tsc -b, npx eslint on touched files
  • go build ./agent_go/..., go test on pkg/workflowtypes, internal/workproduct, manifest validation
  • Kit adoption is pinned by formsKitAdoption.test.ts; Crew consolidation by WorkWorkspacePane.test.ts / WorkWorkspaceToolbar.test.ts / workViewGating.test.ts.

Clone this wiki locally