From e87f2facf6045067bbebc10d8f303f31cf147760 Mon Sep 17 00:00:00 2001 From: waleed Date: Fri, 16 Jan 2026 14:55:02 -0800 Subject: [PATCH 1/5] feat(readme): added deepwiki to readme, consolidated utils --- README.md | 2 +- apps/sim/app/api/form/[identifier]/route.ts | 6 ++--- .../components/action-bar/action-bar.tsx | 3 ++- .../components/block-menu/block-menu.tsx | 5 ++--- .../deploy-modal/components/form/form.tsx | 3 ++- .../deploy-modal/components/mcp/mcp.tsx | 2 +- .../use-accessible-reference-prefixes.ts | 5 ++--- .../workflow/get-block-upstream-references.ts | 5 ++--- apps/sim/lib/mcp/workflow-tool-schema.ts | 2 +- apps/sim/lib/workflows/input-format.ts | 3 ++- .../workflows/triggers/start-block-types.ts | 21 ++++++++++++++++++ .../lib/workflows/triggers/trigger-utils.ts | 22 +------------------ 12 files changed, 39 insertions(+), 40 deletions(-) create mode 100644 apps/sim/lib/workflows/triggers/start-block-types.ts diff --git a/README.md b/README.md index 23c10de618..f25393ba18 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Sim.ai Discord Twitter - Documentation + Documentation DeepWiki

diff --git a/apps/sim/app/api/form/[identifier]/route.ts b/apps/sim/app/api/form/[identifier]/route.ts index 907051f92a..e75dd236c6 100644 --- a/apps/sim/app/api/form/[identifier]/route.ts +++ b/apps/sim/app/api/form/[identifier]/route.ts @@ -11,6 +11,7 @@ import { preprocessExecution } from '@/lib/execution/preprocessing' import { LoggingSession } from '@/lib/logs/execution/logging-session' import { normalizeInputFormatValue } from '@/lib/workflows/input-format' import { createStreamingResponse } from '@/lib/workflows/streaming/streaming' +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' import { setFormAuthCookie, validateFormAuth } from '@/app/api/form/utils' import { createErrorResponse, createSuccessResponse } from '@/app/api/workflows/utils' @@ -35,10 +36,7 @@ async function getWorkflowInputSchema(workflowId: string): Promise { .from(workflowBlocks) .where(eq(workflowBlocks.workflowId, workflowId)) - const startBlock = blocks.find( - (block) => - block.type === 'starter' || block.type === 'start_trigger' || block.type === 'input_trigger' - ) + const startBlock = blocks.find((block) => isValidStartBlockType(block.type)) if (!startBlock) { return [] diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/action-bar/action-bar.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/action-bar/action-bar.tsx index 57cfc4f4d1..c2f7ee340a 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/action-bar/action-bar.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/action-bar/action-bar.tsx @@ -2,6 +2,7 @@ import { memo, useCallback } from 'react' import { ArrowLeftRight, ArrowUpDown, Circle, CircleOff, LogOut } from 'lucide-react' import { Button, Copy, Tooltip, Trash2 } from '@/components/emcn' import { cn } from '@/lib/core/utils/cn' +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' import { useUserPermissionsContext } from '@/app/workspace/[workspaceId]/providers/workspace-permissions-provider' import { useCollaborativeWorkflow } from '@/hooks/use-collaborative-workflow' import { useWorkflowRegistry } from '@/stores/workflows/registry/store' @@ -97,7 +98,7 @@ export const ActionBar = memo( const userPermissions = useUserPermissionsContext() - const isStartBlock = blockType === 'starter' || blockType === 'start_trigger' + const isStartBlock = isValidStartBlockType(blockType) const isResponseBlock = blockType === 'response' const isNoteBlock = blockType === 'note' const isSubflowBlock = blockType === 'loop' || blockType === 'parallel' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/block-menu/block-menu.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/block-menu/block-menu.tsx index e0f7fac613..5d6af16f24 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/block-menu/block-menu.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/block-menu/block-menu.tsx @@ -8,6 +8,7 @@ import { PopoverDivider, PopoverItem, } from '@/components/emcn' +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' /** * Block information for context menu actions @@ -73,9 +74,7 @@ export function BlockMenu({ const allEnabled = selectedBlocks.every((b) => b.enabled) const allDisabled = selectedBlocks.every((b) => !b.enabled) - const hasStarterBlock = selectedBlocks.some( - (b) => b.type === 'starter' || b.type === 'start_trigger' - ) + const hasStarterBlock = selectedBlocks.some((b) => isValidStartBlockType(b.type)) const allNoteBlocks = selectedBlocks.every((b) => b.type === 'note') const isSubflow = isSingleBlock && (selectedBlocks[0]?.type === 'loop' || selectedBlocks[0]?.type === 'parallel') diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/form/form.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/form/form.tsx index 35adc9f2da..68e80d506d 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/form/form.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/form/form.tsx @@ -17,6 +17,7 @@ import { Skeleton } from '@/components/ui' import { isDev } from '@/lib/core/config/feature-flags' import { cn } from '@/lib/core/utils/cn' import { getBaseUrl, getEmailDomain } from '@/lib/core/utils/urls' +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' import { type FieldConfig, useCreateForm, @@ -146,7 +147,7 @@ export function FormDeploy({ useEffect(() => { const blocks = Object.values(useWorkflowStore.getState().blocks) - const startBlock = blocks.find((b) => b.type === 'starter' || b.type === 'start_trigger') + const startBlock = blocks.find((b) => isValidStartBlockType(b.type)) if (startBlock) { const inputFormat = useSubBlockStore.getState().getValue(startBlock.id, 'inputFormat') diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/mcp/mcp.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/mcp/mcp.tsx index 1620b68885..75c7bb326a 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/mcp/mcp.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/mcp/mcp.tsx @@ -15,7 +15,7 @@ import { import { Skeleton } from '@/components/ui' import { generateToolInputSchema, sanitizeToolName } from '@/lib/mcp/workflow-tool-schema' import { normalizeInputFormatValue } from '@/lib/workflows/input-format' -import { isValidStartBlockType } from '@/lib/workflows/triggers/trigger-utils' +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' import type { InputFormatField } from '@/lib/workflows/types' import { useAddWorkflowMcpTool, diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-accessible-reference-prefixes.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-accessible-reference-prefixes.ts index 55aa01c217..a30d565023 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-accessible-reference-prefixes.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-accessible-reference-prefixes.ts @@ -2,6 +2,7 @@ import { useMemo } from 'react' import { useShallow } from 'zustand/react/shallow' import { BlockPathCalculator } from '@/lib/workflows/blocks/block-path-calculator' import { SYSTEM_REFERENCE_PREFIXES } from '@/lib/workflows/sanitization/references' +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' import { normalizeName } from '@/executor/constants' import { useWorkflowStore } from '@/stores/workflows/workflow/store' import type { Loop, Parallel } from '@/stores/workflows/workflow/types' @@ -26,9 +27,7 @@ export function useAccessibleReferencePrefixes(blockId?: string | null): Set(ancestorIds) accessibleIds.add(blockId) - const starterBlock = Object.values(blocks).find( - (block) => block.type === 'starter' || block.type === 'start_trigger' - ) + const starterBlock = Object.values(blocks).find((block) => isValidStartBlockType(block.type)) if (starterBlock && ancestorIds.includes(starterBlock.id)) { accessibleIds.add(starterBlock.id) } diff --git a/apps/sim/lib/copilot/tools/client/workflow/get-block-upstream-references.ts b/apps/sim/lib/copilot/tools/client/workflow/get-block-upstream-references.ts index 749c04919a..a0b03e9232 100644 --- a/apps/sim/lib/copilot/tools/client/workflow/get-block-upstream-references.ts +++ b/apps/sim/lib/copilot/tools/client/workflow/get-block-upstream-references.ts @@ -17,6 +17,7 @@ import { type GetBlockUpstreamReferencesResultType, } from '@/lib/copilot/tools/shared/schemas' import { BlockPathCalculator } from '@/lib/workflows/blocks/block-path-calculator' +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' import { useWorkflowRegistry } from '@/stores/workflows/registry/store' import { useWorkflowStore } from '@/stores/workflows/workflow/store' import type { Loop, Parallel } from '@/stores/workflows/workflow/types' @@ -140,9 +141,7 @@ export class GetBlockUpstreamReferencesClientTool extends BaseClientTool { const accessibleIds = new Set(ancestorIds) accessibleIds.add(blockId) - const starterBlock = Object.values(blocks).find( - (b) => b.type === 'starter' || b.type === 'start_trigger' - ) + const starterBlock = Object.values(blocks).find((b) => isValidStartBlockType(b.type)) if (starterBlock && ancestorIds.includes(starterBlock.id)) { accessibleIds.add(starterBlock.id) } diff --git a/apps/sim/lib/mcp/workflow-tool-schema.ts b/apps/sim/lib/mcp/workflow-tool-schema.ts index 45572ea52c..3e7555c3f6 100644 --- a/apps/sim/lib/mcp/workflow-tool-schema.ts +++ b/apps/sim/lib/mcp/workflow-tool-schema.ts @@ -1,6 +1,6 @@ import { z } from 'zod' import { normalizeInputFormatValue } from '@/lib/workflows/input-format' -import { isValidStartBlockType } from '@/lib/workflows/triggers/trigger-utils' +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' import type { InputFormatField } from '@/lib/workflows/types' import type { McpToolSchema } from './types' diff --git a/apps/sim/lib/workflows/input-format.ts b/apps/sim/lib/workflows/input-format.ts index 5e857464d4..d4c8b242f6 100644 --- a/apps/sim/lib/workflows/input-format.ts +++ b/apps/sim/lib/workflows/input-format.ts @@ -1,3 +1,4 @@ +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' import type { InputFormatField } from '@/lib/workflows/types' /** @@ -23,7 +24,7 @@ export function extractInputFieldsFromBlocks( // Find trigger block const triggerEntry = Object.entries(blocks).find(([, block]) => { const b = block as Record - return b.type === 'start_trigger' || b.type === 'input_trigger' || b.type === 'starter' + return typeof b.type === 'string' && isValidStartBlockType(b.type) }) if (!triggerEntry) return [] diff --git a/apps/sim/lib/workflows/triggers/start-block-types.ts b/apps/sim/lib/workflows/triggers/start-block-types.ts new file mode 100644 index 0000000000..5bf389f91f --- /dev/null +++ b/apps/sim/lib/workflows/triggers/start-block-types.ts @@ -0,0 +1,21 @@ +/** + * Valid start block types that can trigger a workflow + * This module is kept lightweight with no dependencies to avoid circular imports + */ +export const VALID_START_BLOCK_TYPES = [ + 'starter', + 'start', + 'start_trigger', + 'api', + 'api_trigger', + 'input_trigger', +] as const + +export type ValidStartBlockType = (typeof VALID_START_BLOCK_TYPES)[number] + +/** + * Check if a block type is a valid start block type + */ +export function isValidStartBlockType(blockType: string): blockType is ValidStartBlockType { + return VALID_START_BLOCK_TYPES.includes(blockType as ValidStartBlockType) +} diff --git a/apps/sim/lib/workflows/triggers/trigger-utils.ts b/apps/sim/lib/workflows/triggers/trigger-utils.ts index 718101fa93..de68af8a7b 100644 --- a/apps/sim/lib/workflows/triggers/trigger-utils.ts +++ b/apps/sim/lib/workflows/triggers/trigger-utils.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { isValidStartBlockType } from '@/lib/workflows/triggers/start-block-types' import { type StartBlockCandidate, StartBlockPath, @@ -11,27 +12,6 @@ import { getTrigger } from '@/triggers' const logger = createLogger('TriggerUtils') -/** - * Valid start block types that can trigger a workflow - */ -export const VALID_START_BLOCK_TYPES = [ - 'starter', - 'start', - 'start_trigger', - 'api', - 'api_trigger', - 'input_trigger', -] as const - -export type ValidStartBlockType = (typeof VALID_START_BLOCK_TYPES)[number] - -/** - * Check if a block type is a valid start block type - */ -export function isValidStartBlockType(blockType: string): blockType is ValidStartBlockType { - return VALID_START_BLOCK_TYPES.includes(blockType as ValidStartBlockType) -} - /** * Check if a workflow state has a valid start block */ From e589aa1f6327a1b078224d7dc5e95bdd10f76b33 Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Fri, 16 Jan 2026 15:11:18 -0800 Subject: [PATCH 2/5] standardized all modals --- .../delete-chunk-modal/delete-chunk-modal.tsx | 2 +- .../knowledge/[id]/[documentId]/document.tsx | 10 ++- .../[workspaceId]/knowledge/[id]/base.tsx | 19 +++--- .../delete-knowledge-base-modal.tsx | 2 +- .../w/[workflowId]/components/panel/panel.tsx | 9 ++- .../cancel-subscription.tsx | 2 +- .../remove-member-dialog.tsx | 14 ++-- .../components/delete-modal/delete-modal.tsx | 2 +- .../components/invite-modal/invite-modal.tsx | 2 +- .../workspace-header/workspace-header.tsx | 66 +++++++++++++++++-- 10 files changed, 100 insertions(+), 28 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/delete-chunk-modal/delete-chunk-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/delete-chunk-modal/delete-chunk-modal.tsx index 7d69f5e146..ff841ddec9 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/delete-chunk-modal/delete-chunk-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/delete-chunk-modal/delete-chunk-modal.tsx @@ -77,7 +77,7 @@ export function DeleteChunkModal({

- + + + + ) } From 80d4853d704e6c7194a3a254fd15cee96dc25c54 Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Fri, 16 Jan 2026 15:15:46 -0800 Subject: [PATCH 3/5] updated modal copy --- .../components/cancel-subscription/cancel-subscription.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/subscription/components/cancel-subscription/cancel-subscription.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/subscription/components/cancel-subscription/cancel-subscription.tsx index 0d89f487be..7e4ef4b278 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/subscription/components/cancel-subscription/cancel-subscription.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/subscription/components/cancel-subscription/cancel-subscription.tsx @@ -245,10 +245,7 @@ export function CancelSubscription({ subscription, subscriptionData }: CancelSub ? 'Your subscription is set to cancel at the end of the billing period. Would you like to keep your subscription active?' : `You'll be redirected to Stripe to manage your subscription. You'll keep access until ${formatDate( periodEndDate - )}, then downgrade to free plan.`}{' '} - {!isCancelAtPeriodEnd && ( - This action cannot be undone. - )} + )}, then downgrade to free plan. You can restore your subscription at any time.`}

{!isCancelAtPeriodEnd && ( From c115ced01ac66e3ccebdae136437ead23c2b3cce Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Fri, 16 Jan 2026 15:34:20 -0800 Subject: [PATCH 4/5] standardized modals --- .../document-tags-modal.tsx | 4 +- .../add-documents-modal.tsx | 6 +- .../base-tags-modal/base-tags-modal.tsx | 6 +- .../rename-document-modal.tsx | 4 +- .../create-base-modal/create-base-modal.tsx | 6 +- .../delete-knowledge-base-modal.tsx | 2 +- .../edit-knowledge-base-modal.tsx | 8 +- .../notifications/notifications.tsx | 2 +- .../components/oauth-required-modal.tsx | 20 +-- .../custom-tool-modal/custom-tool-modal.tsx | 115 ++++++++++++------ .../components/help-modal/help-modal.tsx | 2 +- .../access-control/access-control.tsx | 6 +- .../components/api-keys/api-keys.tsx | 2 +- .../create-api-key-modal.tsx | 6 +- .../settings-modal/components/byok/byok.tsx | 2 +- .../components/copilot/copilot.tsx | 6 +- .../credential-sets/credential-sets.tsx | 6 +- .../components/custom-tools/custom-tools.tsx | 2 +- .../components/environment/environment.tsx | 2 +- .../components/integrations/integrations.tsx | 2 +- .../settings-modal/components/mcp/mcp.tsx | 2 +- .../remove-member-dialog.tsx | 2 +- .../workflow-mcp-servers.tsx | 4 +- .../components/delete-modal/delete-modal.tsx | 2 +- .../components/invite-modal/invite-modal.tsx | 6 +- .../workspace-header/workspace-header.tsx | 2 +- 26 files changed, 135 insertions(+), 92 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/document-tags-modal/document-tags-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/document-tags-modal/document-tags-modal.tsx index 182274a2c6..7817ab6b89 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/document-tags-modal/document-tags-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/document-tags-modal/document-tags-modal.tsx @@ -392,7 +392,7 @@ export function DocumentTagsModal({ return ( - +
Document Tags @@ -486,7 +486,7 @@ export function DocumentTagsModal({ /> )} {tagNameConflict && ( - + A tag with this name already exists )} diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-documents-modal/add-documents-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-documents-modal/add-documents-modal.tsx index 17659dfe96..183036155a 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-documents-modal/add-documents-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-documents-modal/add-documents-modal.tsx @@ -221,14 +221,14 @@ export function AddDocumentsModal({ return ( - + Add Documents
{fileError && ( -

{fileError}

+

{fileError}

)}
@@ -336,7 +336,7 @@ export function AddDocumentsModal({
{uploadError ? ( -

+

{uploadError.message}

) : ( diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/base-tags-modal/base-tags-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/base-tags-modal/base-tags-modal.tsx index 1a54a983f0..5e6cb16981 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/base-tags-modal/base-tags-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/base-tags-modal/base-tags-modal.tsx @@ -306,7 +306,7 @@ export function BaseTagsModal({ open, onOpenChange, knowledgeBaseId }: BaseTagsM return ( <> - +
Tags @@ -400,7 +400,7 @@ export function BaseTagsModal({ open, onOpenChange, knowledgeBaseId }: BaseTagsM }} /> {tagNameConflict && ( - + A tag with this name already exists )} @@ -417,7 +417,7 @@ export function BaseTagsModal({ open, onOpenChange, knowledgeBaseId }: BaseTagsM placeholder='Select type' /> {!hasAvailableSlots(createTagForm.fieldType) && ( - + No available slots for this type. Choose a different type. )} diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/rename-document-modal/rename-document-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/rename-document-modal/rename-document-modal.tsx index 8196bfb43d..c76efaff2b 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/rename-document-modal/rename-document-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/rename-document-modal/rename-document-modal.tsx @@ -77,7 +77,7 @@ export function RenameDocumentModal({ return ( - + Rename Document
@@ -108,7 +108,7 @@ export function RenameDocumentModal({
{error ? ( -

+

{error}

) : ( diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/components/create-base-modal/create-base-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/components/create-base-modal/create-base-modal.tsx index e6fc3fdf3f..750dc0f78c 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/components/create-base-modal/create-base-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/components/create-base-modal/create-base-modal.tsx @@ -332,7 +332,7 @@ export function CreateBaseModal({ open, onOpenChange }: CreateBaseModalProps) { return ( - + Create Knowledge Base @@ -528,7 +528,7 @@ export function CreateBaseModal({ open, onOpenChange }: CreateBaseModalProps) { )} {fileError && ( -

{fileError}

+

{fileError}

)}
@@ -537,7 +537,7 @@ export function CreateBaseModal({ open, onOpenChange }: CreateBaseModalProps) {
{submitStatus?.type === 'error' || uploadError ? ( -

+

{uploadError?.message || submitStatus?.message}

) : ( diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/components/delete-knowledge-base-modal/delete-knowledge-base-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/components/delete-knowledge-base-modal/delete-knowledge-base-modal.tsx index 167f50385d..1cb0449bb6 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/components/delete-knowledge-base-modal/delete-knowledge-base-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/components/delete-knowledge-base-modal/delete-knowledge-base-modal.tsx @@ -38,7 +38,7 @@ export function DeleteKnowledgeBaseModal({ }: DeleteKnowledgeBaseModalProps) { return ( - + Delete Knowledge Base

diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/components/edit-knowledge-base-modal/edit-knowledge-base-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/components/edit-knowledge-base-modal/edit-knowledge-base-modal.tsx index 5afeb140a8..9732b662d7 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/components/edit-knowledge-base-modal/edit-knowledge-base-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/components/edit-knowledge-base-modal/edit-knowledge-base-modal.tsx @@ -98,7 +98,7 @@ export function EditKnowledgeBaseModal({ return ( - + Edit Knowledge Base @@ -118,7 +118,7 @@ export function EditKnowledgeBaseModal({ data-form-type='other' /> {errors.name && ( -

{errors.name.message}

+

{errors.name.message}

)}
@@ -132,7 +132,7 @@ export function EditKnowledgeBaseModal({ className={cn(errors.description && 'border-[var(--text-error)]')} /> {errors.description && ( -

+

{errors.description.message}

)} @@ -143,7 +143,7 @@ export function EditKnowledgeBaseModal({
{error ? ( -

+

{error}

) : ( diff --git a/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/notifications.tsx b/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/notifications.tsx index 93938ca5ce..cfa54cc70d 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/notifications.tsx +++ b/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/notifications.tsx @@ -1261,7 +1261,7 @@ export function NotificationSettings({ - + Delete Notification

diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/credential-selector/components/oauth-required-modal.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/credential-selector/components/oauth-required-modal.tsx index 37bb13bbe7..dd0ad1dad7 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/credential-selector/components/oauth-required-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/credential-selector/components/oauth-required-modal.tsx @@ -1,6 +1,6 @@ 'use client' -import { useMemo } from 'react' +import { useMemo, useState } from 'react' import { createLogger } from '@sim/logger' import { Check } from 'lucide-react' import { @@ -308,6 +308,7 @@ export function OAuthRequiredModal({ serviceId, newScopes = [], }: OAuthRequiredModalProps) { + const [error, setError] = useState(null) const { baseProvider } = parseProvider(provider) const baseProviderConfig = OAUTH_PROVIDERS[baseProvider] @@ -348,23 +349,24 @@ export function OAuthRequiredModal({ }, [requiredScopes, newScopesSet]) const handleConnectDirectly = async () => { + setError(null) + try { const providerId = getProviderIdFromServiceId(serviceId) - onClose() - logger.info('Linking OAuth2:', { providerId, requiredScopes, }) if (providerId === 'trello') { + onClose() window.location.href = '/api/auth/trello/authorize' return } if (providerId === 'shopify') { - // Pass the current URL so we can redirect back after OAuth + onClose() const returnUrl = encodeURIComponent(window.location.href) window.location.href = `/api/auth/shopify/authorize?returnUrl=${returnUrl}` return @@ -374,8 +376,10 @@ export function OAuthRequiredModal({ providerId, callbackURL: window.location.href, }) - } catch (error) { - logger.error('Error initiating OAuth flow:', { error }) + onClose() + } catch (err) { + logger.error('Error initiating OAuth flow:', { error: err }) + setError('Failed to connect. Please try again.') } } @@ -425,10 +429,12 @@ export function OAuthRequiredModal({

)} + + {error &&

{error}

}
- + Generate + ) : ( - handleSchemaPromptChange(e.target.value)} - onBlur={handleSchemaPromptBlur} - onKeyDown={handleSchemaPromptKeyDown} - disabled={schemaGeneration.isStreaming} - className='h-[16px] w-full border-none bg-transparent py-0 pr-[2px] text-right font-medium text-[12px] text-[var(--text-primary)] leading-[14px] placeholder:text-[var(--text-muted)] focus:outline-none' - placeholder='Describe schema...' - /> +
+ handleSchemaPromptChange(e.target.value)} + onBlur={handleSchemaPromptBlur} + onKeyDown={handleSchemaPromptKeyDown} + disabled={schemaGeneration.isStreaming} + className={cn( + 'h-5 max-w-[200px] flex-1 text-[11px]', + schemaGeneration.isStreaming && 'text-muted-foreground' + )} + placeholder='Generate...' + /> + +
)}
@@ -952,35 +971,53 @@ try { Code {codeError && !codeGeneration.isStreaming && ( -
+
{codeError}
)}
-
+
{!isCodePromptActive ? ( - + Generate + ) : ( - handleCodePromptChange(e.target.value)} - onBlur={handleCodePromptBlur} - onKeyDown={handleCodePromptKeyDown} - disabled={codeGeneration.isStreaming} - className='h-[16px] w-full border-none bg-transparent py-0 pr-[2px] text-right font-medium text-[12px] text-[var(--text-primary)] leading-[14px] placeholder:text-[var(--text-muted)] focus:outline-none' - placeholder='Describe code...' - /> +
+ handleCodePromptChange(e.target.value)} + onBlur={handleCodePromptBlur} + onKeyDown={handleCodePromptKeyDown} + disabled={codeGeneration.isStreaming} + className={cn( + 'h-5 max-w-[200px] flex-1 text-[11px]', + codeGeneration.isStreaming && 'text-muted-foreground' + )} + placeholder='Generate...' + /> + +
)}
diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/help-modal/help-modal.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/help-modal/help-modal.tsx index 35d1168c84..aefb340b4c 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/help-modal/help-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/help-modal/help-modal.tsx @@ -420,7 +420,7 @@ export function HelpModal({ open, onOpenChange, workflowId, workspaceId }: HelpM return ( - + Help & Support diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/access-control/access-control.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/access-control/access-control.tsx index 49be2f7160..38c2886139 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/access-control/access-control.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/access-control/access-control.tsx @@ -1069,7 +1069,7 @@ export function AccessControl() { - + Unsaved Changes

@@ -1185,7 +1185,7 @@ export function AccessControl() {

- + Create Permission Group
@@ -1237,7 +1237,7 @@ export function AccessControl() { setDeletingGroup(null)}> - + Delete Permission Group

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/api-keys/api-keys.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/api-keys/api-keys.tsx index f10cff2a00..9f5cb7f1b9 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/api-keys/api-keys.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/api-keys/api-keys.tsx @@ -392,7 +392,7 @@ export function ApiKeys({ onOpenChange, registerCloseHandler }: ApiKeysProps) { {/* Delete Confirmation Dialog */} - + Delete API key

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/api-keys/components/create-api-key-modal/create-api-key-modal.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/api-keys/components/create-api-key-modal/create-api-key-modal.tsx index 7a2d42102d..14fec1b657 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/api-keys/components/create-api-key-modal/create-api-key-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/api-keys/components/create-api-key-modal/create-api-key-modal.tsx @@ -112,7 +112,7 @@ export function CreateApiKeyModal({ <> {/* Create API Key Dialog */} - + Create new API key

@@ -176,7 +176,7 @@ export function CreateApiKeyModal({ data-form-type='other' /> {createError && ( -

+

{createError}

)} @@ -215,7 +215,7 @@ export function CreateApiKeyModal({ } }} > - + Your API key has been created

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/byok/byok.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/byok/byok.tsx index 867c128f60..3ef983fb73 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/byok/byok.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/byok/byok.tsx @@ -306,7 +306,7 @@ export function BYOK() { setDeleteConfirmProvider(null)}> - + Delete API Key

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx index b3aef1a089..e705aed248 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx @@ -211,7 +211,7 @@ export function Copilot() { {/* Create API Key Dialog */} - + Create new API key

@@ -273,7 +273,7 @@ export function Copilot() { } }} > - + Your API key has been created

@@ -310,7 +310,7 @@ export function Copilot() { {/* Delete Confirmation Dialog */} - + Delete API key

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/credential-sets/credential-sets.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/credential-sets/credential-sets.tsx index 080e0fa3e7..a1fae5b1ab 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/credential-sets/credential-sets.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/credential-sets/credential-sets.tsx @@ -824,7 +824,7 @@ export function CredentialSets() { {/* Create Polling Group Modal */} - + Create Polling Group

@@ -897,7 +897,7 @@ export function CredentialSets() { {/* Leave Confirmation Modal */} setLeavingMembership(null)}> - + Leave Polling Group

@@ -925,7 +925,7 @@ export function CredentialSets() { {/* Delete Confirmation Modal */} setDeletingSet(null)}> - + Delete Polling Group

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/custom-tools/custom-tools.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/custom-tools/custom-tools.tsx index c0a85d9a62..33ee8340ad 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/custom-tools/custom-tools.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/custom-tools/custom-tools.tsx @@ -206,7 +206,7 @@ export function CustomTools() { /> - + Delete Custom Tool

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/environment/environment.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/environment/environment.tsx index 964dcdd91e..63d7072971 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/environment/environment.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/environment/environment.tsx @@ -821,7 +821,7 @@ export function EnvironmentVariables({ registerBeforeLeaveHandler }: Environment

- + Unsaved Changes

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/integrations/integrations.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/integrations/integrations.tsx index bc4965c661..e02b4c1a50 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/integrations/integrations.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/integrations/integrations.tsx @@ -390,7 +390,7 @@ export function Integrations({ onOpenChange, registerCloseHandler }: Integration

- + Disconnect Service

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/mcp/mcp.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/mcp/mcp.tsx index 90fba9595e..134417d494 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/mcp/mcp.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/mcp/mcp.tsx @@ -1170,7 +1170,7 @@ export function MCP({ initialServerId }: MCPProps) {

- + Delete MCP Server

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/remove-member-dialog/remove-member-dialog.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/remove-member-dialog/remove-member-dialog.tsx index 58bdc3867e..f64e13497b 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/remove-member-dialog/remove-member-dialog.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/remove-member-dialog/remove-member-dialog.tsx @@ -33,7 +33,7 @@ export function RemoveMemberDialog({ }: RemoveMemberDialogProps) { return ( - + {isSelfRemoval ? 'Leave Organization' : 'Remove Team Member'}

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/workflow-mcp-servers/workflow-mcp-servers.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/workflow-mcp-servers/workflow-mcp-servers.tsx index b8a6237fa9..64f5216c5f 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/workflow-mcp-servers/workflow-mcp-servers.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/workflow-mcp-servers/workflow-mcp-servers.tsx @@ -532,7 +532,7 @@ function ServerDetailView({ workspaceId, serverId, onBack }: ServerDetailViewPro !open && setToolToDelete(null)}> - + Remove Workflow

@@ -1109,7 +1109,7 @@ export function WorkflowMcpServers() { !open && setServerToDelete(null)}> - + Delete MCP Server

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/delete-modal/delete-modal.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/delete-modal/delete-modal.tsx index c897331b15..59d17232a2 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/delete-modal/delete-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/delete-modal/delete-modal.tsx @@ -102,7 +102,7 @@ export function DeleteModal({ return ( - + {title}

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/components/invite-modal/invite-modal.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/components/invite-modal/invite-modal.tsx index 8e0d164214..8cb9efcaba 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/components/invite-modal/invite-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/components/invite-modal/invite-modal.tsx @@ -607,7 +607,7 @@ export function InviteModal({ open, onOpenChange, workspaceName }: InviteModalPr onOpenChange(newOpen) }} > - + Invite members to {workspaceName || 'Workspace'} - + Remove Member

@@ -773,7 +773,7 @@ export function InviteModal({ open, onOpenChange, workspaceName }: InviteModalPr {/* Remove Invitation Confirmation Dialog */} - + Cancel Invitation

diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/workspace-header.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/workspace-header.tsx index 07881ad2ea..5c7dbbdad3 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/workspace-header.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/workspace-header.tsx @@ -605,7 +605,7 @@ export function WorkspaceHeader({ /> {/* Leave Confirmation Modal */} setIsLeaveModalOpen(false)}> - + Leave Workspace

From 03d440a1ecbe2874493f350fa980731564803c14 Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Fri, 16 Jan 2026 15:40:24 -0800 Subject: [PATCH 5/5] streamlined all error msg patterns --- .../document-tags-modal.tsx | 2 +- .../slack-channel-selector.tsx | 2 +- .../notifications/notifications.tsx | 30 +++++++++---------- .../w/[workflowId]/components/chat/chat.tsx | 2 +- .../deploy-modal/components/chat/chat.tsx | 6 ++-- .../form/components/form-builder.tsx | 2 +- .../deploy-modal/components/form/form.tsx | 8 ++--- .../settings-modal/components/byok/byok.tsx | 2 +- .../components/copilot/copilot.tsx | 2 +- .../member-invitation-card.tsx | 4 +-- .../no-organization-view.tsx | 4 +-- .../remove-member-dialog.tsx | 2 +- .../workflow-mcp-servers.tsx | 2 +- 13 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/document-tags-modal/document-tags-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/document-tags-modal/document-tags-modal.tsx index 7817ab6b89..d4397ba700 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/document-tags-modal/document-tags-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/document-tags-modal/document-tags-modal.tsx @@ -639,7 +639,7 @@ export function DocumentTagsModal({ /> )} {tagNameConflict && ( - + A tag with this name already exists )} diff --git a/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/components/slack-channel-selector/slack-channel-selector.tsx b/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/components/slack-channel-selector/slack-channel-selector.tsx index ac17cde6b1..c551fd456c 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/components/slack-channel-selector/slack-channel-selector.tsx +++ b/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/components/slack-channel-selector/slack-channel-selector.tsx @@ -112,7 +112,7 @@ export function SlackChannelSelector({ {selectedChannel.isPrivate ? 'Private' : 'Public'} channel: #{selectedChannel.name}

)} - {error &&

{error}

} + {error &&

{error}

} ) } diff --git a/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/notifications.tsx b/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/notifications.tsx index cfa54cc70d..216ccf8414 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/notifications.tsx +++ b/apps/sim/app/workspace/[workspaceId]/logs/components/logs-toolbar/components/notifications/notifications.tsx @@ -634,7 +634,7 @@ export function NotificationSettings({ }} /> {formErrors.webhookUrl && ( -

{formErrors.webhookUrl}

+

{formErrors.webhookUrl}

)}
@@ -660,7 +660,7 @@ export function NotificationSettings({ placeholderWithTags='Add email' /> {formErrors.emailRecipients && ( -

{formErrors.emailRecipients}

+

{formErrors.emailRecipients}

)}
)} @@ -707,7 +707,7 @@ export function NotificationSettings({ /> )} {formErrors.slackAccountId && ( -

+

{formErrors.slackAccountId}

)} @@ -776,7 +776,7 @@ export function NotificationSettings({ allOptionLabel='All levels' /> {formErrors.levelFilter && ( -

{formErrors.levelFilter}

+

{formErrors.levelFilter}

)} @@ -822,7 +822,7 @@ export function NotificationSettings({ allOptionLabel='All triggers' /> {formErrors.triggerFilter && ( -

{formErrors.triggerFilter}

+

{formErrors.triggerFilter}

)} @@ -938,7 +938,7 @@ export function NotificationSettings({ } /> {formErrors.consecutiveFailures && ( -

+

{formErrors.consecutiveFailures}

)} @@ -962,7 +962,7 @@ export function NotificationSettings({ } /> {formErrors.failureRatePercent && ( -

+

{formErrors.failureRatePercent}

)} @@ -982,7 +982,7 @@ export function NotificationSettings({ } /> {formErrors.windowHours && ( -

{formErrors.windowHours}

+

{formErrors.windowHours}

)} @@ -1004,7 +1004,7 @@ export function NotificationSettings({ } /> {formErrors.durationThresholdMs && ( -

+

{formErrors.durationThresholdMs}

)} @@ -1028,7 +1028,7 @@ export function NotificationSettings({ } /> {formErrors.latencySpikePercent && ( -

+

{formErrors.latencySpikePercent}

)} @@ -1048,7 +1048,7 @@ export function NotificationSettings({ } /> {formErrors.windowHours && ( -

{formErrors.windowHours}

+

{formErrors.windowHours}

)} @@ -1071,7 +1071,7 @@ export function NotificationSettings({ } /> {formErrors.costThresholdDollars && ( -

+

{formErrors.costThresholdDollars}

)} @@ -1094,7 +1094,7 @@ export function NotificationSettings({ } /> {formErrors.inactivityHours && ( -

{formErrors.inactivityHours}

+

{formErrors.inactivityHours}

)} )} @@ -1116,7 +1116,7 @@ export function NotificationSettings({ } /> {formErrors.errorCountThreshold && ( -

+

{formErrors.errorCountThreshold}

)} @@ -1136,7 +1136,7 @@ export function NotificationSettings({ } /> {formErrors.windowHours && ( -

{formErrors.windowHours}

+

{formErrors.windowHours}

)} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx index 524e3c02ec..24d609f505 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx @@ -995,7 +995,7 @@ export function Chat() {
-
+
File upload error
diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/chat/chat.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/chat/chat.tsx index edd59cd819..8b56c5ab43 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/chat/chat.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/chat/chat.tsx @@ -557,7 +557,7 @@ function IdentifierInput({ )}
- {error &&

{error}

} + {error &&

{error}

}

{isEditingExisting && value ? ( <> @@ -777,7 +777,7 @@ function AuthSelector({ disabled={disabled} /> {emailError && ( -

{emailError}

+

{emailError}

)}

{authType === 'email' @@ -787,7 +787,7 @@ function AuthSelector({

)} - {error &&

{error}

} + {error &&

{error}

}
) } diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/form/components/form-builder.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/form/components/form-builder.tsx index 0604eafa0c..8faafe3db2 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/form/components/form-builder.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/form/components/form-builder.tsx @@ -216,7 +216,7 @@ export function FormBuilder({ )} {titleError && ( -

{titleError}

+

{titleError}

)}
{(identifierError || errors.identifier) && ( -

+

{identifierError || errors.identifier}

)} @@ -483,7 +483,7 @@ export function FormDeploy({ {errors.password && ( -

{errors.password}

+

{errors.password}

)}

{existingForm?.hasPassword @@ -520,7 +520,7 @@ export function FormDeploy({ placeholderWithTags='Add another' /> {errors.emails && ( -

{errors.emails}

+

{errors.emails}

)}

Add specific emails or entire domains (@example.com) @@ -551,7 +551,7 @@ export function FormDeploy({ )} {errors.general && ( -

{errors.general}

+

{errors.general}

)} {error && ( -

{error}

+

{error}

)}
diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx index e705aed248..f59e970244 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/copilot/copilot.tsx @@ -234,7 +234,7 @@ export function Copilot() { autoFocus /> {createError && ( -

{createError}

+

{createError}

)} diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/member-invitation-card/member-invitation-card.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/member-invitation-card/member-invitation-card.tsx index 6e0e127259..7ac1b4f438 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/member-invitation-card/member-invitation-card.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/member-invitation-card/member-invitation-card.tsx @@ -183,7 +183,7 @@ export function MemberInvitationCard({ aria-autocomplete='none' /> {emailError && ( -

+

{emailError}

)} @@ -295,7 +295,7 @@ export function MemberInvitationCard({ {/* Invitation error - inline */} {invitationError && ( -

+

{invitationError instanceof Error && invitationError.message ? invitationError.message : String(invitationError)} diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/no-organization-view/no-organization-view.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/no-organization-view/no-organization-view.tsx index 9e35a894da..de272056cb 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/no-organization-view/no-organization-view.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/team-management/components/no-organization-view/no-organization-view.tsx @@ -104,7 +104,7 @@ export function NoOrganizationView({

{error && ( -

{error}

+

{error}

)}
- {error &&

{error}

} + {error &&

{error}

}
diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/workflow-mcp-servers/workflow-mcp-servers.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/workflow-mcp-servers/workflow-mcp-servers.tsx index 64f5216c5f..53fdf533d7 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/workflow-mcp-servers/workflow-mcp-servers.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/workflow-mcp-servers/workflow-mcp-servers.tsx @@ -745,7 +745,7 @@ function ServerDetailView({ workspaceId, serverId, onBack }: ServerDetailViewPro } /> {addToolMutation.isError && ( -

+

{addToolMutation.error?.message || 'Failed to add workflow'}

)}