${_esc(autoSyncHistoryStatusLabel(status))}
-
${_esc(entry.playlist_name || 'Mirrored playlist')}
-
${_esc(entry.summary || '')}
+
${_esc(playlistName)}
+
${_esc(summary)}
+
+ ${autoSyncHistoryPreviewPill('Tracks', before.track_count, after.track_count, trackDelta)}
+ ${autoSyncHistoryPreviewPill('Discovered', before.discovered_count, after.discovered_count, discoveredDelta)}
+
${started ? `${_esc(started)}` : ''}
${duration ? `${_esc(duration)}` : ''}
${_esc(entry.trigger_source || 'pipeline')}
+
@@ -478,17 +492,19 @@ function autoSyncHistoryEntryHtml(entry) {
${autoSyncHistoryStatHtml('In library', before.in_library_count, after.in_library_count, libraryDelta)}
- ${autoSyncHistoryResultPill('Refreshed', result.playlists_refreshed)}
- ${autoSyncHistoryResultPill('Synced', result.tracks_synced)}
- ${autoSyncHistoryResultPill('Skipped', result.sync_skipped)}
- ${autoSyncHistoryResultPill('Queued', result.wishlist_queued)}
- ${result.error ? `${_esc(result.error)}` : ''}
+ ${resultHtml || 'No detailed result payload recorded for this run.'}
`;
}
+function autoSyncHistoryFallbackSummary(before, after, status) {
+ const beforeTracks = parseInt(before.track_count, 10) || 0;
+ const afterTracks = parseInt(after.track_count, 10) || 0;
+ return `${autoSyncHistoryStatusLabel(status)} | ${beforeTracks} -> ${afterTracks} tracks`;
+}
+
function autoSyncToggleHistoryEntry(entryId) {
const el = document.getElementById(entryId);
if (el) el.classList.toggle('expanded');
@@ -527,6 +543,13 @@ function autoSyncHistoryStatHtml(label, before, after, delta) {
`;
}
+function autoSyncHistoryPreviewPill(label, before, after, delta) {
+ const beforeValue = parseInt(before, 10) || 0;
+ const afterValue = parseInt(after, 10) || 0;
+ const deltaText = delta ? ` ${delta > 0 ? '+' : ''}${delta}` : '';
+ return `