Version 4.0.0 - 8 August 2026
Content versioning
- NEW: Immutable publish versions — every publish mints a snapshot; state=published API reads return snapshot data instead of live draft fields
- NEW: Revert, discard unpublished draft, version labels, and configurable retention (CONTENT_VERSIONS_PER_ENTRY)
- NEW: Snapshot-aware export/import
- NEW: Save as draft on published entries — keeps editing without changing the live API
- NEW: Save & Publish mints the next version (including singletons)
- NEW: Version preview and version history UI on content edit (including singletons)
- NEW: Explicit publish/unpublish API — POST /api/{collection}/{uuid}/publish and .../unpublish
Asset library
- NEW: Portable project and collection packages — export versioned JSON or ZIP with referenced assets or the entire Asset Library; import restores media relationships
- NEW: Import individual collections into existing projects
- NEW: Direct S3/Spaces uploads for large files — optional presigned and multipart upload (ASSET_DIRECT_UPLOAD=true when the project disk is s3)
- NEW: Image optimization — store an optimized WebP copy while keeping the original
- NEW: Image resize and rotate tools in the asset editor
- NEW: Video and audio preview in asset details
- NEW: Asset usage — see where each asset is used across content
- NEW: Video previews in the asset library grid and table
- NEW: Arrow navigation between assets in the details modal
- NEW: Media field selection preserves order and pins selected assets in the picker
Authentication
- NEW: End-user authentication APIs — signup, sign-in, refresh, sessions, and settings UI for headless apps
- NEW: Identity-only JWTs — Authentication tokens identify the user; CMS API access stays on Sanctum project tokens
- NEW: End-user API keys (uak_…) with introspection
- NEW: Optional email verification for Authentication users
- NEW: Suspend users, session caps, and dedicated Authentication settings pages
- NEW: access_auth_settings permission for Authentication settings access
Frontend templates
- NEW: Frontend templates for Next.js, Nuxt, and Astro with importable Elmapi project packages
- NEW: Meridian Studio, Atlas Group, Keenfold Academy, Sable Goods, Ridgeform, Cove, Hearthfold, Basic Starters, and Documentation
Content & localization
- NEW: Bulk publish / unpublish on the content list
- NEW: Link translation API — join entries into a translation group from the API
- NEW: Export/import keeps translation links
- NEW: Singleton locale auto-link — new locale entries share one translation group
- NEW: Project locales admin API — create, delete, and set the default locale via API
- NEW: Optional Markdown richtext — Lexical remains default; fields can use markdown mode
- NEW: Relation fields by collection slug — create/update by slug; renaming a slug remaps relations
- NEW: Cyclic relation nests — self/mutual relation links return a stub instead of overflowing the JSON stack
- NEW: Relative content timestamps with full-date tooltips
- NEW: Unsaved-changes guard on the content form
API & webhooks
- NEW: Bulk content and asset API endpoints for atomic multi-create / metadata updates
- NEW: Webhook REST API to manage webhooks with an admin token
- NEW: Hardened outbound webhook delivery (HTTPS-only by default, retries, signed payloads)
- NEW: Webhooks for AI content ops and translation link/unlink
- NEW: Configurable API rate limit — API_RATE_LIMIT_PER_MINUTE in .env (default 300)
- NEW: Select all collections when creating or editing webhooks
App settings & UI
- NEW: App theme system — presets and custom design tokens
- NEW: App font setting
- NEW: Theme roundness setting
- NEW: Sticky project settings sidebar; webhook sheet, events modal, and logs UX
- NEW: Simplified project detail page and MCP setup snippets
- NEW: AI chat interleaves streamed text and tool steps, and restores ordered parts from conversation history
- NEW: Project preview URL — optional clickable frontend URL on project settings, dashboard, and project detail
- NEW: Dashboard view mode and sort order persist across visits
Platform
- NEW: Laravel 13 and updated AI stack (laravel/ai, no Prism)
- NEW: MCP setup section on the project detail page
Changed
- CHANGED: Content entry status renamed to state (draft | published) in the API and dashboard
- CHANGED: GET /api requires the read ability
- CHANGED: New image uploads are stored as WebP (original retained when available)
Fixed
- FIXED: Asset library mobile layout — toolbar and pagination wrap; collections sidebar and AI chat open as sheets below lg
- FIXED: Asset crop area and aspect ratio controls
- FIXED: Asset library upload and streaming reliability
- FIXED: asset_metadata unique index migration for MySQL foreign keys
- FIXED: API unique validation ignores the current entry by UUID
- FIXED: SVG uploads rejected via allowlist (existing SVGs unchanged)
Version 3.3.0 - 12 February 2026
- NEW: AI Chat Assistant - create projects, collections, fields, and content through conversation
- NEW: Inline AI content tools - generate, rewrite, expand, summarize, fix grammar in any text field
- NEW: AI entry translation - translate entire entries to any locale with one click
- NEW: Rich text AI tools - AI actions in the floating toolbar when selecting text
- NEW: AI field context - generation considers field labels, collection name, and other field values
- NEW: Token usage tracking per session
- NEW: AI settings page - configure provider, model, max tokens, max steps, conversation memory
- NEW: Create blank translation entries for any locale
- NEW: Improved dashboard design and other UI changes.
- NEW: API admin endpoints to manage collection and fields schema.
- NEW: MCP Server.
Version 3.2.0 - 23 November 2025
- Added translations.
- Added import/export.
- Added new field type: field group.
- Added a new frontend template: Landing Page.
- Added examples
- Added tutorials
- New Javascript SDK
- Added locale field and filter by locale to the content list.
- Added drag and drop sorting for selected relations.
- Added seeders for examples.
- Fixed content list media load issue.
- Fixed login page app name from settings issue.
- Fixed editor source code removing tags issue.
- Removed backend html conversion. Rich text is saved in both format.
- Fixed asset library server error when aws s3 is not configured.
- Fixed underscore to dash conversion for slug field.
- Fixed API query sorting issue when combined with paginate.
Version 3.1.0 - 23 September 2025
- Replaced TinyMCE with the new Lexical Editor.
- Added OpenAPI annotations and swagger docs.
- Added force param to API when deleting entries.
- Added first param to API when querying entries.
- Added app settings page for updating app name, logo, and favicon.
- Fixed preventing updating or deleting system permissions.
- Fixed count with limit and offset.
- Fixed API relation null not_null issue.