You edit the served page itself.
The canvas is the page your server renders for visitors, opened in a frame.
BUILD · THE COMPOSER
The Composer opens your real page, rendered by the same server that serves your visitors, and lets you click a section and type into it where it stands. Move it, restyle it from your theme, design a version for one audience or one experiment on the same canvas, and publish behind your approval. Not a preview, and not a mock-up: the page itself. You and the copilot work on it through one governed path, with one history and one undo.

This video is a members-only file — its access is set on the file itself, not on this page. Sign in or create an account to watch it. This video couldn’t be loaded. Try again.
The Composer is a room of its own in your admin, and Pages › "Add New" opens it, so every new page starts here.
One canvas, seven things at once
Each of these is how the Composer works today, as the product's own code records it.
The canvas is the page your server renders for visitors, opened in a frame.
Both write through the same governed tools, with one history and one undo.
Three honest states: "Draft", "Published", and "Published · changes pending".
Rename the site's title or a menu link from the canvas, and a card tells you the change applies "everywhere, not just here".
Choose who you are editing for, and the page renders that version.
Three drawers, on the page they govern.
Your theme's roles come first; your own value is the fallback, never a pasted style string.

Edit the real page

Sections and elements

Add anything

Appearance and styling

Edit for an audience or a variation
Track, script and gate a page
"Choose the element", then "Choose the event": a lasting action on the page, or a rule by selector on "Click", "Submit", "Becomes visible" or "Hover", for this page, a path prefix or every page.
Your own JavaScript on this page, run on "Page load", "Click", "Submit", "Becomes visible", "Scroll depth", "Toggle open" or "Hover", with an optional event to capture. "Click", "Submit", "Becomes visible" and "Hover" need a CSS target.
"Who can read this": "Public", "Members only" or "In a package (choose which)". The "Members-only boundary" section marks where the free part ends.

Publish, discard and one history

Page types and recipes
Themes and the Theme Studio
Fonts
The server route that serves your visitors renders it, inside a frame opened through a signed preview address. The frame runs none of the page's own scripts.
Inside the frame there are only outlines; every control lives outside it and follows the page's geometry. Each section carries a lasting address, so a click always reaches the section you meant.
Each one is sent as a typed operation, planned and applied with the same tools the copilot uses, on a draft layer of the page.
Each write carries the version it read, so an edit made from an out-of-date view is refused rather than written over newer work.
It is the same approval-gated step the copilot uses, granted once, on the server.
Edits go to a draft layer, and the published page is untouched, byte for byte, until you publish. An edit to a live experiment's version waits for your approval too.
"Publish this page?" or "Publish these changes?", and an undo that tells you what it will do.
Your changes and the copilot's sit in one list, with one Undo and Redo.
A stale edit is refused, and the copilot never writes over a page someone else has open.
EmDash's own editor cannot save a Composer page, every write is checked field by field, and one publishing rule covers all four doors that publish: the copilot, the Composer, EmDash's own Publish button and migration's bulk publish.
No raw HTML section can be inserted by anyone. Embeds come from a closed list of ten providers, in a sandbox, and only a person can place one.
It is a visual designer for typed sections. You place sections, and elements in a 12-column grid, with separate widths for desktop, tablet and phone, and you style them from your theme.
No. A live page shows "Published · changes pending" until you publish, and visitors keep seeing the published version. An edit to a live experiment's version waits for your approval too.
Yes. You share one history, a notice tells you when the copilot changed the page, and it never writes over a page someone else has open.
On each section, set an "HTML anchor" and up to eight "Additional CSS classes". For the whole site, a style entry on Privacy & Data › Consent › "Head & CSP" applies everywhere. Styling fields themselves are typed.
Yes, page by page, on the "Scripts & events" drawer, with seven triggers.
For pages and posts made in the Composer, yes: EmDash's editor refuses to save one, and points you here: "This page is built in the Composer. Open it there."
Yes. A migration lands pages as native sections, and they open in the Composer like any other, with extra layout controls for their breakpoints and states.
Any exact colour, yes. Type comes from 43 self-hosted families.