Skip to content

v2.32.0

Choose a tag to compare

@pushery pushery released this 16 Aug 20:05
· 31 commits to main since this release
93aeec3

Minor — a shared icon vocabulary that resolves the same way on every preset, an icon package you can actually install, a prop-naming reference that was wrong about six things, and a prop linter that no longer fails a build over a test selector.

Nothing here changes what an unchanged call site renders. One command reports less than it used to, and it is the reporting that was wrong rather than the rule.

Added

  • Eleven words the shared icon vocabulary was missing. chart-bar, trend-up,
    percent, coins, gift, map-pin, sliders, list-checks, list-bullets,
    lock-key and broadcast — reporting, money, settings and location, the vocabulary a
    back-office reaches for. Each resolves on all four base presets, and each target was
    checked against the installed icon set rather than assumed. Two more were asked for and
    are deliberately absent: Heroicons has no gauge and no handshake, and an alias that
    changes the drawing when you switch presets is worth less than no alias at all — for
    those two, name the glyph directly.
    See Icon.

Changed

  • chart-bar moved from the marketing extension into the shared vocabulary. While the
    extension owned the name it meant chart-bar-square on Heroicons and nothing at all on
    Lucide, Phosphor or Tabler — so the one property a shared alias has to keep, that it
    means the same thing whichever preset you install, was the property it did not have. On
    heroicons-marketing the glyph is now the plain bar chart the other three presets draw.
    If you want the framed variant, name heroicon-m-chart-bar-square directly.

  • wirekit:doctor:props no longer reports a browser-test selector as an unknown prop.
    dusk is written on a component precisely so that it reaches the rendered HTML, where a
    browser suite selects on it. The linter counted it as a mistake, and in a project whose
    quality gate runs the linter under set -euo pipefail that exit code ended the stage
    before the tests ran — seventy of one project's findings were this one attribute. The
    line is what the attribute does: an unknown prop is an instruction that disappears, a
    test selector is one that arrives where it was aimed. The same change covers the runtime
    warning, since both read one verdict. Valid HTML attributes and the aria- / data- /
    wire: / x- / on prefixes were already passthrough and are unchanged.
    CLI Reference lists what is never reported.

Fixed

  • The tabler icon preset named a package you cannot install.
    ryangjchandler/blade-tabler-icons is marked abandoned and its newest release requires
    Laravel 10 or 11, while WireKit requires 12 or 13 — so composer require refused, for
    every supported installation. The preset was documented, listed in the preset table, and
    unreachable. It now names secondnetwork/blade-tabler-icons, the maintained successor:
    same tabler- prefix, same alias vocabulary, ~7,200 icons, and it tracks Tabler's own
    version line. Nothing changes in your templates —
    <x-wirekit::icon name="user"> on the tabler preset resolves exactly as before.
    Icon names the new package.

  • megaphone was broken on the tabler preset. It mapped to tabler-megaphone, which
    does not exist — Tabler calls that glyph speakerphone. Blade Icons throws on an unknown
    name, so the page broke rather than degraded. It survived because the preset's package
    could not be installed, which meant nothing could check its 94 targets; all four presets
    are verified now, and every other alias across them was already correct.

  • wirekit:publish-icons lucide reported success while publishing the wrong thing. The
    command looked for SVGs in a directory the package emptied when it reorganized — the
    folder still exists, so the check answered yes and the copy produced
    icons/lucide/icons/… where every other preset gives you icons/lucide/…. The source
    directory is now located by looking for the files rather than by a written-down path, so
    an upstream reorganization cannot silently change what you get.

Documentation

  • The CLI reference documented an exit code no command returns. It described a
    three-value convention and gave exit 2 its own row and its own meaning, plus two more
    mentions under individual commands. Every wirekit:* command exits 0 or 1 — including
    on rejected input — and has done since that was standardized. A CI step written as
    if [ $? -eq 2 ] could never fire, and 1 read as narrower than it is. The reference now
    states the two-value contract and says outright that there is no exit 2.
    CLI Reference.

  • A recipe's dark band did not follow the theme. The marketing landing-page recipe
    painted its hero with raw hex — a near-black gradient with white text, plus three sparkline
    strokes in literal red, green and gray. Copied into an application, that band stayed
    exactly as light in dark mode as it had been in light mode while everything around it
    moved. It is tokens now, so the band belongs to whichever theme is active.

  • The prop-naming reference was wrong about six things, on the page that exists to
    settle them.
    It named a component this package does not have, filed two components
    under a prop they do not declare, classified alert and callout as surface-treatment
    while both resolve variant into the color axis, promised a stable seven-value intent
    enum that button does not accept, and described a v3 plan whose canonical surface axis
    was the wrong name. It also named one component as keeping a back-compat alias while
    seven do — which is how a reader plans a one-component migration for a seven-component
    change. The page now carries the full alias matrix, the accepted values per component,
    and the v3 mapping split into the rows that are a plain prop rename and the rows that
    also rename a value. The release date stays open.
    Prop Naming Conventions.

  • The integration guide says that x-cloak is covered. Alpine hides nothing for that
    attribute — it removes it once initialized, and the hiding has to come from CSS. WireKit
    ships the rule and @wirekitStyles delivers it, which was true and written down nowhere.
    The guide now also says why looking for it comes up empty: the stylesheet arrives as its
    own <link>, so the rule is never in your Vite bundle and grepping app-*.css finds
    nothing whether your setup is right or not.
    Integration.