Orbit MD 1.1.1 changes how the form handles lists, field order and pages without text. This covers the rules, so you can shape a schema to get the controls you want.
Lists by kind
With a schema, the item type decides: z.array(image()) is a gallery, z.array(z.object({...})) a list of cards, and an array of strings or numbers a set of chips. Anything else keeps the plain list with add, remove and reorder. Without a schema, Orbit looks at the values: all image paths make a gallery, all plain objects make cards, and short single-line strings or numbers make chips.
A card’s one-line title is the item’s first text field in schema order, so put the field that identifies an item, such as question, first. Galleries and card lists get their own tab inside Details when the page has other fields beside them. Lists shows each one.
Field order
On content-map sites that don’t list their fields, Orbit infers them from the pages. Until now, keys inside groups and list items came out sorted, which put a FAQ’s answer above its question. Orbit now takes the written order from the first page’s YAML at every level, so nested fields appear as they’re written.
The Text tab
A section set to bodyless: true in orbit.config.yaml shows Details only. Otherwise a page with no text gets a Text tab with Add body text. Orbit doesn’t download the site’s templates, so it can’t tell whether the site displays a page’s text. It checks the section’s other pages instead, and if none has text it says so before the button.
Fixes
Two simultaneous requests for the section list could write the same Go map at once, which is a fatal error in Go; the call is now serialised. Field rows use minmax(0, 1fr), so a long value can’t widen the window.
The release is on GitHub: Orbit MD 1.1.1.
For a less technical take on this, read Orbit MD 1.1.1: tidier editing.