Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Filament Maintenance Laravel Package

brickx/laravel-filament-maintenance

A Filament plugin for managing Laravel maintenance mode from your admin panel. Toggle maintenance on or off, customize the page shown to visitors, and control access without editing config files or running artisan commands.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Unchanged. The package remains a thin UI surface over Laravel's native maintenance mode (php artisan down / up), registered as a Filament plugin with a page or action inside the admin panel. No migrations, no service overrides, no event hooks. Blast radius stays small and the package remains removable without data remediation.

Integration feasibility. Mechanically trivial: composer require, register the plugin in a PanelProvider, optionally publish config/views. The 1.1.2 release adds a refresh option (PR #6) — presumably surfacing Laravel's --refresh flag so the maintenance page auto-refreshes after N seconds. This is additive and non-breaking at the patch level, but it tells us two useful things: the package now passes at least one more of Laravel's native down options through, and it is not fully inert — a community PR was merged. Neither changes the version-adjacency constraint: the plugin binds to Filament's page/plugin contracts, which have churned across v2 → v3 → v4, and nothing in these notes indicates a Filament compatibility statement or a tested-against matrix.

Technical risk. The dominant concerns from the prior assessment survive intact; 1.1.2 does not touch any of them.

  • Maintenance status. Still effectively unmaintained. One merged contributor PR with a patch bump is a sign of life, not a maintenance commitment — no security policy, no triage cadence, no stated support window, no dependency-bump activity. Treat "archived" as "unmaintained with occasional drive-by activity."
  • Zero dependents and low stars. Unchanged. Still no meaningful production validation; we would be the first serious adopter.
  • Privilege surface. Unchanged and still the top risk. A maintenance toggle is a denial-of-service button. Nothing in the release notes indicates a policy/gate requirement, a confirmation step, or audit logging. Assume they are absent until the source says otherwise.
  • Bypass-secret handling. Unchanged. No evidence the release addresses secret exposure in URLs, logs, or browser history.
  • File-based state. Unchanged, and the refresh option is mildly clarifying here: refresh is written into the node-local maintenance payload, so the new feature inherits the same node-local semantics. It does not imply, and should not be read as, any move toward shared state across a fleet.
  • New, minor: the refresh option adds a small configuration surface. The value should be validated (a sane integer, not an arbitrary string injected into the rendered page), and operators should understand that an auto-refreshing maintenance page can mask a partial outage by looking "intentional" to users on nodes that are actually healthy or unhealthy in inconsistent ways.

Key questions. Largely unchanged, with one partially answered:

  • Does it expose secret, retry, status, redirect, and render options, or only a boolean? Partially answered — refresh is now exposed. Still unknown for secret, retry, status, redirect, render.
  • New: how is the refresh value validated, and is it written to the maintenance file or passed at invocation?
  • Still open: which Filament and Laravel versions are supported, and is it the plugin contract or a hardcoded page? Artisan::call() or direct file manipulation? Policy/gate gating? Audit trail? Multi-node handling?

Integration Approach

Stack fit. Unchanged. Appropriate only for teams already running Filament as their operational console; disproportionate for anyone else. The new refresh option makes the package marginally more usable for planned-deploy messaging, which is the main scenario where it earns its keep — but it does not change the fit calculus.

Migration path. Recommendation stands: absorb, don't adopt. The functional core remains roughly one Filament page calling Artisan::call('down', [...]) / Artisan::call('up'), plus a policy check, a confirmation modal, and now a refresh argument. Reimplementing in-house takes hours, drops an unmaintained dependency, and lets us add authorization, audit logging, and multi-node handling that the package still lacks. If we evaluate anyway, install into a disposable panel, read the source, and use it as a reference implementation — 1.1.2 is worth reading specifically to see how it plumbs the refresh value through.

Compatibility. Unchanged: pin the Filament major in composer.json and re-test the toggle page on any Filament upgrade. 1.1.2 is a patch-level, additive change with no deprecations or breaking changes, so it does not itself require a migration step or a re-test. Do not infer from a patch release that current Filament majors are supported.

Sequencing. (1) Read the source, including the new refresh path, and confirm authorization and secret-handling behavior. (2) Decide fork vs. rebuild — still lean rebuild. (3) Implement with a gate, confirmation step, and audit log entry. (4) Decide the state mechanism: native file-based for single-node, shared cache/flag for multi-node. (5) Ship behind a feature flag and rehearse a toggle in staging before enabling in production. The refresh option, if we replicate it, should be included in step 3 rather than bolted on later, since it is part of the operator-facing UX during an outage.

Operational Impact

Maintenance. Unchanged in substance. Maintenance cost is still ~100% ours. The 1.1.2 release is a data point that the project is not entirely dormant, but a single contributor PR is not something to build a dependency policy on — do not let it reset the "unmaintained" clock or defer the build-vs-fork decision. Every Filament major bump still requires touching plugin registration and the page contract.

Support. No vendor, no stated support commitment, no issue-response expectation. Internal documentation remains mandatory. The code is small enough to fully understand in an afternoon, which keeps the support burden low regardless of upstream activity.

Scaling. Unchanged and still the sharpest edge. Native maintenance mode is file-based and node-local; the new refresh option is a presentation concern layered on that same node-local state and provides no cross-node coordination. On a single VM it behaves correctly; on a load-balanced or autoscaling fleet, a toggle darkens only the node that served the request — now with the added wrinkle that the refresh page will cheerfully promise a return that the other nodes never left. Flag before adoption, not after the first partial outage.

Failure modes. Prior list stands, with one addition and one refinement:

  • Orphaned maintenance file: crashed deploy or failed up leaves the app dark; needs a documented manual escape hatch and alerting.
  • Unauthorized toggle: no evidence of policy gating; any panel user with page access can cause an outage.
  • Bypass secret leakage: token exposed in URLs, logs, or browser history.
  • Accidental activation: no confirmation step, no audit trail, no rollback.
  • Admin lockout: if the toggle is reachable only from inside the panel it darkens, reversal requires shell access. Self-inflicted lockout pattern; design around it.
  • Filament upgrade breakage: silent page registration failure after a major bump.
  • New — misleading refresh messaging: an auto-refreshing maintenance page presents a uniform "we're coming back" experience that can obscure inconsistent per-node state and delay detection of a partial outage. Pair with external uptime checks rather than relying on the page itself.

Ramp-up. Unchanged: under a day for a Filament-familiar engineer to read, fork, and harden. The risk remains the temptation to deploy as-is because installation is easy — and a fresh patch release tends to increase that temptation by signaling activity. TPM recommendation holds: treat this as a design reference, build the ~100 lines internally, and decide authorization, confirmation, audit logging, refresh behavior, and multi-node strategy up front.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core