DEVELOPER GUIDE / NATIVE UI

Makepad UI integration

English | 简体中文

Octoscript can describe a workflow’s interface and hand its UI nodes to Makepad for native rendering. Both use the makepad-script VM implementation: Octoscript for workflow execution, and Makepad’s Splash host for widget DSL execution. The shared dependency is documented in UPSTREAM.md.

UiNode to native widgets

LLM-generated L0/L1 card
  → octoscript-ui-l0: check and realize
  → realized semantic card tree + bindings
  → theme/component kit lowering
  → renderer UiNode
  → octoscript-makepad: translate
  → Makepad Splash DSL
  → Splash widget / makepad-script
  → native Makepad widgets

OctoScript-Makepad provides the renderer/node model, backend translation and native component kits. The embedding UI host supplies data, widget modules, event handling and state retention. Its adapter connects declared card actions to application services.

L0 realization is VM-independent. Kit evaluation and the final Splash widget host can use the shared VM; this does not imply that the workflow and UI run inside the same VM instance or have the same available modules.

The UI profile is the formal contract for generated L0/L1 source. Practical composition, themes and interaction flows are documented in OctoScript-App-Design-Flow. The purpose and architecture guide distinguishes the workflow and UI host responsibilities.

For current host ownership and launch commands, follow the app and agent walkthrough. The framework catalog and preview evaluate their final View on the main VM and mount it in Splash.view; a contained app has its own admission and isolate setup.

Makepad host and compatibility fixture

The Makepad revision recorded in this reference includes the Splash widget and a Splash example application. The widget supplies native UI bindings and mounts the widget tree.

This repository retains examples/makepad_ui_counter.octoscript as a small parser compatibility fixture. It uses Makepad UI conventions such as View, width: Fill, named children and callbacks using a host-provided ui handle.

The makepad_ui_compatibility.rs tests check that fixture with octoscript_core::check_vm_compatibility_named, which applies the pinned Makepad parser under source, token and nesting bounds without evaluating it. They also check that the ordinary workflow check_syntax entry point rejects the UI fixture. The standalone compatibility checker does not accept Makepad @(index) host-value tokens because it has no host value table.

Choosing the entry point

InputEntry point and host
Generated workflow sourceCanonical workflow check, then the configured Octoscript runtime
Generated L0/L1 UI sourceUI profile checker/realizer, then a registered kit and UI renderer
Trusted Makepad widget DSLExplicit compatibility checking where needed, then a Makepad UI host with the required bindings

The standalone octoscript-cli runs the workflow profile. It does not install widgets, an event loop or ui, so the UI fixture is not a runnable CLI example. Compatibility checking establishes parser acceptance, not native rendering or permission to execute effects. UI integrations need their own mounting and interaction tests.

←All documentation