amjadiqbal/filament-record-settings
A Laravel/Filament package for managing settings tied to individual records. It lets you store and edit per-record preferences directly in Filament, making it easy to add customizable, record-specific settings to admin panels and resources.
Assessment basis: this evaluation is derived solely from the v1.0.1 release note. No source review, version matrix, or prior assessment exists. Confidence is therefore low-to-moderate and every claim below should be re-validated against the repository before a build/buy decision.
Architecture fit. The package is a Laravel-native settings layer: an action class (updateSettings) with a policy gate, a recordSetting() write path with per-field validation, and an artisan publish command exposing --force. This is idiomatic Laravel (action + policy + form-request-style validation) and should slot into a conventional Laravel app without architectural contortion. It is a feature package, not infrastructure — it will not reshape the app, which keeps the blast radius of adoption small and reversible.
Integration feasibility. High. The surface implied by the notes — publishable config/migrations, a policy to register, a settings class to define, and a documented "no-policy" default — is standard Laravel package wiring. The presence of documented "create vs edit filling" semantics and array-key handling suggests the author has thought about real form-integration cases rather than only the happy path.
Technical risk. Two items carry weight:
updateSettings policy check now survives your own ->authorize()" describes a lost authorization check when a developer added their own ->authorize() call in the controller. That is a potential privilege-bypass on a write path, not a cosmetic bug. Anyone on 1.0.0 must treat 1.0.1 as a mandatory upgrade, and any audit of 1.0.0 usage should assume the package's policy gate was unreliable.Secondary: the field-level validation fix (glorand $settingsRules failures now surface under the correct field) indicates the validation-to-form error mapping was wrong — a UX defect, not a data-integrity one.
Key questions.
glorand/laravel-model-settings version constraint and its own maintenance status?recordSetting()?--force overwrite previously published (and possibly customised) config/migrations without confirmation?Stack fit. Assumes a current Laravel application with standard policy/action conventions and an Eloquent-backed settings store via the glorand dependency. Because it depends on a third-party settings model package, adoption imports that package's constraints and lifecycle as well — evaluate them together, not separately.
Migration path. Greenfield adoption is straightforward. For anyone already on 1.0.0, the path is a patch bump with no breaking changes: bump the constraint, re-run the test suite, and specifically add an authorization regression test covering the "custom ->authorize() plus package action" path — that is the scenario that was broken and it will not be covered by default tests.
Compatibility. Pin deliberately. A 24-hour-old patch release on a 1.0.x line has a narrow real-world exposure window; treat 1.0.1 as the floor for any new adoption, but do not assume broad production hardening. Confirm the Laravel major versions and PHP floor before committing, and verify the glorand version the package expects rather than letting Composer resolve freely.
Sequencing.
--force anywhere that already has authored config.updateSettings action; register the policy first, before any UI is wired.Maintenance. Low ongoing cost: a narrow feature surface, semver-respecting patch release, and a maintained CHANGELOG. The main maintenance obligation is the transitive glorand dependency — its releases, not this package's, are the likely source of future breakage. Budget for tracking both.
Support. The v1.0.1 release is documentation-heavy (defaults ordering, glorand defaults, create-vs-edit filling, array keys, no-policy behaviour, --force), which is a genuinely positive signal — it suggests the author is responding to real integrator confusion and closing documentation gaps rather than shipping features. Still, there is no evidence of a support channel, SLA, or maintainer depth; treat support as best-effort.
Scaling. Unverified. The risk pattern for settings packages is per-record reads on hot paths and N+1 queries when many recordSetting() fields resolve on one request. Confirm caching behaviour and cache invalidation before adopting on a high-traffic surface. Settings are typically low-write/high-read, so this is usually manageable — but it must be measured, not assumed.
Failure modes.
--force overwriting local customisations → unrecoverable config loss if run against an already-published and hand-edited config.glorand major bump breaking the rules integration.Ramp-up. Low for a Laravel-fluent engineer — the action/policy/validation vocabulary is native. The non-obvious learning is the settings-resolution model: defaults ordering, glorand defaults precedence, create-versus-edit filling, and array-key semantics. The 1.0.1 README now covers exactly these, which shortens onboarding materially; expect roughly half a day for a competent Laravel developer to reach productive use, plus test-writing time for the authorization paths.
Recommendation. Adopt at 1.0.1 (never 1.0.0), contingent on resolving the no-policy default and confirming the Laravel/glorand version matrix. Re-assess to a higher confidence tier once source and version constraints have been reviewed.
How can I help you explore Laravel packages today?