906db68f57b8
fix identity bucket routing: email-shaped usernames go to email suggestions (v2.41.1)
- time
- 2026-05-13 20:01 UTC · 5 months ago
- machine
- koh2
- parent
- a7684e67e614
↓ peach-browser-906db68f.tar.gzatlas at this save
files changed5 files
manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/popup/views/Add.tsx+7 −4src/popup/views/Entry.tsx+4 −1manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach",4- "version": "2.41.0",4+ "version": "2.41.1",55 "description": "Zero-knowledge password manager",66 "browser_specific_settings": {77 "gecko": {manifest.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach",4- "version": "2.41.0",4+ "version": "2.41.1",55 "description": "Zero-knowledge password manager",66 "action": {77 "default_popup": "src/popup/index.html",package.json+1 −1
@@ -1,6 +1,6 @@11 {22 "name": "peach",3- "version": "2.41.0",3+ "version": "2.41.1",44 "description": "Zero-knowledge password manager",55 "type": "module",66 "scripts": {src/popup/views/Add.tsx+7 −4
@@ -53,8 +53,11 @@5353 const usernameMap = new Map<string, number>();5454 for (const entry of props.entries ?? []) {5555 const uname = entry.username?.trim() ?? "";56- const em = (entry as VaultEntry & { email?: string }).email?.trim() ?? "";57- if (uname) usernameMap.set(uname, (usernameMap.get(uname) ?? 0) + 1);56+ const em = entry.email?.trim() ?? "";57+ if (uname) {58+ if (uname.includes("@")) emailMap.set(uname, (emailMap.get(uname) ?? 0) + 1);59+ else usernameMap.set(uname, (usernameMap.get(uname) ?? 0) + 1);60+ }5861 if (em) emailMap.set(em, (emailMap.get(em) ?? 0) + 1);5962 }6063 const result: Array<{ value: string; count: number; type: "email" | "username" }> = [];@@ -385,7 +388,7 @@385388 }}386389 />387390 </div>388- <Show when={activeIdentityField() === "username" && allIdentities().length > 0}>391+ <Show when={activeIdentityField() === "username" && identitySuggestions().length > 0}>389392 <IdentitySuggestList390393 listRef={(el) => (usernameSuggestEl = el)}391394 inputRef={() => usernameInputEl}@@ -425,7 +428,7 @@425428 }}426429 />427430 </div>428- <Show when={activeIdentityField() === "email" && allIdentities().length > 0}>431+ <Show when={activeIdentityField() === "email" && identitySuggestions().length > 0}>429432 <IdentitySuggestList430433 listRef={(el) => (emailSuggestEl = el)}431434 inputRef={() => emailInputEl}src/popup/views/Entry.tsx+4 −1
@@ -92,7 +92,10 @@9292 for (const e of props.entries ?? []) {9393 const uname = e.username?.trim() ?? "";9494 const em = e.email?.trim() ?? "";95- if (uname) usernameMap.set(uname, (usernameMap.get(uname) ?? 0) + 1);95+ if (uname) {96+ if (uname.includes("@")) emailMap.set(uname, (emailMap.get(uname) ?? 0) + 1);97+ else usernameMap.set(uname, (usernameMap.get(uname) ?? 0) + 1);98+ }9699 if (em) emailMap.set(em, (emailMap.get(em) ?? 0) + 1);97100 }98101 const result: Array<{ value: string; count: number; type: "email" | "username" }> = [];