Native Shell
Native Shell은 모든 플랫폼의 앱 안에서 만들어지는 AI UI입니다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Background effects for SIMAI Framework: effects, catalogue site and author guide
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Animated backgrounds for SIMAI Framework pages: hero sections, sign-in screens, dashboards and card groups. Each effect is one small ES module with a manifest, checked by the Framework's effect kit, reviewed, and published pinned by commit and SHA-256.
Catalogue site: https://effects.simai.io/ (gallery, a live configurator for every effect, and the code to add it). The site is in English by default and in Russian, Spanish, Brazilian Portuguese, German, Simplified Chinese, French and Japanese.
The effects live here, outside the Framework: they are content and taste, and
there will be many. The Framework ships only the core: SF.Effects, the
simai.effect standard and the kit.
| Path | What it is |
|---|---|
effects/<id>/ | One effect: effect.json (simai.effect 1.1 manifest with schemes and capabilities), index.js, preview.png, README.md |
effects/policy.json | Catalogue sidecar: order, categories, descriptions and roles in the eight site languages, tags |
catalogue/categories.json | The closed set of subjects the gallery filters by (schema) |
catalogue/index.json | Generated catalogue: every effect, its files with SHA-256 and size, the kit result (schema) |
catalogue/kit.json | Kit results per effect, written by scripts/kit.mjs |
framework.lock.json | The Framework release everything is checked against (ui-eea8c0a97cc7) |
site/ | The catalogue site, built in eight languages from site/i18n/ (each language in its own folder: en/, ru/, es/, pt-br/, de/, zh-cn/, fr/, ja/; the root only redirects to the visitor's language, English by default); it places effects through the core's SF.Effects |
service/votes/ | The votes service: anonymous likes, dislikes and use counts (docs/VOTES.md) |
templates/effect/ | A template effect to start from |
docs/AUTHORING.md | The author guide |
scripts/ | Catalogue build and check, kit runner, site build, browser smoke, hygiene check |
34 effects today: 19 draw both schemes, 13 are dark only, 2 light only. The catalogue uses no pairs: an effect that works well in both themes is dual.
dark, light or both).
The catalogue names no pairs.auto (follow the page, the default),
dark or light. A fixed mode the effect cannot draw is never offered.auto, an effect that draws one scheme keeps it on a page of the
other theme: a dark effect stays dark, and a light effect stays light
(owner, 2026-10-28). The SIMAI Framework core is asked to do the same; until
it does, the site and the snippets give such an effect its own scheme as
the theme mode.theme-dark or
theme-light), so text and controls over it keep 4.5:1.The Framework core runs effects from this catalogue: SF.Effects (simai.effect
1.1) loads an effect, checks every file against the SHA-256 in
catalogue/index.json, applies the theme policy, follows the page theme and
runs windows mode. The page names the catalogue, pinned by commit:
<!-- SIMAI Framework pinned by its release package version, the catalogue by its full commit -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@simai-studio/[email protected]/distr/core/css/core.min.css">
<script>
window.sfPath = 'https://cdn.jsdelivr.net/npm/@simai-studio/[email protected]/distr/';
window.SF_BOOT_CONFIG = Object.assign(window.SF_BOOT_CONFIG || {}, {
effects: {catalogue: 'https://cdn.jsdelivr.net/gh/simai/ui-effects@<commit>/'},
});
</script>
<script src="https://cdn.jsdelivr.net/npm/@simai-studio/[email protected]/distr/core/js/core.min.js"></script>
Then markup alone places an effect:
<section data-sf-effect="comet-flow"
data-sf-effect-theme="auto"
data-sf-effect-settings='{"speed":100}'>…</section>
<ul data-sf-effect-windows="comet-flow" data-sf-effect-theme="auto">
<li data-sf-effect-window>…</li>
<li data-sf-effect-window>…</li>
</ul>
or a script does: await SF.Effects.placeEffect(element, {effect: 'comet-flow', themeMode: 'auto', settings, windows}). The configurator's «Получить код»
gives both for the chosen effect, settings, theme mode and layout.
background: var(--sf-surface-0)):
it takes the theme the effect is drawn in, and the core sets its text colour
(class sf-effect-area, at the lowest layer, so the page's own colour wins).blob: URL, so
a Content Security Policy must allow blob: scripts; crypto.subtle needs
a secure context (https or localhost).effect.json outside the pinned catalogue goes into an
<iframe sandbox="allow-scripts"> with an opaque origin and a strict CSP.
It gets its settings and the palette tones by message, and has no access
to the page, its storage or the network. Its host must serve the files with
CORS; there is no digest to check them against, so the frame is the trust
boundary.blob: scripts (catalogue modules
are imported from their verified bytes) and, for foreign effects,
'sha256-<SF.Effects.SANDBOX_RUNNER_SHA256>'.SF_BOOT_CONFIG.effects.foreign to
'refuse'; 'sandbox' is the default.See SECURITY.md to report a problem.
Node 20.19 or later. npm ci installs playwright-core (pinned).
node scripts/build-catalogue.mjs # write catalogue/index.json
node scripts/build-catalogue.mjs --check # fail unless current and every effect passes the kit
node scripts/check-hygiene.mjs # local paths, secret-shaped strings, offline modules
UI_ROOT=../ui UI_SOURCE_ROOT=../ui-source node scripts/kit.mjs --template
node scripts/build-site.mjs # dist/
UI_ROOT=../ui node scripts/smoke.mjs
node scripts/serve.mjs # http://127.0.0.1:4173/
For quick local work, node scripts/dev.mjs (npm run dev) builds the
catalogue and the site into dist/ and rebuilds them within a second of any
change under effects/ or site/. Point a local web server at dist/ (or run
scripts/serve.mjs beside it) and reload the page after a save. A changed
effect has no kit result yet, so run the kit and the gates before a commit.
kit.mjs and smoke.mjs read simai/ui and simai/ui-source with
git archive / git show at the commits of framework.lock.json; they never
check out or write in those clones. CHROME_PATH runs a given Chrome in the
new headless mode.
Apache License 2.0, see LICENSE and NOTICE. Contributions: CONTRIBUTING.md.