conductor/SLICE1.md

3.4 KiB

Slice 1: Remaining MVP GUI Components

Status

Complete

Objective

Implement every GUI component required by the MVP so each schema-supported component can be added, configured, rendered, used in Preview, and tested.

Dependencies

  • Existing canonical schema, component model, palette, canvas, property editor, and Preview patterns
  • Slice 7 is required only if the AI decision changes component-generation scope

In Scope

  • Text Area, Checkbox, Radio Group, Status/Message Panel, and Container/Card
  • Defaults, property controls, runtime behavior, bindings, diagnostics, examples, and tests

Out of Scope

  • Post-MVP widgets such as tabs, modals, charts, and file upload
  • Visual action and binding authoring, which belongs to Slice 2

Tasks

  • Define shared acceptance criteria and test patterns for component implementation.
  • Implement Text Area end-to-end.
  • Implement Checkbox end-to-end.
  • Implement Radio Group end-to-end.
  • Implement Status/Message Panel end-to-end.
  • Define and implement the minimum MVP Container/Card behavior and nesting rules.
  • Add component-specific binding support and diagnostics.
  • Add or update example projects for all five components.
  • Remove the schema/runtime mismatch for supported component types.
  • Update TASKS.md, CODEX.md, and relevant documentation.

Acceptance Criteria

  • All eleven MVP types can be added through the palette and render on the canvas and in Preview.
  • Properties use the canonical document and therefore survive JSON editing and persistence round trips.
  • Interactive values remain in runtime state, not canonical JSON.
  • Invalid option and binding configurations produce useful diagnostics.
  • Existing components and bindings continue to work.

Validation

  • Frontend TypeScript check and production build pass.
  • Component and renderer tests pass.
  • Schema examples validate as expected.
  • Manual canvas, Preview, JSON synchronization, save/load, and regression checks pass for all components.

Risks and Open Questions

  • Container/Card needs a deliberately small nesting contract.
  • Checkbox and Radio Group values must stay consistent across properties, runtime, templates, and bindings.
  • Status/Message Panel needs a distinct contract from Label and JSON Viewer.

Progress Log

  • Added Text Area, Checkbox, Radio Group, Status Panel, and Container/Card to the shared type model, palette, canvas, defaults, property editor, and Preview.
  • Kept all interactive input values in ephemeral Preview runtime state.
  • Added response-mapped .value support for Text Area, Checkbox, Radio Group, and Status Panel.
  • Defined Container/Card as a flat presentational card with title and body; nested component ownership is deferred beyond MVP.
  • Added a representative schema fixture covering all five components.
  • Added focused renderer and binding regression tests.
  • Validation passed: 7 suites / 433 tests, frontend production build, backend TypeScript build, and the new schema fixture.
  • User manual acceptance passed: startup, all five new component controls, Preview behavior, JSON synchronization, save/load persistence, and existing-component regression checks.

Handoff

  • Last completed: All Slice 1 GUI components and validation.
  • Next action: Begin Slice 2 visual REST action, event, and binding configuration.
  • Known blockers: None for Slice 1.