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, and styledmarkdown, 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 info reports the real domain and license, and the new tcms check runs the Server Checker from a terminal
Read the announcement → Full release notes →

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
Full release notes →

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:restore puts 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 |typography filter 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.description or page.image switch to page.seo.*
Read the announcement → Full release notes →

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
Full release notes →

Seeding content and hardened requests

  • Seed content to production — tcms push --objects=blog sends 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
Full release notes →

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 full tcms command-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
Read the announcement → Full release notes →

Dialogs and form internals

  • Styled Text dialogs rebuilt on a shared base
  • Radio and multicheckbox fields now share a common ChoiceField base
  • Help text rendering and field attribute building centralized
Full release notes →

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 fieldColumns arranges 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
Full release notes →

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 blockClasses setting provides class autocomplete
Full release notes →

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
Full release notes →

Watermarks and field settings

  • Watermark settings can now be set at the collection level
  • New lockOnEdit setting prevents editing a field after creation
  • Calc field settings for form fields
  • Empty paragraphs cleaned from the start and end of Styled Text
Full release notes →

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
Read the announcement → Full release notes →

Depot and gallery refinements

  • Depot Browser reverse sort and tag filtering
  • class and loading attributes on gallery images
  • EXIF reading fixed for WebP and PNG files
  • Per-object property setting overrides now apply in forms
Full release notes →

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
Full release notes →

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 keyBy and sum collection filters
  • ImageWorks fixes: format option, no upscaling past original size, no forced 600px width
Full release notes →

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
Full release notes →

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
Full release notes →

Deck validation and API status codes

  • Deck items are validated against their schema, and support autogen IDs
  • New cms.currentUrl property 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
Full release notes →

Diagnose tool

  • New support diagnostic tool for troubleshooting an installation on a server
Full release notes →

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 recurringMonthDate filters for recurring events
Full release notes →

Stability and polish

  • Fixed gallery image reordering (drag and drop) in Firefox
  • New .cms-logout class handler for one-click logout links
  • Inherited schema properties can now be overridden in child schemas
  • Updated the encryption cipher used for stored secrets
Read the announcement → Full release notes →

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.

Read the announcement → Full release notes →