@php $platformMeta = \App\Services\UserDashboardMetrics::PLATFORM_META; $chip = function (string $key) use ($platformMeta) { [$label, $color, $short] = $platformMeta[$key] ?? [ucfirst($key), '#64748b', strtoupper(substr($key, 0, 2))]; return compact('label', 'color', 'short'); }; $statusChip = [ 'waiting' => 'bg-slate-500/15 text-slate-400', 'publishing' => 'bg-blue-500/15 text-blue-400', 'published' => 'bg-green-500/15 text-green-400', 'failed' => 'bg-red-500/15 text-red-400', ]; $pending = $counts['waiting'] + $counts['publishing'] + $counts['failed']; $dayTotal = max(1, $publishedToday + $pending); $seg = fn (int $n) => round($n / $dayTotal * 100, 1); @endphp
{{-- Title row --}}

Queue

Publishing jobs synced from your desktop app.

@if ($counts['failed'] > 0) @endif
{{-- Desktop-report banner when the mirror is empty but the app reports jobs --}} @if ($counts['all'] === 0 && ($usage->queue ?? 0) > 0)
Your desktop app reports {{ number_format($usage->queue) }} {{ \Illuminate\Support\Str::plural('job', $usage->queue) }} in queue — the detailed list appears once it syncs job data.
@endif {{-- KPI strip + progress --}}
{{ number_format($counts['publishing']) }}
Publishing now
{{ number_format($counts['waiting']) }}
Waiting
{{ number_format($publishedToday) }}
Published today
{{ number_format($counts['failed']) }}
Failed
@if ($counts['all'] > 0)
Today's progress {{ number_format($publishedToday) }} of {{ number_format($publishedToday + $pending) }} done
@if ($publishedToday)
@endif @if ($counts['publishing'])
@endif @if ($counts['waiting'])
@endif @if ($counts['failed'])
@endif
@endif
{{-- List --}}
{{-- Toolbar --}}
@foreach (['all' => 'All', 'waiting' => 'Waiting', 'publishing' => 'Publishing', 'failed' => 'Failed', 'published' => 'Published'] as $key => $label) @endforeach
@if ($rows->count())
@foreach ($rows as $item) @php($p = $chip($item->platform))
{{-- Platform chip --}} {{ $p['short'] }} {{-- Title + meta --}}
{{ $item->title }}
{{ $p['label'] }} @if ($item->automation) ·{{ $item->automation->name }} @endif @if ($item->status === 'published' && $item->published_at) ·published {{ $item->published_at->diffForHumans() }} @elseif ($item->scheduled_for) ·scheduled {{ $item->scheduled_for->format('M j, g:i A') }} @endif @if ($item->attempts > 1) ·attempt {{ $item->attempts }} @endif
@if ($item->status === 'failed' && $item->error)
{{ $item->error }}
@endif
{{-- Status --}} @if ($item->status === 'publishing')@endif {{ ucfirst($item->status) }} {{-- Actions --}}
@if ($item->status === 'failed') @endif @if (in_array($item->status, ['waiting', 'failed'])) @endif
@endforeach
@if ($rows->hasPages())
{{ $rows->links('pagination.dark') }}
@endif @else
@if ($counts['all'] === 0)

Queue is empty

Jobs appear here as your automations queue posts in the desktop app.

View automations @else

Nothing matches

No jobs match your search or filter.

@endif
@endif

The queue mirrors your desktop app and refreshes on each sync. Retries and removals here apply on the app's next sync.