diff --git a/webui/static/pages-extra.js b/webui/static/pages-extra.js
index f59ceccc..6b5275f7 100644
--- a/webui/static/pages-extra.js
+++ b/webui/static/pages-extra.js
@@ -2875,10 +2875,24 @@ function _adlRenderBatchHistory() {
const dotTip = dotSource ? `Source: ${dotSource}` : 'Unknown source';
const histDot = ``;
- // Thumbnail with placeholder fallback
+ // Thumbnail with playlist-type icon fallback
+ let placeholderIcon = '♫';
+ const pName = (h.playlist_name || '').toLowerCase();
+ if (pName.includes('fresh tape') || pName.includes('release radar')) placeholderIcon = '🎵';
+ else if (pName.includes('archives') || pName.includes('discovery weekly')) placeholderIcon = '📚';
+ else if (pName.includes('seasonal')) placeholderIcon = '🌿';
+ else if (pName.includes('popular picks')) placeholderIcon = '🔥';
+ else if (pName.includes('hidden gems')) placeholderIcon = '💎';
+ else if (pName.includes('discovery shuffle')) placeholderIcon = '🔀';
+ else if (pName.includes('familiar fav')) placeholderIcon = '❤️';
+ else if (pName.includes('jam')) placeholderIcon = '🎸';
+ else if (pName.includes('explor')) placeholderIcon = '🔭';
+ else if (dotSource === 'mirrored' || dotSource === 'youtube') placeholderIcon = '🔗';
+ else if (dotSource === 'wishlist') placeholderIcon = '⭐';
+ else if (dotSource === 'album') placeholderIcon = '💿';
const thumb = h.thumb_url
- ? `
`
- : ``;
+ ? `
`
+ : `${placeholderIcon}`;
// Server push status indicator
let pushBadge = '';
diff --git a/webui/static/style.css b/webui/static/style.css
index 017a1ec1..13eb0790 100644
--- a/webui/static/style.css
+++ b/webui/static/style.css
@@ -57206,9 +57206,10 @@ body.reduce-effects *::after {
justify-content: center;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.06);
+ font-size: 14px;
}
-.adl-batch-history-thumb-placeholder::after {
+.adl-batch-history-thumb-placeholder:empty::after {
content: '♫';
font-size: 12px;
color: rgba(255, 255, 255, 0.2);