v2.40.0
Minor. Two silent-failure repairs — a rail that renders the wrong state on a server that
keeps its workers alive, and a table that accepted a valid intent and drew it gray — plus a
documentation page that described a mechanism replaced months ago.
Classified MINOR rather than PATCH for one reason: the table now accepts three intent values
it previously rejected, and widening what an input accepts is additive.
Added
<x-wirekit::data-table>'s badge columns accept every intent<x-wirekit::badge>does.
A column can map a cell value to an intent —'intents' => ['processing' => 'accent']— and
the set was four values wide while the badge component validates against seven. Naming
primary,accentorinfoproduced a gray pill with no warning, which reads as "no
status" rather than as a value the table did not know. All seven now render, andprimary
andinfouse the same accent-derived strengths the badge itself uses, so the word means
the same thing in a cell as on a badge. See
Data Table.
Fixed
<x-wirekit::app-rail>reads its persisted width from the request, not from the process.
Withpersist-driver="cookie", the server half read$_COOKIE, which PHP fills once per
PROCESS rather than once per request. Underfpm-fcgithose are the same thing; on any
server that keeps a worker alive across requests — Octane, FrankenPHP, RoadRunner — it is
filled at boot and never again. The rail then rendered collapsed and the browser widened it
a frame later, moving the content column by 187px. Nothing threw; it rendered the other
state. The request is asked first now, and the process globals remain as a fallback so an
application that has not excepted the cookie fromEncryptCookieskeeps working exactly as
before. See App Rail.
Changed
- The self-contained bundles carry Alpine 3.16.3, up from 3.15 and inside the range already
declared.wirekit-alpine.jsgrows from 282 to 290 KB raw,wirekit-alpine.csp.jsfrom 297
to 305 KB. Nothing changes for a developer who supplies their own Alpine. See
Integration.
Documentation
- Checkbox describes how the third state
actually survives a re-render. The page credited an Alpinex-initsnippet, which is the
mechanism that was replaced —x-initruns once, while the indeterminate state usually
arrives after the first render and is lost when a round trip morphs the element. The page
now names the attribute the component watches, explains why an effect over a server-rendered
value would not help, and says what to look for when verifying it from outside the package. - App Rail carries the
EncryptCookiesnote
the theme controller has always had. The cookie is written by JavaScript and therefore
arrives unencrypted, so Laravel's default middleware drops it on the server read unless the
key is excepted.