feat: draft/publish separation, submission snapshots & full UI redesign (1.0.0-alpha.4)#58
Conversation
…ulk actions Server: - honeypot: plant the hidden _fc_hp field in the embed and strip it before persisting - rate limit: enforce enableRateLimit/maxSubmissionsPerHour per form+IP (429) - public page: escape title/description (stored XSS) - CSV export: neutralize formula injection; drop broken xlsx path (CSV only) - align settings defaults to English Admin: - unique field names derived from uuid (Date.now collided) - unsaved-changes guard in the builder - submissions: select-all/per-row checkboxes, bulk delete, Export CSV - form list: select-all/per-row checkboxes, bulk delete - README: click-to-add wording
…counts - First-run onboarding + Create-form template picker (6 templates) - Functional search over title/slug on the forms list - Submissions count column (server find() returns submissionCount) - Seed new forms from a chosen template via router state - Open-live-form row action for published public forms
- Shared ui.ts theme (tokens, font, field categories/icons) - Header: editable title, status pill, version chip, ghost/primary actions - Palette: searchable, categorized 2-col chip grid with monochrome icons - Canvas: card rows with drag dots, required star, width/deco pill, delete - Field settings: General/Validation tabs, Required toggle, Width segmented
…dals - Submissions: prototype header/stats/badges, bulk read/archive/delete, search + status filter menu, right-side detail drawer with prev/next - Builder: Settings opens a right slide-over drawer (general, public access with live/pending URL, spam & limits, advanced); coerce description to string - Preview: custom centered modal matching the public form, no device toggle/footer - Embed: tabbed script/share-link modal with highlighted snippet; share link only when public page is enabled; locked state until published
…snapshots - Publish freezes a publishedData snapshot; Save draft no longer touches it - Public schema, page & submit serve/validate the published snapshot only (legacy published forms fall back to their current copy) - Submissions store a fields snapshot at submit time so the record stays accurate after the form's fields are added, removed or renamed
…mn picker - Builder header: single status pill (Draft/Published/Unpublished changes), plain right-aligned View live link, settings drawer edits a buffer applied on Save; unpublished-changes indicator compares saved copy vs published - Forms list: remove Status column; submissions=eye, live=external-link icons - Submissions: detail renders from stored data (never hides answers) using the submit-time field snapshot for labels; table columns are the union of current fields + stored keys; per-form column picker (localStorage); baseline-aligned data rows; Status tile removed from detail
|
Warning Review limit reached
Next review available in: 50 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (21)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Redesigns the three admin screens to match the design mock and adds real draft/publish semantics plus historically-accurate submissions.
Highlights
Backend
publishedDatasnapshot; Save draft no longer touches the live form. Public schema/page/submit serve & validate the published snapshot only.fieldsschema snapshot at submit time, so the detail view stays accurate after fields are added/removed/renamed.submissionCount.Admin UI
Release
1.0.0-alpha.4; CHANGELOG updated.git tag v1.0.0-alpha.4 && git push origin v1.0.0-alpha.4triggers publish (needs ci: trunk-based release (publish on tags, single main branch) #57 merged first for the tag-based publish workflow).Verification
npm run test:ts:front,test:ts:back,npm run buildpass; host Strapi boots and migrates the new columns cleanly. Authenticated end-to-end (submit / publish flows) to be confirmed in-app.🤖 Generated with Claude Code