mominalzaraa/filament-composer-release-notifier
A Filament plugin that keeps you informed about new Composer package releases. It checks installed dependencies for available updates and surfaces release notifications directly in the admin panel, helping you stay current without leaving Filament.
What it is. A Filament panel plugin that reads composer.json / composer.lock, compares the declared/installed versions of each package against upstream releases (GitHub releases, with Packagist referenced in the description), caches the comparison, and surfaces the result through a dashboard widget and a Filament resource, with an optional emailed summary. It is explicitly informational only — it does not run composer update and cannot mutate the application's dependency graph.
Architecture fit. The package is a read-only observer bolted onto the Filament panel layer. It introduces no service-provider side effects beyond panel registration, no migrations of consequence (results land in Laravel's cache store), and no write path into composer.json/.lock. That makes its architectural blast radius unusually small for a plugin of this class: worst case it renders a broken widget or sends an unwanted email; it cannot corrupt the dependency state of the host application. For teams running Filament administrative panels, this is a clean fit — the widget lands exactly where operations/engineering users already look.
Integration feasibility. Low technical difficulty, provided three preconditions hold: (1) the host panel is Filament 3.x or 4.x and the plugin's constraint matches the installed major; (2) outbound HTTPS to the GitHub API (and Packagist, if used) is permitted from every environment where the widget or scheduled report runs, not just production; (3) an authenticated GitHub token is available — unauthenticated GitHub API allows 60 requests/hour, which a lock file of 60–120 packages exhausts in a single refresh cycle. Caching is the mitigation, but the first cold run is the risk window.
Technical risk.
dev-* branches, @dev / @beta stability flags, branch aliases, forks, replace/provide packages, and tagged releases that don't correspond to Packagist versions. Each false positive becomes an alert a human has to dismiss, which erodes trust in the widget faster than a genuine miss would.graft) — useful for contributors navigating the code, not for an adopter trying to configure a GitHub token or schedule the report. A TPM should assume the team will read source to answer configuration questions, and budget accordingly.Key questions for the maintainer.
Stack fit. Laravel 10–12 with Filament 3.x/4.x is the assumed target; confirm the exact constraints from composer.json before committing. The package is additive — installation is a composer require plus plugin registration in the relevant panel provider. No application code changes, no database migrations owned by the host, no changes to the build pipeline.
Migration path. There is nothing to migrate from; this replaces either an ad hoc spreadsheet/checklist or a manually run composer outdated ritual. The honest framing for stakeholders: this is a visibility layer over composer outdated and GitHub release feeds, not a replacement for dependency management. Keep the existing renewal process in place and use the widget as an early-warning surface.
Compatibility. Gate on three axes before rollout: Filament major version match; PHP constraint satisfaction; and GitHub token availability in each environment. Filament's panel provider registration is the single integration point and is easy to scope to one panel — recommend introducing it to an internal/admin panel only, not a customer-facing one.
Sequencing.
composer.lock, and observe the cold-cache behavior with and without a token. This single step answers most of the open questions above.composer outdated for one project. Quantify false positives. If the false-positive rate exceeds roughly 10–15%, treat the widget as "needs attention" rather than "outdated."Maintenance. Bus factor is one. The package is small, MIT-licensed, and dependency-light, so the realistic maintenance plan is: pin the version, vendor the source into the repo or an internal fork, and accept ownership of patches. Upgrades should be triggered by Filament major bumps, not by plugin releases. Total ongoing effort is low — measured in hours per quarter, not days.
Support. No user-facing documentation in the supplied materials. Internal support burden concentrates on two recurring questions: "why is package X flagged" (version-mapping false positive) and "why did the report not arrive" (token/rate-limit/mail). Both are answerable from source but will be re-asked; write a one-page internal runbook after the spike covering token setup, cache clearing, and known-unmappable packages. The repository's graft context-graph tooling is a genuine accelerant for whoever writes that runbook or patches the package — it makes the fork-and-fix path cheap for engineers already using agentic tooling, and is worth noting as an unusual but real onboarding asset.
Scaling. Cost scales as projects × packages, multiplied by refresh frequency, divided by cache TTL. The dominant constraint is the GitHub API budget, not CPU or storage. For a handful of projects this is trivial; at dozens of projects with large lock files, a shared token will hit limits and reports will silently go stale. Mitigations, in order of preference: lengthen the TTL, stagger schedules across projects, use a dedicated token per environment, and only then consider centralizing into one job that fans out.
Failure modes to plan for.
Ramp-up. Half a day for an engineer to install and see a widget; roughly one to two days to validate accuracy, harden config, and write the runbook. No training program is required — the artifact is self-explanatory once it renders. The stakeholder-facing caveat is the one worth stating explicitly in the rollout note: this tool tells you that a newer version exists, and nothing about whether upgrading is safe, compatible, or advisable. Positioning it as an awareness signal rather than a dependency-management solution is the difference between a useful dashboard and a source of unactioned noise.
How can I help you explore Laravel packages today?