Skip to content
Merged
Show file tree
Hide file tree
Changes from 44 commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
0ad42f5
Refactor layout engine atoms package and add Vue runtime support
MichaelDecent Oct 16, 2025
d6e025a
Merge branch 'mono/dev' into layout_engine
MichaelDecent Oct 17, 2025
82f9278
feat: Add Vue example for dashboard manifest generation
MichaelDecent Oct 17, 2025
a869d8a
feat: Enhance Vue runtime with page selection and theme management fe…
MichaelDecent Oct 17, 2025
e67d8ab
feat: add realtime manifest streaming support and websocket event han…
MichaelDecent Oct 17, 2025
07b8bc7
feat: Design system alignment
MichaelDecent Oct 20, 2025
155b4db
feat: Extension hooks: - Allow custom components to be registered at …
MichaelDecent Oct 20, 2025
dc7eafc
Add unit coverage for new runtime utilities, plus integration tests t…
MichaelDecent Oct 20, 2025
d635876
creating working examples
MichaelDecent Oct 20, 2025
5055f51
added 2 new examples
MichaelDecent Oct 20, 2025
aae35b5
fixed related bugs
MichaelDecent Oct 21, 2025
b09aef4
fix: added all shared/reusable logic to runtime/core
MichaelDecent Oct 21, 2025
b0c9178
final bug fix
MichaelDecent Oct 22, 2025
d3254b6
added an hybrid demo
MichaelDecent Oct 22, 2025
baeb611
sepeared patch module
MichaelDecent Oct 22, 2025
250bf18
feat: added svelte thin layer wrapper
MichaelDecent Oct 24, 2025
acb90b0
finalizing on the svelte thin layer wrapper
MichaelDecent Oct 24, 2025
f31b2dd
completed the svelte thin layer wrapper
MichaelDecent Oct 27, 2025
5109ee8
feat: swarmakit atom mapping
MichaelDecent Oct 28, 2025
d647c9e
refactor: remove deprecated Vue and React atom presets, enhance Svelt…
MichaelDecent Oct 31, 2025
777ef53
feat: introduce Svelte runtime enhancements and new components
MichaelDecent Oct 31, 2025
72c00d1
feat: add Svelte to supported catalogs in layout engine
MichaelDecent Nov 3, 2025
776ad8e
feat: add Vue and Svelte landing page demos with FastAPI integration
MichaelDecent Nov 3, 2025
a9ce196
chore: remove outdated documentation and example files for Vue and Sv…
MichaelDecent Nov 3, 2025
e9f0a77
chore: remove deprecated core modules and utilities from layout engine
MichaelDecent Nov 3, 2025
7f54248
chore: remove Vue catalog file from layout engine atoms
MichaelDecent Nov 3, 2025
19185a6
chore: remove runtime adapters for Vue from layout engine atoms
MichaelDecent Nov 3, 2025
31e3f89
refactor: introduce IAtomCatalog interface and enhance AtomPresetCata…
MichaelDecent Nov 4, 2025
87c73cf
chore: update versioning for layout-engine and layout-engine-atoms to…
MichaelDecent Nov 5, 2025
ed814f5
feat: add high-level manifest helpers and quick manifest building uti…
MichaelDecent Nov 5, 2025
dce3dc7
exp: added swarma kit repo
MichaelDecent Nov 5, 2025
b128bf2
feat: introduce multi-page dashboard demo with FastAPI integration an…
MichaelDecent Nov 6, 2025
491eef6
feat: enhance multi-page dashboard with new layout options and UI hoo…
MichaelDecent Nov 6, 2025
b3ec8ea
feat: implement WebSocket event hub for real-time mission control upd…
MichaelDecent Nov 10, 2025
34da114
feat: integrate real-time capabilities with WebSocket support and enh…
MichaelDecent Nov 10, 2025
d947150
feat: add Svelte runtime support and enhance layout engine with new c…
MichaelDecent Nov 10, 2025
27d8292
Add fallback rendering for Svelte dashboard example
MichaelDecent Nov 14, 2025
09a26ea
Merge pull request #181 from MichaelDecent/codex/test-tile-loading-in…
MichaelDecent Nov 14, 2025
68c3367
Simplify Svelte demo to use built-in fallback widgets
MichaelDecent Nov 14, 2025
3d6477a
Merge branch 'svelte-runtime-warpper' into codex/test-tile-loading-in…
MichaelDecent Nov 14, 2025
076a9ab
Merge pull request #182 from MichaelDecent/codex/test-tile-loading-in…
MichaelDecent Nov 14, 2025
3c8594d
Enhance Svelte dashboard example by adding unique IDs to cards and up…
MichaelDecent Nov 14, 2025
a696773
Implement real-time event handling in layout engine with FastAPI inte…
MichaelDecent Nov 14, 2025
6768bfe
Add UiEvents Command Center demo with multiple workflows and real-tim…
MichaelDecent Nov 17, 2025
81e56bb
Add Control Center demo with comprehensive UiEvents and state managem…
MichaelDecent Nov 18, 2025
0ec2815
Remove Control Center demo and related files; introduce CRUD Dashboar…
MichaelDecent Nov 22, 2025
b8479d9
Update CRUD Dashboard to return user statistics as strings for Vue co…
MichaelDecent Nov 23, 2025
6f6fa32
Delete pkgs/experimental/swarmakit/libs/svelte/.vscode/extensions.json
cobycloud Nov 24, 2025
66f440e
Add VSCode extensions.json to .gitignore
cobycloud Nov 24, 2025
d303ccb
Enhance CRUD Dashboard with improved logging for user filtering and u…
MichaelDecent Nov 24, 2025
83de56b
Refactor layout engine to remove SwarmaKit Vue assets and update READ…
MichaelDecent Nov 26, 2025
32a28c5
Add Vue components, core functionalities, and event handling for layo…
MichaelDecent Nov 26, 2025
2d28907
Remove Svelte runtime components and assets from layout engine, inclu…
MichaelDecent Nov 26, 2025
9e537a6
Remove Svelte dashboard example, including manifests, server, and tes…
MichaelDecent Nov 26, 2025
5c74133
Remove Svelte imports and related components from layout engine to fu…
MichaelDecent Nov 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,5 @@ kms.db
*.db
target/
!.gitkeep # keep the empty dir in repo

node_modules/
6 changes: 6 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

96 changes: 96 additions & 0 deletions pkgs/experimental/layout_engine/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,79 @@ artifacts directly from the repository.
- **Site-aware routing helpers** – `layout_engine.targets.SiteRouter` produces SSR HTML shells, manifest JSON payloads, and ESM
import maps you can bind directly to FastAPI, Starlette, or any HTTP framework route handlers.

### Unified manifest schema

Every manifest emitted by Layout Engine adheres to the following structure:

```json
{
"kind": "layout_manifest",
"version": "2025.10",
"viewport": {"width": 1280, "height": 720},
"grid": {
"row_height": 160,
"gap_x": 24,
"gap_y": 24,
"columns": [{"size": {"value": 1, "unit": "fr", "min_px": 72}}],
"baseline_unit": 12,
"tokens": {"columns": "sgd:columns:12", "baseline": "sgd:baseline:12"}
},
"tiles": [
{
"id": "hero",
"role": "swarmakit:vue:hero-card",
"frame": {"x": 0, "y": 0, "w": 1280, "h": 320},
"props": {"title": "Quarterly Highlights", "accent": "indigo", "size": "lg"},
"atom": {
"role": "swarmakit:vue:hero-card",
"module": "@swarmakit/vue",
"export": "HeroCard",
"framework": "vue",
"package": "@swarmakit/vue",
"family": "swarmakit",
"version": "0.0.22",
"defaults": {"size": "md"},
"tokens": {"variant": "hero"},
"registry": {
"name": "swarmakit",
"framework": "vue",
"version": "0.0.22"
}
}
}
],
"site": {
"active_page": "dashboard",
"navigation": {"base_path": "/"},
"pages": [
{"id": "dashboard", "route": "/", "title": "Dashboard"},
{"id": "catalog", "route": "/catalog", "title": "Catalog"}
]
},
"channels": [
{
"id": "ui.events",
"scope": "page",
"topic": "page:{page_id}:ui",
"description": "UI event bus",
"payload_schema": {"type": "object"},
"meta": {"transport": "ws"}
}
],
"ws_routes": [
{"path": "/ws/ui", "channels": ["ui.events"], "description": "Multiplexed UI events"}
],
"etag": "61d6d0d0b6f3c5f5..."
}
```

Key highlights:

- **Grid tokens** capture Swiss-grid presets so wrappers can align columns/gaps/baselines without recomputing measurements.
- **Atom metadata** preserves registry origin and package details, enabling thin wrappers (Vue, Svelte, React) to auto-import `@swarmakit/{framework}` modules with no bespoke glue.
- **Site block** embeds page navigation so multi-page experiences hydrate from a single manifest.
- **Channels & websocket routes** describe mux topics so runtime shells subscribe automatically.

### Serving manifests and import maps

`SiteRouter` centralizes the endpoints required by single-page and multi-page applications. Use
Expand All @@ -136,6 +209,24 @@ that powers the import map consumed by Vue's module loader. Defaults defined on
merged with tile props every time a manifest is built, so downstream atoms always receive a
complete prop payload.

#### Registering SwarmaKit atoms

`layout-engine` does not automatically install SwarmaKit presets. When `layout_engine_atoms` is
available you can populate an `AtomRegistry` using the helper introduced in v0.1.0:

```python
from layout_engine import AtomRegistry, register_swarma_atoms

atoms = register_swarma_atoms(AtomRegistry(), catalog="vue")

# optional overrides — merged instead of replaced
atoms.override("swarmakit:vue:button", defaults={"size": "lg"})
```

The helper lazily imports `layout_engine_atoms.catalog` so projects without SwarmaKit remain
functional. Overrides use additive merges (defaults/tokens/registry) to avoid clobbering preset
values.

```python
from layout_engine import AtomRegistry, AtomSpec
from layout_engine.mfe.default import RemoteRegistry
Expand Down Expand Up @@ -437,6 +528,11 @@ MPA pages perform the same fetch using their page-specific manifest endpoint, so
call `loadManifest(`/catalog/${itemId}/manifest.json`, new URLSearchParams(location.search))` and the
server will deliver props for the requested `itemId`.

Thin wrappers for React or Svelte follow identical steps: fetch the manifest, honour `manifest.grid.tokens`
when computing breakpoints, and import atoms using the `module`/`export` values stored in each tile's
`atom` block. Because registry metadata travels with the manifest, no framework-specific glue or
per-role switch statements are necessary.

### 5. Event handling with multiplexed WebSockets

Install the optional server extras (`layout-engine[server]`) plus the WebSocket JSON-RPC transport
Expand Down
33 changes: 0 additions & 33 deletions pkgs/experimental/layout_engine/examples/vue-example/README.md

This file was deleted.

Loading
Loading