ui-source is the editable source repository for SIMAI Framework. It owns Core,
the Loader, utilities, components, Smart Components, their contracts, and source
tests.
Most projects should install a fixed release from simai/ui,
which carries Core, rules, components, utilities and Smart Components
(distr/smart). simai/ui-smart was a
byte-identical mirror of distr/smart while consumers moved; it is archived,
read-only, with its history kept. simai/ui holds generated output and is not
edited directly.
Documentation (Russian): https://ui.simai.io/
The Framework is extended through component packages: a component lives with
its owner. The SIMAI Framework Pro components (sf-view-table, sf-view,
sf-view-properties, sf-admin-menu and the rest) are the package pro (until
2027-01-01 also loadable under its former name larena), built from the
component folder of simai/ui-pro against a pinned revision of this
repository and published as releases of simai/ui-pro; see
docs/developer/component-packages.md
and the standard simai.component-package.
simai/ui-source— editable Framework source;simai/ui-builder— deterministic build system;simai/ui— generated Framework distribution (Core, utilities, components, Smart Components);simai/ui-smart— archived: it mirroredui/distr/smartwhile consumers moved;simai/ui-pro— the SIMAI Framework Pro components, the component packagepro(Larena is one of its consumers);simai/ui-source-proandsimai/ui-pro-historyare archived;simai/ui-doc— public documentation.
The Loader is one module inside this repository. The previous repository name
simai/ui-loader is retained by GitHub redirects for compatibility.
Use the Node.js version accepted by the current build contract, install the locked dependencies, and run:
yarn install --frozen-lockfile
yarn test:unitThe probes in tests/browser/ drive Chromium through playwright, a pinned
devDependency. They resolve it from this repository's own node_modules and
nowhere else: scripts/run-browser-probes.mjs stops before the first probe when
playwright is missing, resolves outside the repository or differs from the
declared version. A git worktree without node_modules borrows the main
checkout's through a symlink, so install there first.
Each worktree needs the declared playwright before its first probe or first-paint run, in one of two ways:
-
Borrow (no install): keep the main checkout at a
mainthat declares playwright and runyarn install --frozen-lockfilethere once. A worktree with nonode_modulesof its own then links the main checkout's on its first probe run. The link is made only when the main checkout holds exactly the declared version; a main checkout from before the devDependency (or behind a version bump) has none to lend, and the run stops with what to do. -
Install (about a second from the yarn cache, about 70 MB):
yarn install --frozen-lockfile --prefer-offline --ignore-scripts
--ignore-scriptsis safe here: no dependency needs an install script for the checks, and playwright downloads no browser anyway. The folder goes with the worktree when it is removed.
Do not run yarn install in a worktree whose node_modules is a borrowed
link: it would rewrite the main checkout's node_modules to the worktree's
lockfile. Remove the link first (rm node_modules, a symlink, not the folder
it points to), then install.
Installing the package downloads no browser. Point PLAYWRIGHT_BROWSERS_PATH
at a folder holding the build the pinned version wants (the release route uses
<GitHub>/.playwright-browsers, because the shared
~/Library/Caches/ms-playwright is pruned by other tools' installs), and add a
missing build there with:
PLAYWRIGHT_BROWSERS_PATH=<folder> node node_modules/playwright/cli.js install chromium-headless-shellThen run every probe against a build output:
PLAYWRIGHT_BROWSERS_PATH=<folder> node scripts/run-browser-probes.mjs <build output root>Build release artifacts through simai/ui-builder; do not commit generated
ui output here.
Project-owned SIMAI Framework source is available under the Apache License 2.0; see also NOTICE. Code published before the change was released under the MIT License, and copies taken under it keep those terms. Bundled third-party code and fonts remain under their original licences; see THIRD_PARTY_NOTICES.md.
See SECURITY.md for how to report a vulnerability.
Composite Smart Component / составной смарт-компонент describes components that coordinate their children. Public identifiers and schemas are unchanged.