is_active, 404); $playlist = $display->livePlaylist()->withCount('modules')->first(); abort_if($playlist === null || $playlist->modules_count === 0, 404); // Der Player liest die ID aus dem Pfad (/display/{id}) und holt sich die Konfiguration // über die öffentliche Route /api/display/{display}/config – dieselbe Quelle wie das // physische Display. Keine doppelte Pflege. return response()->file(public_path('_cabinet/display/index.html'), [ 'Cache-Control' => 'no-cache, must-revalidate', 'X-Robots-Tag' => 'noindex', ]); } }