ElmapiCMS - Headless CMS for building Content API

ElmapiCMS - Headless CMS for building Content API v4.0

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.
v3.0.0 - 12 July 2025
Rebuilt from scratch using Laravel 12, React, TypeScript, Shadcn UI, and Inertia.js
Brand new user interface with modern design
Fully responsive layout for desktop, tablet, and mobile
Added full Dark Mode support
New user, role, and permission management system

New asset library with:
- Advanced uploader (drag & drop)
- Filter by type, date, and sort options
- Grid and list views
- Image crop tool
- More file info and metadata display

New data tables with advanced filtering and bulk actions
Project templates – create projects from predefined or custom templates
Project cloning – duplicate entire projects instantly
Collection templates – create and save reusable collection blueprints
Added support for single entry collections (ideal for About, Terms, etc.)
Duplicate entries with one click

New integrated editor: TinyMCE with:
- Source code mode
- Fullscreen editing
- Insert image from URL or asset library

Rewritten content API – now faster and supports advanced filtering
Completely updated documentation – better organized and easier to follow
Top