8d9796d9bb74
Pro upsell — add Peach Codex, rename 'Android & iOS' to 'Mobile apps · Android, iOS soon', tighten grid to 3x2 uniform layout, smaller headline + subtitle to fit popup viewport. Bump 3.6.16
- time
- 2026-05-18 23:03 UTC · 5 months ago
- machine
- koh2
- parent
- 27f87865ee6a
↓ peach-browser-8d9796d9.tar.gzatlas at this save
files changed5 files
manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/popup/styles/popup.css+7 −7src/popup/views/Settings.tsx+7 −16manifest.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.15",5+ "version": "3.6.16",66 "description": "Zero-knowledge password manager",77 "browser_specific_settings": {88 "gecko": {manifest.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach",4- "version": "3.6.15",4+ "version": "3.6.16",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": "3.6.15",3+ "version": "3.6.16",44 "description": "Zero-knowledge password manager",55 "type": "module",66 "scripts": {src/popup/styles/popup.css+7 −7
@@ -5952,8 +5952,8 @@59525952 display: flex;59535953 flex-direction: column;59545954 align-items: stretch;5955- gap: 14px;5956- padding: 4px 2px 16px;5955+ gap: 10px;5956+ padding: 2px 2px 12px;59575957 }59585958 59595959 .peach-pro-eyebrow {@@ -5968,7 +5968,7 @@59685968 .peach-pro-headline {59695969 margin: 0;59705970 font-family: var(--font-display, "Cormorant Garamond", serif);5971- font-size: 36px;5971+ font-size: 30px;59725972 font-weight: 700;59735973 font-style: normal;59745974 line-height: 1.05;@@ -5983,8 +5983,8 @@59835983 59845984 .peach-pro-subtitle {59855985 margin: 0;5986- font-size: 0.75rem;5987- line-height: 1.55;5986+ font-size: 0.6875rem;5987+ line-height: 1.5;59885988 color: var(--peach-t1);59895989 }59905990 @@ -5999,8 +5999,8 @@59995999 .peach-pro-grid-item {60006000 display: flex;60016001 flex-direction: column;6002- gap: 3px;6003- padding: 10px 10px 10px 10px;6002+ gap: 2px;6003+ padding: 8px 9px;60046004 border-right: 1px solid var(--peach-border);60056005 border-bottom: 1px solid var(--peach-border);60066006 }src/popup/views/Settings.tsx+7 −16
@@ -1394,11 +1394,12 @@13941394 name: string;13951395 desc: string;13961396 }> = [1397- { feature: "sync", name: "Peach Sync", desc: "Encrypted · peer-to-peer · local" },1398- { feature: "ios_app", name: "Android & iOS", desc: "Your vault everywhere" },1397+ { feature: "sync", name: "Peach Sync", desc: "Encrypted · peer-to-peer" },1398+ { feature: "codex", name: "Peach Codex", desc: "Restore from paper" },13991399 { feature: "passkeys", name: "Passkeys", desc: "Zero-knowledge WebAuthn" },1400- { feature: "advanced_health", name: "Advanced Vault Health", desc: "Reuse · age · exposure scoring" },1401- { feature: "smart_password_change", name: "Smart Password Change", desc: "Guided reset · pre-filled · vault updated" },1400+ { feature: "ios_app", name: "Mobile apps", desc: "Android · iOS soon" },1401+ { feature: "advanced_health", name: "Vault health", desc: "Reuse · age · exposure" },1402+ { feature: "smart_password_change", name: "Smart reset", desc: "Guided password change" },14021403 ];14031404 14041405 const [licenseKey, setLicenseKey] = createSignal<string | null>(null);@@ -1448,11 +1449,11 @@14481449 </h2>14491450 14501451 <p class="peach-pro-subtitle">1451- A single key unlocks sync, mobile, passkeys and our most thorough vault health tooling — for the lifetime of the app.1452+ One key unlocks every Pro feature — for the lifetime of the app.14521453 </p>14531454 14541455 <div class="peach-pro-grid">1455- <For each={PRO_FEATURES.slice(0, 4)}>1456+ <For each={PRO_FEATURES}>14561457 {(item, i) => (14571458 <div14581459 class="peach-pro-grid-item"@@ -1464,16 +1465,6 @@14641465 </div>14651466 )}14661467 </For>1467- <Show when={PRO_FEATURES[4]}>1468- <div1469- class="peach-pro-grid-item peach-pro-grid-item--wide"1470- classList={{ "is-highlighted": props.upgradeHighlight === PRO_FEATURES[4].feature }}1471- >1472- <span class="peach-pro-grid-num">05</span>1473- <span class="peach-pro-grid-name">{PRO_FEATURES[4].name}</span>1474- <span class="peach-pro-grid-desc">{PRO_FEATURES[4].desc}</span>1475- </div>1476- </Show>14771468 </div>14781469 14791470 <div class="peach-pro-upgrade-actions">