AI-assisted editing
Inline now ships an optional AI layer, gated per-site and suggestion-only by design — the engine never writes model output without an editor accepting it.
- Alt-text suggestions on media upload and SEO meta-description suggestions in page settings.
- Rich-text assist: an AI bubble menu on selections and a side-sheet toolbar for whole-field rewrites.
- AI-filled translations: pre-fill a locale's draft from the base language, then review and commit.
- Semantic dashboard search: the search palette now understands meaning, not just keywords, backed by Vectorize with a full-text fallback.
- All inference routes through an AI Gateway with logging, retries, and spend limits.
Workflows
Event automations you configure entirely from the dashboard: pick a trigger (entry published, form submitted, and more), chain steps — including branches — and watch runs on a visual flow canvas with per-node run health. Webhook deliveries, workflow runs, and campaign email sends now all drain through one durable job pipeline.
Editing and fields
- Every built-in field type moved onto a field-type registry, opening the door to custom field types per site.
- A new repeater field replaces the old built-in list switches.
- Selects are searchable and shrink to fit by default; counts live in a header badge; prose inputs got their coloured fill bar back.
- The table field dialog can resize without discarding your existing grid.
- Feedback pins open their ticket in a new tab, and the save toolbar no longer shifts underfoot.
Dashboard
- Saved views now render as underline tabs, and naming a filter set is a one-step affair.
- One shared floating bulk-actions pill across every listing surface.
- Forms, submissions, and feedback all adopt the content-table layout, and form analytics matches the site analytics page — with the date range living on the chart where it belongs.
- Notifications open on the unread tab and can be dismissed all at once.
- A sweep of motion polish: view-transition page fades, springy character counts, self-drawing checkmarks, and popovers that fade and zoom into place.
Under the hood
- The dashboard API was migrated to one
defineEndpointdeclaration per endpoint, with a structural gate that makes it impossible to add a route without coverage. - Entry writes return their effects through a single shared write pipeline — one drain owns purge, audit, and invalidation ordering, verified by an effect-matrix boundary test.
- The editor's 24 bridge actions collapsed into one pure reducer over a single
cmsBridgetransport. - Analytics responses are served through a KV stale-while-revalidate cache.