Releases
What's new in Total CMS.
A running log of releases — new capabilities, refinements, and fixes. For the full technical detail on any release, see the docs.
Markdown fields and RSS feed settings
- Markdown fields — two new field types:
markdown, a source editor with a toolbar, preview and side-by-side fullscreen, andstyledmarkdown, the Styled Text editor saving Markdown. Both store exactly what you wrote - RSS feed settings — each collection has an RSS Feed card for its name, field mapping and filters. Feeds are off unless turned on and drafts never appear; blog and feed collections stay on after the upgrade, turn any other on in its settings
- Mailer — Send History on every bulk template, and fixes for test sends blocking the real send, scheduled sends going out in the site's timezone, and the hourly and daily limits
- Sign-in — email addresses match exactly, and a failed sign-in no longer reveals whether the account exists
- Sync — a push no longer removes the receiving site's files or breaks images inside cards and decks
- Command line —
tcms inforeports the real domain and license, and the newtcms checkruns the Server Checker from a terminal
Fixes for galleries, decks and dates
- Gallery reordering — images drag to reorder again
- Deck file uploads — a freshly uploaded file no longer fails the next save
- Date fields — a field with both onCreate and onUpdate now re-stamps on every save, and a duplicated object starts with those dates empty
- Confirmation dialogs — the countdown on destructive actions is now 2 seconds
- Textareas — grow and shrink with their content, with no script needed on public forms
Publishing: SEO, video, undo and WebMCP
A publishing release: search and social metadata from one call, a video field, undo history on every record, and public forms that no longer load the admin.
- Core SEO —
{{ cms.seo.head(page) }}writes the title, description, canonical, Open Graph, Twitter and JSON-LD tags, driven by an SEO card on each record and site-wide defaults, with IndexNow and favicons from one upload - Video field — paste a YouTube, Vimeo, Bunny, Cloudflare Stream, Loom, Wistia or other URL, or a direct file, and render it responsively with
cms.render.video() - Undo history — every save and delete keeps the version it replaced;
tcms backup:restoreputs one back - Lighter public forms —
cms.form.builder()on a public page loads under 50 KB compressed instead of about 300 KB - Podcasting — show and episode schemas with a feed Apple and the directories accept
- Markdown storage — keep a collection's objects as Markdown files with YAML frontmatter
- Editing in place — edit single values from the collection table, gated by an access-group permission
- Typesetting — the
|typographyfilter sets quotes, dashes and spacing for the site's locale - Extensions — install with
composer require, ship an agent skill, give a field type its own JavaScript - Upgrade note — Site Builder page descriptions and images moved to the SEO card and migrate automatically; templates reading
page.descriptionorpage.imageswitch topage.seo.*
Safer updates and template designer
- Before you update — if you installed from a zip and keep your own stylesheets, scripts or media inside the Total CMS folder, move them out first. An update replaces that folder's contents whole, and the installation guide now describes the layout that keeps your files safe
- Updates keep the version they replaced — one copy, in your data directory, shown in the Update Manager and restorable with
tcms update:rollback. It protects the next update, not this one, so take your own backup before installing 3.5.2 - Template Designer Works again — Template Designer and the load-more endpoint all resolve an id inside
builder/templates/. Sites upgraded from before 3.5 whose templates stopped rendering will work again with no changes - Everyone can edit their own profile — a member whose access groups didn't include the user collection was refused when saving their own account
Seeding content and hardened requests
- Seed content to production —
tcms push --objects=blogsends a collection's objects to your production server, skipping anything already there - Seed Objects in the Sync Manager — choose which collections are seeded on push
- Feature-named sync flags:
--pages,--dataviews,--mailer,--mcp-prompts,--automations - Read-only Site Builder template tools for MCP agents
- Security — client IP is no longer taken on trust behind a proxy, and session files moved out of the server's shared directory
Total CMS becomes a platform
New top-level subsystems sit alongside the existing collections and templates engine — the biggest release since Total CMS 3 launched.
- Site Builder — build pages, routes and templates in the admin, served dynamically at request time
- Extension system — extend Total CMS at every layer, with capability-based permissions so third-party code can't do more than the admin allows
- Built-in MCP server + OAuth 2.1 — AI agents read and write your content over a standards-based interface
- Automations — run your own PHP handlers on a schedule, a webhook, or a content event
- Internationalization — localized field types, a BCP 47 locale registry, and locale-aware routing
- Publishing API — publish from MarsEdit, Byword or Ulysses over a WordPress-compatible endpoint
- Composer distribution & CLI —
composer create-project totalcms/totalcms, plus a fulltcmscommand-line tool - Event system — a priority-ordered dispatcher with 20 core events
- Sync — the Sync Manager now moves collection objects alongside schemas and templates
- Security — a per-site encryption key, and security headers across admin, auth and setup
Dialogs and form internals
- Styled Text dialogs rebuilt on a shared base
- Radio and multicheckbox fields now share a common
ChoiceFieldbase - Help text rendering and field attribute building centralized
Editor and admin polish
- Indent and outdent buttons for Styled Text
- A standardized confirm dialog replaces the browser's native one across the admin
- New
fieldColumnsarranges radio and multicheckbox options in columns - Image cache keys now include a content hash, so derivatives invalidate correctly
- Formgrid layouts work inside deck item forms
Styled Text attributes
- Element Attributes dialog — set class, id and
data-*attributes on any block - Those attributes now survive a code-view round trip
- All heading levels H1–H6, with a setting controlling which appear
- New
blockClassessetting provides class autocomplete
Deck import/export and filtering
- Import and export deck properties as CSV or JSON
- New
cms.utils.urlFilters()turns URL query parameters into collection filters - Sort support across index filters, relational options and data views
- Bulk mailer moved to its own form with a configurable daily maximum
- Styled Text now pastes as plain text by default
Watermarks and field settings
- Watermark settings can now be set at the collection level
- New
lockOnEditsetting prevents editing a field after creation - Calc field settings for form fields
- Empty paragraphs cleaned from the start and end of Styled Text
Rich text, passkeys, and reporting
- Styled Text — an all-new rich text editor with image uploads, video/file embeds, table editing, and code view
- Passkey authentication — WebAuthn passwordless login for the admin dashboard
- Data Views — saved, filtered queries across collections, with API access and scheduled rebuilds
- Load More — frontend pagination for progressively loading content, with Data View support
- Template Designer — the
{% templatedesigner %}tag for inline, token-gated template editing - Collection Reports — a reporting API and admin utility for collection data
- WordPress import — a full import path from WordPress, with security validation
Depot and gallery refinements
- Depot Browser reverse sort and tag filtering
classandloadingattributes on gallery images- EXIF reading fixed for WebP and PNG files
- Per-object property setting overrides now apply in forms
Depot Browser
- Depot Browser — a full file management UI with preview, filtering, drag-and-drop uploads and keyboard navigation
- Depot Drop field — pick files from a depot in any form
- Manual sort orders for collections, with Twig filter support
- Form error summaries and configurable status banners
- Fixes for persistent login and post-login redirects
Galleries and image handling
- Gallery captions now support Twig templating, and can display in the lightbox
- New
cms.log()function for logging from a template - New
keyByandsumcollection filters - ImageWorks fixes: format option, no upscaling past original size, no forced 600px width
Offline licensing and performance
- License validation now works offline from cached data
- Significant caching and index-building performance work
- Export a single object to a ZIP archive
- New
cms.objectCount()counts a collection without loading it
Localization
- Localized dates, numbers, currencies and relative time strings
- New deployment guide covering Git, cache clearing and CI/CD
- Featured image indicators and colour field datalists
- Graceful fallback when the PHP INTL extension is missing
Deck validation and API status codes
- Deck items are validated against their schema, and support autogen IDs
- New
cms.currentUrlproperty in Twig - RSS writer moved to laminas/laminas-feed for PHP 8.4 compatibility
- API actions now return proper error codes instead of 200 on failure
Diagnose tool
- New support diagnostic tool for troubleshooting an installation on a server
Dashboard and form refinements
- Dev mode toggle directly on the dashboard
- Cmd/Ctrl-click to open an object form in a new tab
- HEIC conversion now uses the ImageMagick extension instead of shell commands
- Better responsive form layouts on mobile
- New
recurringMonthDatefilters for recurring events
Stability and polish
- Fixed gallery image reordering (drag and drop) in Firefox
- New
.cms-logoutclass handler for one-click logout links - Inherited schema properties can now be overridden in child schemas
- Updated the encryption cipher used for stored secrets
Total CMS 3 enters public beta
The rebuild goes public. Total CMS 3 is a ground-up rewrite on PHP 8.2, Slim 4 and Twig 3 — flat-file JSON storage, no database, and an admin built around collections and schemas instead of page-by-page editing.
It ran in the open for eighteen months and fifty releases before shipping as 3.1 in December 2025, with customers building real sites on it throughout.