+- Drop `mixin="controller"` from the `Basecoat.cfc` component declaration. The 1.0.3 changelog claimed this attribute was a no-op — that was wrong. Lucee 7.0.0.395 enforces native trait composition on `component mixin="..."` and tries to resolve `controller` as a CFML component path; on a clean install with empty Lucee class caches, that resolution fails and the whole component bombs out with the misleading error `invalid component definition, can't find component [vendor.wheels-basecoat.Basecoat]`. Net effect on a fresh `wheels packages add wheels-basecoat`: `application.wheels.failedPackages` carries the package, every helper call (`uiCard`, `uiField`, `uiButton`, etc.) blows up with `No matching function [...] found`, and the bonus chapter is unreachable. Cached-class reproductions appeared to load the package fine, which masked the bug during 1.0.2/1.0.3 release testing. The authoritative source for the mixin target is the `provides.mixins: "controller"` field in `package.json`, which `PackageLoader` already reads — the component-level attribute is genuinely redundant and now also actively breaks Lucee 7. (Verified end-to-end on a fresh VM with `wheels stop && rm -rf vendor/wheels-basecoat ~/.wheels/servers/<app>/lucee-server/context/cfclasses/* && wheels packages add wheels-basecoat && wheels start` — without this fix, `application.wheels.failedPackages` is non-empty; with it, `application.wheels.packages.wheels-basecoat` is populated and all 57 helpers resolve.)
0 commit comments