Modyra

Modyra Studio · changelog

What has actually shipped

Studio is built phase by phase, each one gated on real tests before the next starts. This list reflects what is verified and running today, not a roadmap.

P11

Live preview, storage, import/export

A Preview tab builds a real running form from the project — values, validators, arrays, pending/canSubmit, a configurable server mock (succeed/fail/network-failure/timeout). Projects auto-save to IndexedDB and restore on reload; JSON import/export round-trips through the same loader that validates on load.

P10

React target

Generates a real useMdyForm() definition — the schema is wrapped in a thunk and the call sits inside an exported hook, matching the Rules of Hooks, not a bare module-scope form() like Core/Angular.

P9

Angular target

Generates a real mdyForm() definition via @modyra/angular/adapter. Verified byte-identical schema/validator output to the Core target once the factory call is normalized — proof the mapping logic is genuinely shared, not duplicated.

P8

Core target

The first target that emits real, runnable code: a createForm() definition, typed stub functions for every symbolic implementation reference, and a submit example. Verified by running the generated files through the real TypeScript compiler.

P7

Target platform

A lazy target registry and a conformance suite every target must pass — determinism, no project mutation, safe file paths, valid diagnostics. A target failure never corrupts the editor; a stale generation is discarded, never rendered.

P6

Diagnostics + Contract export

Compiles the project to the portable Dynamic Form Contract v2, strict-parsed through the real parser. A Diagnostics tab surfaces model and export issues together, with one-click fixes for the ones a single command can resolve.

P5

Validators

Field, array, cross-field/form, and server validators — dependencies, debounce/timeout, skip-when, AND/OR/NOT composition, all picked from dropdowns populated by the tree, never typed by path.

P4

Keyboard + accessibility

Every drag-and-drop action has a keyboard-only equivalent: pick up a node, arrow it around siblings or in/out of containers, drop it. Live region announcements for every action.

P3–P2

Canvas + commands

Pointer drag-and-drop over an invertible command engine — every mutation is a Command with a real inverse, so undo/redo covers the whole canvas.

P1

Model

The canonical project model: stable IDs, derived paths (never stored), normalize/serialize/migrate, structural validation on load.