964f286213cc
silver platter + button, freeze popup width at init, nowrap action buttons (v2.29.3)
- time
- 2026-05-03 13:59 UTC · 5 months ago
- machine
- koh2
- parent
- ce749ba3a1e9
↓ peach-browser-964f2862.tar.gzatlas at this save
files changed4 files
manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/content/inject.ts+15 −3manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach",4- "version": "2.29.2",4+ "version": "2.29.3",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.29.2",4+ "version": "2.29.3",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.29.2",3+ "version": "2.29.3",44 "description": "Zero-knowledge password manager",55 "type": "module",66 "scripts": {src/content/inject.ts+15 −3
@@ -790,6 +790,7 @@790790 transition: background 120ms ease, color 120ms ease;791791 font-family: Inter, sans-serif; letter-spacing: 0.04em;792792 display: inline-flex; align-items: center; justify-content: center; gap: 4px;793+ white-space: nowrap; overflow: hidden;793794 }794795 .sp-action-btn:hover:not(:disabled) {795796 background: color-mix(in srgb, var(--peach-text) 5%, transparent);@@ -1650,13 +1651,26 @@16501651 16511652 const domHdr = document.createElement("div");16521653 domHdr.className = "domain-header";1654+ const headText = document.createElement("div");1655+ headText.className = "domain-header-text";16531656 const eyebrow = document.createElement("div");16541657 eyebrow.className = "domain-eyebrow";16551658 eyebrow.textContent = "Saved for this site";16561659 const domName = document.createElement("div");16571660 domName.className = "domain-name";16581661 domName.textContent = options.domain ?? location.hostname.replace(/^www\./, "");1659- domHdr.append(eyebrow, domName);1662+ headText.append(eyebrow, domName);1663+ domHdr.appendChild(headText);1664+ if (!options.isSignup) {1665+ const addBtn = document.createElement("button");1666+ addBtn.className = "domain-add-btn";1667+ addBtn.type = "button";1668+ addBtn.setAttribute("aria-label", "Create new entry");1669+ addBtn.title = "Create new entry";1670+ addBtn.textContent = "+";1671+ addBtn.addEventListener("click", (e) => { e.stopPropagation(); void showCreateForm(); });1672+ domHdr.appendChild(addBtn);1673+ }16601674 container.appendChild(domHdr);16611675 16621676 const platter = document.createElement("div");@@ -2179,7 +2193,6 @@21792193 const r = anchorEl.getBoundingClientRect();21802194 host.style.top = `${r.bottom + window.scrollY + 5}px`;21812195 host.style.left = `${r.left + window.scrollX}px`;2182- host.style.width = `${Math.min(Math.max(r.width, 260), 400)}px`;21832196 }21842197 // These bindings are referenced from renderLocked()/dismiss() — they MUST21852198 // be initialized before renderLocked() runs, or the synchronous assignment@@ -3013,7 +3026,6 @@30133026 const r = anchorEl.getBoundingClientRect();30143027 host.style.top = `${r.bottom + window.scrollY + 5}px`;30153028 host.style.left = `${r.left + window.scrollX}px`;3016- host.style.width = `${Math.min(Math.max(r.width, 320), 400)}px`;30173029 }30183030 const stopObserving = observeAnchorPosition(anchorEl, updatePosition);30193031