siberfx/samsa
Samsa is a Laravel package by SiberFX that provides a lightweight, configurable integration for adding Samsa functionality to PHP applications. It follows Laravel conventions, installs via Composer, and keeps setup simple with publishable configuration and a clean, framework-native API.
v1.4.0 is a platform bump, not a feature release. Before you touch any application code, confirm the runtime you are actually on:
php -v # must be >= 8.3
composer show laravel/framework | grep versions
composer why-not siberfx/samsa 1.4.0 # tells you exactly what blocks the upgrade
^1.4 and move on — there is no API migration described in this release.1.3.x. Pin it explicitly ("siberfx/samsa": "^1.3") rather than leaving a floating constraint, otherwise a future minor of 1.4.x may look "installable" in a partially-upgraded branch and confuse your lock file review.First use case after upgrading: dispatch one message end-to-end through your existing handler pipeline in a staging environment and confirm the siberfx/message-bus integration still resolves — that integration is now exercised in every CI job of the package itself, which means it is a supported path you can lean on, and also the most likely place for a behavioural difference to surface in your app.
Look first at: your composer.json platform constraints, your CI matrix, and the package's service provider bindings if you have ever overridden them.
Do the upgrade atomically. There is no overlapping support window: 1.3.x does not support Laravel 13, and 1.4.x does not support Laravel 12. You cannot stagger "Laravel first, then Samsa." Plan a single branch that moves PHP → Laravel → Samsa together:
{
"require": {
"php": "^8.3",
"laravel/framework": "^13.0",
"siberfx/samsa": "^1.4"
}
}
composer update "siberfx/samsa" "laravel/framework" --with-all-dependencies
Keep a legacy line alive deliberately. If you maintain multiple applications, put the split in writing: apps on Laravel 12 stay on ^1.3, and 1.3.x continues to receive availability (not features). Record the cut-over date so nobody "helpfully" bumps the constraint on a legacy app and triggers a cascade of unrelated major upgrades in the same PR.
If you write packages that depend on Samsa, treat your own constraint as a compatibility contract: "siberfx/samsa": "^1.3|^1.4" only if you genuinely support both platform generations. Otherwise declare ^1.4 and bump your own php/illuminate/* requirements in the same release — consumers hit the same atomic-upgrade wall you just did.
Align your test scaffolding with the package's own baseline. Development targets Orchestra Testbench 11 and PHPUnit 12. If you extend Samsa, ship test doubles for it, or run integration tests against it, mirror those versions. That usually means:
orchestra/testbench: ^11.0 and phpunit/phpunit: ^12.0 in require-dev#[DataProvider], #[Test], #[Group]) — PHPUnit 12 no longer reads the annotationsexpectDeprecation()-style and other removed APIsIntegration tip: add one cheap smoke test that dispatches a message through the bus and asserts the handler ran. It costs almost nothing, and it is the fastest signal that a Laravel 13 kernel/binding change has broken the wiring.
^1.4 down to 1.3.x on PHP 8.2 / Laravel 12 in some constraint shapes. After every composer update, verify with composer show siberfx/samsa that you actually got 1.4.x. composer why-not siberfx/samsa 1.4.0 is the fastest diagnostic.laravel/framework ^12 or php ~8.2, the whole upgrade stalls. Run composer why-not laravel/framework 13.0 before you start, not after.TestCase copied from an older package template, re-derive it from the current docs rather than patching it — getPackageProviders / getEnvironmentSetUp conventions and the default test directory have moved across major versions before.How can I help you explore Laravel packages today?