6e813d9fe0e6

fix filter dismiss bug and styled scrollbar on identity suggestion list

time
2026-05-10 23:47 UTC · 5 months ago
machine
koh2
parent
451d5a169ed5
6 files manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/content/inject.ts+8 −2src/popup/styles/popup.css+15 −0src/popup/views/Add.tsx+2 −2
manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach",4-  "version": "2.38.11",4+  "version": "2.38.12",55   "description": "Zero-knowledge password manager",66   "browser_specific_settings": {77     "gecko": {

view file

manifest.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach",4-  "version": "2.38.11",4+  "version": "2.38.12",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": "2.38.11",3+  "version": "2.38.12",44   "description": "Zero-knowledge password manager",55   "type": "module",66   "scripts": {

view file

src/content/inject.ts+8 −2
@@ -1106,7 +1106,11 @@11061106   .identity-rows { display: grid; grid-template-rows: 1fr;11071107     transition: grid-template-rows 220ms cubic-bezier(0.16,1,0.3,1); }11081108   .identity-rows.is-collapsed { grid-template-rows: 0fr; }1109-  .identity-rows-inner { overflow: hidden; min-height: 0; }1109+  .identity-rows-inner { overflow-y: auto; min-height: 0; max-height: 148px;1110+    scrollbar-width: thin; scrollbar-color: var(--peach-text-muted) transparent; }1111+  .identity-rows-inner::-webkit-scrollbar { width: 4px; }1112+  .identity-rows-inner::-webkit-scrollbar-track { background: transparent; }1113+  .identity-rows-inner::-webkit-scrollbar-thumb { background: var(--peach-text-muted); border-radius: 2px; }11101114   .identity-filter-pill {11111115     padding: 2px 7px; border-radius: 999px;11121116     border: 1px solid var(--peach-input-border);@@ -1657,7 +1661,9 @@16571661         .filter(s => (activeFilter === "all" || s.type === activeFilter) && (!q || s.value.toLowerCase().includes(q)))16581662         .slice(0, 8);16591663       rows.innerHTML = "";1660-      if (!filtered.length) { list.style.display = rows.children.length === 0 ? "none" : ""; return; }1664+      // Keep the list visible when the filter produces no results — hide only1665+      // when there are genuinely no identities to show (handled by the caller).1666+      if (!filtered.length) return;16611667       for (const s of filtered) {16621668         const row = rows.appendChild(document.createElement("button"));16631669         row.type = "button"; row.className = "identity-suggest-row";

view file

src/popup/styles/popup.css+15 −0
@@ -5213,6 +5213,21 @@52135213   overflow-y: auto;52145214   min-height: 0;52155215   max-height: 148px;5216+  scrollbar-width: thin;5217+  scrollbar-color: var(--peach-t3) transparent;5218+}5219+5220+.peach-identity-rows-inner::-webkit-scrollbar {5221+  width: 4px;5222+}5223+5224+.peach-identity-rows-inner::-webkit-scrollbar-track {5225+  background: transparent;5226+}5227+5228+.peach-identity-rows-inner::-webkit-scrollbar-thumb {5229+  background: var(--peach-t3);5230+  border-radius: 2px;52165231 }52175232 52185233 .peach-identity-filter-pill {

view file

src/popup/views/Add.tsx+2 −2
@@ -360,7 +360,7 @@360360                   onBlur={() => setTimeout(() => setActiveIdentityField(null), 150)}361361                 />362362               </div>363-              <Show when={activeIdentityField() === "username" && identitySuggestions().length > 0}>363+              <Show when={activeIdentityField() === "username" && allIdentities().length > 0}>364364                 <IdentitySuggestList365365                   suggestions={identitySuggestions()}366366                   filter={identityFilter()}@@ -385,7 +385,7 @@385385                   onBlur={() => setTimeout(() => setActiveIdentityField(null), 150)}386386                 />387387               </div>388-              <Show when={activeIdentityField() === "email" && identitySuggestions().length > 0}>388+              <Show when={activeIdentityField() === "email" && allIdentities().length > 0}>389389                 <IdentitySuggestList390390                   suggestions={identitySuggestions()}391391                   filter={identityFilter()}

view file