armincms/input-select
A Laravel package providing a customizable select input component for forms and admin interfaces. Integrate searchable, styled select fields into your PHP applications with minimal setup and a simple, reusable API.
Version 0.1.0 is the first public release, so treat this as an evaluation-grade dependency rather than something to build on. There's no upgrade history, no deprecation policy, and almost certainly no backwards-compatibility guarantee yet. The goal for the first week is not "integrate it" but "find out what it actually does and how easily it can be removed."
Where to look first, in order:
composer.json — check require for the PHP and illuminate/* constraints. A 0.1.0 package is often tested against a single Laravel version; if yours isn't in that range you're on your own.src/ — this is the real table of contents. It tells you what's bound in the container, what's published, what commands and facades exist.README.md — usually the only documentation at this stage. Assume it's aspirational until you've run the code.tests/ — if there are none, drop your expectations accordingly and budget time for your own integration tests.CHANGELOG.md / tags — confirms 0.1.0 is genuinely the first tag and not a reset.Minimal adoption steps:
# Pin exactly for the evaluation; do not use a caret range yet
composer require vendor/package:0.1.0
# If the provider isn't auto-discovered, register it manually
php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider"
php artisan package:discover
Then verify the wiring before writing any application code:
// tinker
app()->bound(Vendor\Package\SomeContract::class); // adjust to the real binding
First use case: pick a single, non-critical, read-mostly path — a report, a console command, an admin-only screen. Do not put it behind a customer-facing request or inside a queued job that can't be safely re-run until you've seen it behave under load and failure.
Wrap it in your own boundary. This is the single most valuable pattern for a pre-1.0 dependency. Define an interface in your app, implement it with the package, and bind it in a service provider. When 0.2.0 renames a method, you change one adapter class instead of forty call sites.
// app/Contracts/ThingClient.php
interface ThingClient { public function fetch(string $id): array; }
// app/Adapters/PackageThingClient.php
final class PackageThingClient implements ThingClient { /* delegates to the package */ }
// AppServiceProvider
$this->app->bind(ThingClient::class, PackageThingClient::class);
Pin and lock. Use an exact version (0.1.0, not ^0.1 — though ^0.1 at least confines you to 0.1.x). Commit composer.lock. Treat every bump as a code review of the diff, not a routine composer update.
Gate it behind config. Add your own flag so the feature can be switched off without a deploy-time code change:
// config/services.php or a dedicated config file
'package_enabled' => env('PACKAGE_ENABLED', false),
Resolve the real implementation or a null/no-op implementation based on that flag.
Isolate in the container. Depend on interfaces and constructor injection rather than facades or app() calls. If the package ships a facade, use it sparingly — facades make it harder to see where the coupling lives, and harder to swap later.
Test doubles. If the package ships a fake or an in-memory driver, use it in tests. If not, your own adapter interface is the test double — that's another reason to have one.
CI matrix. Because 0.1.0 likely has narrow test coverage, run your own suite against the Laravel and PHP versions you actually deploy on. Pin the package version in CI so an unexpected resolution doesn't change your build.
Keep the blast radius small. Avoid using it in database migrations, one-shot data fixes, or anything that can't be re-executed. Early releases are where you find the edge cases that corrupt state.
0.x minor bumps may break. A 0.2.0 can be a rewrite. Assume it will be.extra.laravel.providers in the package's composer.json. If it's missing, register the provider manually in bootstrap/providers.php (Laravel 11+) or config/app.php.php artisan vendor:publish interactively to see what tags actually exist rather than trusting the README. Then run php artisan config:clear — a stale cached config is the most common "it worked yesterday" cause.git diff 0.1.0..0.1.1 in the vendor repo is your only reliable upgrade guide.php artisan about for the discovered-package list, php artisan package:discover -v if the provider isn't loading, and a quick app()->bound(...) check in tinker before assuming an autoload problem.RuntimeExceptions. Catch and re-wrap at your adapter boundary so callers see your domain's error types.How can I help you explore Laravel packages today?