diff --git a/webui/static/video/video-watchlist.js b/webui/static/video/video-watchlist.js
index 3819881b..e0377792 100644
--- a/webui/static/video/video-watchlist.js
+++ b/webui/static/video/video-watchlist.js
@@ -20,10 +20,11 @@
function wlBtn(opts) { return (window.VideoWatchlist) ? VideoWatchlist.btn(opts) : ''; }
function cardHTML(it, kind) {
- var href = kind === 'person'
- ? '/video-detail/tmdb/person/' + it.tmdb_id
- : (it.library_id ? '/video-detail/library/show/' + it.library_id
- : '/video-detail/tmdb/show/' + it.tmdb_id);
+ // SPA open target: library shows open by library id ('library' source);
+ // people + un-owned shows open by tmdb id ('tmdb').
+ var source = (kind === 'show' && it.library_id) ? 'library' : 'tmdb';
+ var openId = source === 'library' ? it.library_id : it.tmdb_id;
+ var href = '/video-detail/' + source + '/' + kind + '/' + openId;
var ph = kind === 'person' ? '👤' : '📺'; // 👤 / 📺
var art = it.poster_url
? '' +
+ 'data-vwlp-card="' + kind + '" data-vwlp-id="' + esc(it.tmdb_id) + '" ' +
+ 'data-vwlp-open="' + kind + '" data-vwlp-source="' + source + '" data-vwlp-openid="' + esc(openId) + '">' +
'