Skip to content

v2.40.0

Choose a tag to compare

@pushery pushery released this 29 Aug 11:03
· 17 commits to main since this release
f2e1e4e

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, accent or info produced 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, and primary
    and info use 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.
    With persist-driver="cookie", the server half read $_COOKIE, which PHP fills once per
    PROCESS rather than once per request. Under fpm-fcgi those 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 from EncryptCookies keeps 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.js grows from 282 to 290 KB raw, wirekit-alpine.csp.js from 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 Alpine x-init snippet, which is the
    mechanism that was replaced — x-init runs 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 EncryptCookies note
    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.