feat(design): add advisory conformance check and local Studio #33165
ci.yml
on: pull_request
Detect Version
Detect Desktop Changes
Prepare Trigger.dev
Matrix: Build AMD64
Matrix: Build Dev ECR
Matrix: Build ARM64 (GHCR Only)
Matrix: Test and Build / oauth-postgres
Test and Build
/
Lint and Test
2m 23s
Test and Build
/
Build App
3m 28s
Check Docs Changes
Migrate Dev DB
/
Apply Database Migrations
Matrix: Create GHCR Manifests
Process Docs
/
Process Documentation Embeddings
Promote Trigger.dev
0s
Prune Desktop Prereleases
Matrix: Attest Images
Desktop Release
/
Build, Sign, Notarize
Annotations
3 errors and 22 warnings
|
Test and Build / Lint and Test
Process completed with exit code 1.
|
|
check:design-generated
audit failed — see the group above
|
|
Test and Build / Lint and Test
Process completed with exit code 1.
|
|
Test and Build / Lint and Test
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
|
|
Test and Build / Lint and Test
- Step: unknown (failed)
|
|
Test and Build / Lint and Test
Found 2 failed/cancelled steps in previous workflow steps
|
|
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
|
|
Test and Build / Lint and Test
- Step: unknown (failed)
|
|
Test and Build / Lint and Test
Found 2 failed/cancelled steps in previous workflow steps
|
|
Test and Build / Lint and Test
Skipping sticky disk commit due to previous step failures
|
|
Test and Build / Lint and Test
- Step: unknown (failed)
|
|
Test and Build / Lint and Test
Found 2 failed/cancelled steps in previous workflow steps
|
|
Design system review:
packages/emcn/src/components/chip-copy-input/chip-copy-input.tsx#L39
Public design API or source ownership metadata changed; regenerate infrastructure and review the originating decision; input: {"importSource":"@sim/emcn","exportName":"ChipCopyInput","source":{"file":"packages/emcn/src/components/chip-copy-input/chip-copy-input.tsx","name":"ChipCopyInput"},"kind":"component","variants":{"error":{"values":[false,true]}},"slots":{"style":{"protected":["border-radius","borders","box-shadow","colours","font-family","font-size","gap","height","padding"],"allowed":[],"recipes":[],"forwards":[{"target":"packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput","slot":"style"}]},"className":{"protected":["background-color","border-color","border-radius","border-style","border-width","borders","box-shadow","colours","font-family","font-size","gap","height","line-height","opacity","padding","text-align"],"allowed":[],"recipes":[],"forwards":[{"target":"packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput","slot":"className"}]},"icon":{"protected":["color","height","width"],"allowed":[],"recipes":[],"forwards":[{"target":"packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput","slot":"icon"}]},"inputClassName":{"protected":["background-color","color","outline","outline-offset","outline-style"],"allowed":[],"recipes":[],"forwards":[{"target":"packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput","slot":"inputClassName"}]}},"relationships":["packages/emcn/src/components/button/button.tsx#Button","packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput","packages/emcn/src/components/tooltip/tooltip.tsx#Tooltip.Content","packages/emcn/src/components/tooltip/tooltip.tsx#Tooltip.Root","packages/emcn/src/components/tooltip/tooltip.tsx#Tooltip.Trigger","packages/emcn/src/icons/index.ts#Check","packages/emcn/src/icons/index.ts#Duplicate"]}; public-design-contract: "{\"importSource\":\"@sim/emcn\",\"exportName\":\"ChipCopyInput\",\"source\":{\"file\":\"packages/emcn/src/components/chip-copy-input/chip-copy-input.tsx\",\"name\":\"ChipCopyInput\"},\"kind\":\"component\",\"variants\":{\"error\":{\"values\":[false,true]}},\"slots\":{\"style\":{\"protected\":[],\"allowed\":[],\"recipes\":[],\"forwards\":[{\"target\":\"packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput\",\"slot\":\"style\"}]},\"className\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"font-size\",\"gap\",\"height\",\"line-height\",\"opacity\",\"padding\",\"text-align\"],\"allowed\":[],\"recipes\":[],\"forwards\":[{\"target\":\"packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput\",\"slot\":\"className\"}]},\"icon\":{\"protected\":[\"color\",\"height\",\"width\"],\"allowed\":[],\"recipes\":[],\"forwards\":[{\"target\":\"packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput\",\"slot\":\"icon\"}]},\"inputClassName\":{\"protected\":[\"background-color\",\"color\",\"font-size\",\"letter-spacing\",\"line-height\",\"outline\",\"outline-offset\",\"outline-style\",\"text-indent\"],\"allowed\":[],\"recipes\":[],\"forwards\":[{\"target\":\"packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput\",\"slot\":\"inputClassName\"}]}},\"relationships\":[\"packages/emcn/src/components/button/button.tsx#Button\",\"packages/emcn/src/components/chip-input/chip-input.tsx#ChipInput\",\"packages/emcn/src/components/tooltip/tooltip.tsx#Tooltip.Content\",\"packages/emcn/src/components/tooltip/tooltip.tsx#Tooltip.Root\",\"packages/emcn/src/components/tooltip/tooltip.tsx#Tooltip.Trigger\",\"packages/emcn/src/icons/index.ts#Check\",\"packages/emcn/src/icons/index.ts#Duplicate\"]}" → "{\"importSource\":\"@sim/emcn\",\"exportName\":\"ChipCopyInput\",\"source\":{\"file\":\"packages/emcn/src/components/chip-copy-input/chip-copy-input.tsx\",\"name\":\"ChipCopyInput\"},\"kind\":\"component\",\"variants\":{\"error\":{\"values\":[false,true]}},\"slots\":{\"style\":{\"protected\":[\"border-radius\",\"borders\",\"box-shadow\",\"colours\",\"font-family\",\"font-size\",\"gap\",\"height\",\"padding\"],\"allowed\":[],\"recipes\":[],
|
|
Design system review:
packages/emcn/src/components/button/button.tsx#L92
Public design API or source ownership metadata changed; regenerate infrastructure and review the originating decision; input: {"importSource":"@sim/emcn","exportName":"Button","source":{"file":"packages/emcn/src/components/button/button.tsx","name":"Button"},"kind":"component","variants":{"iconPadding":{"values":["md","sm"]},"size":{"values":["icon","md","sm"],"default":"md"},"variant":{"values":["3d","active","default","destructive","ghost","ghost-secondary","outline","primary","quiet","secondary","subtle","tertiary"],"default":"default"}},"slots":{"className":{"protected":["background-color","border-color","border-radius","border-style","border-width","box-shadow","color","font-size","height","opacity","outline","outline-offset","outline-style","padding","width"],"allowed":["width"],"recipes":["packages/emcn/src/components/button/button.tsx#buttonVariants"],"forwards":[]},"style":{"protected":["background-color","border-color","border-radius","border-style","border-width","box-shadow","color","font-size","height","opacity","outline","outline-offset","outline-style","padding","width"],"allowed":["width"],"recipes":["packages/emcn/src/components/button/button.tsx#buttonVariants"],"forwards":[]}},"relationships":[]}; public-design-contract: "{\"importSource\":\"@sim/emcn\",\"exportName\":\"Button\",\"source\":{\"file\":\"packages/emcn/src/components/button/button.tsx\",\"name\":\"Button\"},\"kind\":\"component\",\"variants\":{\"iconPadding\":{\"values\":[\"md\",\"sm\"]},\"size\":{\"values\":[\"icon\",\"md\",\"sm\"],\"default\":\"md\"},\"variant\":{\"values\":[\"3d\",\"active\",\"default\",\"destructive\",\"ghost\",\"ghost-secondary\",\"outline\",\"primary\",\"quiet\",\"secondary\",\"subtle\",\"tertiary\"],\"default\":\"default\"}},\"slots\":{\"className\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\",\"width\"],\"allowed\":[],\"recipes\":[\"packages/emcn/src/components/button/button.tsx#buttonVariants\"],\"forwards\":[]},\"style\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\",\"width\"],\"allowed\":[],\"recipes\":[\"packages/emcn/src/components/button/button.tsx#buttonVariants\"],\"forwards\":[]}},\"relationships\":[]}" → "{\"importSource\":\"@sim/emcn\",\"exportName\":\"Button\",\"source\":{\"file\":\"packages/emcn/src/components/button/button.tsx\",\"name\":\"Button\"},\"kind\":\"component\",\"variants\":{\"iconPadding\":{\"values\":[\"md\",\"sm\"]},\"size\":{\"values\":[\"icon\",\"md\",\"sm\"],\"default\":\"md\"},\"variant\":{\"values\":[\"3d\",\"active\",\"default\",\"destructive\",\"ghost\",\"ghost-secondary\",\"outline\",\"primary\",\"quiet\",\"secondary\",\"subtle\",\"tertiary\"],\"default\":\"default\"}},\"slots\":{\"className\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\",\"width\"],\"allowed\":[\"width\"],\"recipes\":[\"packages/emcn/src/components/button/button.tsx#buttonVariants\"],\"forwards\":[]},\"style\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\",\"width\"],\"allowed\":[\"width\"],\"recipes\":[\"packages/emcn/src/components/button/button.tsx#buttonVariants\"],\"forwards\":[]}},\"relationships\":[]}"; contract: central-definition
|
|
Design system review:
packages/emcn/src/components/bulk-action-button/bulk-action-button.tsx#L40
Public design API or source ownership metadata changed; regenerate infrastructure and review the originating decision; input: {"importSource":"@sim/emcn","exportName":"BulkActionButton","source":{"file":"packages/emcn/src/components/bulk-action-button/bulk-action-button.tsx","name":"BulkActionButton"},"kind":"component","variants":{"surface":{"values":["adaptive","uniform"],"default":"adaptive"},"iconPadding":{"values":["md","sm"]}},"slots":{"style":{"protected":["background-color","border-color","border-radius","border-style","border-width","box-shadow","color","font-size","height","opacity","outline","outline-offset","outline-style","padding"],"allowed":[],"recipes":[],"forwards":[{"target":"packages/emcn/src/components/button/button.tsx#Button","slot":"style"}]},"className":{"protected":["background-color","border-color","border-radius","border-style","border-width","box-shadow","color","font-size","height","opacity","outline","outline-offset","outline-style","padding","width"],"allowed":[],"recipes":["packages/emcn/src/components/bulk-action-button/bulk-action-button.tsx#bulkActionButtonVariants"],"forwards":[{"target":"packages/emcn/src/components/button/button.tsx#Button","slot":"className"}]}},"relationships":["packages/emcn/src/components/button/button.tsx#Button"]}; public-design-contract: "{\"importSource\":\"@sim/emcn\",\"exportName\":\"BulkActionButton\",\"source\":{\"file\":\"packages/emcn/src/components/bulk-action-button/bulk-action-button.tsx\",\"name\":\"BulkActionButton\"},\"kind\":\"component\",\"variants\":{\"surface\":{\"values\":[\"adaptive\",\"uniform\"],\"default\":\"adaptive\"},\"iconPadding\":{\"values\":[\"md\",\"sm\"]}},\"slots\":{\"style\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\",\"width\"],\"allowed\":[],\"recipes\":[],\"forwards\":[{\"target\":\"packages/emcn/src/components/button/button.tsx#Button\",\"slot\":\"style\"}]},\"className\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\",\"width\"],\"allowed\":[],\"recipes\":[\"packages/emcn/src/components/bulk-action-button/bulk-action-button.tsx#bulkActionButtonVariants\"],\"forwards\":[{\"target\":\"packages/emcn/src/components/button/button.tsx#Button\",\"slot\":\"className\"}]}},\"relationships\":[\"packages/emcn/src/components/button/button.tsx#Button\"]}" → "{\"importSource\":\"@sim/emcn\",\"exportName\":\"BulkActionButton\",\"source\":{\"file\":\"packages/emcn/src/components/bulk-action-button/bulk-action-button.tsx\",\"name\":\"BulkActionButton\"},\"kind\":\"component\",\"variants\":{\"surface\":{\"values\":[\"adaptive\",\"uniform\"],\"default\":\"adaptive\"},\"iconPadding\":{\"values\":[\"md\",\"sm\"]}},\"slots\":{\"style\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\"],\"allowed\":[],\"recipes\":[],\"forwards\":[{\"target\":\"packages/emcn/src/components/button/button.tsx#Button\",\"slot\":\"style\"}]},\"className\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\",\"width\"],\"allowed\":[],\"recipes\":[\"packages/emcn/src/components/bulk-action-button/bulk-action-button.tsx#bulkActionButtonVariants\"],\"forwards\":[{\"target\":\"packages/emcn/src/components/button/button.tsx#Button\",\"slot\":\"className\"}]}},\"relationships\":[\"packages/emcn/src/components/button/button.tsx#Button\"]}"; contract: central-definition
|
|
Design system review:
packages/emcn/src/components/banner/banner.tsx#L36
Public design API or source ownership metadata changed; regenerate infrastructure and review the originating decision; input: {"importSource":"@sim/emcn","exportName":"Banner","source":{"file":"packages/emcn/src/components/banner/banner.tsx","name":"Banner"},"kind":"component","variants":{"actionDisabled":{"values":[false,true]},"actionVariant":{"values":["3d","active","default","destructive","ghost","ghost-secondary","outline","primary","quiet","secondary","subtle","tertiary"],"default":"default"},"variant":{"values":["default","destructive"],"default":"default"}},"slots":{"actionClassName":{"protected":["background-color","border-color","border-radius","border-style","border-width","box-shadow","color","font-size","height","opacity","outline","outline-offset","outline-style","padding"],"allowed":[],"recipes":[],"forwards":[{"target":"packages/emcn/src/components/button/button.tsx#Button","slot":"className"}]},"contentClassName":{"protected":["gap","max-width"],"allowed":[],"recipes":[],"forwards":[]},"textClassName":{"protected":["font-size"],"allowed":["typography"],"recipes":[],"forwards":[]},"className":{"protected":["background-color","padding"],"allowed":[],"recipes":["packages/emcn/src/components/banner/banner.tsx#bannerVariants"],"forwards":[]},"style":{"protected":["background-color","padding"],"allowed":[],"recipes":["packages/emcn/src/components/banner/banner.tsx#bannerVariants"],"forwards":[]}},"relationships":["packages/emcn/src/components/button/button.tsx#Button"]}; public-design-contract: "{\"importSource\":\"@sim/emcn\",\"exportName\":\"Banner\",\"source\":{\"file\":\"packages/emcn/src/components/banner/banner.tsx\",\"name\":\"Banner\"},\"kind\":\"component\",\"variants\":{\"actionDisabled\":{\"values\":[false,true]},\"actionVariant\":{\"values\":[\"3d\",\"active\",\"default\",\"destructive\",\"ghost\",\"ghost-secondary\",\"outline\",\"primary\",\"quiet\",\"secondary\",\"subtle\",\"tertiary\"],\"default\":\"default\"},\"variant\":{\"values\":[\"default\",\"destructive\"],\"default\":\"default\"}},\"slots\":{\"actionClassName\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\",\"width\"],\"allowed\":[],\"recipes\":[],\"forwards\":[{\"target\":\"packages/emcn/src/components/button/button.tsx#Button\",\"slot\":\"className\"}]},\"contentClassName\":{\"protected\":[\"gap\",\"max-width\"],\"allowed\":[],\"recipes\":[],\"forwards\":[]},\"textClassName\":{\"protected\":[\"font-size\"],\"allowed\":[],\"recipes\":[],\"forwards\":[]},\"className\":{\"protected\":[\"background-color\",\"padding\"],\"allowed\":[],\"recipes\":[\"packages/emcn/src/components/banner/banner.tsx#bannerVariants\"],\"forwards\":[]},\"style\":{\"protected\":[\"background-color\",\"padding\"],\"allowed\":[],\"recipes\":[\"packages/emcn/src/components/banner/banner.tsx#bannerVariants\"],\"forwards\":[]}},\"relationships\":[\"packages/emcn/src/components/button/button.tsx#Button\"]}" → "{\"importSource\":\"@sim/emcn\",\"exportName\":\"Banner\",\"source\":{\"file\":\"packages/emcn/src/components/banner/banner.tsx\",\"name\":\"Banner\"},\"kind\":\"component\",\"variants\":{\"actionDisabled\":{\"values\":[false,true]},\"actionVariant\":{\"values\":[\"3d\",\"active\",\"default\",\"destructive\",\"ghost\",\"ghost-secondary\",\"outline\",\"primary\",\"quiet\",\"secondary\",\"subtle\",\"tertiary\"],\"default\":\"default\"},\"variant\":{\"values\":[\"default\",\"destructive\"],\"default\":\"default\"}},\"slots\":{\"actionClassName\":{\"protected\":[\"background-color\",\"border-color\",\"border-radius\",\"border-style\",\"border-width\",\"box-shadow\",\"color\",\"font-size\",\"height\",\"opacity\",\"outline\",\"outline-offset\",\"outline-style\",\"padding\"],\"allowed\":[],\"recipes\":[],\"forwards\":[{\"target\":\"packages/emcn/src/components/button/button.tsx#Button\",\"slot\":\"className\"}]},\"contentClassName\":{\"protected\":[\"gap\",\"max-width\"],\"allowed\":[],\"re
|
|
Design conformance:
apps/sim/app/workspace/[workspaceId]/w/components/preview/components/preview-editor/preview-editor.tsx#L1501
Consumer restyles chrome owned by the EMCN component; input: h-[23px]; contract: component-chrome; source: scripts/design-conformance/contracts.generated.json#exports; permitted: Use the EMCN component API or review a shared variant
|
|
Design conformance:
apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/components/output-panel/output-panel.tsx#L501
Consumer restyles chrome owned by the EMCN component; input: h-[23px]; contract: component-chrome; source: scripts/design-conformance/contracts.generated.json#exports; permitted: Use the EMCN component API or review a shared variant
|
|
Design conformance:
apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/sub-block.tsx#L312
Consumer restyles chrome owned by the EMCN component; input: h-5; contract: component-chrome; source: scripts/design-conformance/contracts.generated.json#exports; permitted: Use the EMCN component API or review a shared variant
|
|
Design conformance:
apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/versions.tsx#L270
Consumer restyles chrome owned by the EMCN component; input: h-auto; contract: component-chrome; source: scripts/design-conformance/contracts.generated.json#exports; permitted: Use the EMCN component API or review a shared variant
|
|
Design conformance:
apps/sim/app/workspace/[workspaceId]/integrations/components/connect-service-account-modal/client-credential-account-modal.tsx#L273
Consumer restyles chrome owned by the EMCN component; input: font-mono; contract: component-chrome; source: scripts/design-conformance/contracts.generated.json#exports; permitted: Use the EMCN component API or review a shared variant
|
|
Design conformance:
apps/sim/app/(interfaces)/resume/[workflowId]/[executionId]/resume-page-client.tsx#L1009
Consumer restyles chrome owned by the EMCN component; input: font-mono; contract: component-chrome; source: scripts/design-conformance/contracts.generated.json#exports; permitted: Use the EMCN component API or review a shared variant
|
|
Test and Build / PostgreSQL integration (push)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Test and Build / PostgreSQL integration (migrate)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
design-conformance-36225679989-1
|
152 KB |
sha256:b445b03eb66ddc539e0ab0a74171f29211d623d40820845422b97e0da665f2b3
|
|
|
integration-reports-migrate
|
56.6 KB |
sha256:c88c3d5b678d5758399f6c7491e34dc14e714a063d79a42e5a609add0f12afcd
|
|
|
integration-reports-push
|
57.1 KB |
sha256:27994f100c37848dd38dd9de5398b9278a5a9f0dffa549809a3a68c35d8cd7bb
|
|