VEYNDO
Handbook
frontend/src/admin/developer/README.mdView source ↗

English source · 3 min

App Studio

A visual workbench over the same versioned Manifest consumed by the Rust runtime, HTTP APIs and coding-agent imports. The browser compiles data bindings into existing authorized actions; the Rust server validates every installed package independently.

  • DeveloperView.tsx: workspace, tab navigation, one content-language scope and sandbox selection.
  • app-model.ts: pure schema edits, action binding, dependency cleanup and bounded undo/redo.
  • AppCanvas.tsx: accessible click-to-add/select/order/remove components.
  • AppInspector.tsx: app/view/block properties with inherited translations.
  • AppDataEditor.tsx: typed managed data fields and public-read settings.
  • AppConnections.tsx: HTTP routes, AI grounding/tools and Flow Builder opt-in.
  • AppAgentPanel.tsx: current-manifest prompting, Codex/Claude task export, authoritative schema download and agent JSON round-trip.
  • useAppStudio.ts: immutable build lifecycle and exact saved-snapshot checks.
  • AppVersions.tsx: version inspection, digest-approved staging and selective package release.
  • SandboxPreview.tsx: authoritative installed-registry resolution, including rejection of a stale preview version.

The actual renderer is in shared/apps/native/, shared by the sandbox preview and released admin/storefront views. Freely executable app services retain the isolated iframe/service path; the native builder does not execute scripts or start a shell.

Run frontend build, tests, coverage, localization and architecture checks. See App Studio guide and testing boundaries. Test presence is not 100% whole-codebase coverage.

  • AppLibrary.tsx: clickable saved app cards with explicit edit/delete, confirmation and restore; opens the latest build as a new editable version. Both library and version-list editing return to the design workspace.

  • AppAssistant.tsx, assistant-model.ts: nine guided types compiled into the shared versioned contract.

  • AppFieldOptions.tsx, AppContextBinding.tsx: owned core references, translated choices and host context.
  • AppActionAccess.tsx: independent team scopes and MCP flags.
  • AppAutomation.tsx: declared service events, UTC cron and signed ingress.
  • AppViewTabs.tsx: view navigation and creation.
  • SandboxContextPicker.tsx: bounded selection of real sandbox products/customers/orders.

Guided apps, provider boundaries and verification.

Multi-placement workbench

assistant-placements.ts compiles up to six selected areas into ordinary views/models in one package, retaining context-bound product/customer/order editors. AppDesignWorkspace composes the native preview and inspector; AppPanelSizing stores bounded presentation widths only. AppControlThumbnail provides passive illustrations. Stack/grid drag/drop and 12-column layout use the same Manifest blocks. AppFormFields edits the real selected model captions, not fake sample records.

AppSettingsEditor edits setting declarations only. Installed values use admin/apps/AppSettings and the existing encrypted app-secret owner. Settings do not enter templates, agent task exports or public native payloads. Their revisions/audit metadata describe credential rotation; they are live-only and are not configuration rollback/release units.

AppLogicTopology projects the existing bounded UI AST into the shared Flow Builder topology. It never persists or executes a second flow. AppFlowNavigation opens the native Flow Builder; native app saves already produce its app.record.changed event. AppAgentDrawer opens the shared AppAgentPanel on demand from every editing section. The native modal handles focus/Escape and keeps an unfinished prompt mounted while closed. The canvas stays in place; full task/import/provider controls use the same Manifest. The toolbox uses small illustrated rows (default 180 px; adjustable 148–280 px).

Illustrated workbench and exact runtime/security boundaries.

AppBrief, AppDraftEntry and start-described-app keep description-led creation, replacement confirmation and first-stage preparation in the normal draft/agent lifecycle. Empty private app briefs compile through the Rust owner generation_brief; advanced existing-app edits retain their original route. The exact immutable asset SDK JSON is shared with the native compiler; other SDK implementation imports remain outside the frontend ownership boundary.

  • AppUpgradeCheck.tsx: Immutable build admission in its owned stage with account/environment response fencing.