' +
esc(ep.title || 'Untitled') + '' +
(meta.length ? '' + esc(meta.join(' · ')) + '' : '') + '
' +
@@ -1743,8 +1744,8 @@
var thumb = v.thumbnail_url
? '
) + ')
' : '';
return '
' +
- '
' + thumb + '▶' +
+ '
' +
+ thumb + '▶
' +
'
' + esc(v.title || 'Untitled') + '
' +
ytWishBtn(v.youtube_id, v.wished, true) + '
';
}
@@ -1820,6 +1821,8 @@
}
// YouTube channel interactions (rendered in the show container)
if (e.target.closest('[data-vd-ext]')) return; // let watch links open
+ var ytPlay = e.target.closest('[data-vd-yt-play]'); // play the video inline (reuses the trailer player)
+ if (ytPlay && r.contains(ytPlay)) { e.preventDefault(); openTrailer(ytPlay.getAttribute('data-vd-yt-play')); return; }
var ytWish = e.target.closest('[data-vd-yt-wish]');
if (ytWish && r.contains(ytWish)) { e.preventDefault(); toggleYtWish(ytWish); return; }
var ytPlW = e.target.closest('[data-vd-yt-pl-watch]');
diff --git a/webui/static/video/video-side.css b/webui/static/video/video-side.css
index 786afbc7..fbc395fb 100644
--- a/webui/static/video/video-side.css
+++ b/webui/static/video/video-side.css
@@ -570,6 +570,10 @@ body[data-side="video"] .dashboard-header-sweep {
padding: 1px 5px; border-radius: 4px; font-size: 11px; font-weight: 700; line-height: 1.4;
color: #fff; background: rgba(0, 0, 0, 0.82); letter-spacing: 0.02em;
}
+/* YouTube video thumbnails are play buttons (stream in-app via the embed overlay) */
+.vd-ep-thumb--play, .vd-yt-plvid-thumb { cursor: pointer; }
+.vd-ep-thumb--play .vd-ep-thumb-ic { opacity: 0.92; transform: scale(1); } /* always show the play hint */
+.vd-ep-thumb--play:hover .vd-ep-thumb-ic { opacity: 1; transform: scale(1.15); }
/* Channel search + sort controls (above the year pills) */
.vd-season-nav--yt { display: flex; flex-direction: column; gap: 14px; }