feat(core): add visibility-aware submit flow and dry run preview#29
Open
feat(core): add visibility-aware submit flow and dry run preview#29
Conversation
…e validation, and demo improvements * Added preview-only **Dry Run Submit** in builder with validation + payload drawer * Introduced **visibility-aware validation & hydration** (skips hidden/disabled fields and section descendants) * Renamed renderer API `getResponse` → `getRawResponse`; reinforced `getValidResponse` as submit path * Updated demo to use validated submit flow with inline result panel (replacing alerts) * Replaced synthetic schemas with **real-world examples** (patient intake, PHQ-9, NPS, onboarding, comprehensive) * Expanded test coverage across builder, core logic, and renderer APIs * Updated CI instructions to standardize **`gh act` local workflow testing**
* gaps in preview mode per field is reduced by 1rem * modal for dryRunfeedBack now has both desktop & mobile draw * demo: RendererView now has proper Names for Labels * Answer is not omitted from the response when empty.
Require top-level form ids across builder and renderer flows. - add required id to form definition schema - persist and manage formId in the form store - return schemaType, id, and fields from hydrateDefinition - update export flow to confirm or edit form id before download - add reusable Zod error formatting and validation issues panel - align code view and import flows with stricter schema validation - update demo definitions and renderer schema discovery - refresh builder, renderer, and schema-related tests Also fixes the app-demo typecheck issue in BuilderView.tsx found during local CI/CD preflight.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview updated 4/14/2026
This PR enforces stricter schema requirements and improves validation, export, and feedback flows across builder, core, renderer, and demo packages.
The primary change is the introduction of a required top-level form
id, which is now enforced across schema definition, state management, export, and demo usage. Alongside this, validation handling has been standardized and made reusable, with clearer error formatting and a shared UI for surfacing issues.The builder and demo flows have been updated to align with these stricter guarantees, ensuring invalid definitions are blocked early and surfaced clearly. Local CI validation has also been verified end-to-end.
What Changed
Schema & State Management
idin form definition schema (types.ts)formIdstate andsetFormIdaction inform-store.tshydrateDefinitionto return{ schemaType, id, fields }Export Flow
BuilderHeader.tsxFeedbackModal.tsxto support reusable confirm/cancel/custom content patternsValidation & Error Handling
zod-errors.ts)useRendererInit.ts) now uses structured, mapped error outputValidation UI
ZodIssuesPanel.tsxcomponentEsheetRenderer.tsx) for invalid schema displayBuilder Validation & Import Flow
CodeView.tsx) now validates definitions usingsafeParseBuilderHeader.tsxDemo Updates
RendererView.tsx)id(BuilderView.tsx)Tests & Validation
EsheetBuilder.spec.tsx)EsheetRenderer.spec.tsx,renderer.spec.ts)gh act) now passes end-to-endBuilderView.tsx)Additional Files
ci-monitor-subagent.agent.mdpatient-intake-broken.jsonHow to Test
Run all test suites and confirm they pass.
Open the builder and attempt to export a schema without an
id.Verify:
Provide an
idand confirm export proceeds successfully.Open Code View and input an invalid schema.
Verify:
Attempt to import an invalid schema.
Verify:
Open the renderer with an invalid schema.
Verify:
Open the demo renderer view.
Verify:
Run local CI validation:
Confirm the workflow completes successfully.
Breaking Changes
Yes.
ididmust be updatedNotes