Back to Vibe Kanban

Frontend UI Package Refactor Audit

docs/frontend-ui-library-refactor-audit.md

0.1.037.7 KB
Original Source

Frontend UI Package Refactor Audit

Date: 2026-02-21

Scope

  • Source audited: packages/local-web/src/components/**/*.tsx
  • Total components: 280
  • Objective: identify what should move first into a new pnpm UI library package.

Current Frontend Structure (Component View)

AreaComponentsExtract nowExtract laterKeep app
ui-new/primitives7316849
ui-new/containers450045
ui-new/dialogs330033
ui-new/views320032
dialogs270027
ui/wysiwyg200200
ui171151
tasks100010
NormalizedConversation7007
root3003
common2002
ide2002
org2002
ui-new/scope2002
ui/table2020
agents1001
settings1001
ui-new/terminal1001

Refactor Status Legend

  • extract-now: move in first @vibe/ui package wave.
  • extract-later: reusable, but move only after API/dependency decoupling.
  • keep-app: stay in frontend app package (feature/domain/integration UI).
  • Start with extract-now components from components/ui and selected components/ui-new/primitives.
  • Keep all containers, views, and feature dialogs in the app package.
  • Treat components/ui/wysiwyg as a separate future package (@vibe/editor-ui) after @vibe/ui lands.

Full Component Map

ui-new/primitives

ComponentStatusTarget packageNotes
ui-new/primitives/Accordion.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/AppBar.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/AppBarButton.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/AppBarSocialLink.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/AppBarUserPopover.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/AutoResizeTextarea.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/ChatBoxBase.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/CollapsibleSectionHeader.tsxextract-later@vibe/uiPrimitive UI component; good first package candidate. Move after decoupling @/stores.
ui-new/primitives/ColorPicker.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/Command.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/CommandBar.tsxextract-later@vibe/uiPotentially reusable but needs API cleanup. Requires decoupling from @/components/*.
ui-new/primitives/CommentCard.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/ContextBar.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/ContextUsageGauge.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/CreateChatBox.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/Dialog.tsxextract-later@vibe/uiPrimitive UI component; good first package candidate. Move after decoupling @/contexts.
ui-new/primitives/Dropdown.tsxextract-later@vibe/uiPrimitive UI component; good first package candidate. Move after decoupling @/contexts.
ui-new/primitives/EmojiPicker.tsxextract-later@vibe/uiPotentially reusable but needs API cleanup. Requires decoupling from @/contexts.
ui-new/primitives/ErrorAlert.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/GoogleLogo.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/IconButton.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/IconButtonGroup.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/InputField.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/KanbanAssignee.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/KanbanBadge.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/MultiSelectCommandBar.tsxextract-later@vibe/uiPotentially reusable but needs API cleanup.
ui-new/primitives/MultiSelectDropdown.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/OAuthButtons.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/Popover.tsxextract-later@vibe/uiPrimitive UI component; good first package candidate. Move after decoupling @/contexts.
ui-new/primitives/PrBadge.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/PrimaryButton.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/PriorityIcon.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/ProcessListItem.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/PropertyDropdown.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/RelationshipBadge.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/RepoCard.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/RunningDots.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/SearchableDropdown.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/SearchableTagDropdown.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/SessionChatBox.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/SplitButton.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/StatusDot.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/SubIssueRow.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/SyncErrorIndicator.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/TodoProgressPopup.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/Toggle.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/Toolbar.tsxextract-now@vibe/uiPrimitive UI component; good first package candidate.
ui-new/primitives/Tooltip.tsxextract-later@vibe/uiPrimitive UI component; good first package candidate. Move after decoupling @/contexts.
ui-new/primitives/UserAvatar.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/ViewNavTabs.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/WorkspaceSummary.tsxkeep-appfrontend-appDomain-specific primitive for kanban/chat/workspace flows.
ui-new/primitives/conversation/ChatAggregatedDiffEntries.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatAggregatedToolEntries.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatApprovalCard.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatAssistantMessage.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatCollapsedThinking.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatEntryContainer.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatErrorMessage.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatFileEntry.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatMarkdown.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatScriptEntry.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatScriptPlaceholder.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatSubagentEntry.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatSystemMessage.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatThinkingMessage.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatTodoList.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatToolSummary.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ChatUserMessage.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/PierreConversationDiff.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/conversation/ToolStatusDot.tsxkeep-appfrontend-appConversation domain rendering components.
ui-new/primitives/model-selector/ModelList.tsxkeep-appfrontend-appModel/provider domain UI.
ui-new/primitives/model-selector/ModelProviderIcon.tsxkeep-appfrontend-appModel/provider domain UI.
ui-new/primitives/model-selector/ModelSelectorPopover.tsxkeep-appfrontend-appModel/provider domain UI.

ui-new/containers

ComponentStatusTarget packageNotes
ui-new/containers/AppBarUserPopoverContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/ChangesPanelContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/ColorPickerContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/CommentWidgetLine.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/ContextBarContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/ConversationListContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/CopyButton.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/CreateChatBoxContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/CreateModeRepoPickerBar.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/FileTreeContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/GitHubCommentRenderer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/GitPanelContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/IssueCommentsSectionContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/IssueRelationshipsSectionContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/IssueSubIssuesSectionContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/IssueWorkspacesSectionContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/KanbanContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/KanbanIssuePanelContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/LogsContentContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/MigrateChooseProjectsContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/MigrateFinishContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/MigrateIntroductionContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/MigrateLayout.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/MigrateMigrateContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/ModelSelectorContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/NavbarContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/NewDisplayConversationEntry.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/PierreDiffCard.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/PreviewBrowserContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/PreviewControlsContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/ProcessListContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/ProjectRightSidebarContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/RemoteIssueLink.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/ReviewCommentRenderer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/RightSidebar.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/SearchableDropdownContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/SearchableTagDropdownContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/SessionChatBoxContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/SharedAppLayout.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/TerminalPanelContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/VirtualizedProcessLogs.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/WorkspaceNotesContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/WorkspacesLayout.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/WorkspacesMainContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.
ui-new/containers/WorkspacesSidebarContainer.tsxkeep-appfrontend-appState/data container; keep with app feature logic.

ui-new/dialogs

ComponentStatusTarget packageNotes
ui-new/dialogs/AssigneeSelectionDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/ChangeTargetDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/CommandBarDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/ConfirmDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/CreateRepoDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/DeleteWorkspaceDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/ErrorDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/GuideDialogShell.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/KanbanFiltersDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/KeyboardShortcutsDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/ProjectsGuideDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/RebaseDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/RebaseInProgressDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/RenameWorkspaceDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/ResolveConflictsDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/SelectionDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/SettingsDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/WorkspaceSelectionDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/WorkspacesGuideDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/selections/ProjectSelectionDialog.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/AgentsSettingsSection.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/ExecutorConfigForm.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/GeneralSettingsSection.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/McpSettingsSection.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/OrganizationsSettingsSection.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/RemoteProjectsSettingsSection.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/ReposSettingsSection.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/SettingsComponents.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/SettingsDirtyContext.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/SettingsSection.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/rjsf/Fields.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/rjsf/Templates.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.
ui-new/dialogs/settings/rjsf/Widgets.tsxkeep-appfrontend-appWorkflow/dialog feature UI tied to app flows.

ui-new/views

ComponentStatusTarget packageNotes
ui-new/views/ChangesPanel.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/FileTree.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/FileTreeNode.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/FileTreeSearchBar.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/GitPanel.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssueCommentsSection.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssueListRow.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssueListSection.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssueListView.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssuePropertyRow.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssueRelationshipsSection.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssueSubIssuesSection.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssueTagsRow.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssueWorkspaceCard.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/IssueWorkspacesSection.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/KanbanBoard.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/KanbanCardContent.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/KanbanFilterBar.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/KanbanIssuePanel.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/MigrateChooseProjects.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/MigrateFinish.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/MigrateIntroduction.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/MigrateMigrate.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/MigrateSidebar.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/Navbar.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/PreviewBrowser.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/PreviewControls.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/PreviewNavigation.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/PriorityFilterDropdown.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/TerminalPanel.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/WorkspacesMain.tsxkeep-appfrontend-appFeature view composition.
ui-new/views/WorkspacesSidebar.tsxkeep-appfrontend-appFeature view composition.

dialogs

ComponentStatusTarget packageNotes
dialogs/CreateWorkspaceFromPrDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/auth/GhCliSetupDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/git/ForcePushDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/global/OAuthDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/global/ReleaseNotesDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/org/CreateOrganizationDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/org/CreateRemoteProjectDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/org/DeleteRemoteProjectDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/org/InviteMemberDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/scripts/ScriptFixerDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/settings/CreateConfigurationDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/settings/DeleteConfigurationDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/shared/ConfirmDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/shared/FolderPickerDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/shared/LoginRequiredPrompt.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/ChangeTargetBranchDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/CreatePRDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/EditBranchNameDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/EditorSelectionDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/GitActionsDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/PrCommentsDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/RebaseDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/RestoreLogsDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/StartReviewDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/TagEditDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/tasks/ViewProcessesDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.
dialogs/wysiwyg/ImagePreviewDialog.tsxkeep-appfrontend-appFeature component tied to app domain/data.

ui/wysiwyg

ComponentStatusTarget packageNotes
ui/wysiwyg/context/task-attempt-context.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/context/typeahead-open-context.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/lib/create-decorator-node.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/nodes/component-info-node.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/nodes/image-node.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later. Requires decoupling from @/hooks, @/components/*.
ui/wysiwyg/nodes/pr-comment-node.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/clickable-code-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/code-block-shortcut-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/code-highlight-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/component-info-keyboard-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/file-tag-typeahead-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later. Requires decoupling from @/components/*, @/contexts, @/lib/*api, @/stores.
ui/wysiwyg/plugins/image-keyboard-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/keyboard-commands-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/markdown-sync-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/paste-markdown-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/read-only-link-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/slash-command-typeahead-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later. Requires decoupling from @/contexts, @/hooks.
ui/wysiwyg/plugins/static-toolbar-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.
ui/wysiwyg/plugins/toolbar-plugin.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later. Requires decoupling from @/contexts.
ui/wysiwyg/plugins/typeahead-menu-components.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later.

ui

ComponentStatusTarget packageNotes
ui/alert.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/auto-expanding-textarea.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/badge.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/button.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/card.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/checkbox.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/dialog.tsxextract-later@vibe/uiReusable but currently tied to app context/portal behavior. Requires decoupling from @/keyboard.
ui/dropdown-menu.tsxextract-later@vibe/uiReusable but currently tied to app context/portal behavior. Requires decoupling from @/contexts.
ui/input.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/label.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/loader.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/pr-comment-card.tsxkeep-appfrontend-appPR domain card component.
ui/select.tsxextract-later@vibe/uiReusable but currently tied to app context/portal behavior. Requires decoupling from @/contexts.
ui/switch.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/textarea.tsxextract-now@vibe/uiCore shadcn-style primitive with low business coupling.
ui/tooltip.tsxextract-later@vibe/uiReusable but currently tied to app context/portal behavior. Requires decoupling from @/contexts.
ui/wysiwyg.tsxextract-later@vibe/editor-uiEditor subsystem; split as a dedicated package later. Requires decoupling from @/vscode.

tasks

ComponentStatusTarget packageNotes
tasks/AgentSelector.tsxkeep-appfrontend-appFeature component tied to app domain/data.
tasks/BranchSelector.tsxkeep-appfrontend-appFeature component tied to app domain/data.
tasks/ConfigSelector.tsxkeep-appfrontend-appFeature component tied to app domain/data.
tasks/RepoBranchSelector.tsxkeep-appfrontend-appFeature component tied to app domain/data.
tasks/RepoSelector.tsxkeep-appfrontend-appFeature component tied to app domain/data.
tasks/TaskDetails/ProcessLogsViewer.tsxkeep-appfrontend-appFeature component tied to app domain/data.
tasks/TaskDetails/ProcessesTab.tsxkeep-appfrontend-appFeature component tied to app domain/data.
tasks/Toolbar/GitOperations.tsxkeep-appfrontend-appFeature component tied to app domain/data.
tasks/UserAvatar.tsxkeep-appfrontend-appFeature component tied to app domain/data.
tasks/VariantSelector.tsxkeep-appfrontend-appFeature component tied to app domain/data.

NormalizedConversation

ComponentStatusTarget packageNotes
NormalizedConversation/DisplayConversationEntry.tsxkeep-appfrontend-appFeature component tied to app domain/data.
NormalizedConversation/EditDiffRenderer.tsxkeep-appfrontend-appFeature component tied to app domain/data.
NormalizedConversation/FileChangeRenderer.tsxkeep-appfrontend-appFeature component tied to app domain/data.
NormalizedConversation/FileContentView.tsxkeep-appfrontend-appFeature component tied to app domain/data.
NormalizedConversation/PendingApprovalEntry.tsxkeep-appfrontend-appFeature component tied to app domain/data.
NormalizedConversation/RetryEditorInline.tsxkeep-appfrontend-appFeature component tied to app domain/data.
NormalizedConversation/UserMessage.tsxkeep-appfrontend-appFeature component tied to app domain/data.

root

ComponentStatusTarget packageNotes
ConfigProvider.tsxkeep-appfrontend-appApp bootstrap/provider concern.
TagManager.tsxkeep-appfrontend-appApp bootstrap/provider concern.
ThemeProvider.tsxkeep-appfrontend-appApp bootstrap/provider concern.

common

ComponentStatusTarget packageNotes
common/ProfileVariantBadge.tsxkeep-appfrontend-appApp-specific utility presentation component.
common/RawLogText.tsxkeep-appfrontend-appApp-specific utility presentation component.

ide

ComponentStatusTarget packageNotes
ide/IdeIcon.tsxkeep-appfrontend-appFeature component tied to app domain/data.
ide/OpenInIdeButton.tsxkeep-appfrontend-appFeature component tied to app domain/data.

org

ComponentStatusTarget packageNotes
org/MemberListItem.tsxkeep-appfrontend-appFeature component tied to app domain/data.
org/PendingInvitationItem.tsxkeep-appfrontend-appFeature component tied to app domain/data.

ui-new/scope

ComponentStatusTarget packageNotes
ui-new/scope/NewDesignScope.tsxkeep-appfrontend-appRuntime integration (scope, terminal, keyboard, IDE).
ui-new/scope/VSCodeScope.tsxkeep-appfrontend-appRuntime integration (scope, terminal, keyboard, IDE).

ui/table

ComponentStatusTarget packageNotes
ui/table/data-table.tsxextract-later@vibe/uiReusable table building blocks; defer until core package is stable.
ui/table/table.tsxextract-later@vibe/uiReusable table building blocks; defer until core package is stable.

agents

ComponentStatusTarget packageNotes
agents/AgentIcon.tsxkeep-appfrontend-appFeature component tied to app domain/data.

settings

ComponentStatusTarget packageNotes
settings/ExecutorProfileSelector.tsxkeep-appfrontend-appFeature component tied to app domain/data.

ui-new/terminal

ComponentStatusTarget packageNotes
ui-new/terminal/XTermInstance.tsxkeep-appfrontend-appRuntime integration (scope, terminal, keyboard, IDE).

Summary Counts

  • extract-now: 27
  • extract-later: 35
  • keep-app: 218

Suggested Package Split

  • packages/ui: design tokens, core primitives, small reusable composed controls.
  • packages/editor-ui (later): WYSIWYG/editor-specific nodes and plugins.
  • frontend: feature views/containers/dialogs and integration-heavy components.