katsana/minions
Katsana Minions is a lightweight Laravel package for defining and running small, reusable tasks with a clean, expressive API. It plugs into Laravel's container and configuration, helping keep worker-style code organized, testable, and easy to maintain in any PHP project.
composer.json illuminate/* constraint now allows ^8.0; if you were pinned below it, composer update will pull v2.6.2 in automatically under normal caret constraints (^2.6).composer require and, if the package ships one, publish its assets: php artisan vendor:publish --provider="...\ServiceProvider" (check config/ for the generated file first — many Laravel packages register config with mergeConfigFrom and only need publishing when you actually override defaults).README.md → the package's composer.json (tells you the Laravel/PHP constraints and required extensions) → config/<package>.php (the real surface area of knobs) → src/ServiceProvider.php (shows what gets bound, aliased, and tagged).php artisan tinker before wiring it into a controller. If you can't get a one-liner working in tinker, the problem is configuration, not your application code.extra.laravel.providers in its composer.json). Laravel 8 still auto-discovers, so manual registration in config/app.php usually means you're following stale docs.new. Type-hint the package's contract/manager in constructors or method signatures so Laravel injects the configured instance. Instantiating directly bypasses config and any singleton binding the provider registered.config/<package>.php in your app (published) or env()-backed keys, rather than subclassing internals. If you must change behaviour, look for a documented extension point (custom driver, resolver closure, or bound interface swap) before touching vendor/.Manager with extend() for custom drivers. Use Package::extend('custom', fn ($app) => new CustomDriver(...)) in a dedicated service provider rather than editing config to point at a class string, so you keep type safety and IDE support.ShouldQueue and whether the connection/queue is configurable. In multi-tenant or multi-connection apps, set the connection explicitly per-tenant rather than relying on the global default.setUp(). For Laravel 8, Http::fake(), Queue::fake(), and Event::fake() are the usual levers if the package wraps those concerns; assert on the package's public contract rather than on internals.^2.6.2 and let CI prove the matrix (your app's Laravel version × PHP version) rather than hand-testing.composer update, so run it in CI before local, and diff composer.lock to see what else moved.laravel/legacy-factories, string-based model factories, and the Str/Arr changes are the usual blockers.composer why-not is your first debugging step when the update refuses: composer why-not vendor/package 2.6.2 names the exact package pinning an incompatible constraint.php artisan config:clear (or config:cache in deploy). A stale bootstrap/cache/config.php is the single most common "my config change did nothing" cause.vendor/. If the package lacks an extension point for what you need, publish and override the config first, then swap a bound interface in a service provider, then open an upstream issue. Patches to vendor/ vanish on the next composer install.How can I help you explore Laravel packages today?