aa32eb185cb3

replace empty globe with InitialsChip — onLoad rejects _favicon/ default by naturalWidth ≤16 (v3.6.7)

time
2026-05-18 18:50 UTC · 5 months ago
machine
koh2
parent
3832fe4333e7
4 files manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/popup/views/Vault.tsx+7 −0
manifest.firefox.json+1 −1
@@ -2,7 +2,7 @@22   "_comment_audio_capture": "Firefox does not honor the Chrome 'audioCapture' optional_permission — getUserMedia in WebExtensions is gated solely by the runtime permission prompt. Microphone access for chirp pairing works from the popup under the existing '<all_urls>' host permission; no manifest entry is required or accepted here.",33   "manifest_version": 3,44   "name": "Peach",5-  "version": "3.6.6",5+  "version": "3.6.7",66   "description": "Zero-knowledge password manager",77   "browser_specific_settings": {88     "gecko": {

view file

manifest.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach",4-  "version": "3.6.6",4+  "version": "3.6.7",55   "description": "Zero-knowledge password manager",66   "action": {77     "default_popup": "src/popup/index.html",

view file

package.json+1 −1
@@ -1,6 +1,6 @@11 {22   "name": "peach",3-  "version": "3.6.6",3+  "version": "3.6.7",44   "description": "Zero-knowledge password manager",55   "type": "module",66   "scripts": {

view file

src/popup/views/Vault.tsx+7 −0
@@ -31,6 +31,13 @@3131         alt=""3232         style="border-radius:3px;"3333         onError={() => setFailed(true)}34+        onLoad={(e) => {35+          // Chrome's _favicon/ API returns the default globe at its native36+          // 16×16 even when size=32 is requested. A real cached favicon37+          // arrives at ≥32px naturally. Treat ≤16 as "no favicon" so the38+          // InitialsChip renders instead of the globe.39+          if ((e.currentTarget as HTMLImageElement).naturalWidth <= 16) setFailed(true);40+        }}3441       />3542     </Show>3643   );

view file