v2.37.0
Minor. Twenty-four icon names that only carried a real meaning if you happened to be on
Heroicons now carry it on every interchangeable preset, a streaming component can hand its
announcements to a page that already has a status region, and an overlay is an overlay even
when your Tailwind build never scanned this package.
Added
- Twenty-four alias words now carry a defined meaning on all four interchangeable icon
presets, not just Heroicons. The vocabulary's whole promise is that a name keeps meaning
the same thing when a project changes preset, and these words broke that promise quietly.
On a non-Heroicons set they were never declared, so they fell through to whatever glyph
happened to share the name — which is a coincidence rather than a mapping, and produced
nothing at all where no such glyph existed. Each word was checked against the actual glyph
files of every set before it was taken, and nine candidates stayed in the extension. Two
reasons, both measured rather than assumed: for some, at least one set has no true cognate —
pulseis the clearest, an EKG trace on three sets and a refresh arrow on the fourth — and
for others the only candidate glyph is one another alias already uses there, so promoting
the word would make two names indistinguishable on that set. Either way an alias that
silently substitutes something merely similar is worse than one that is simply absent.
Every base preset now carries an identical vocabulary.
See Icon. cubeandsparklesjoin the base vocabulary too, so every alias a documented example
uses now resolves on a stock install. They had lived only in the marketing extension,
which meant eight blueprint call sites rendered on the documentation site and threw
Unknown icon aliasfor anyone who pasted them into a fresh project. Both were measured
against the real glyph files of all four sets first — a box forcube, a sparkle for
sparkles, everywhere. The singularsparkledeliberately stays in the extension:
Heroicons and Phosphor each ship exactly one sparkle glyph, so promoting both words would
make them indistinguishable there.attach— a paperclip, on every preset. Three blueprint pages were drawing the
external-link box on an "Attach file" button, because the vocabulary had no word for an
attachment and that was the nearest thing anyone could reach for. All four interchangeable
presets ship a real paperclip, so the word is taken and those pages say what they mean.
See Icon.announce="none"on Stream. A page that
already owns a status region can now take the streaming transport without shipping a second
one alongside it — previously the component always rendered its own, so adopting it meant a
screen reader heard every completion twice. The failure announcement is deliberately not
part of the bargain: the alert region is rendered in every mode, because a setting about
routine progress should not quietly remove the one message a reader cannot afford to miss.
The default is unchanged.
Fixed
arrow-up-rightdraws a diagonal arrow now, not an external-link mark. If you stack
the marketing extension, this is a visible change: the word used to resolve to the
box-with-escaping-arrow — the same glyphexternal-linkgives you — so the two names were
indistinguishable. It now draws what its name says, which is also what an unstacked
Heroicons install has always rendered. If you meant the outbound-link mark, use
external-link. Nothing changes on an unstacked install.- The
api-map.jsonpage-layout group is now calledpage-layouts, and the documented
shape says so. It waslayoutsuntil the pages moved underblueprints/; the rename
shipped and the documented output shape did not follow, so a tool reading the catalog by
name got nothing back instead of an error. Thepartialsgroup had never been listed at
all. If you read that artifact by group id, this is the one line in this release that
affects you. See the CLI reference. - An overlay is now positioned by the shipped stylesheet, not only by your Tailwind build.
Alert dialog, modal, drawer, command palette and the other overlays carried their geometry
as utility classes, which exist only if your build scans this package's views. Where it did
not, the overlay rendered in the document flow instead of above it: on a long page the
dialog opened somewhere down the document, its confirm button sat below the fold, and a
click on it did nothing at all — no error, no feedback, the button simply out of reach
behind a scroll-locked body. The geometry now also lives in the stylesheet you already
load, so the overlay is correct with or without the utilities. When both are missing, the
overlay root says so once in the console and names the three things worth checking — one of
them beingwirekit:verify, which reports the same condition without waiting for a reader
to open a dialog. See the CLI reference.
Documentation
-
Localization now covers the case that surprises
people on an upgrade: a word you deliberately left untranslated changes when WireKit learns
a language. The page explained that your own catalog wins per key, and warned about new
keys appearing — but not the reverse. If your app defines no entry for a key, WireKit's
catalog answers, and that answer depends on which languages WireKit speaks at the moment.
Leaving a key undefined to keep the English word therefore holds only until a release adds
your visitor's language. A real report: a plan tier namedUnlimited— a proper noun,
not a quantity — readUnbegrenztfor German visitors after the release that added German.
Absence is not an override; the override props exist for this, and the page now says which
of the two mechanisms fits which case. -
The published configuration file now states what stacking the extension presets requires,
so the commented-out line underpresetno longer reads as free to enable on any install. -
The SQLite step in Getting started explains why
the database file has to be created and why the migration follows it, instead of leaving
both commands unannotated.