Skip to content

feat: CMS live preview SDK#5435

Merged
Pavel910 merged 23 commits into
release/6.5.0from
pavel/feat/cms-live-preview
Jul 17, 2026
Merged

feat: CMS live preview SDK#5435
Pavel910 merged 23 commits into
release/6.5.0from
pavel/feat/cms-live-preview

Conversation

@Pavel910

@Pavel910 Pavel910 commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add cms-sdk and cms-nextjs packages for real-time CMS live preview with postMessage-based editor bridge, entry store, ref resolution, and dynamic zone support
  • Add content-sdk and content-sdk-nextjs packages for content delivery
  • Add SDK getModel method with wildcard field expansion, component map generation, and ref model resolution
  • Implement preview pane in CMS admin with iframe-based component discovery and live entry syncing
  • Add drag & drop support for dynamic zones and object fields with sortable presenter
  • Enforce datetime field format validation in API

Test plan

  • Verify live preview renders entry changes in real-time via iframe
  • Test dynamic zone drag & drop reordering
  • Test ref field resolution in preview
  • Verify wildcard field expansion in SDK queries
  • Test clone/delete element actions in WB editor
  • Verify datetime validation rejects invalid formats

🤖 Generated with Claude Code

Pavel910 and others added 18 commits June 29, 2026 17:10
The Date GraphQL scalar (from graphql-scalars) accepted any parseable
date string, including full ISO timestamps for date-only fields. This
caused "Invalid time value" errors on read.

Two fixes applied:
- DateScalar.parseValue now enforces YYYY-MM-DD regex before delegating
- Use-case level validation in entryDataValidation.ts checks format
  based on field.settings.type, catching mismatches when the use-case
  is called programmatically (bypassing GraphQL scalars)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ms-live-preview

# Conflicts:
#	packages/app-headless-cms/src/HeadlessCMS.tsx
#	packages/app-headless-cms/src/presentation/contentEntries/views/ContentEntryFormView.tsx
#	yarn.lock
…ms-live-preview

# Conflicts:
#	packages/api-headless-cms/src/domain/contentModel/schemas.ts
#	packages/api-headless-cms/src/features/modelBuilder/fields/DynamicZoneFieldType.ts
#	packages/api-headless-cms/src/types/model.ts
#	packages/api-headless-cms/src/types/modelField.ts
#	packages/app-headless-cms/src/admin/plugins/editor/formSettings/components/GeneralSettings.tsx
@Pavel910 Pavel910 self-assigned this Jul 17, 2026
@Pavel910 Pavel910 added this to the 6.5.0 milestone Jul 17, 2026
Pavel910 and others added 5 commits July 17, 2026 16:48
…ms-live-preview

# Conflicts:
#	packages/cli/files/references.json
Inline entry creation with 50ms delays to ensure distinct savedOn
timestamps, and narrow the filter window to ±25ms.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Pavel910
Pavel910 merged commit 7e16cf7 into release/6.5.0 Jul 17, 2026
37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant