WireKit v2.6.1
Patch release. Bug fixes across the schema-export tooling, the editor, the diagnostic commands (doctor / doctor:a11y), and the theme-preset system, all backward-compatible.
Fixed
php artisan wirekit:export-json(and the.wirekit-schema.it writes to your project root) now reports props correctly for components whosejson @propsblock carries a comment with an odd number of quote characters. A comment such as// each item's groupor// without a leading "contains an unpaired'or"; the prop extractor mistook it for the start of a string literal, lost track of where the@props([…])array ended, and gave up — reporting the component's props as(none)and listing the prop names underslotsinstead. IDE autocomplete and AI tooling fed from the manifest saw the wrong shape for<x-wirekit::,skip-link> <x-wirekit::, andsticky-panel> <x-wirekit::. The extractor now skips comment spans before tracking string and bracket state, so every component's props and slots export accurately. Re-runnotification-center> php artisan wirekit:install(orwirekit:export-json) to refresh a committed.wirekit-schema..json <x-wirekit::now logs its "Tiptap not loaded" console hint once per page instead of once per editor. When Tiptap (the editor's peer dependency) isn't loaded, the editor degrades to a plain textarea and logs a one-time hint pointing you at the install steps — but the hint fired on every editor mount, so a page with several editors filled the console with duplicates. It's now deduplicated behind a page-global flag, matching the chart and map components' missing-dependency hints. The textarea fallback itself is unchanged (each editor still degrades independently).editor> php artisan wirekit:doctornow reminds you about the editor and map front-end peer dependencies. Its optional-dependency report covered Chart.js and the QR-code package but stayed silent on Tiptap (for<x-wirekit::) and a map engine — MapLibre GL or Leaflet — (foreditor> <x-wirekit::). Those are browser globals a PHP command can't probe, so they appear as informational reminders ("only if you use those components"), not pass/fail checks. The integration guide also gained an at-a-glance peer-dependency table.map> php artisan wirekit:theme <preset>now applies the light palette correctly on the@wirekitStyles(<link>) path. The generated light block was wrapped in a Tailwind@theme {}block, which compiles into thethemecascade layer; because the prebuiltdist/ships its default tokens unlayered, the layered light palette lost the cascade and silently did nothing in light mode (the accent stayed near-black, inlinewirekit. css codestayed gray, the chrome stayed on the default font) while dark mode worked. The light palette is now emitted as a plain:root {}block — mirroring the.dark {}block it already emitted — so it wins the cascade and the preset applies in both modes. If you previously worked around this by hand-converting the generated block to:root {}, that edit is now redundant (but harmless).- The
aurorapreset's generated CSS no longer breaks the build. A nested block comment in its--theme-hueoverride example closed early (CSS block comments don't nest), so the trailing prose leaked into the stylesheet as invalid tokens and the build failed. The annotation is now plain text. php artisan wirekit:doctor:a11y --theme-contrastnow audits hue-driven theme tokens instead of skipping them. A preset that expresses its palette through a single source hue —oklch(L C var(--theme-hue))— previously had its entire accent family reported as "unsupported color format" and skipped, because the audit didn't substitute thevar()reference before parsing the color. It now resolves embedded custom-property references (recursively, with a cycle guard) from the same token table, so those pairings are actually contrast-checked.
Documentation
- The integration guide now collects every optional peer dependency in one at-a-glance table. Previously Tiptap (for
<x-wirekit::) and a map engine (foreditor> <x-wirekit::) were documented only on their component pages, whilemap> <x-wirekit::andchart> <x-wirekit::had their own scattered notes. The guide now lists all four side by side — each cross-linked to its component page — with concise Editor and Map setup sections.qr-code> - The map documentation now shows how to keep the map engine out of your global bundle. A new bundle-size section on the MapLibre GL guide demonstrates loading the engine only on the routes that actually render a map — the engine is your own dependency (WireKit never bundles it), so a global import would otherwise add its weight to every page.