Repository navigation
v1.18.0 — try the editor, no account needed
You should be able to see what a CMS is before you create an account for it. Until now, /admin/ opened on a screen asking for a GitHub token — so nobody could look at plain's editor without first deciding to try plain.
Set "demo": true in the site block of site.config.json and that screen leads with Try the editor instead. /admin/?demo=1 skips it entirely and drops a visitor straight into the dashboard.
Try it here: the editor, with no account — write a post, publish it, watch the build pill, open History and restore an older version.
It is not a mock-up
Every call the admin makes to GitHub goes through one function (gh() in admin/js/github.js), so the demo is a stand-in for exactly that one function. admin/js/demo.js answers the same REST paths from a repository that lives in the browser tab, seeded from the site's own published JSON API — api/site.json for the config and menu, api/<collection>/index.json for one Markdown file per item, since those already carry every item's raw body. Images the content references are listed and previewed straight from the published site.
So nothing is faked at the UI level: edits rewrite files, saves make commits, the publish pill runs, History lists versions and Restore restores them. It is the real admin, with a different repository behind it.
| Per tab | State lives in sessionStorage. A new tab starts clean, and a demo visitor never disturbs a real sign-in on the same device. |
| Free | No GitHub API calls, no keys, nothing to rate-limit — the demo reads static JSON your site already publishes. |
| Never in doubt | A standing strip across every screen says it's a demo, with Start over, Exit demo, and the way to run it for real. |
| Off by default | Sites without the flag behave exactly as before, and demo.js is never even fetched. |
Also in this release
- Cache-busting now versions dynamic
import()URLs, not just static ones. - The media library stops printing "0 KB" for a file whose size it doesn't know.
Upgrading
Engine-owned (admin/, config.defaults.json), so an existing site picks it up on its next update PR — click Update available in the admin, or wait for the weekly workflow. Then add one line of config to switch it on. No new dependencies, no output changes, no migration.