Repository navigation
v0.7.5
Upgrading
- Run
kit:update plan|applyforcore(re-pinnedsha256:9a290690…555b→sha256:bda1ecaa…c43e) andsession-ui(sha256:c59375ef…dd74→sha256:287b46fe…d2ed):Kit/Form/PasswordInput.vuefollows its form's reset, andAuth/Login,Auth/ForgotPassword,Auth/ResetPassword,Auth/ConfirmPasswordandAuth/VerifyEmailtake the two fixes below. - tey/standards ^0.11.54 is required. Earlier releases reject the adoption inventory's new
features.<id>.composerkey (exit 2), so kit raises its floor with it. - Run
kit:update plan|applyforcore(re-pinnedsha256:bda1ecaa…c43e→sha256:87f1548e…8cde):Kit/Form/submitForm.tsaddshttpSubmit, andKit/index.tsexports it. A handler that awaits Inertia'suseHttpdirectly should move tohttpSubmit(below). - Run
kit:update plan|applyforcore(re-pinnedsha256:87f1548e…8cde→sha256:5b4af9a6…b7df):Kit/Form/Slider.vueis new,Kit/Form/RadioCardGroup.vuegains theoptionslot, image tiles andcolumns, andKit/contract.tsandKit/index.tsexport them.RadioCardOptionnow needs alabelor animage(withalt); an option with a label is unchanged. - Run
kit:update plan|applyforsession-ui(re-pinnedsha256:287b46fe…d2ed→sha256:abbeb463…c64f):Auth/Login,Auth/ForgotPassword,Auth/ResetPassword,Auth/ConfirmPasswordandAuth/VerifyEmailtake the type fix below. No behaviour changes.
Fixed
- A rate-limited auth submit no longer opens Inertia's error modal. The guest auth pages handed their 429 handler to
<Form>as@http-exception, but<Form>before Inertia 3.8 has noonHttpExceptionprop: the listener was never called, so Laravel's 429 page (fromthrottle:) still opened in Inertia's modal. The pages now pass it as the visit option (:options="{ onHttpException }"), which every Inertia 3<Form>honours, and the in-card "Too many requests" alert shows. The browser checks now run these pages on the real@inertiajs/vue3(3.7.1) and shadcn-vue Input, answering each submit with Laravel's 429 HTML or an Inertia response with errors. - A failed sign-in, reset or confirmation really clears the password.
reset-on-errorresets the input in the DOM only, andPasswordInputkept its own value, so the next re-render (showing the password, an error appearing) wrote the old password back. The pages now hold their password fields (v-model) and clear them on an error or a 429, andPasswordInputfollows its form'sresetevent (a native reset, or Inertia's whole-form reset), so a host form's reset clears it too. - The adoption inventory lists each feature's composer dependencies.
resources/adoption/surfaces.jsonfeatures.<id>.composernow carries every feature'sfeature.jsonrequires.packageskeys (lessphpandlaravel/framework), and the schema allows the key. tey/standards readspatie/laravel-multitenancyin an app's composer.json as a hand-rolledworkspaces.tenancysignal, because kit carries it only inrequire-dev; tey/standards 0.11.54 exempts a package an installed feature declares here. The drift test rebuilds the list from the feature.json files. - A
useSubmitFormhandler over Inertia'suseHttpno longer reads a 422 as a success.useHttpdoesn't reject on a validation failure: it callsonErrorand resolvesundefined, so a handler that awaited it returned normally and the form showed Saved for a refused save. The docs said auseHttperror is read from what it throws, which is only true of the other statuses; they now say to usehttpSubmit(docs/submit-form.md › With Inertia's useHttp). - The guest auth pages type-check on every Inertia 3. They bound
:options="{ onHttpException: tooMany }"inline, and<Form>'soptionstype (FormComponentOptions, aPickofVisitOptionswithoutonHttpException) failed vue-tsc's excess-property check (TS2353) in a host. Each page now types the handler as the visit'sonHttpExceptionand widens it to<Form>'soptionstype (:options="formOptions"), both read off@inertiajs/vue3's ownFormandrouter.visit, so no stub imports@inertiajs/core; at runtime<Form>still spreads it into the visit. The components type-check (bin/typecheck-components.sh, CI's vue-tsc job) now covers these five pages and runs a second time against@inertiajs/vue33.7.1 (installed as@inertiajs/vue3-37,typecheck/tsconfig.inertia-3.7.json) as well as the pinned current version.
Added
httpSubmit((data, hooks) => request), auseSubmitFormhandler over auseHttprequest: pass it the hooks it gives you (http.post(url, hooks)). A 422 rejects with aSubmitErrorof the field errors; a 409stale_writerejects as the conflict (form.conflict); any other status, a network failure, and a resolve ofundefinedwith noonErrorreject with the generic message. Only a 2xx resolves, with the response data. Exported from the kit barrel.node --test tests/js/submit-form.test.mjscovers each outcome over a stand-in foruseHttp3.9.1, including a bareuseHttphandler that reads a 422 as success.<RadioCardGroup>tiles (docs/radio-card.md). Theoptionslot ({ option, checked, disabled }) replaces a card's body while the native radio, its label and the focus ring stay the kit's. An option withimage: { src, alt }is an image tile: a lazy, async image in a squareobject-coverbox, so ~100 tiles load without layout shift, named by its label or its image'salt. A checked image or slot tile shows the primary ring and anaria-hiddencheck mark, so the state isn't colour alone.columns(2,3,4,6orauto, at least 7rem a tile) lays the cards in a grid. A disabled option stays a native disabled radio the arrow keys skip.<Slider>(docs/slider.md), a native range input:v-modelnumber,min,max,step,disabled,invalid,valueTextforaria-valuetext,inputemitted live andchangeon release, andshow-valuefor a visible<output>linked byfor. Caller attributes land on the input; in a Field it is described by the Field's description and error; in a locked LockedForm it is read-only.- The adoption inventory counts
Sliderunderform.inputs, and a raw<input type="range">in a Vue or Blade template as hand-rolled (it also marks the apphas-forms).
What's Changed
- Keep a 429 out of Inertia's modal and clear auth passwords for real by @jaspertey in #478
- List each feature's composer dependencies in the adoption inventory by @jaspertey in #480
- Fail useSubmitForm on a useHttp 422 with httpSubmit by @jaspertey in #483
- Add RadioCardGroup option slot, image tiles and columns, and a Slider by @jaspertey in #439
- Type the auth pages' onHttpException for every Inertia 3 by @jaspertey in #485
- Release v0.7.5 by @jaspertey in #488
Full Changelog: v0.7.4...v0.7.5