diff --git a/index.html b/index.html
index 33f3626..68c03e1 100644
--- a/index.html
+++ b/index.html
@@ -516,16 +516,21 @@
const favTag = link.favorite ? `★ 즐겨찾기` : "";
const lockTag = accessible ? "" : `접근 제한`;
const letter = esc((link.title || d || "L").trim().slice(0, 1).toUpperCase());
- function faviconUrl(rawUrl) {
+ function faviconCandidates(rawUrl) {
try {
const uu = new URL(String(rawUrl || ""));
const host = String(uu.hostname || "").toLowerCase();
const isNcue = host === "ncue.net" || host.endsWith(".ncue.net");
const parts = uu.pathname.split("/").filter(Boolean);
- if (isNcue && parts.length) return `${uu.origin}/${parts[0]}/favicon.ico`;
- return `${uu.origin}/favicon.ico`;
+ const rootFav = `${uu.origin}/favicon.ico`;
+ const hintPath = host === "mail.ncue.net" ? "/roundcube/favicon.ico" : "";
+ const hintFav = hintPath ? `${uu.origin}${hintPath}` : "";
+ const pathFav = isNcue && parts.length ? `${uu.origin}/${parts[0]}/favicon.ico` : "";
+ const primary = pathFav || hintFav || rootFav;
+ const fallback = primary !== rootFav ? rootFav : "";
+ return { primary, fallback };
} catch {
- return "";
+ return { primary: "", fallback: "" };
}
}
function buildOpenUrl(rawUrl) {
@@ -551,9 +556,9 @@
? `열기`
: ``;
const copyAttrs = accessible ? "" : ` disabled aria-disabled="true" title="이 링크는 현재 권한으로 접근할 수 없습니다."`;
- const fav = faviconUrl(link.url);
- const faviconHtml = fav
- ? ``
+ const fav = faviconCandidates(link.url);
+ const faviconHtml = fav && fav.primary
+ ? `
`
: `