This is the project glossary for LivePage: a dedicated reference for entities, relationships, and domain language in the app.
App state: The shared in-memory representation of the current page builder document. Avoid: State, store, data model
App node: The readonly tree node used to represent a page or nested design component, including its tag, string attributes, and child nodes. Avoid: Component instance, element
Design component: A registered page-builder component with metadata, default content, settings fields, and separate edit-mode and preview-mode renderers. Avoid: Widget, block
App-state API: The boundary for reading from and mutating app state through explicit commands and selectors. Avoid: Facade, helper layer
App state reducer:
The pure (state, action) => state function in client/features/app-state/commands/reducer.ts that is the single source of truth for the application. All commands, actions, and state checks flow through it; it is event based (driven by AppAction events) and non-blocking (persistence is a debounced side effect in the useAppState hook, not a command).
Avoid: Store, state machine
Command:
A named, dispatchable intent — such as Undo, Save, or Insert component — that changes app state through the reducer. Commands are exposed through the command palette and keyboard shortcuts.
Avoid: Action, button
Command palette:
The ⌘K dialog that lists every command, filtered by search term, with commands contextually sorted so the most relevant ones appear first based on where it is opened from.
Avoid: Command menu, action picker
Floating toolbar: The draggable, minimizable control strip that floats over the canvas in edit mode. It is icon-only and balanced around the minimize/maximize pivot. Avoid: Floating bar, tool palette
Minimize/maximize pivot:
The center control of the floating toolbar: the minimize button when expanded, the maximize button when minimized. Buttons are distributed evenly to its left and right so that L - R is always -1, 0, or 1.
Avoid: Center button
History entry: A saved snapshot of the page state, appended by the reducer for every state-changing command. Avoid: Undo point, checkpoint
Serializers: Modules that transform app state to and from external formats such as JSON, shortcode, and HTML. Avoid: Exporters, importers
Data source: An external provider that supplies data to a design component. Avoid: Connection
Placeholder: A runtime token embedded in a component string and replaced before rendering. Avoid: Template marker
Data-source placeholder: A placeholder whose value comes from a data source. Avoid: Connection placeholder
Computable placeholder: A placeholder whose value is derived at runtime, such as the current date. Avoid: Dynamic token
Standalone HTML export: An exported page artifact that can be opened directly in a modern browser without running LivePage. Avoid: Static HTML snapshot
Prompt assist chat: The minimizable chatbox on the builder where a person describes a page in their own words and reviews a Template match, Copy draft, and Design edits before applying them. Avoid: Chatbot, AI assistant
Template match: The template chosen for a request from the template catalog, judged by Jev (or OpenAI as fallback) and reported with its probability. Avoid: Recommendation, suggestion
Clarifying question: The single question the chat asks when a request is too ambiguous for a Template match; its answer is added to the request. Avoid: Follow-up, prompt
Copy draft:
Text for the free-text slots a template declares in its dataMapping, proposed from the request and editable before it is applied.
Avoid: Generated content, AI copy
Page description: The compact list of a page's components, their current design settings, and the settings each tag exposes, derived from the component registry and sent to the server for the Design loop. Avoid: Snapshot, page dump
Design edit: One proposed change to a single design setting of one component, validated against that setting before it is applied. Avoid: Patch, tweak
Design loop: The bounded cycle of judging whether the page satisfies the request and applying the next batch of Design edits until it does or stops changing. Avoid: Auto-design, agent loop
- The App-state API operates on App state
- App state is represented as a tree of App nodes
- Design components are created from registered component metadata and stored as App nodes
- Serializers read from or write to App state
- Placeholders are resolved inside component strings before rendering
- A Standalone HTML export contains serialized App nodes and resolves Data sources when opened
- A Prompt assist chat request resolves to a Template match, possibly after one or more Clarifying questions
- A Template match gets a Copy draft, then the Design loop refines its cloned App nodes through Design edits computed from a Page description
- Applying the result goes through the App-state API like any other template application, as one history entry
Dev: "Should this JSON loader live in the App-state API?" Domain expert: "No — the API owns commands and selectors. The JSON loader is a Serializer that feeds it."
Dev: "Why does the Design loop send a Page description instead of the page?" Domain expert: "The server can't load the component registry, so the browser describes the page and validates every Design edit again against the real components before applying it."