v3.2.0
v3.2.0
Released: 2026-10-04
Breaking change, documented after release: island identity no longer exempts duplicate definitions in the same package or byte-identical staged copies of package files. They now fail with ambiguous owned island marker. See Same-package duplicate island definitions.
Features
Expand the finite HTML and SVG markup vocabulary and expose precise owned JSX and Island types (fefe6832, 513c60b3).
Support childless owned
<iframe>shells (881867b6).Add owned Island persistence options (14e41983).
Share one literal CSS
stylecontract across server rendering and the client (8e4b6922).Normalize optional Island props once for SSR and JSON transport: undefined record members are omitted, arrays stay strict (3bccf6f1).
Add public island testing helpers and format default diagnostics readably in the console (41d32ef8, 4bfb5f58).
Register islands from actual
<Island>boundary targets with binding-aware discovery, so unused helper exports no longer collide while real ambiguities still fail (7b742c30, a1e6ffdf, 6ddc3669).Report build render failures with a sanitized structured summary and the authored
file:line:columnof the failing element, without needingzfb checkfirst (353a94bc, a542eabd, 2568912d).Warn, once per file, when a per-file
@jsxImportSourcepragma overrides the zudo-react runtime, before the failure it causes (283e77fd).Add
wind.sourceswith root-scopedexcludepatterns andpackageRoots, recorded with preset provenance (1fb23e44, 70936a8d).Add
zfb wind audit --plan build, sharing source discovery withzfb build; dev now watches declared package roots (da65e5f3).Add six utility groups:
wrap-anywhere,decoration-<color>,leading-none, the resize cursors,visible/invisibleandunderline-offset-<n>(zudo-wind spec revision 4) (088a65b7).Treat BEM and snake_case names as ordinary authored classes and report known Tailwind-only names as
ZW014warnings, which become errors at class positions under the newwind.strict(823f3c5b).Recognize complete class expressions (ternaries, logical operands, template interpolations,
clsx/cnhelpers and same-module constants) as class positions (a56867f8).Render Wind diagnostics as
source:line:column: ZWnnn candidate: messageand collect every forbidden directive in one run (b5824556).Add
zfb wind audit --json/--severityandzfb wind explain --stdin/--json; extraction now skips module specifiers, URLs, non-class attribute values and inline style text (2b7763a4).Add
--config <file>tozfb css,zfb wind explainandzfb wind audit, andzfb wind manifestfor package authors (c3fd3306, d1d42d23).Validate arbitrary values and tokens with one
var()-aware rule, and explain type hints, attempted properties andcalc()spacing fixes (e416ba9f, 2c7213c3).Add
wind.utilities.placementto place utilities before authored CSS (default unchanged) (a85dce2e).The Linux binaries now require glibc 2.34 instead of 2.35, so they run on Amazon Linux 2023 (the AWS Amplify default image) and RHEL 9-class systems (47c8978e).
Bug Fixes
Stage package-owned SSR dependencies correctly under strict pnpm layouts (9610fa86, 08fa0c9e).
Fix a build panic when a class candidate followed a multibyte character inside a generated JS string (6fde09fe).
Render quoted
data-zfb-islandtext in highlighted code instead of rejecting it, while real island markers stay rejected (94b77a65).Locate installed packages that export only subpaths, so their package-relative Wind manifests resolve (9bbe077d).
border-[var(--x)]and the per-side forms are now reported as ambiguous between width and color, liketext-[var(--x)], instead of silently resolving to a width; add a type-specific utility or a literal value (e416ba9f).Accept channel-list variables such as
hsl(var(--primary))in tokens and arbitrary values (bce02ff8).Validate
underline-offsetarbitrary values as nonnegative lengths (60a69b0f).Let package roots read their own
distandnode_modulesregardless of ignore files, honordir/exclusions, and reject package roots that contain the project (3b200d63, 71782bf7).Attribute render-failure locations only to the failing element and keep an internal frame as context when no authored span is available (d9332ae1, d7f91337).
Never warn about pragmas inside dependency files (39218759).