Skip to content

feat(frontend): FrontX portal foundation — shell + five screenset MFEs on ui-kit - #9

Merged
SysoevAndrey merged 10 commits into
mainfrom
frontend-app
Aug 14, 2026
Merged

feat(frontend): FrontX portal foundation — shell + five screenset MFEs on ui-kit#9
SysoevAndrey merged 10 commits into
mainfrom
frontend-app

Conversation

@SysoevAndrey

Copy link
Copy Markdown
Contributor

What

The new portal application in studio-frontend/, rebuilt on FrontX per ADR-0006 (included). The walking-skeleton prototype in studio-frontend-prototype/ is untouched and keeps serving the compose stack.

  • Shell + MFE workspace seeded via the frontx CLI from template-shell@develop (0.1.0-alpha.2) and template-mfe@develop (0.1.0-alpha.0); applied refs recorded in .frontx/provenance.json.
  • Five screenset MFEs — Search, Projects, People, Connections, Kits (ports 3010–3050, menu order 10–50), each scaffolded per the template's add-mfe-package procedure with GTS ids under the constructor_studio namespace. Screens are placeholders; the scaffold's demo data layer is kept per package as reference for real content.
  • Screens are built from @gears-frontx/ui-kit@0.3.0-alpha.3 (exact pin, kept out of sharedDeps): theme.css?inline re-anchored :root:host per shadow root, screen root always carries data-theme (dark/dracula* → dark), CSS Modules over kit tokens — zero Tailwind inside MFEs. This front-runs gears-frontx#553 for consumer screens.
  • Shell chrome: permanently compact icon menu (labels as tooltips), no header/footer yet (they return with OIDC), no brand header (Studio logo lands there later). Shell themes now mirror the ui-kit Studio palette values, so chrome and screens are visually identical while the chrome stays Tailwind-mechanical.
  • Constructor Studio registered in studio-frontend/.cf-studio with the cyber-pilot-kit-frontx kit (generated agent surfaces are gitignored).
  • CI: path-filtered frontx job (cherry-picked from the ground-clearing commit) — npm cinpm testnpm run build on Node 24. Deployment wrapper (Dockerfile*, nginx template, runtime-env hook) is carried over but not yet wired into compose/Helm.

Verification

  • npm ci from scratch, full test suite (root + src-app + all six workspaces), npm run build, type-check, arch:deps (0 violations) — all green locally on Node 24.
  • Browser-verified: five menu items mount their screens in light and dark themes with zero console errors.

Known template gaps found on the way (upstream gears-frontx material, not addressed here)

  1. dev:all builds only MFEs and fails on a fresh clone until npm run build:package && npm run build:packages has run once.
  2. Root eslint config imports typescript-eslint, which no package declares — npm run lint fails at config load.
  3. The gts-id-conventions guideline's {app} = acme.crm example substituted into its own patterns yields 6-token instance segments, which the GTS grammar (exactly vendor.package.namespace.type.vN) rejects at runtime.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Aug 14, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 782 files, which is 682 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 00e0bba9-1aa4-4dfe-b8b5-0244ad74bfbd

📥 Commits

Reviewing files that changed from the base of the PR and between a9ee534 and c9646ce.

⛔ Files ignored due to path filters (2)
  • studio-frontend/package-lock.json is excluded by !**/package-lock.json
  • studio-frontend/public/vite.svg is excluded by !**/*.svg
📒 Files selected for processing (782)
  • .github/workflows/ci.yml
  • README.md
  • docs/adr/0006-frontend-rebuild-on-frontx.md
  • studio-frontend/.cf-studio/config/README.md
  • studio-frontend/.cf-studio/config/SKILL.md
  • studio-frontend/.cf-studio/config/artifacts.toml
  • studio-frontend/.cf-studio/config/core.toml
  • studio-frontend/.cf-studio/config/kits/cyber-pilot-kit-frontx/SKILL.md
  • studio-frontend/.cf-studio/config/kits/cyber-pilot-kit-frontx/guidelines/ecosystem-boundaries.md
  • studio-frontend/.cf-studio/config/kits/cyber-pilot-kit-frontx/skills/project-scaffolding/SKILL.md
  • studio-frontend/.cf-studio/version.toml
  • studio-frontend/.cf-studio/whatsnew.toml
  • studio-frontend/.dependency-cruiser.cjs
  • studio-frontend/.frontx/ai/@gears-frontx/frontx-template-mfe/extension.json
  • studio-frontend/.frontx/ai/@gears-frontx/frontx-template-mfe/guidelines/gts-id-conventions.md
  • studio-frontend/.frontx/ai/@gears-frontx/frontx-template-mfe/guidelines/navigation-contribution.md
  • studio-frontend/.frontx/ai/@gears-frontx/frontx-template-mfe/reference-artifacts/gts-id-patterns-reference.json
  • studio-frontend/.frontx/ai/@gears-frontx/frontx-template-mfe/skills/add-mfe-package/SKILL.md
  • studio-frontend/.frontx/ai/@gears-frontx/frontx-template-mfe/workflows/add-mfe-package-workflow.md
  • studio-frontend/.frontx/ai/@gears-frontx/frontx-template-shell/extension.json
  • studio-frontend/.frontx/ai/@gears-frontx/frontx-template-shell/guidelines/mfe-package-contract.md
  • studio-frontend/.frontx/ai/@gears-frontx/frontx-template-shell/guidelines/navigation-composition.md
  • studio-frontend/.frontx/provenance.json
  • studio-frontend/.gitignore
  • studio-frontend/.nvmrc
  • studio-frontend/CLAUDE.md
  • studio-frontend/Dockerfile
  • studio-frontend/Dockerfile.src
  • studio-frontend/QUICK_START.md
  • studio-frontend/README.md
  • studio-frontend/__tests__/build/lazy-import-transform.test.ts
  • studio-frontend/__tests__/vitest-shared.test.ts
  • studio-frontend/docker/10-runtime-env.sh
  • studio-frontend/eslint.config.js
  • studio-frontend/index.html
  • studio-frontend/nginx.conf.template
  • studio-frontend/package.json
  • studio-frontend/packages/auth/README.md
  • studio-frontend/packages/auth/package.json
  • studio-frontend/packages/auth/src/index.ts
  • studio-frontend/packages/auth/src/types.ts
  • studio-frontend/packages/auth/tsconfig.json
  • studio-frontend/packages/auth/tsup.config.ts
  • studio-frontend/packages/framework/CLAUDE.md
  • studio-frontend/packages/framework/__tests__/auth.test.ts
  • studio-frontend/packages/framework/__tests__/mockEffects.test.ts
  • studio-frontend/packages/framework/__tests__/mockSlice.test.ts
  • studio-frontend/packages/framework/__tests__/plugin-system.test.ts
  • studio-frontend/packages/framework/__tests__/plugins/microfrontends.test.ts
  • studio-frontend/packages/framework/__tests__/plugins/microfrontends/base-domains.test.ts
  • studio-frontend/packages/framework/__tests__/plugins/microfrontends/dynamic-registration.test.ts
  • studio-frontend/packages/framework/__tests__/plugins/microfrontends/mfe-slice-mount.test.ts
  • studio-frontend/packages/framework/__tests__/plugins/microfrontends/plugin.test.ts
  • studio-frontend/packages/framework/__tests__/plugins/microfrontends/property-validation.test.ts
  • studio-frontend/packages/framework/__tests__/plugins/microfrontends/theme-language-propagation.test.ts
  • studio-frontend/packages/framework/__tests__/queryCache.test.ts
  • studio-frontend/packages/framework/__tests__/rbacProviders.test.ts
  • studio-frontend/packages/framework/__tests__/testing.test.ts
  • studio-frontend/packages/framework/eslint.config.js
  • studio-frontend/packages/framework/llms.txt
  • studio-frontend/packages/framework/package.json
  • studio-frontend/packages/framework/src/compat.ts
  • studio-frontend/packages/framework/src/createFrontX.ts
  • studio-frontend/packages/framework/src/createFrontXApp.ts
  • studio-frontend/packages/framework/src/effects/mockEffects.ts
  • studio-frontend/packages/framework/src/effects/tenantActions.ts
  • studio-frontend/packages/framework/src/effects/tenantEffects.ts
  • studio-frontend/packages/framework/src/gts/index.ts
  • studio-frontend/packages/framework/src/index.ts
  • studio-frontend/packages/framework/src/layoutTypes.ts
  • studio-frontend/packages/framework/src/mfe/constants.ts
  • studio-frontend/packages/framework/src/mfe/registry.ts
  • studio-frontend/packages/framework/src/migration.ts
  • studio-frontend/packages/framework/src/plugins/auth.ts
  • studio-frontend/packages/framework/src/plugins/effects.ts
  • studio-frontend/packages/framework/src/plugins/i18n.ts
  • studio-frontend/packages/framework/src/plugins/index.ts
  • studio-frontend/packages/framework/src/plugins/layout.ts
  • studio-frontend/packages/framework/src/plugins/microfrontends/__tests__/slice.test.ts
  • studio-frontend/packages/framework/src/plugins/microfrontends/__tests__/sync-diff.test.ts
  • studio-frontend/packages/framework/src/plugins/microfrontends/actions.ts
  • studio-frontend/packages/framework/src/plugins/microfrontends/base-domains.ts
  • studio-frontend/packages/framework/src/plugins/microfrontends/constants.ts
  • studio-frontend/packages/framework/src/plugins/microfrontends/effects.ts
  • studio-frontend/packages/framework/src/plugins/microfrontends/gts/frontx.screensets/instances/domains/overlay.v1.json
  • studio-frontend/packages/framework/src/plugins/microfrontends/gts/frontx.screensets/instances/domains/popup.v1.json
  • studio-frontend/packages/framework/src/plugins/microfrontends/gts/frontx.screensets/instances/domains/screen.v1.json
  • studio-frontend/packages/framework/src/plugins/microfrontends/gts/frontx.screensets/instances/domains/sidebar.v1.json
  • studio-frontend/packages/framework/src/plugins/microfrontends/gts/loader.ts
  • studio-frontend/packages/framework/src/plugins/microfrontends/index.ts
  • studio-frontend/packages/framework/src/plugins/microfrontends/slice.ts
  • studio-frontend/packages/framework/src/plugins/mock.ts
  • studio-frontend/packages/framework/src/plugins/queryCache.ts
  • studio-frontend/packages/framework/src/plugins/themes.ts
  • studio-frontend/packages/framework/src/presets/index.ts
  • studio-frontend/packages/framework/src/registries/index.ts
  • studio-frontend/packages/framework/src/registries/themeRegistry.ts
  • studio-frontend/packages/framework/src/slices/footerSlice.ts
  • studio-frontend/packages/framework/src/slices/headerSlice.ts
  • studio-frontend/packages/framework/src/slices/index.ts
  • studio-frontend/packages/framework/src/slices/menuSlice.ts
  • studio-frontend/packages/framework/src/slices/mockSlice.ts
  • studio-frontend/packages/framework/src/slices/overlaySlice.ts
  • studio-frontend/packages/framework/src/slices/popupSlice.ts
  • studio-frontend/packages/framework/src/slices/sidebarSlice.ts
  • studio-frontend/packages/framework/src/slices/tenantSlice.ts
  • studio-frontend/packages/framework/src/testing.ts
  • studio-frontend/packages/framework/src/testing/TestContainerProvider.ts
  • studio-frontend/packages/framework/src/testing/describeBootstrapMfeContract.ts
  • studio-frontend/packages/framework/src/testing/queryCacheTestHooks.ts
  • studio-frontend/packages/framework/src/types.ts
  • studio-frontend/packages/framework/src/utils/basePath.ts
  • studio-frontend/packages/framework/tsconfig.json
  • studio-frontend/packages/framework/tsconfig.test.json
  • studio-frontend/packages/framework/tsup.config.ts
  • studio-frontend/packages/framework/vitest.config.ts
  • studio-frontend/packages/i18n/CLAUDE.md
  • studio-frontend/packages/i18n/eslint.config.js
  • studio-frontend/packages/i18n/llms.txt
  • studio-frontend/packages/i18n/package.json
  • studio-frontend/packages/i18n/src/I18nRegistry.test.ts
  • studio-frontend/packages/i18n/src/I18nRegistry.ts
  • studio-frontend/packages/i18n/src/formatters/__tests__/currencyFormatter.test.ts
  • studio-frontend/packages/i18n/src/formatters/__tests__/dateFormatter.test.ts
  • studio-frontend/packages/i18n/src/formatters/__tests__/numberFormatter.test.ts
  • studio-frontend/packages/i18n/src/formatters/__tests__/sortUtils.test.ts
  • studio-frontend/packages/i18n/src/formatters/currencyFormatter.ts
  • studio-frontend/packages/i18n/src/formatters/dateFormatter.ts
  • studio-frontend/packages/i18n/src/formatters/index.ts
  • studio-frontend/packages/i18n/src/formatters/numberFormatter.ts
  • studio-frontend/packages/i18n/src/formatters/sortUtils.ts
  • studio-frontend/packages/i18n/src/formatters/types.ts
  • studio-frontend/packages/i18n/src/formatters/utils.ts
  • studio-frontend/packages/i18n/src/index.ts
  • studio-frontend/packages/i18n/src/languages.ts
  • studio-frontend/packages/i18n/src/types.ts
  • studio-frontend/packages/i18n/tsconfig.json
  • studio-frontend/packages/i18n/tsconfig.test.json
  • studio-frontend/packages/i18n/tsup.config.ts
  • studio-frontend/packages/i18n/vitest.config.ts
  • studio-frontend/packages/react/CLAUDE.md
  • studio-frontend/packages/react/__tests__/FrontXProvider.test.tsx
  • studio-frontend/packages/react/__tests__/apiProtocolReexports.test.ts
  • studio-frontend/packages/react/__tests__/hookCoverage.test.tsx
  • studio-frontend/packages/react/__tests__/mfe/hooks.test.tsx
  • studio-frontend/packages/react/__tests__/mfe/hooks/useDomainExtensions.test.tsx
  • studio-frontend/packages/react/__tests__/mfe/hooks/useRegisteredPackages.test.tsx
  • studio-frontend/packages/react/__tests__/mfe/queryClientContext.test.ts
  • studio-frontend/packages/react/__tests__/queryHooks.helpers.tsx
  • studio-frontend/packages/react/__tests__/rbacGuards.test.tsx
  • studio-frontend/packages/react/__tests__/rbacProviderMocks.test.tsx
  • studio-frontend/packages/react/__tests__/useApiInfiniteQuery.test.tsx
  • studio-frontend/packages/react/__tests__/useApiMutation.test.tsx
  • studio-frontend/packages/react/__tests__/useApiQuery.test.tsx
  • studio-frontend/packages/react/__tests__/useApiStream.test.tsx
  • studio-frontend/packages/react/__tests__/useApiSuspenseQuery.test.tsx
  • studio-frontend/packages/react/eslint.config.js
  • studio-frontend/packages/react/llms.txt
  • studio-frontend/packages/react/package.json
  • studio-frontend/packages/react/src/FrontXContext.tsx
  • studio-frontend/packages/react/src/FrontXProvider.tsx
  • studio-frontend/packages/react/src/components/CanAccess.tsx
  • studio-frontend/packages/react/src/components/index.ts
  • studio-frontend/packages/react/src/hooks/QueryCache.ts
  • studio-frontend/packages/react/src/hooks/__tests__/useLatest.test.ts
  • studio-frontend/packages/react/src/hooks/index.ts
  • studio-frontend/packages/react/src/hooks/useApiInfiniteQuery.ts
  • studio-frontend/packages/react/src/hooks/useApiMutation.ts
  • studio-frontend/packages/react/src/hooks/useApiQuery.ts
  • studio-frontend/packages/react/src/hooks/useApiStream.ts
  • studio-frontend/packages/react/src/hooks/useApiSuspenseInfiniteQuery.ts
  • studio-frontend/packages/react/src/hooks/useApiSuspenseQuery.ts
  • studio-frontend/packages/react/src/hooks/useAppDispatch.ts
  • studio-frontend/packages/react/src/hooks/useAppSelector.ts
  • studio-frontend/packages/react/src/hooks/useCanAccess.ts
  • studio-frontend/packages/react/src/hooks/useFormatters.ts
  • studio-frontend/packages/react/src/hooks/useLatest.ts
  • studio-frontend/packages/react/src/hooks/useQueryCache.ts
  • studio-frontend/packages/react/src/hooks/useScreenTranslations.ts
  • studio-frontend/packages/react/src/hooks/useTheme.ts
  • studio-frontend/packages/react/src/hooks/useTranslation.ts
  • studio-frontend/packages/react/src/index.ts
  • studio-frontend/packages/react/src/mfe/MfeContext.tsx
  • studio-frontend/packages/react/src/mfe/MfeProvider.tsx
  • studio-frontend/packages/react/src/mfe/ThemeAwareReactLifecycle.tsx
  • studio-frontend/packages/react/src/mfe/components/ExtensionDomainSlot.tsx
  • studio-frontend/packages/react/src/mfe/components/__tests__/ExtensionDomainSlot.test.tsx
  • studio-frontend/packages/react/src/mfe/hooks/__tests__/useMountedExtensions.test.ts
  • studio-frontend/packages/react/src/mfe/hooks/index.ts
  • studio-frontend/packages/react/src/mfe/hooks/useDomainExtensions.ts
  • studio-frontend/packages/react/src/mfe/hooks/useHostAction.ts
  • studio-frontend/packages/react/src/mfe/hooks/useMfeBridge.ts
  • studio-frontend/packages/react/src/mfe/hooks/useMountedExtensions.ts
  • studio-frontend/packages/react/src/mfe/hooks/useRegisteredPackages.ts
  • studio-frontend/packages/react/src/mfe/hooks/useSharedProperty.ts
  • studio-frontend/packages/react/src/mfe/index.ts
  • studio-frontend/packages/react/src/queryClient.tsx
  • studio-frontend/packages/react/src/testing.ts
  • studio-frontend/packages/react/src/types.ts
  • studio-frontend/packages/react/tsconfig.json
  • studio-frontend/packages/react/tsconfig.test.json
  • studio-frontend/packages/react/tsup.config.ts
  • studio-frontend/packages/react/vitest.config.ts
  • studio-frontend/packages/state/CLAUDE.md
  • studio-frontend/packages/state/eslint.config.js
  • studio-frontend/packages/state/package.json
  • studio-frontend/packages/state/src/EventBus.test.ts
  • studio-frontend/packages/state/src/EventBus.ts
  • studio-frontend/packages/state/src/createSlice.test.ts
  • studio-frontend/packages/state/src/createSlice.ts
  • studio-frontend/packages/state/src/index.ts
  • studio-frontend/packages/state/src/store.test.ts
  • studio-frontend/packages/state/src/store.ts
  • studio-frontend/packages/state/src/types.ts
  • studio-frontend/packages/state/tsconfig.json
  • studio-frontend/packages/state/tsconfig.test.json
  • studio-frontend/packages/state/tsup.config.ts
  • studio-frontend/packages/state/vitest.config.ts
  • studio-frontend/packages/studio/CLAUDE.md
  • studio-frontend/packages/studio/README.md
  • studio-frontend/packages/studio/package.json
  • studio-frontend/packages/studio/src/CollapsedButton.tsx
  • studio-frontend/packages/studio/src/StudioOverlay.tsx
  • studio-frontend/packages/studio/src/StudioPanel.test.tsx
  • studio-frontend/packages/studio/src/StudioPanel.tsx
  • studio-frontend/packages/studio/src/StudioProvider.tsx
  • studio-frontend/packages/studio/src/effects/persistenceEffects.test.ts
  • studio-frontend/packages/studio/src/effects/persistenceEffects.ts
  • studio-frontend/packages/studio/src/events/studioEvents.ts
  • studio-frontend/packages/studio/src/hooks/useDraggable.test.tsx
  • studio-frontend/packages/studio/src/hooks/useDraggable.ts
  • studio-frontend/packages/studio/src/hooks/useKeyboardShortcut.test.tsx
  • studio-frontend/packages/studio/src/hooks/useKeyboardShortcut.ts
  • studio-frontend/packages/studio/src/hooks/useResizable.test.tsx
  • studio-frontend/packages/studio/src/hooks/useResizable.ts
  • studio-frontend/packages/studio/src/hooks/useRestoreStudioSettings.test.tsx
  • studio-frontend/packages/studio/src/hooks/useRestoreStudioSettings.ts
  • studio-frontend/packages/studio/src/i18n/ar.json
  • studio-frontend/packages/studio/src/i18n/bn.json
  • studio-frontend/packages/studio/src/i18n/cs.json
  • studio-frontend/packages/studio/src/i18n/da.json
  • studio-frontend/packages/studio/src/i18n/de.json
  • studio-frontend/packages/studio/src/i18n/el.json
  • studio-frontend/packages/studio/src/i18n/en.json
  • studio-frontend/packages/studio/src/i18n/es.json
  • studio-frontend/packages/studio/src/i18n/fa.json
  • studio-frontend/packages/studio/src/i18n/fi.json
  • studio-frontend/packages/studio/src/i18n/fr.json
  • studio-frontend/packages/studio/src/i18n/he.json
  • studio-frontend/packages/studio/src/i18n/hi.json
  • studio-frontend/packages/studio/src/i18n/hu.json
  • studio-frontend/packages/studio/src/i18n/id.json
  • studio-frontend/packages/studio/src/i18n/it.json
  • studio-frontend/packages/studio/src/i18n/ja.json
  • studio-frontend/packages/studio/src/i18n/ko.json
  • studio-frontend/packages/studio/src/i18n/ms.json
  • studio-frontend/packages/studio/src/i18n/nl.json
  • studio-frontend/packages/studio/src/i18n/no.json
  • studio-frontend/packages/studio/src/i18n/pl.json
  • studio-frontend/packages/studio/src/i18n/pt.json
  • studio-frontend/packages/studio/src/i18n/ro.json
  • studio-frontend/packages/studio/src/i18n/ru.json
  • studio-frontend/packages/studio/src/i18n/sv.json
  • studio-frontend/packages/studio/src/i18n/sw.json
  • studio-frontend/packages/studio/src/i18n/ta.json
  • studio-frontend/packages/studio/src/i18n/th.json
  • studio-frontend/packages/studio/src/i18n/tl.json
  • studio-frontend/packages/studio/src/i18n/tr.json
  • studio-frontend/packages/studio/src/i18n/uk.json
  • studio-frontend/packages/studio/src/i18n/ur.json
  • studio-frontend/packages/studio/src/i18n/vi.json
  • studio-frontend/packages/studio/src/i18n/zh-TW.json
  • studio-frontend/packages/studio/src/i18n/zh.json
  • studio-frontend/packages/studio/src/index.ts
  • studio-frontend/packages/studio/src/sections/ApiModeToggle.tsx
  • studio-frontend/packages/studio/src/sections/ControlPanel.tsx
  • studio-frontend/packages/studio/src/sections/LanguageSelector.tsx
  • studio-frontend/packages/studio/src/sections/ThemeSelector.tsx
  • studio-frontend/packages/studio/src/styles/studioStyles.ts
  • studio-frontend/packages/studio/src/types.ts
  • studio-frontend/packages/studio/src/uikit/base/button.tsx
  • studio-frontend/packages/studio/src/uikit/base/card.tsx
  • studio-frontend/packages/studio/src/uikit/base/dropdown-menu.tsx
  • studio-frontend/packages/studio/src/uikit/base/switch.tsx
  • studio-frontend/packages/studio/src/uikit/composite/DropdownButton.tsx
  • studio-frontend/packages/studio/src/uikit/composite/GlassmorphicButton.tsx
  • studio-frontend/packages/studio/src/uikit/icons/ChevronDownIcon.tsx
  • studio-frontend/packages/studio/src/uikit/icons/StudioIcon.tsx
  • studio-frontend/packages/studio/src/uikit/index.ts
  • studio-frontend/packages/studio/src/uikit/lib/utils.ts
  • studio-frontend/packages/studio/src/uikit/types.ts
  • studio-frontend/packages/studio/src/utils/persistence.test.ts
  • studio-frontend/packages/studio/src/utils/persistence.ts
  • studio-frontend/packages/studio/tsconfig.json
  • studio-frontend/packages/studio/tsup.config.ts
  • studio-frontend/packages/studio/vitest.config.ts
  • studio-frontend/postcss.config.js
  • studio-frontend/scripts/build-mfes.ts
  • studio-frontend/scripts/dev-all.ts
  • studio-frontend/scripts/generate-mfe-manifests.ts
  • studio-frontend/scripts/lib/mfe-tools.ts
  • studio-frontend/scripts/run-mfe-type-checks.mjs
  • studio-frontend/src-app/__test-utils__/attachRegisteredRestMocks.ts
  • studio-frontend/src-app/__test-utils__/createMfeBridgeFixture.ts
  • studio-frontend/src-app/__test-utils__/createResetAccountsMockState.ts
  • studio-frontend/src-app/__test-utils__/describeAccountsApiServiceContract.ts
  • studio-frontend/src-app/__test-utils__/mockShadowHost.ts
  • studio-frontend/src-app/__test-utils__/mockUserFixture.ts
  • studio-frontend/src-app/__test-utils__/renderWithProviders.tsx
  • studio-frontend/src-app/app/App.no-studio.tsx
  • studio-frontend/src-app/app/App.no-uikit.no-studio.tsx
  • studio-frontend/src-app/app/App.no-uikit.tsx
  • studio-frontend/src-app/app/App.tsx
  • studio-frontend/src-app/app/actions/bootstrapActions.ts
  • studio-frontend/src-app/app/api/AccountsApiService.test.ts
  • studio-frontend/src-app/app/api/AccountsApiService.ts
  • studio-frontend/src-app/app/api/__test-utils__/mocks.ts
  • studio-frontend/src-app/app/api/index.ts
  • studio-frontend/src-app/app/api/mock-user-store.ts
  • studio-frontend/src-app/app/api/mocks.test.ts
  • studio-frontend/src-app/app/api/mocks.ts
  • studio-frontend/src-app/app/api/types.ts
  • studio-frontend/src-app/app/components/TextLoader.test.tsx
  • studio-frontend/src-app/app/components/TextLoader.tsx
  • studio-frontend/src-app/app/components/ui/avatar.tsx
  • studio-frontend/src-app/app/components/ui/sidebar.tsx
  • studio-frontend/src-app/app/components/ui/skeleton.tsx
  • studio-frontend/src-app/app/components/ui/sonner.tsx
  • studio-frontend/src-app/app/effects/bootstrapEffects.test.ts
  • studio-frontend/src-app/app/effects/bootstrapEffects.ts
  • studio-frontend/src-app/app/events/bootstrapEvents.ts
  • studio-frontend/src-app/app/globals.css
  • studio-frontend/src-app/app/icons/FrontXLogoIcon.tsx
  • studio-frontend/src-app/app/icons/FrontXLogoTextIcon.tsx
  • studio-frontend/src-app/app/layout/Footer.tsx
  • studio-frontend/src-app/app/layout/Header.tsx
  • studio-frontend/src-app/app/layout/Layout.tsx
  • studio-frontend/src-app/app/layout/Menu.tsx
  • studio-frontend/src-app/app/layout/Overlay.tsx
  • studio-frontend/src-app/app/layout/Popup.tsx
  • studio-frontend/src-app/app/layout/Screen.tsx
  • studio-frontend/src-app/app/layout/Sidebar.tsx
  • studio-frontend/src-app/app/layout/index.ts
  • studio-frontend/src-app/app/lib/utils.ts
  • studio-frontend/src-app/app/main.no-uikit.tsx
  • studio-frontend/src-app/app/main.tsx
  • studio-frontend/src-app/app/mfe/MfeScreenContainer.test.tsx
  • studio-frontend/src-app/app/mfe/MfeScreenContainer.tsx
  • studio-frontend/src-app/app/mfe/bootstrap.test.ts
  • studio-frontend/src-app/app/mfe/bootstrap.ts
  • studio-frontend/src-app/app/mfe/generated-mfe-manifests.json
  • studio-frontend/src-app/app/mfe/generated-mfe-manifests.json.d.ts
  • studio-frontend/src-app/app/themes/dark.ts
  • studio-frontend/src-app/app/themes/default.ts
  • studio-frontend/src-app/app/themes/dracula-large.ts
  • studio-frontend/src-app/app/themes/dracula.ts
  • studio-frontend/src-app/app/themes/index.ts
  • studio-frontend/src-app/app/themes/light.ts
  • studio-frontend/src-app/app/themes/tailwindColors.ts
  • studio-frontend/src-app/app/themes/utils.ts
  • studio-frontend/src-app/mfe_packages/README.md
  • studio-frontend/src-app/mfe_packages/_blank-mfe/.gitignore
  • studio-frontend/src-app/mfe_packages/_blank-mfe/README.md
  • studio-frontend/src-app/mfe_packages/_blank-mfe/index.html
  • studio-frontend/src-app/mfe_packages/_blank-mfe/mfe.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/package.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/actions/homeActions.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/api/_BlankApiService.test.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/api/_BlankApiService.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/api/mocks.test.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/api/mocks.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/api/types.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/components/ui/button.tsx
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/components/ui/card.tsx
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/components/ui/primitives.test.tsx
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/components/ui/skeleton.tsx
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/effects/homeEffects.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/events/homeEvents.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/homeFlux.test.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/init.test.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/init.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/lib/utils.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/lifecycle.test.tsx
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/lifecycle.tsx
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/HomeScreen.test.tsx
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/HomeScreen.tsx
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/ar.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/bn.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/cs.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/da.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/de.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/el.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/en.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/es.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/fa.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/fi.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/fr.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/he.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/hi.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/hu.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/id.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/it.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/ja.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/ko.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/ms.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/nl.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/no.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/pl.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/pt.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/ro.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/ru.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/sv.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/sw.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/ta.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/th.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/tl.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/tr.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/uk.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/ur.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/vi.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/zh-TW.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/screens/home/i18n/zh.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/shared/useScreenTranslations.test.tsx
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/shared/useScreenTranslations.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/slices/homeSlice.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/src/vite-env.d.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/tsconfig.json
  • studio-frontend/src-app/mfe_packages/_blank-mfe/vite.config.ts
  • studio-frontend/src-app/mfe_packages/_blank-mfe/vitest.config.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/.gitignore
  • studio-frontend/src-app/mfe_packages/connections-mfe/README.md
  • studio-frontend/src-app/mfe_packages/connections-mfe/index.html
  • studio-frontend/src-app/mfe_packages/connections-mfe/mfe.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/package.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/actions/homeActions.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/api/_BlankApiService.test.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/api/_BlankApiService.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/api/mocks.test.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/api/mocks.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/api/types.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/effects/homeEffects.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/events/homeEvents.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/homeFlux.test.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/init.test.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/init.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/lifecycle.test.tsx
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/lifecycle.tsx
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/HomeScreen.module.css
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/HomeScreen.test.tsx
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/HomeScreen.tsx
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/ar.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/bn.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/cs.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/da.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/de.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/el.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/en.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/es.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/fa.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/fi.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/fr.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/he.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/hi.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/hu.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/id.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/it.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/ja.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/ko.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/ms.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/nl.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/no.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/pl.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/pt.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/ro.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/ru.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/sv.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/sw.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/ta.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/th.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/tl.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/tr.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/uk.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/ur.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/vi.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/zh-TW.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/screens/home/i18n/zh.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/shared/anchorKitThemeOnShadowHost.test.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/shared/anchorKitThemeOnShadowHost.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/shared/useScreenTranslations.test.tsx
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/shared/useScreenTranslations.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/slices/homeSlice.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/src/vite-env.d.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/tsconfig.json
  • studio-frontend/src-app/mfe_packages/connections-mfe/vite.config.ts
  • studio-frontend/src-app/mfe_packages/connections-mfe/vitest.config.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/.gitignore
  • studio-frontend/src-app/mfe_packages/kits-mfe/README.md
  • studio-frontend/src-app/mfe_packages/kits-mfe/index.html
  • studio-frontend/src-app/mfe_packages/kits-mfe/mfe.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/package.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/actions/homeActions.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/api/_BlankApiService.test.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/api/_BlankApiService.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/api/mocks.test.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/api/mocks.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/api/types.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/effects/homeEffects.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/events/homeEvents.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/homeFlux.test.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/init.test.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/init.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/lifecycle.test.tsx
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/lifecycle.tsx
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/HomeScreen.module.css
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/HomeScreen.test.tsx
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/HomeScreen.tsx
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/ar.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/bn.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/cs.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/da.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/de.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/el.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/en.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/es.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/fa.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/fi.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/fr.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/he.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/hi.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/hu.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/id.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/it.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/ja.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/ko.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/ms.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/nl.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/no.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/pl.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/pt.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/ro.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/ru.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/sv.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/sw.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/ta.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/th.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/tl.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/tr.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/uk.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/ur.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/vi.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/zh-TW.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/screens/home/i18n/zh.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/shared/anchorKitThemeOnShadowHost.test.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/shared/anchorKitThemeOnShadowHost.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/shared/useScreenTranslations.test.tsx
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/shared/useScreenTranslations.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/slices/homeSlice.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/src/vite-env.d.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/tsconfig.json
  • studio-frontend/src-app/mfe_packages/kits-mfe/vite.config.ts
  • studio-frontend/src-app/mfe_packages/kits-mfe/vitest.config.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/.gitignore
  • studio-frontend/src-app/mfe_packages/people-mfe/README.md
  • studio-frontend/src-app/mfe_packages/people-mfe/index.html
  • studio-frontend/src-app/mfe_packages/people-mfe/mfe.json
  • studio-frontend/src-app/mfe_packages/people-mfe/package.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/actions/homeActions.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/api/_BlankApiService.test.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/api/_BlankApiService.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/api/mocks.test.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/api/mocks.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/api/types.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/effects/homeEffects.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/events/homeEvents.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/homeFlux.test.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/init.test.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/init.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/lifecycle.test.tsx
  • studio-frontend/src-app/mfe_packages/people-mfe/src/lifecycle.tsx
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/HomeScreen.module.css
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/HomeScreen.test.tsx
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/HomeScreen.tsx
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/ar.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/bn.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/cs.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/da.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/de.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/el.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/en.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/es.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/fa.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/fi.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/fr.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/he.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/hi.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/hu.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/id.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/it.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/ja.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/ko.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/ms.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/nl.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/no.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/pl.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/pt.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/ro.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/ru.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/sv.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/sw.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/ta.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/th.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/tl.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/tr.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/uk.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/ur.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/vi.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/zh-TW.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/screens/home/i18n/zh.json
  • studio-frontend/src-app/mfe_packages/people-mfe/src/shared/anchorKitThemeOnShadowHost.test.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/shared/anchorKitThemeOnShadowHost.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/shared/useScreenTranslations.test.tsx
  • studio-frontend/src-app/mfe_packages/people-mfe/src/shared/useScreenTranslations.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/slices/homeSlice.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/src/vite-env.d.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/tsconfig.json
  • studio-frontend/src-app/mfe_packages/people-mfe/vite.config.ts
  • studio-frontend/src-app/mfe_packages/people-mfe/vitest.config.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/.gitignore
  • studio-frontend/src-app/mfe_packages/projects-mfe/README.md
  • studio-frontend/src-app/mfe_packages/projects-mfe/index.html
  • studio-frontend/src-app/mfe_packages/projects-mfe/mfe.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/package.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/actions/homeActions.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/api/_BlankApiService.test.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/api/_BlankApiService.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/api/mocks.test.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/api/mocks.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/api/types.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/effects/homeEffects.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/events/homeEvents.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/homeFlux.test.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/init.test.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/init.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/lifecycle.test.tsx
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/lifecycle.tsx
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/HomeScreen.module.css
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/HomeScreen.test.tsx
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/HomeScreen.tsx
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/ar.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/bn.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/cs.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/da.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/de.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/el.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/en.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/es.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/fa.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/fi.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/fr.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/he.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/hi.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/hu.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/id.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/it.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/ja.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/ko.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/ms.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/nl.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/no.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/pl.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/pt.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/ro.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/ru.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/sv.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/sw.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/ta.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/th.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/tl.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/tr.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/uk.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/ur.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/vi.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/zh-TW.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/screens/home/i18n/zh.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/shared/anchorKitThemeOnShadowHost.test.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/shared/anchorKitThemeOnShadowHost.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/shared/useScreenTranslations.test.tsx
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/shared/useScreenTranslations.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/slices/homeSlice.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/src/vite-env.d.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/tsconfig.json
  • studio-frontend/src-app/mfe_packages/projects-mfe/vite.config.ts
  • studio-frontend/src-app/mfe_packages/projects-mfe/vitest.config.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/.gitignore
  • studio-frontend/src-app/mfe_packages/search-mfe/README.md
  • studio-frontend/src-app/mfe_packages/search-mfe/index.html
  • studio-frontend/src-app/mfe_packages/search-mfe/mfe.json
  • studio-frontend/src-app/mfe_packages/search-mfe/package.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/actions/homeActions.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/api/_BlankApiService.test.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/api/_BlankApiService.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/api/mocks.test.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/api/mocks.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/api/types.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/effects/homeEffects.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/events/homeEvents.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/homeFlux.test.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/init.test.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/init.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/lifecycle.test.tsx
  • studio-frontend/src-app/mfe_packages/search-mfe/src/lifecycle.tsx
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/HomeScreen.module.css
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/HomeScreen.test.tsx
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/HomeScreen.tsx
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/ar.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/bn.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/cs.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/da.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/de.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/el.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/en.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/es.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/fa.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/fi.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/fr.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/he.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/hi.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/hu.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/id.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/it.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/ja.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/ko.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/ms.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/nl.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/no.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/pl.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/pt.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/ro.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/ru.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/sv.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/sw.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/ta.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/th.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/tl.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/tr.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/uk.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/ur.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/vi.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/zh-TW.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/screens/home/i18n/zh.json
  • studio-frontend/src-app/mfe_packages/search-mfe/src/shared/anchorKitThemeOnShadowHost.test.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/shared/anchorKitThemeOnShadowHost.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/shared/useScreenTranslations.test.tsx
  • studio-frontend/src-app/mfe_packages/search-mfe/src/shared/useScreenTranslations.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/slices/homeSlice.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/src/vite-env.d.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/tsconfig.json
  • studio-frontend/src-app/mfe_packages/search-mfe/vite.config.ts
  • studio-frontend/src-app/mfe_packages/search-mfe/vitest.config.ts
  • studio-frontend/src-app/vite-env.d.ts
  • studio-frontend/src-app/vitest.config.ts
  • studio-frontend/src-app/vitest.mfe.base.ts
  • studio-frontend/src/api/mocks/MockEventSource.ts
  • studio-frontend/src/api/plugins/RestMockPlugin.ts
  • studio-frontend/src/api/plugins/SseMockPlugin.ts
  • studio-frontend/src/build/mf-gts.ts
  • studio-frontend/src/gts/index.ts
  • studio-frontend/src/gts/schemas/extension_screen.v1.json
  • studio-frontend/src/gts/schemas/language.v1.json
  • studio-frontend/src/gts/schemas/theme.v1.json
  • studio-frontend/src/index.ts
  • studio-frontend/src/layout-domain.ts
  • studio-frontend/tailwind.config.ts
  • studio-frontend/tsconfig.app.json
  • studio-frontend/tsconfig.json
  • studio-frontend/tsconfig.node.json
  • studio-frontend/tsconfig.test.json
  • studio-frontend/tsup.config.ts
  • studio-frontend/vite.config.ts
  • studio-frontend/vitest.config.ts
  • studio-frontend/vitest.setup.ts
  • studio-frontend/vitest.shared.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@SysoevAndrey

Copy link
Copy Markdown
Contributor Author

Note for reviewers: the red backend check is pre-existing — cargo fmt --check fails on main's own head (694517f, main CI run is red on the same commit). This PR only touches studio-frontend/ and ci.yml; the backend job was triggered by the workflow-file path filter.

Andrey Sysoev and others added 10 commits August 14, 2026 18:27
Applied via frontx CLI (identities and refs recorded in
studio-frontend/.frontx/provenance.json):
- @gears-frontx/frontx-template-shell 0.1.0-alpha.2 (@develop)
- @gears-frontx/frontx-template-mfe   0.1.0-alpha.0 (@develop)

Known fresh-seed gotcha: 'npm run dev:all' builds only MFEs and expects
dist-lib/ and workspace packages to exist — run 'npm run build:package &&
npm run build:packages' once after cloning.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
cfs init + cfs kit install cyber-pilot-kit-frontx@develop (0.3.0-alpha.1,
resolved bac818226596) + cfs generate-agents. Generated agent surfaces
are gitignored by the cfs-managed block; committed are the .cf-studio
config/registration and the root navigation block (CLAUDE.md).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
Removed demo-mfe and both widgets fixtures; _blank-mfe stays as the
copy source for new screensets. Manifests regenerated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
…ctions, Kits

Scaffolded per the template's add-mfe-package procedure (cyber-pilot kit
routing -> .frontx/ai bundle): each is a copy of _blank-mfe with its own
port (3010-3050), MF name, and 5-token GTS ids under the
constructor_studio namespace. Placeholder screens keep the scaffold's
bridge wiring (theme/language, i18n, RTL) and render title/description;
the scaffold's demo data layer (api/slices/effects) is kept untouched as
reference for when each area grows real content.

Note for upstream: the gts-id-conventions guideline's '{app} e.g.
acme.crm' substituted into the documented patterns yields 6-token
instance segments, which @globaltypesystem/gts-ts rejects (grammar is
exactly vendor.package.namespace.type.vN).

Verified: workspace tests green (19-21 per MFE), type-check, arch:deps
(0 violations), dev:all - all five screens mount in light and dark
themes with zero console errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
- Menu is permanently collapsed: labels remain reachable as tooltips;
  the logo header is no longer a toggle.
- Header and Footer removed from Layout (components kept on disk —
  the user chrome returns with OIDC).
- _blank-mfe keeps building as the scaffold but contributes no menu
  extension anymore.

Known pre-existing template gap, not addressed here: root eslint config
imports 'typescript-eslint' which no package declares, so npm run lint
fails at config load.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
…MFEs

PR-553 recipe, applied to all five screensets: ui-kit 0.3.0-alpha.3
exact-pinned per package (kept out of sharedDeps — externalizing it
would strand its CSS); theme.css travels ?inline and is re-anchored
:root -> :host per shadow root; the screen root always carries
data-theme (dark/dracula/dracula-large -> dark, else light) so
prefers-color-scheme cannot leak. Screens are kit Card/Skeleton +
CSS Modules over kit tokens; vendored shadcn copies, lib/utils and
tailwind deps dropped from the five packages. vitest base inlines
ui-kit (its ESM imports CSS chunks Node's loader cannot handle).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
Shell themes (default/light -> kit light, dark -> kit dark) now carry
the exact color values of @gears-frontx/ui-kit theme.css, converted to
the shell's HSL-triplet format; left-menu tokens map onto the kit's
sidebar tokens, selected item onto kit primary. The chrome stays
Tailwind-mechanical (no document-level kit CSS — that would break
hsl(var(--x)) utilities shell-wide), but is now visually identical to
the kit-rendered screens. SidebarHeader renders the logo as plain
branding when no toggle handler is given — the permanently-compact menu
no longer exposes a phantom "Expand menu" control.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
The logo block and its separator leave the sidebar; the Studio logo
takes this slot later (re-add SidebarHeader with the new asset then).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
Set up studio-frontend/ for the FrontX templates applied via
`frontx add` (templates own package.json, tsconfig, src/, README,
.gitignore — foreign content on those paths makes the CLI refuse).
main has already moved the walking-skeleton SPA aside to
studio-frontend-prototype/, so only the deployment wrapper comes back:
Dockerfile*, nginx template and runtime-env hook are not template-owned,
carried over from the prototype's current copies with paths retargeted.

Foundation decisions are recorded in ADR-0006: FrontX consumed through
its CLI, npm (not pnpm), Node >= 24.14 (.nvmrc added), TypeScript from
the template range (latest 5.x), AI tooling via Constructor Studio.

CI gains a path-filtered frontx job for studio-frontend/ that detects
the missing package.json and passes as a green no-op until the shell
lands (setup-node would otherwise fail on the absent lock file); the
prototype's frontend job is untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
(cherry picked from commit fc9e04b)
The test suites resolve workspace packages (@gears-frontx/react et al.)
through their dist/ entries, which only the build produces; on a fresh
CI checkout Test-first fails with 'Failed to resolve entry'. Same root
class as the dev:all fresh-clone gap: scripts assume prebuilt workspace
artifacts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Andrey Sysoev <andrey.sysoev@constructor.tech>
@SysoevAndrey
SysoevAndrey merged commit a0a41bf into main Aug 14, 2026
6 checks passed
@SysoevAndrey
SysoevAndrey deleted the frontend-app branch August 15, 2026 07:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant