github shopperlabs/shopper v2.6.1
v2.6.1: Currencies, Better Install, and Event Wiring

latest release: v2.6.2
one day ago

shopper-refresh-installation

Highlights

Currencies Settings Page

A dedicated Settings > Currencies page is now available. It lists all currencies in the database including disabled ones using Currency::withoutGlobalScopes(), so nothing is hidden behind the default active scope. Each row exposes an inline ToggleColumn to flip the is_enabled flag immediately, and an edit action to update the exchange rate with four-decimal precision. Bulk actions let operators enable or disable multiple currencies at once after a confirmation modal. A ternary filter on status makes it easy to narrow down to active or inactive currencies.


Redesigned Install Command

php artisan shopper:install has been fully redesigned. The command now renders a gradient ASCII logo in Shopper's brand blues and drives each installation step through Laravel Prompts' spin() for animated feedback. Configuration is now published via --tag=shopper-config instead of --provider, which skips language files and keeps the initial publish lean. A re-installation guard detects an existing config/shopper/admin.php and exits early with actionable hints rather than running twice. The success screen prints the fully-resolved admin URL (APP_URL + prefix) so developers know exactly where to point their browser.

The command also cleans up six irreversible migrations by removing their down() methods where restoring the previous constraint would fail on existing data.


Livewire 4 Support in shopper/sidebar

The sidebar package now accepts Livewire 4 alongside Livewire 3. The livewire/livewire constraint in packages/sidebar/composer.json is widened to ^3.7|^4.0, unblocking projects that have already upgraded to Livewire 4.


Order Summary Reacts to order.updated

OrderSummary now listens for the order.updated Livewire event via #[On('order.updated')] on its render() method. Previously the component only reflected the order state at page load; marking an order as paid in another component on the same page would not refresh the summary totals, shipping breakdown, or tax display until a full page reload. The event listener closes that gap.


Features

Refactoring

Don't miss a new shopper release

NewReleases is sending notifications on new releases.