@extends('layouts.nova') @php $discoverBreadcrumbs = collect([ (object) ['name' => 'Discover', 'url' => '/discover/trending'], (object) ['name' => 'For You', 'url' => '/discover/for-you'], ]); @endphp @section('content') @include('web.discover._nav', ['section' => 'for-you']) @php $cacheTone = match ($feed_meta['cache_status'] ?? null) { 'hit' => 'text-emerald-200 ring-emerald-400/30 bg-emerald-500/12', 'stale' => 'text-amber-200 ring-amber-400/30 bg-amber-500/12', default => 'text-sky-100 ring-sky-300/30 bg-sky-500/12', }; $generatedAt = !empty($feed_meta['generated_at']) ? \Illuminate\Support\Carbon::parse($feed_meta['generated_at'])->diffForHumans() : null; @endphp

Personalized discovery

This feed now runs on the same recommendation engine as the API, so your views and clicks on this page can refine what shows up next.

Model {{ $feed_meta['algo_version'] ?? 'n/a' }} Cache {{ str_replace(['-', '_'], ' ', $feed_meta['cache_status'] ?? 'unknown') }} @if (!empty($feed_meta['total_candidates'])) Candidates {{ number_format((int) $feed_meta['total_candidates']) }} @endif @if ($generatedAt) Refreshed {{ $generatedAt }} @endif
{{-- ── Artwork grid (React MasonryGallery) ── --}} @php $galleryArtworks = $artworks->map(fn ($art) => [ 'id' => $art->id, 'name' => $art->name ?? null, 'thumb' => $art->thumb_url ?? null, 'thumb_srcset' => $art->thumb_srcset ?? null, 'uname' => $art->uname ?? '', 'username' => $art->username ?? '', 'avatar_url' => $art->avatar_url ?? null, 'published_at' => $art->published_at ?? null, 'content_type_name' => $art->content_type_name ?? '', 'category_name' => $art->category_name ?? '', 'category_slug' => $art->category_slug ?? '', 'slug' => $art->slug ?? '', 'url' => $art->url ?? null, 'width' => $art->width ?? null, 'height' => $art->height ?? null, 'recommendation_source' => $art->recommendation_source ?? 'mixed', 'recommendation_reason' => $art->recommendation_reason ?? 'Picked for you', 'recommendation_score' => $art->recommendation_score, 'recommendation_algo_version' => $art->recommendation_algo_version ?? ($feed_meta['algo_version'] ?? null), ])->values(); @endphp
@endsection @push('styles') @endpush @push('scripts') @vite('resources/js/entry-masonry-gallery.jsx') @endpush