github shopperlabs/shopper v2.12.0

latest release: v3.0.0-rc.2
5 hours ago

What's New

New Features

  • feat(admin): listing metadata and stack in the starter kit manifest (#672)

shopper-kit.yaml gains the fields read by the starter kits listing on shopperphp.com: preview (live demo URL), docs, screenshots (paths inside the kit repository, the first one is used as the cover) and stack (the technologies the storefront is built with). shopper:kit:init now asks for the stack through a searchable multi-select based on Manifest::STACKS; a technology outside that list is kept in the file and flagged at export. kit:init and kit:export now write the manifest through the same Manifest::toYaml(), so exporting no longer drops keys, and shopper:kit:export warns when a declared screenshot is missing from the kit. --clear now keeps the kit's own files (.git, .github, README.md, CHANGELOG.md, LICENSE, composer.json and the manifest) instead of wiping everything but .git. Existing manifests parse unchanged and shopper:kit:install does not read the new fields.

Bug Fixes

  • fix(admin): keep the admin compatible with Filament 4.13 (#673)

Filament 4.13 widened HasChildComponents::schema() to array|Schema|Closure. IconPicker::schema() kept the old signature, so the class no longer loaded and every admin form using it crashed with a fatal error. The override now accepts a Schema, and Shopper runs on Filament 4.13 again. If you pinned filament/filament to ~4.12.0 to work around it, you can lift that constraint.

  • fix(admin): stop icon picker memory exhaustion on non-object cache stores (#675)

On Laravel 13, the default skeleton sets cache.serializable_classes to false. The icon picker cached a Collection, which then came back as __PHP_Incomplete_Class, and the second icon search threw a TypeError. HandlesAuthorizationExceptions::exception() only accepted Exception, so that Error re-triggered the Livewire exception hook in a loop until the worker ran out of memory. Any Error thrown in an admin component using this trait had the same effect. The hook now accepts Throwable (only AuthorizationException is still intercepted), the icon picker caches a plain list of icon names, search results are no longer cached per search term, and only as many results as the select displays (50) are rendered, instead of several thousand Blade views for a one letter search. Thanks to @fast-cmf for the detailed report and reproduction in #674.

Upgrading

Clear the cache once after upgrading, so the icon picker entries written by previous versions are removed:

php artisan cache:clear

If one of your Livewire components extends a Shopper admin component and overrides exception(), widen its first parameter from Exception to Throwable to match the new signature of Shopper\Traits\HandlesAuthorizationExceptions::exception().

Contributors

@mckenziearts

Full Changelog: v2.11.2...v2.12.0

Don't miss a new shopper release

NewReleases is sending notifications on new releases.