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

Filament Record Settings Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  • Authorization defect in 1.0.0 (security-adjacent). "The 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.
  • Silent-failure default. The README now documents "no-policy behaviour," implying settings writes can proceed without a registered policy. Convenient for prototypes, hazardous in production if the default is permissive. This is the single item most likely to cause a real incident.

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.

  1. What is the exact "no-policy" default — deny, allow, or throw? Is it configurable and is it loud?
  2. Was the 1.0.0 policy-drop exploitable in any documented configuration, and is there a CVE/advisory?
  3. Supported Laravel and PHP version matrix? glorand/laravel-model-settings version constraint and its own maintenance status?
  4. Is settings data cached, and is cache invalidation handled on recordSetting()?
  5. Maintainer count, release cadence, test coverage, and whether 1.0.1 is the first public release or a stabilisation of an existing one.
  6. Does --force overwrite previously published (and possibly customised) config/migrations without confirmation?

Integration Approach

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.

  1. Install and publish config/migrations in a non-production environment; inspect published files before running --force anywhere that already has authored config.
  2. Define the settings class and the updateSettings action; register the policy first, before any UI is wired.
  3. Explicitly decide and document the no-policy posture — override the default if it is permissive.
  4. Integrate the create/edit form, verifying that validation errors land under the correct fields (the 1.0.1 fix) and that array-key settings round-trip.
  5. Add authorization and validation regression tests, then promote.

Operational Impact

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.

  • Permissive no-policy default → unauthorized settings writes with no error. Highest-severity risk; mitigate by explicit policy registration and a test.
  • Policy shadowing → the defect fixed in 1.0.1; any 1.0.0 deployment may have been silently unprotected.
  • Validation key drift → errors attached to the wrong field or not surfaced; fixed in 1.0.1, but custom field naming may still break the mapping.
  • --force overwriting local customisations → unrecoverable config loss if run against an already-published and hand-edited config.
  • Dependency drift → a 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.

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.
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox