From 16e919e07ac1ddd60fd4ce3b3589ca70354c2b0c Mon Sep 17 00:00:00 2001 From: waleed Date: Wed, 1 Jul 2026 16:26:22 -0700 Subject: [PATCH 1/3] fix(integrations): repair corrupt icons, backfill missing block metas, restore scroll on back-nav MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Restore 7 brand icons (Google, Outlook, MongoDB, Postgres, OpenRouter, Groq, Cerebras) whose SVG path data was corrupted by a past bulk reformat, flooding the integrations page console with parse errors; add a check:icon-paths CI gate that validates every icon d attribute (operand counts + arc flags). - Backfill BlockMeta (tags/url/templates/skills) for postgresql, mysql, ssh, sftp, smtp — previously catalog integrations with empty detail pages; add an integration meta-coverage CI check so every catalog block must have a meta. - Add scroll-position restoration for the integrations index/detail inner scroll containers so browser Back returns to where you were. - Remove the error digest pill from the shared workspace ErrorShell (kept in logs, dropped from UI). --- .github/workflows/test-build.yml | 3 + apps/docs/components/icons.tsx | 62 ++--- .../[workspaceId]/components/error/error.tsx | 15 +- .../[block]/integration-block-detail.tsx | 11 +- .../hooks/use-scroll-restoration.ts | 114 +++++++++ .../integrations/integrations.tsx | 11 +- apps/sim/blocks/blocks/mysql.ts | 110 ++++++++- apps/sim/blocks/blocks/postgresql.ts | 109 ++++++++- apps/sim/blocks/blocks/sftp.ts | 108 ++++++++- apps/sim/blocks/blocks/smtp.ts | 98 +++++++- apps/sim/blocks/blocks/ssh.ts | 114 ++++++++- apps/sim/blocks/registry-maps.ts | 15 +- apps/sim/components/icons.tsx | 20 +- apps/sim/lib/integrations/integrations.json | 17 +- apps/sim/scripts/check-block-registry.ts | 47 +++- package.json | 1 + scripts/check-icon-paths.ts | 225 ++++++++++++++++++ 17 files changed, 1006 insertions(+), 74 deletions(-) create mode 100644 apps/sim/app/workspace/[workspaceId]/integrations/hooks/use-scroll-restoration.ts create mode 100644 scripts/check-icon-paths.ts diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 29c1058b0b0..53a18cf16fd 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -128,6 +128,9 @@ jobs: - name: Bare-icon theme-safety audit run: bun run check:bare-icons + - name: Icon SVG path validity audit + run: bun run check:icon-paths + - name: Verify realtime prune graph run: bun run check:realtime-prune diff --git a/apps/docs/components/icons.tsx b/apps/docs/components/icons.tsx index 165a6db7556..58d2124d7b3 100644 --- a/apps/docs/components/icons.tsx +++ b/apps/docs/components/icons.tsx @@ -1142,7 +1142,7 @@ export function NotionIcon(props: SVGProps) { ) @@ -1357,7 +1357,7 @@ export function GoogleIcon(props: SVGProps) { /> ) @@ -1980,7 +1980,7 @@ export function SquareIcon(props: SVGProps) { return ( @@ -2086,7 +2086,7 @@ export function ContextDevIcon(props: SVGProps) { return ( @@ -2328,7 +2328,7 @@ export function BrexIcon(props: SVGProps) { return ( @@ -2584,7 +2584,7 @@ export function LinkupIcon(props: SVGProps) { ) @@ -2665,7 +2665,7 @@ export function LangsmithIcon(props: SVGProps) { export function LatexIcon(props: SVGProps) { return ( - + ) { ) @@ -3107,7 +3107,7 @@ export function OutlookIcon(props: SVGProps) { /> ) => ( xmlns='http://www.w3.org/2000/svg' > Groq - + ) @@ -3444,7 +3444,7 @@ export const DeepseekIcon = (props: SVGProps) => ( DeepSeek @@ -3545,7 +3545,7 @@ export const CerebrasIcon = (props: SVGProps) => ( Cerebras @@ -4175,7 +4175,7 @@ export function PostgresIcon(props: SVGProps) { xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='xMinYMin meet' > - + ) { width='1em' xmlns='http://www.w3.org/2000/svg' > - + ) } @@ -4311,7 +4311,7 @@ export function MongoDBIcon(props: SVGProps) { fillRule='evenodd' clipRule='evenodd' fill='currentColor' - d='M88.04 42.81c1.61 4.64 2.76 9.38 3.14 14.3.472 6.1.256 12.15-1.03 18.14-.35.17-.109.32-.164.48-.403-.814-.049-1.21.012-3.33.523-6.65 1.07-9.98 1.6-3.44.557-6.88 1.09-10.31 1.69-1.22.21-2.72-.041-3.21 1.64-.14.05-.154.05-.235.08l.166-10.05-.169-24.25 1.6-.275c2.62-.429 5.24-.864 7.86-1.28 3.13-.497 6.26-.98 9.39-1.46 1.38-.215 2.76-.412 4.15-.618z' + d='M88.038 42.812c1.605 4.643 2.761 9.383 3.141 14.296.472 6.095.256 12.147-1.029 18.142-.035.165-.109.32-.164.48-.403.001-.814-.049-1.208.012-3.329.523-6.655 1.065-9.981 1.604-3.438.557-6.881 1.092-10.313 1.687-1.216.21-2.721-.041-3.212 1.641-.014.046-.154.054-.235.08l.166-10.051-.169-24.252 1.602-.275c2.62-.429 5.24-.864 7.862-1.281 3.129-.497 6.261-.98 9.392-1.465 1.381-.215 2.764-.412 4.148-.618z' /> ) { fillRule='evenodd' clipRule='evenodd' fill='#409433' - d='M65.04 80.75c.081-.26.22-.34.24-.8.49-1.68 2-1.43 3.21-1.64 3.43-.594 6.88-1.13 10.31-1.69 3.33-.539 6.65-1.08 9.98-1.6.394-.62.81-.011 1.21-.012-.622 2.22-1.11 4.49-1.9 6.65-.896 2.45-1.98 4.84-3.13 7.18a49.14 49.14 0 01-6.35 9.76c-1.92 2.31-4.06 4.44-6.2 6.55-1.18 1.17-2.58 2.11-3.88 3.16l-.337-.23-1.21-1.04-1.26-2.75a41.4 41.4 0 01-1.39-9.84l.023-.561.17-2.43c.057-.828.13-1.65.168-2.48.129-2.98.241-5.96.359-8.95z' + d='M65.036 80.753c.081-.026.222-.034.235-.08.491-1.682 1.996-1.431 3.212-1.641 3.432-.594 6.875-1.13 10.313-1.687 3.326-.539 6.652-1.081 9.981-1.604.394-.062.805-.011 1.208-.012-.622 2.22-1.112 4.488-1.901 6.647-.896 2.449-1.98 4.839-3.131 7.182a49.142 49.142 0 01-6.353 9.763c-1.919 2.308-4.058 4.441-6.202 6.548-1.185 1.165-2.582 2.114-3.882 3.161l-.337-.23-1.214-1.038-1.256-2.753a41.402 41.402 0 01-1.394-9.838l.023-.561.171-2.426c.057-.828.133-1.655.168-2.485.129-2.982.241-5.964.359-8.946z' /> ) { fillRule='evenodd' clipRule='evenodd' fill='#A9AA88' - d='M62.6 107.09c.263-1.31.609-2.62.77-3.95.325-2.65.548-5.31.814-7.97l.066-.1.07.011a41.4 41.4 0 1.39 9.84c-.176.23-.425.44-.518.7-.727 2.05-1.41 4.12-2.14 6.17-.1.28-.378.5-.574.74l-.747-2.57.87-2.97z' + d='M62.598 107.085c.263-1.315.609-2.62.772-3.947.325-2.649.548-5.312.814-7.968l.066-.01.066.011a41.402 41.402 0 001.394 9.838c-.176.232-.425.439-.518.701-.727 2.05-1.412 4.116-2.143 6.166-.1.28-.378.498-.574.744l-.747-2.566.87-2.969z' /> ) { ) @@ -5119,7 +5119,7 @@ export function IntercomIcon(props: SVGProps) { @@ -5160,7 +5160,7 @@ export function MailchimpIcon(props: SVGProps) { y='0px' viewBox='0 0 230.81 244.96' xmlSpace='preserve' - fill='#000000' + fill='currentColor' > @@ -5957,7 +5957,7 @@ export function TemporalIcon(props: SVGProps) { ) @@ -5989,31 +5989,31 @@ export function DatadogIcon(props: SVGProps) { export function DaytonaIcon(props: SVGProps) { return ( - - + + ) { width='20.6556' height='8.54718' transform='rotate(90 22.1582 12.9094)' - fill='#000000' + fill='currentColor' /> ) { width='25.6415' height='8.54718' transform='rotate(90 52.0732 42.825)' - fill='#000000' + fill='currentColor' /> ) @@ -6213,7 +6213,7 @@ export function KetchIcon(props: SVGProps) { diff --git a/apps/sim/app/workspace/[workspaceId]/components/error/error.tsx b/apps/sim/app/workspace/[workspaceId]/components/error/error.tsx index 461ab2e9473..b7e5d89e2ff 100644 --- a/apps/sim/app/workspace/[workspaceId]/components/error/error.tsx +++ b/apps/sim/app/workspace/[workspaceId]/components/error/error.tsx @@ -25,16 +25,15 @@ interface ErrorShellProps { title: string description: string icon?: ReactNode - digest?: string children: ReactNode } /** * Centered layout shared by the workspace error boundary and not-found page. - * Renders a framed glyph, serif headline, supporting paragraph, optional - * digest pill, and a row of action buttons. + * Renders a framed glyph, serif headline, supporting paragraph, and a row of + * action buttons. */ -export function ErrorShell({ title, description, icon, digest, children }: ErrorShellProps) { +export function ErrorShell({ title, description, icon, children }: ErrorShellProps) { return (
@@ -51,12 +50,6 @@ export function ErrorShell({ title, description, icon, digest, children }: Error {description}

- {digest && ( - - digest - {digest} - - )}
{children}
@@ -85,7 +78,7 @@ export function ErrorState({ }, [error.message, error.digest, loggerName]) return ( - + {children}