All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Embed: reset
text-alignso the form no longer inherits the host page's centering. - Embed: set the form to
novalidateso required/validation errors render the plugin's own messages (custom or default) instead of the browser's native bubble.
- Field settings: "Required" now lives only on the Validation tab (removed the duplicate on General) and supports a custom error message.
- Field settings: settings are now conditional per field type — Placeholder only where it applies (relabeled "Empty option text" for select; hidden for checkbox/radio/checkbox-group/date/time); validation rules limited to those valid for the type (email/url/number auto-validate by type, so those rules aren't re-offered; the Rules block hides for choice/date fields where only Required applies).
- First release candidate — promotes the
1.0.0-alpha.4feature set (draft/publish separation, per-submission field snapshots, full admin redesign). No functional changes since1.0.0-alpha.4.
- Public serving now requires the form to be published. Previously the public page, embed schema and submit endpoint served the working record regardless of draft/publish state; now an unpublished form returns 404 and rejects submissions. Forms published before this release keep working via a fallback — re-publish them once after upgrading for the cleanest behavior.
- Draft / Publish separation — publishing freezes an immutable
publishedDatasnapshot; the public form always serves that snapshot, so Save draft no longer affects the live form. An "Unpublished changes" indicator appears when the saved draft differs from what's published. - Per-submission field snapshot — each submission stores the field schema used at submit time, so the detail view stays accurate even after fields are added, removed or renamed.
- Form templates — first-run onboarding and a "Create form" picker with 6 starters (Contact, Newsletter, Feedback, Job application, Event RSVP, Blank).
- Forms list: submissions-count column and search over title/slug.
- Submissions: bulk mark as read / archive / delete, text search, right-side detail drawer with prev/next navigation, and a per-form column picker (union of current fields + stored keys).
- Right-aligned "View live" link and a Settings slide-over drawer in the builder.
- Full visual redesign of the forms list, builder and submissions screens to match the design system.
- Field settings panel split into General / Validation tabs; settings drawer changes apply on Save.
- Builder header shows a single status pill (Draft / Published / Unpublished changes).
- Submission detail always renders the stored data (never hides an answer); CSV export unchanged.
- Releases are now published from version tags (
v*) on a singlemainbranch.
- Coerce non-string form
descriptionto a string (fixed[object Object]in the settings drawer). - Submission detail rows are baseline-aligned.
- Expanded npm keywords for better discoverability
- Added badges, comparison table and roadmap to README
- GitHub release step — added
contents:writepermission and explicit tag push before release creation - CI workflow: removed duplicate CI job from publish.yml
- Bumped version to
1.0.0-alpha.2
- CI/CD pipeline with TypeScript checks, build verification and dry-run npm publish
- Dependabot for npm and GitHub Actions weekly updates
- Auto-tag on publish for alpha/beta/rc releases
- Removed stale compiled
.jsfiles fromsrc/— Rollup was resolving them instead of.tssources - Added
--noEmitto tsc type-check scripts to prevent JS file generation - Replaced
yarn run -Twithnpx tscfor CI compatibility
- Visual drag-and-drop form builder in the Strapi admin
- 15+ field types: text, email, number, phone, URL, password, date, time, textarea, select, radio, checkbox, checkbox-group, heading, paragraph, divider
- Per-field validation rules: required, minLength, maxLength, min, max, email, URL, regex pattern with custom error messages
- Draft / Publish flow
- Public hosted page at
/api/strapi-plugin-form-builder-cms/page/:slug - Self-contained embed script — single
<script>tag, zero dependencies - Honeypot spam protection
- Submission inbox with status filtering (new / read / archived)
- Form preview modal inside the admin
- Embed code modal with one-click copy