The Shipped Screens
The admin shell ships a fixed set of screens, each at a stable URL under /_admin/. This page is the index to all of them; the editor, media, model, and workflow behaviors have their own chapters linked below.
| Screen | URL | Purpose |
|---|---|---|
| Login | /_admin/login | Token entry, mints the session cookie |
| Dashboard | /_admin/dashboard | Recent edits, validation summary, role notice |
| Pages list | /_admin/pages | Paginated, filterable, sortable table of pages |
| Pages tree | /_admin/pages/tree | Hierarchical view; large folders lazy-load |
| Page new | /_admin/pages/new | Create-page form with model selection |
| Page editor | /_admin/pages/{path} | Edit / Source / Diff modes, live preview, save |
| Media library | /_admin/media | Thumbnail grid with search, type, and folder filters |
| Media detail | /_admin/media/{path} | Read-only asset detail drawer |
| Models | /_admin/models | Read-only list of loaded document models |
| Model detail | /_admin/models/{name} | Read-only field definitions for one model |
| Validation report | /_admin/validation | Site-wide validation issues with filters |
| Settings | /_admin/settings | Token rotation, build time, license expiry |
Dashboard
GET /_admin/dashboard is the landing screen. It shows the 5 most-recently-modified pages and a validation summary bucketed by severity, plus a role-specific notice for the Publisher role. Two HTMX widgets auto-refresh every 30 seconds:
- Recent edits —
GET /_admin/_widgets/recentreturns a fragment of the 5 pages sorted by Modified descending. - Validation summary —
GET /_admin/_widgets/validation-summaryreturns the severity-bucket fragment with current issue counts.
Pages list
GET /_admin/pages shows a paginated list (default 50 per page, controlled by offset / limit query parameters). It supports:
- Filters: model, status, tag, and a free-text search over title and URL.
- Sort: by modified, title, url, date, or status.
- Order: ascending or descending.
The endpoint serves either a full page or an HTMX tbody fragment, and also handles the POST from the new-page form for create submissions.
Pages tree
GET /_admin/pages/tree renders a hierarchical view of all pages, with the root URL defaulting to /. Nodes with more than 200 children lazy-load their subtree fragments via GET /_admin/pages/tree/_subtree to keep the initial render fast.
Page new
GET /_admin/pages/new renders a single-column create form with a model dropdown (optionally preselected via a model query parameter), a title input, an auto-derived editable path field, a Status selector (Draft / Published, defaulting to Draft), and a read-only Defaults preview YAML block showing the chosen model’s schema defaults. The defaults block is wired to both the model and status dropdowns via GET /_admin/_widgets/defaults-preview, so it reflects the status the page will actually be created with rather than the model’s default. The form is disabled for the Publisher role. See Media and Page Management for the full create flow.
Page editor
GET /_admin/pages/{path} opens the page editor. It has three modes — Edit, Source, and Diff — covered in detail under Page Editing. All fields are disabled for the Publisher role.
Media library
GET /_admin/media displays a paginated thumbnail grid with substring search, a type filter, a folder filter, and pagination. It serves a full page or an HTMX grid fragment, and supports a no-JS fallback via a return_to query parameter. See Media and Page Management.
Media detail
GET /_admin/media/{path} returns a read-only detail drawer for a single asset — dimensions, type, file size, and a used-by list of pages that reference it — shown in the sidebar when a thumbnail is clicked.
Models
GET /_admin/models lists every loaded document model in read-only form. Model editing is a deferred feature; this screen browses the schema only.
Model detail
GET /_admin/models/{name} shows the read-only detail of a single document model, including its field definitions, types, and metadata.
Validation report
GET /_admin/validation displays site-wide validation issues. Filters include severity (error / warning / info), a free-text search over message and URL, and a check-type filter. Severity and search filters are applied locally. The endpoint serves a full page or an HTMX tbody fragment.
Settings
GET /_admin/settings shows the admin shell’s settings: the last token-rotation timestamp, the build time, and the license expiry. POST /_admin/settings/rotate-token rotates the token (see Token rotation).
Color scheme
The admin shell ships light and dark themes. The Color scheme section on the Settings screen offers three choices – Light, Dark, and Match system (the default) – stored per browser in localStorage.
For quick switching there is also a moon/sun toggle in the top bar, visible on every screen. It flips between explicit light and dark; returning to Match system is done from Settings. Both controls share the same stored preference, so a toggle click updates the Settings radios and vice versa.