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

Wn Easyaudit Plugin Laravel Package

luketowers/wn-easyaudit-plugin

Winter CMS plugin that integrates EasyAudit to automatically record an audit trail of model changes, tracking who created, updated, or deleted records with detailed old and new value diffs for easy review.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Revision note — v4.3.1 is a patch, not a reassessment trigger. The new release contains a single fix (PR #8, authored by the maintainer): honour trackable overrides registered as dynamic properties. No breaking changes, no deprecations, no new features, no new dependencies, no license change, no change to the platform target. The conclusion of the prior assessment stands. Two things in this release do carry signal for a TPM, and are folded in below: it resolves the "is the maintainer responsive" question in the affirmative, and it reveals that the tracked-attribute configuration surface can silently under-capture.

Architecture fit — the framing is still wrong, and that still matters. luketowers/wn-easyaudit-plugin is a Winter CMS plugin (Composer type winter-plugin), not a Laravel library. It cannot be composer required into a Laravel application and used as a service provider. Winter CMS is a Laravel-derived fork of October CMS, so the package sits downstream of Laravel; it targets Winter's plugin registration, backend controllers, and model behaviors. If our target is a plain Laravel/Symfony app, the architecture fit is effectively zero and the evaluation should stop here. If our target is Winter CMS, fit is good: it is purpose-built for the backend UI patterns Winter developers already use.

Integration feasibility. In a Winter project the mechanics are simple — drop into plugins/luketowers/easyaudit, run migrations, attach the audit behavior to models, get a backend viewer. Low effort if auditing is already instrumented. The real cost is upstream of the plugin: retrofitting audit capture onto existing models means schema decisions, backfill strategy for historical state, and per-save write amplification. Those costs are ours regardless of which plugin we pick. v4.3.1 adds one wrinkle: if we configure tracked attributes dynamically (rather than as a static $trackable property), we are depending on code that shipped a fix for that path only days ago — treat dynamic configuration as a less-travelled path and verify it explicitly rather than assuming it behaves like the static case.

Technical risk.

  • License is NOASSERTION. Still a hard gate, not a yellow flag. Nothing in this release addresses it. We cannot ship it into a commercial or regulated product without written clarification from the maintainer or a fork with a clean provenance story.
  • 17 stars, 0 dependents — unchanged. No independent validation, no downstream projects surfacing bugs, no ecosystem of patches.
  • The "new contributor" line is an artifact, not a signal. v4.3.1's notes list @LukeTowers as a "new contributor," but that is the maintainer. Read this release as one active maintainer shipping one small fix, not as a contributor base forming. Bus factor remains 1.
  • Audit data is sensitive by definition — actor identity, before/after record state, potentially PII. The viewer's authorization model (per-model? per-record? tenant-scoped?) is the security-critical surface and remains unverified.
  • Ecosystem risk: Winter CMS is a small niche and diverges from October CMS upstream. Plugin longevity is bounded by platform longevity.

What v4.3.1 changes in the risk picture. The fix means that, prior to this release, a trackable override registered as a dynamic property was not honoured — the plugin would audit a different attribute set than the integrator declared, without erroring. That is precisely our ranked failure mode #1 (silent non-capture) occurring in the wild, in the configuration layer. It has been fixed, which is good, but it tells us the configuration contract is loose enough to fail quietly, and it tells us the plugin's own tests did not catch it. Any spike must therefore assert the captured attribute set against the declared set, not merely observe that rows appear.

Key questions to resolve before any commitment.

  1. What auditing backend does it depend on — does it own the storage schema, or delegate to an existing audit/revisionable behavior? This determines lock-in and whether we can swap the viewer.
  2. Is access control enforced per-model and per-record, or is it "any backend admin sees everything"?
  3. Does it capture updates/deletes only, or reads as well? Retention and pruning story?
  4. Multi-site / multi-tenant scoping — does it respect Winter's site groups?
  5. Is the maintainer responsive? Answered: yes. One maintainer, but actively shipping (v4.3.0 → v4.3.1). Still open: is there a stated succession or maintenance commitment, and what is the realistic cadence?
  6. Which Winter and PHP versions are actually tested? Use v4.3.1 to sanity-check the tag history and confirm the earlier 2026-09-06 last-release date was a metadata artifact, not reality.
  7. License: can we get an explicit OSI license, or do we treat this as source-available reference only?
  8. New: how are trackable attributes configured in our intended design — static property or dynamic? If dynamic, is there test coverage we can point to, and does the captured set match intent on every instrumented model?

Integration Approach

Stack fit. Only adopt if Winter CMS is the platform. If we are on plain Laravel, the correct decision is owen-it/laravel-auditing plus a viewer built in our admin stack (Filament/Nova) — we get the same capability with a maintained dependency and a license we can defend. This plugin's value in that scenario is as a design reference for the viewer UX, nothing more.

Migration path. Treat it as vendored project code, not a dependency: pin to a specific commit — now v4.3.1, since it fixes a silent-under-capture bug we would otherwise have to patch ourselves — mirror into our own org-controlled fork, and record the license clarification alongside it. Because audit tables are append-heavy and painful to reshape after the fact, decide the schema and partitioning approach before the first production write, not after.

Compatibility. Verify Winter major version, PHP version, and DB JSON column support before spiking. Check for conflicts with Winter's built-in revisionable behavior and any other auditable plugin — double-instrumentation means duplicate rows and doubled write cost. If we run October CMS rather than Winter, assume adaptation work; do not assume drop-in. Note that v4.3.1 is a behavioural change on the configuration path: if we had prototyped against v4.3.0, re-baseline the spike rather than assuming identical results.

Sequencing.

  1. Legal/license gate — blocking, unchanged, still first.
  2. Timeboxed spike in a disposable Winter install on v4.3.1: install, instrument one model with both static and dynamic trackable configuration, and diff the captured attribute sets.
  3. Security review of the backend controller and permission checks.
  4. Instrument a single low-risk model in staging; measure write overhead and row growth.
  5. Validate viewer query performance and define retention/archival.
  6. Roll out to compliance-relevant models only after 4–5 pass.

Operational Impact

Maintenance. With one maintainer, low activity, and zero dependents, we should plan on being the maintainer. v4.3.1 is evidence the upstream is alive — one fix, maintainer-authored — which is better than a frozen repo but does not change the fork-and-own posture. Budget for periodic upstream diff review, our own patch queue, and a named internal owner. The alternative — consuming upstream passively — is not viable for a component that produces audit evidence.

Support. No vendor support, community forum at best. Incident response for "audit log is wrong/missing/inaccessible" lands entirely on our team. Because audit logs are frequently the artifact you hand to an auditor or use in a security investigation, the support gap is disproportionate to the code's size. The class of bug fixed in v4.3.1 — a quietly wrong attribute set — is exactly the kind of issue that arrives as a support ticket months later, from an auditor rather than a user.

Scaling. Audit tables grow monotonically and roughly proportional to write volume on instrumented models — often the fastest-growing table in the database. Plan partitioning or archival and a deliberate index review up front; the viewer's list/filter queries will degrade first. Expect measurable per-save overhead on the write path for models with large attribute sets.

Failure modes, ranked by severity.

  1. Silent non-capture. The audit behavior stops firing (upgrade, config drift, a saveQuietly path, an unhonoured dynamic trackable override) and we keep believing we have coverage. This is the worst outcome — false compliance confidence. v4.3.1 is a live example of this class; assume others exist. Mitigate with a synthetic write canary, an alert on missing expected audit rows, and a test that asserts the captured attribute set equals the declared set.
  2. Authorization bypass in the viewer exposing cross-tenant or cross-record history.
  3. Schema drift on a Winter upgrade, breaking inserts or the viewer.
  4. Unbounded growth degrading the primary application database.
  5. Abandonment — maintainer disappears, no successor, we inherit a frozen fork. Slightly de-risked by recent activity; not resolved.

Ramp-up. Low for a Winter-fluent engineer (install in hours, instrument in days). High for anyone expecting Laravel idioms — the plugin's extension points are Winter backend patterns, not Laravel package conventions, and that mismatch will mislead estimates. The genuinely expensive ramp is auditing-domain design (what to capture, retention, who can see it), which the plugin does not solve.

Decision guidance. v4.3.1 does not move the score: still ~18.7/100, still a reference implementation rather than an adopted dependency. The license gate and the bus factor dominate, and neither changed. What changed is two facts worth carrying: the maintainer is responsive enough to ship fixes (one open question closed), and the configuration layer has demonstrated the ability to under-capture silently (one risk concretely evidenced). Recommend: pin any exploratory work to v4.3.1, read the source for viewer/UX patterns, then either fork with explicit license and ownership, or build the equivalent on owen-it/laravel-auditing inside our own Winter plugin. Do not take a production dependency on it as-is.

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.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums