`;
+ html += `
`;
// Language indicator (fixed width)
const lang = f.language || '';
- html += `${escapeHtml(lang)}`;
+ html += `${escapeHtml(lang)}`;
// Feed publish status buttons (pass/hold/skip)
html += renderStatusBtns(feedStatus, 'feed', f.url, f.status);
// Feed crawl status (active/error/dead)
const statusColor = f.status === 'active' ? '#484' : f.status === 'error' ? '#a66' : '#666';
- html += `${escapeHtml(f.status || 'active')}`;
+ html += `${escapeHtml(f.status || 'active')}`;
// Item count if > 0
if (f.item_count > 0) {
- html += `${commaFormat(f.item_count)}`;
+ html += `${commaFormat(f.item_count)}`;
} else {
- html += ``;
+ html += ``;
}
// Feed path (URL without domain) - click to toggle feed info
@@ -284,7 +284,7 @@ function initDashboard() {
const urlObj = new URL(f.url.startsWith('http') ? f.url : 'https://' + f.url);
feedPath = urlObj.pathname + urlObj.search;
} catch (e) {}
- html += `${escapeHtml(feedPath)}`;
+ html += `${escapeHtml(feedPath)}`;
// Feed title - click to toggle items
if (f.title) {
@@ -296,7 +296,7 @@ function initDashboard() {
html += '
';
// Feed info section (hidden by default)
- html += '
';
+ html += '
';
// Feed items section (shown by default)
html += '
';
diff --git a/templates.go b/templates.go
index b191285..542e802 100644
--- a/templates.go
+++ b/templates.go
@@ -534,7 +534,7 @@ const dashboardHTML = `