3b0605503593

render passkey entries with favicon or coloured initials instead of search-like key icon

time
2026-08-13 19:14 UTC · 2 months ago
machine
koh2
agent
deepseek-v4-flash
session
vault passkey icon
parent
0a86c74f2b4c
1 file src/popup/views/Vault.tsx+8 −15
src/popup/views/Vault.tsx+8 −15
@@ -17,12 +17,14 @@1717 }1818 1919 function FaviconIcon(props: { domain: string; title?: string; isNote: boolean; isPasskey: boolean }) {20-  const src = props.domain && !props.isNote && !props.isPasskey20+  const src = props.domain && !props.isNote2121     ? faviconUrl(props.domain)2222     : null;2323   const [isReal, setIsReal] = createSignal(false);2424 25-  // Show InitialsChip (or passkey/note icon) first — no globe flash.25+  // Show InitialsChip (or note icon) first — no globe flash. Passkeys use the26+  // same coloured initials / real favicon as logins; the row's "passkey" text27+  // badge still distinguishes them.2628   // Load the favicon invisibly in the background; switch to it only after2729   // confirming it differs from Chrome's default "no favicon" globe image.2830   return (@@ -30,11 +32,9 @@3032       when={isReal()}3133       fallback={3234         <>33-          {props.isPasskey34-            ? <PasskeyIcon />35-            : props.isNote36-              ? <NoteIcon />37-              : <InitialsChip title={props.title ?? props.domain ?? ""} />}35+          {props.isNote36+            ? <NoteIcon />37+            : <InitialsChip title={props.title ?? props.domain ?? ""} />}3838           {src && (3939             <img4040               src={src}@@ -78,13 +78,6 @@7878 }7979 8080 81-const PasskeyIcon = () => (82-  <svg width="11" height="12" viewBox="0 0 11 12" fill="none" stroke="currentColor" stroke-width="0.9" stroke-linecap="round" aria-hidden="true">83-    <circle cx="4" cy="4.5" r="3" />84-    <path d="M6.5 7l3.5 3.5M8.5 8.5L10 10" />85-  </svg>86-);87-8881 const NoteIcon = () => (8982   <svg width="11" height="12" viewBox="0 0 11 12" fill="none" stroke="currentColor" stroke-width="0.9" stroke-linecap="round" aria-hidden="true">9083     <rect x="1.5" y="1.5" width="8" height="9" rx="1.5" />@@ -562,7 +555,7 @@562555                       when={selecting()}563556                       fallback={564557                         <FaviconIcon565-                          domain={entry.url ? getDisplayDomain(entry.url) : ""}558+                          domain={entry.type === "note" ? "" : (entry.url ? getDisplayDomain(entry.url) : entry.passkey?.rpId ?? "")}566559                           title={entry.title}567560                           isNote={isNote}568561                           isPasskey={isPasskey}

view file