Settings Change History
Settings Change History
Full audit trail of every settings change — who, what, when, and from where
Back to Settings
{{-- Filter bar --}}
Change Type
Setting Key
User
From
To
Clear
{{-- Stats --}}
{{ $history->total() }}
Total Changes
{{ $stats['today'] ?? 0 }}
Today
{{ $stats['this_week'] ?? 0 }}
This Week
{{ $stats['unique_users'] ?? 0 }}
Users Active
@if($history->isEmpty())

No changes recorded yet. When settings are modified, the full audit trail appears here.

@else
@foreach($history as $entry) @php $type = $entry->change_type ?? 'update'; $badgeClass = match($type) { 'create' => 'badge-create', 'delete' => 'badge-delete', 'restore' => 'badge-restore', default => 'badge-update', }; $ctx = $entry->context ?? []; @endphp @endforeach
When Type Setting Key Changed By Old Value New Value Context
{{ $entry->changed_at?->format('d M Y H:i') ?? '—' }}
{{ $entry->changed_at?->diffForHumans() }}
@if($entry->changed_by_ip)
{{ $entry->changed_by_ip }}
@endif
{{ ucfirst($type) }} {{ $entry->setting?->key ?? '—' }} @if($entry->user)
{{ strtoupper(substr($entry->user->name, 0, 1)) }}
{{ $entry->user->name }}
{{ $entry->user->email }}
@else System @endif
@if(is_null($entry->old_value)) null @else
{{ is_array($entry->old_value) ? json_encode($entry->old_value, JSON_PRETTY_PRINT) : $entry->old_value }}
@endif
@if(is_null($entry->new_value)) null @else
{{ is_array($entry->new_value) ? json_encode($entry->new_value, JSON_PRETTY_PRINT) : $entry->new_value }}
@endif
@if(!empty($ctx))
@if(!empty($ctx['route']))
Route: {{ $ctx['route'] }}
@endif @if(!empty($ctx['method']))
Method: {{ $ctx['method'] }}
@endif @if(!empty($ctx['url']))
URL: {{ $ctx['url'] }}
@endif @if($entry->changed_by_user_agent)
{{ Str::limit($entry->changed_by_user_agent, 80) }}
@endif
@else @endif
@if($history->hasPages())
{{ $history->appends(request()->query())->links() }}
@endif @endif