bokshorn-it/filament-activity-timeline
A Filament plugin that turns spatie/laravel-activitylog into readable timelines: enum, date, boolean, and relationship diffs rendered through the subject model's own casts, plus a filterable activity resource, custom events, and German translations.
Polymorphic foreign keys resolve to the record they point at.
A morph column needs two values to be read - notable_type says which model, notable_id says which row - and the formatter only ever saw one at a time, so it printed the bare id. It now formats each side of a change against the rest of that side, which is where the type sits. No configuration: the pair is taken from the relationship itself, so any MorphTo following Laravel's own conventions resolves.
ChangeFormatter::formatValue() takes the surrounding values as an optional fourth argument; calling it with three behaves as beforeModels can now render their own logged values.
A diff resolves what the schema tells it, which leaves the columns whose meaning only the application knows: total_cents printed as 2200 rather than 22,00 EUR, a decimal:3 quantity as "1.000", a custom date cast as a raw ISO string. Implement the new ProvidesActivityValues contract and the model answers for the columns it knows, returning null for the rest.
Contracts\ProvidesActivityValues, consulted before the formatter's own cast handling and after empty values and booleans are settledSupport for spatie/laravel-activitylog v5 alongside v4 (#1).
v5 moved the before/after values out of properties into their own attribute_changes column. The plugin now reads whichever the installed version writes, so timelines, diffs and restore behave the same on both. Nothing to change in your app: the constraint widens to ^4.12|^5.0 and v4 stays supported.
Support\ActivityChanges, covering both storage shapes - and a custom activity model that forgot the castNo changes to the shipped code.
workbench/, runnable with composer serveInitial release.
withRelations() and a configurable entry limitProvidesActivityTitle contract naming a model as subject, causer and foreign-key target->restorable()->modifyQueryUsing() scope applied to both the resource and every timeline->subjectLabelNamespace()How can I help you explore Laravel packages today?