Restore favicons using site /favicon.ico

Show each link's favicon from its origin instead of letter-only badges.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dsyoon
2026-02-07 20:40:00 +09:00
parent c0a1783519
commit fec952c9ee

View File

@@ -131,6 +131,15 @@
}
}
function faviconUrl(url) {
try {
const u = new URL(url);
return `${u.origin}/favicon.ico`;
} catch {
return "";
}
}
function escapeHtml(s) {
return String(s)
.replaceAll("&", "&amp;")
@@ -261,13 +270,18 @@
const letter = escapeHtml((link.title || domain || "L").trim().slice(0, 1).toUpperCase());
const lockAttr = state.canManage ? "" : ' disabled aria-disabled="true"';
const lockTitle = state.canManage ? "" : ' title="관리 기능은 로그인 후 사용 가능합니다."';
const fav = faviconUrl(link.url);
return `
<article class="card" data-id="${escapeHtml(link.id)}">
<div class="card-head">
<div class="card-title">
<div class="favicon" aria-hidden="true">
<div class="letter">${letter}</div>
${
fav
? `<img src="${escapeHtml(fav)}" alt="" loading="lazy" decoding="async" referrerpolicy="no-referrer" onerror="this.remove(); this.parentNode.insertAdjacentHTML('beforeend','<div class=&quot;letter&quot;>${letter}</div>');" />`
: `<div class="letter">${letter}</div>`
}
</div>
<div class="title-wrap">
<div class="title" title="${title}">${title}</div>