Repository navigation
refactor(emcn): split the Platform design system into packages - #9764
emir-karabeg wants to merge 6 commits into
Conversation
Move modern shared controls into EMCN and surface compositions into Auth, Docs, and Platform packages. Preserve existing application consumers through emcn-legacy and migrate imports, generators, audits, styles, fonts, and CI together. Consolidate integration details, credentials, modal fields, responsive people tables, destructive actions, and disabled explanations. Record the combined local handoff and verification evidence. Validation: repository lint, types, 67 audits, complete 20-task test gate, Platform build, block registry, browser regressions, and actual Electron checks passed. Production-runtime and fixture-off verification of the shipping commit remains a separate pre-publish step.
Bring b5a30e9 (platform/design-system into packages/emcn and packages/emcn-platform, the old package as @sim/emcn-legacy) onto the merge with platform-core-chat, so the embedded and shared trees build on the packages too. - Imports: embedded/, shared/, app/o and the zone import package family subpaths; @sim/emcn now names the modern package everywhere, and the legacy barrel, icons and code styles import from @sim/emcn-legacy. Waleed's new design-system files sit beside their families, with export entries for ConfirmDialog, QueryBoundary, RowList, SaveActions, PopupRow, HoverPopover, SectionSearch and AutofillDecoys. - Ported upstream edits to the moved owners: Button aria-label, SearchableSelect selectedLeading, generic Select and SelectField values, optional modal confirmation, picker option leading marks, ActionMenu lazy actions with triggerText, provider-mark fallback, switch thumb, row dividers, spinner timing and the table viewport offset. - PlatformSurface carries embedded, canvas, detached and the system font flags; the embedded Surface host lives in emcn-platform and paints its canvas only when asked. Hydrated moved to app/o, since React Query hydration belongs to the host. - Embedded quiet Selects became ChoiceMenu and quiet pickers use the text variant, as in the zone; DataTable's percentage column width is now `share`, beside the zone's compact/regular `width`. - Checks: check-platform-design, -css and boundaries combine package ownership with the embedded/shared/convergence rules; their tests and the CI change fixture model the packages. @sim/emcn runs its tests. - Docs: root CLAUDE.md keeps the trimmed text with the package rule; the Platform contract, styling and views rules, CI notes and the implement-platform skill point at the packages.
Note both merge commits, the embedded decisions for review and the verification each merge passed, including the Node 23 network tests that fail the same way before the merge.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
[High impact] The package split reaches UI across the main app, Platform, Auth, Docs, and embedded views. The PR appears safe to merge with two non-blocking UI regressions to fix. Findings
SummarySplits the design system into shared EMCN and Auth, Docs and Platform packages, while moving existing controls to
|
Comments Outside DiffThese findings could not be posted inline.
|
There was a problem hiding this comment.
1 issue found across 2709 files
Confidence score: 4/5
- In
api-reference.tsx, theNeutralBadgestretches across the column, so the “Deprecated operation” pill no longer fits its content. Keep the badge aligned to its content width.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="apps/docs/components/docs/api-reference/api-reference.tsx">
<violation number="1" location="apps/docs/components/docs/api-reference/api-reference.tsx:102">
P3: Switching this container to `flex flex-col` makes the direct child `NeutralBadge` (an `inline-flex` span) stretch to full width, so the "Deprecated operation" pill now spans the whole column. The previous `space-y-8` block layout kept it shrink-wrapped; either revert this className or add `self-start` to the badge.</violation>
</file>
Note: This PR contains a large number of files. cubic selects up to 200 of the highest-priority eligible files for this review, so some files may not have been reviewed.
Turn on auto-fix | Re-trigger cubic
This comment has been minimized.
This comment has been minimized.
…focus - Pass embedded from the host Surface, so organization views keep their focus outline and stay transparent without canvas. - Restore the Electron drag region for headers marked data-desktop-drag in the Platform bootstrap. - Give Docs a keyboard focus outline outside text fields, and keep NeutralBadge at its intrinsic width in column layouts. - Keep EMCN out of the packaged desktop dependencies: the renderer bundles it. - Trigger the Platform and Auth workflows on the legacy package and the hairline plugin; name the legacy package in the CI notes. - Wait for the reopened workspace picker before pressing Escape in the Auth browser check.
The live shell's SessionState mounted the discard dialog for live Settings; consolidating the local preview removed it, so leaving a dirty editor (such as a data retention pattern) no longer asked first. Fixture Settings and the fixture integration center keep their own mounts.
Takes the base's live Settings leave guard fix, which this branch already carries with the package imports.
Summary
Moves the Platform design system out of
apps/sim/platform/design-systeminto workspace packages, on top of the integration center (#9725) and the latestplatform-core-chat:packages/emcnholds shared controls, tokens, fonts and recipes;packages/emcn-platformholds Platform compositions;packages/emcn-authandpackages/emcn-docshold the Auth and Docs surfaces. The old package is now@sim/emcn-legacy, so@sim/emcnmeans the modern package everywhere.embedded/,shared/andapp/oimport public family subpaths (@sim/emcn/<family>,@sim/emcn-platform/<family>). Package code uses its private#emcn/#platformaliases.check:platform-design,check:platform-cssandcheck:boundariescombine package ownership with the embedded/shared/convergence rules. Their tests and the CI change fixture model the packages.For the
embedded/ownerThese change what the organization views render or import, following the zone:
Selects becameChoiceMenu. QuietMultiSelect/SearchableSelectusevariant='text'. Pickers have noquietvariant, andSelecthas noblock.ActivityRowusestextMetadata(paired withpeople).DataTablecolumns takesharefor a percentage share;widthkeepscompact/regular.Hydratedmoved toapp/o/[organizationId]/components/hydrated.tsx: hydration belongs to the host, not a UI package.canvas, and the host bridge names theEMCN Geistfamily.Verification
Run locally on the merge commit
5f2fc54e6b, before the docs-only commit on top:origin/staging.gateway.server,egress-end-to-end.server,processing-recovery-queue-transport) fail under the local Node 23.10, as they do before this change, and pass under Node 24.19.checks/live), which needs a running app and database.Details and the decisions above are in
apps/sim/platform/docs/consolidation-checkpoint.md.🤖 Generated with Claude Code