From 4182db2758def5ec6d4c749297576fb7c7645cc4 Mon Sep 17 00:00:00 2001 From: Vikhyath Mondreti Date: Fri, 19 Jun 2026 13:29:14 -0700 Subject: [PATCH 1/2] improvement(access-controls): dedup independent block names --- .../content/docs/en/workflows/blocks/webhook.mdx | 14 +++++++------- .../content/docs/en/workflows/triggers/sim.mdx | 14 +++++++------- apps/sim/blocks/blocks/sim_workspace_event.ts | 2 +- apps/sim/blocks/blocks/webhook_request.ts | 2 +- apps/sim/triggers/sim/workspace-event.test.ts | 6 +++--- apps/sim/triggers/sim/workspace-event.ts | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/docs/content/docs/en/workflows/blocks/webhook.mdx b/apps/docs/content/docs/en/workflows/blocks/webhook.mdx index 845347e340c..374fd03b913 100644 --- a/apps/docs/content/docs/en/workflows/blocks/webhook.mdx +++ b/apps/docs/content/docs/en/workflows/blocks/webhook.mdx @@ -1,6 +1,6 @@ --- -title: Webhook -description: The Webhook block sends an HTTP POST to an external endpoint, with automatic headers and optional signing. +title: Outgoing Webhook +description: The Outgoing Webhook block sends an HTTP POST to an external endpoint, with automatic headers and optional signing. pageType: reference --- @@ -8,7 +8,7 @@ import { Callout } from 'fumadocs-ui/components/callout' import { BlockPreview, WorkflowPreview, WEBHOOK_NOTIFY_WORKFLOW, WEBHOOK_TRIGGER_WORKFLOW } from '@/components/workflow-preview' import { FAQ } from '@/components/ui/faq' -The Webhook block sends HTTP POST requests to external webhook endpoints with automatic webhook headers and optional HMAC signing. +The Outgoing Webhook block sends HTTP POST requests to external webhook endpoints with automatic webhook headers and optional HMAC signing. @@ -77,16 +77,16 @@ Format the result, then POST it to a Slack, Discord, or custom endpoint. -When the Condition passes, the Webhook starts a process in another system. +When the Condition passes, the Outgoing Webhook starts a process in another system. -The Webhook block always uses POST. For other HTTP methods or more control, use the [API block](/workflows/blocks/api). +The Outgoing Webhook block always uses POST. For other HTTP methods or more control, use the [API block](/workflows/blocks/api). diff --git a/apps/docs/content/docs/en/workflows/triggers/sim.mdx b/apps/docs/content/docs/en/workflows/triggers/sim.mdx index 08edb72af8d..4f77b80e2fd 100644 --- a/apps/docs/content/docs/en/workflows/triggers/sim.mdx +++ b/apps/docs/content/docs/en/workflows/triggers/sim.mdx @@ -1,16 +1,16 @@ --- -title: Sim +title: Sim Workspace Events --- import { Callout } from 'fumadocs-ui/components/callout' import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { FAQ } from '@/components/ui/faq' -The Sim trigger runs a workflow when events happen in your workspace: another workflow's run fails or succeeds, a workflow is deployed, or an alert condition like a latency spike or cost threshold is met. Use it to build side-effect workflows — alerting, escalation, auto-remediation — composed from any blocks (Slack, email, webhooks, custom logic). +The Sim Workspace Events trigger runs a workflow when events happen in your workspace: another workflow's run fails or succeeds, a workflow is deployed, or an alert condition like a latency spike or cost threshold is met. Use it to build side-effect workflows — alerting, escalation, auto-remediation — composed from any blocks (Slack, email, webhooks, custom logic). ## Events -Pick one event per Sim trigger block: +Pick one event per Sim Workspace Events trigger block: **Plain events** — fire on every occurrence: @@ -68,8 +68,8 @@ All events include `event`, `timestamp`, `workflowId`, and `workflowName` (the s ## Behavior
    -
  • The workflow containing the Sim trigger must be deployed for events to fire.
  • -
  • Runs started by a Sim trigger never emit workspace events, so side-effect workflows cannot chain or loop.
  • +
  • The workflow containing the Sim Workspace Events trigger must be deployed for events to fire.
  • +
  • Runs started by a Sim Workspace Events trigger never emit workspace events, so side-effect workflows cannot chain or loop.
  • Alert conditions fire at most once per cooldown window (one hour, or the inactivity window for No Activity).
  • Event delivery is fire-and-forget: side-effect runs are billed like any other run and are subject to workspace rate limits.
@@ -80,8 +80,8 @@ All events include `event`, `timestamp`, `workflowId`, and `workflowName` (the s diff --git a/apps/sim/blocks/blocks/sim_workspace_event.ts b/apps/sim/blocks/blocks/sim_workspace_event.ts index ea94088deeb..0a86aa777f5 100644 --- a/apps/sim/blocks/blocks/sim_workspace_event.ts +++ b/apps/sim/blocks/blocks/sim_workspace_event.ts @@ -8,7 +8,7 @@ export const SimWorkspaceEventBlock: BlockConfig = { // can scrape the type for icon-map keys; a test asserts it stays equal to // the constant. type: 'sim_workspace_event', - name: 'Sim', + name: 'Sim Workspace Events', description: 'Run this workflow when workspace events occur: run errors or successes, deployments, and alert conditions like latency or cost spikes.', category: 'triggers', diff --git a/apps/sim/blocks/blocks/webhook_request.ts b/apps/sim/blocks/blocks/webhook_request.ts index 6fad3395995..b34e78413d4 100644 --- a/apps/sim/blocks/blocks/webhook_request.ts +++ b/apps/sim/blocks/blocks/webhook_request.ts @@ -4,7 +4,7 @@ import type { RequestResponse } from '@/tools/http/types' export const WebhookRequestBlock: BlockConfig = { type: 'webhook_request', - name: 'Webhook', + name: 'Outgoing Webhook', description: 'Send a webhook request', longDescription: 'Send an HTTP POST request to a webhook URL with automatic webhook headers. Optionally sign the payload with HMAC-SHA256 for secure webhook delivery.', diff --git a/apps/sim/triggers/sim/workspace-event.test.ts b/apps/sim/triggers/sim/workspace-event.test.ts index e338fb4cab5..9ddabb70d6f 100644 --- a/apps/sim/triggers/sim/workspace-event.test.ts +++ b/apps/sim/triggers/sim/workspace-event.test.ts @@ -34,9 +34,9 @@ describe('sim workspace event trigger registration', () => { }) }) - it('is named Sim', () => { - expect(SimWorkspaceEventBlock.name).toBe('Sim') - expect(simWorkspaceEventTrigger.name).toBe('Sim') + it('is named Sim Workspace Events', () => { + expect(SimWorkspaceEventBlock.name).toBe('Sim Workspace Events') + expect(simWorkspaceEventTrigger.name).toBe('Sim Workspace Events') }) }) diff --git a/apps/sim/triggers/sim/workspace-event.ts b/apps/sim/triggers/sim/workspace-event.ts index 5d455b709dc..27028aa2da6 100644 --- a/apps/sim/triggers/sim/workspace-event.ts +++ b/apps/sim/triggers/sim/workspace-event.ts @@ -10,7 +10,7 @@ import type { TriggerConfig } from '@/triggers/types' export const simWorkspaceEventTrigger: TriggerConfig = { id: SIM_WORKSPACE_EVENT_TRIGGER_ID, - name: 'Sim', + name: 'Sim Workspace Events', provider: SIM_TRIGGER_PROVIDER, description: 'Triggers when workspace events occur: run errors or successes, deployments, and alert conditions like latency or cost spikes', From c06f2ef5e6ed3f98c7c0e1ac6e8c5095c5177c1b Mon Sep 17 00:00:00 2001 From: Vikhyath Mondreti Date: Fri, 19 Jun 2026 13:39:50 -0700 Subject: [PATCH 2/2] improvement(access-controls): fix delete button, naming in perm group modal --- .../components/access-control.tsx | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/apps/sim/ee/access-control/components/access-control.tsx b/apps/sim/ee/access-control/components/access-control.tsx index da5b8b55e2d..0bf7de4dc47 100644 --- a/apps/sim/ee/access-control/components/access-control.tsx +++ b/apps/sim/ee/access-control/components/access-control.tsx @@ -1170,6 +1170,28 @@ export function AccessControl() { ) } + const deleteConfirmModal = ( + setDeletingGroup(null)} + srTitle='Delete Permission Group' + title='Delete Permission Group' + text={[ + 'Are you sure you want to delete ', + { text: deletingGroup?.name ?? 'this group', bold: true }, + '? ', + { text: 'All members will be removed from this group.', error: true }, + ' This action cannot be undone.', + ]} + confirm={{ + label: 'Delete', + onClick: confirmDelete, + pending: deletePermissionGroup.isPending, + pendingLabel: 'Deleting...', + }} + /> + ) + if (viewingGroup) { return ( <> @@ -1479,7 +1501,7 @@ export function AccessControl() { {filteredToolBlocks.length > 0 && (
- Tools + Integrations and Triggers
{filteredToolBlocks.map((block) => { @@ -1638,6 +1660,8 @@ export function AccessControl() { isAdding={bulkAddMembers.isPending} errorMessage={addMembersError} /> + + {deleteConfirmModal} ) } @@ -1784,25 +1808,7 @@ export function AccessControl() { /> - setDeletingGroup(null)} - srTitle='Delete Permission Group' - title='Delete Permission Group' - text={[ - 'Are you sure you want to delete ', - { text: deletingGroup?.name ?? 'this group', bold: true }, - '? ', - { text: 'All members will be removed from this group.', error: true }, - ' This action cannot be undone.', - ]} - confirm={{ - label: 'Delete', - onClick: confirmDelete, - pending: deletePermissionGroup.isPending, - pendingLabel: 'Deleting...', - }} - /> + {deleteConfirmModal} ) }