# Changelog

What changed, newest first. Unreleased changes are on main and ship in the next version.

## Unreleased

### Oct 17, 2026 · Layout intents

- Put a title at the start of a line and its buttons at the end, with the buttons dropping below when there's no room, with `layout.headline`
- Put an icon, avatar or logo beside its text without it shrinking, with `layout.labelled`; `layout.badged` now points there for an icon beside its label
- Let a wide table or long code line scroll sideways inside its column, with `layout.scroller`; `layout.table` says to wrap wide tables in it
- Lay out a settings row with its label on the left and its switch on the right, with `layout.setting`
- Give a settings or account page its own section nav beside the content, with `layout.subnav`
- Sign-in and confirmation pages centre their heading, text and buttons, while a form inside keeps the full width, in `layout.task`
- Grids fit as many columns as their own width allows, so the same grid works in a sidebar and across a page, in `layout.collection`; set columns from a breakpoint only when the count matters
- A form's submit bar pinned to the bottom on phones now counts as a use of `layout.dock`
- Filter pills and other buttons in `layout.toolbar` keep their own padding and sit apart with a small gap, instead of the first one losing its padding and lines drawn between them
- The libraries are published as `@prongsjs/core`, `@prongsjs/ui`, `@prongsjs/errors` and `@prongsjs/logs`; the CLI is still `npx prongs`
- On wider screens `dialog.media` fits its photo again, instead of stretching to the full height of the screen with empty space below
- Docs site: repeated layout tweaks down from 51 to 40 kinds, and from 396 to 253 class uses
- The README now explains intents, domains and profiles, and the format spec is on its own page at `/docs/spec`
- The guide now introduces Prongs as a spec, a framework and presets for UI, errors and logs that you extend with your own intents, and the checking page lists the errors and logs rules too
- Links to prongs.dev now show the preview image when shared, and the site description and preview card describe the spec, framework and presets instead of UI alone

### Oct 17, 2026 · Spec gaps

- Export your registry as JSON for tools in other languages with `prongs export`; it matches the spec's `schema.json`
- Attach your own data to an intent, like an owner or a design link, with `meta` and prefixed keys such as `com.example/owner`
- Registry problems now carry a stable code, like `unknown-ref`, so tools can act on them without reading the message
- Deprecating an intent without saying what replaces it is now a warning
- The spec now covers what each status means, a checker's findings, intents at run time, security and what counts as a breaking change, and has conformance tests any implementation can run and a changelog page

### Oct 17, 2026 · Layout tweaks

- `prongs check` finds the same layout class added to the same `<Layout>` intent in three or more places, and says whether an intent already has it, whether it does nothing, or whether one is missing; `check --suggest` lists them too (`repeated-tweak`)
- Hide or show a region by screen size, or push it to one end of its row, with `hideBelow`, `showBelow` and `align` on `<Layout>`
- `align="end"` now pushes an action, field or image to the end of a row as well as a column, the same as on `<Layout>`; before, in a row it moved it to the bottom instead
- `layout.section` is now the stack for separate blocks in a region, with or without a title, and `layout.group` points there for them
- Columns no longer overflow their row or grid when their content is wide, with `min-w-0` on every stacking intent
- Pages and panels have less padding on phones and the same on larger screens, and a call site's own padding still wins, in `layout.page`, `layout.article` and `layout.panel`
- A loading placeholder without a size shows as a full-width line instead of nothing, with `layout.loading`
- Task pages and app shells fill the visible screen on phones, not the height behind the browser's bars, in `layout.task` and `layout.shell`

### Oct 17, 2026 · Device status

- The analytics guide shows how to turn intent events into decisions, with worked examples and what the events cannot tell you
- Whole table rows that open a record's details on click, with `action.inspect` on its name
- Show an amount as a row of blocks, like a battery, coloured by level, with `layout.blocks` and `layout.blocks.cell`
- An icon with a status dot on its corner, like a device and whether it is online, with `layout.badged`
- Statuses as colour-coded outlined pills with `text.status`
- A showcase of featured items now stacks top to bottom on small screens, instead of squeezing side by side, and pointing at an item no longer moves the others: mark its caption with `data-caption`, in `layout.showcase.item`
- A photo opened large fills a phone screen, with the photo as a full-width square between its title and details, and the page behind stays still while it's open, with `dialog.media` and `media.enlarged`
- A status dot pulses while something is in progress with `data-busy` on `text.indicator`, and `data-off` on a table row greys out something switched off

### Oct 16, 2026 · Gallery intents

- Galleries where the item in focus widens and the rest make room, with `layout.showcase`
- Sliders with `field.range`, a bar that stays at the bottom with `layout.dock`, and covers and posters with `media.artwork`
- Step to the next item in a sequence, like the next photo in a lightbox, with `action.skip`
- A gallery example in the home page's examples

### Oct 15, 2026 · Dashboard intents

- Meters for amounts like battery or storage (`layout.meter`) and a `<figure>` frame for charts (`layout.chart`)
- Sortable table columns (`action.sort`) and pagination (`layout.pager`, `nav.paging`)
- Status colours for `text.indicator`: `data-tone="success"`, `"warning"` and more
- Pull quotes (`text.quote`), standalone links like Learn more with an arrow and no underline (`action.more`), and `layout.teaser` and `nav.item` in the starter registry
- Dashboard and newsroom examples in the home page's examples, built only from intents
- Icon-only buttons no longer squeeze their icon

### Oct 14, 2026 · Find intents by purpose

- `prongs find "<what it is for>"` looks intents up by purpose, with their "not for" guidance and how to write them
- Tables (`layout.table`), app shells (`layout.shell`), sign-out (`action.signout`) and wrong-password errors (`auth.signin`), added where agents building a SaaS app went looking for them
- An eval suite that builds apps and runs chains of tickets with fresh agents, with and without Prongs
- Menus keep a danger colour on destructive items instead of flattening every row to the same look
- `layout.form` and `layout.disclosure` accept form and details attributes like `noValidate` and `open`
- `prongs check` accepts flex-grow ratios like `flex-2`, which it used to reject
- MIT license, a README for every package, CI and a fresh-install smoke test

### Oct 13, 2026 · Whole fields and dark mode

- `<Field label hint error>` renders the whole field and connects the label, hint and error for screen readers
- The theme follows the system's dark mode, browser-drawn controls included, and focus rings sit on the surface colour
- PRONGS.md is a quarter smaller: the theme and the look intents moved to PRONGS.reference.md, and it shows how each layout arranges its children and the full `fail()` options
- `audit.signedin` and `audit.signedout` for ordinary sign-ins, apart from `security.signin`
- `prongs check` warnings are suggestions: agents keep their intent when the suggested one does not fit

### Oct 9, 2026 · Popovers and layered surfaces

- `<Popover>` for menus, pickers and detail, on the browser's own popover, with keyboard navigation and listbox pickers
- `theme.css` with self-layering surfaces: nesting decides the shade, and quiet text stays readable at every level
- Dividers, status indicators, disclosures and embedded pages as intents
- Every element carries `data-intent` in production, for analytics, tests and A/B tools
