Skip to content

feat: Lumens (Live Interactivity) renderer — scene, runtime, data-bound (impl of #34)#36

Closed
Weegy wants to merge 2 commits into
claude/omadia-ui-interactivity-concept-wu7iswfrom
feat/lumens-impl
Closed

feat: Lumens (Live Interactivity) renderer — scene, runtime, data-bound (impl of #34)#36
Weegy wants to merge 2 commits into
claude/omadia-ui-interactivity-concept-wu7iswfrom
feat/lumens-impl

Conversation

@Weegy

@Weegy Weegy commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

What

The host-app (Electron renderer) side of Live Interactivity (Lumens), omadia-canvas-protocol/1.1. Stacked on the spec branch (#31) so the diff is implementation-only. Implements #34. Server half: byte5ai/omadia#315.

Verified live: connected to a local omadia stack, a real-data prompt renders an interactive, tappable Lumen of actual Dynamics course rows (selection highlights via a state-driven transition); the arcade reference Lumen ticks at 60fps with tap/Space input.

Contents

  • L2 — scene primitive (render/scene/): canvas2d draw-list rasteriser with Lume theme-token-only styling, buffer-native hit-testing → TargetRef, declarative animate layer (reduced-motion aware), SceneNode renderer.
  • L3/L4 — Lumen runtime (render/lumen/): vendored deterministic LX interpreter; useLumen hook (reactive view eval + rAF tick cadence + surface_error halt); LumenNode (structural + semantic validation, tap/key/scene-hit → transitions); per-region dirty-tracking (≈0% CPU at rest).
  • L6 — ports/wires: typed wire resolution + least-privilege expose.
  • L9 — reference Lumens: arcade · wizard · defrag-viz · map, traced end-to-end.
  • 1.1 incoming validation: the canvas-tree primitive oneOf is extended in place (same 1.0 $id) in the renderer validator, so both validateTree and validateSurfaceEvent admit a Lumen-bearing snapshot (a 1.1-only id would only fix validateTree).
  • Dev-launch fixes: ws/bufferutil externalized (main-process crash); renderer fs allow-list covers symlinked node_modules.

Tests

app 204 passing; web + node tsc + eslint clean.

Dependency / merge order

Requires byte5ai/omadia#315 (canvas-core 1.1 — the schema source). Land #315, then #31, then this.

…, motion

omadia-canvas-protocol/1.1 host-app implementation (PR #31, issue #34).

- L2 scene primitive: canvas2d draw-list rasteriser (theme-token styling),
  buffer-native hit-testing → TargetRef, SceneNode renderer.
- L3/L4 Lumen runtime: vendored deterministic LX interpreter; useLumen hook
  (reactive view eval + rAF tick cadence + surface_error halt); LumenNode
  (structural+semantic validation, events→transitions, host-action bubbling);
  declarative animate layer (§5, reduced-motion) + per-region dirty-tracking.
- L6 ports/wires: typed wire resolution + least-privilege expose.
- L9: four reference Lumens (arcade game, wizard, defrag-viz, map) traced
  end-to-end through the validator + interpreter.
- Schema sync + validator generation wired for the 5 new 1.1 schemas.

204 tests, web+node tsc + eslint clean. Depends on byte5ai/omadia canvas-core
1.1 (the schema source) — land that PR first.
- Accept Lumen-bearing snapshots client-side: the canvas-tree primitive oneOf
  is extended IN PLACE with scene + lumen (same 1.0 $id) in genValidator, so
  BOTH validateTree AND validateSurfaceEvent (whose surface_snapshot refs the
  tree) admit a Lumen — a 1.1-only id would only fix validateTree and the
  envelope path would still reject it. validators.generated.mjs regenerated.
- electron.vite.config: externalize ws/bufferutil/utf-8-validate so the main
  process doesn't crash at launch (the bufferutil gotcha); allow the real
  node_modules path in the renderer fs allow-list for symlinked/worktree dev.
@Weegy Weegy changed the title feat: Lumens (Live Interactivity) renderer — scene, live runtime, motion (impl of #34) feat: Lumens (Live Interactivity) renderer — scene, runtime, data-bound (impl of #34) Jun 16, 2026
@iret77 iret77 deleted the branch claude/omadia-ui-interactivity-concept-wu7isw June 16, 2026 12:17
@iret77 iret77 closed this Jun 16, 2026
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.

2 participants