8254614ba3a7

shorten pairing confirmation while preserving vault-access consent (v5.3.10)

time
2026-10-08 17:46 UTC · 2 weeks ago
machine
Junes-MacBook-Pro.local
agent
gpt-6
session
reliable firefox passkey sign-in
parent
a9f8cf99d108
5 files manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/popup/views/AdoptVaultView.test.tsx+3 −2src/popup/views/AdoptVaultView.tsx+13 −14
manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach Password Manager",4-  "version": "5.3.9",4+  "version": "5.3.10",55   "description": "Zero-knowledge password manager",66   "browser_specific_settings": {77     "gecko": {

view file

manifest.json+1 −1
@@ -2,7 +2,7 @@22   "manifest_version": 3,33   "minimum_chrome_version": "116",44   "name": "Peach Password Manager",5-  "version": "5.3.9",5+  "version": "5.3.10",66   "description": "Zero-knowledge password manager",77   "action": {88     "default_popup": "src/popup/index.html",

view file

package.json+1 −1
@@ -1,6 +1,6 @@11 {22   "name": "peach",3-  "version": "5.3.9",3+  "version": "5.3.10",44   "description": "Zero-knowledge password manager",55   "license": "GPL-3.0-only",66   "type": "module",

view file

src/popup/views/AdoptVaultView.test.tsx+3 −2
@@ -230,8 +230,9 @@230230     await flushView();231231 232232     expect(view.container.textContent).toContain("48219371");233-    expect(view.container.textContent).toContain("Confirm this 8-digit code");234-    expect(view.container.textContent).toContain("complete copy of its vault");233+    expect(view.container.textContent).toContain("Match this code with your other device.");234+    expect(view.container.textContent).toContain("This device will receive your vault and recovery access.");235+    expect(view.container.querySelector(".peach-adopt-privacy")).toBeNull();235236     expect(view.container.textContent).not.toContain("session ID");236237     expect(button(view.container, "Confirm code")).toBeTruthy();237238     expect(view.container.querySelector(".peach-adoption-sas")).toBeTruthy();

view file

src/popup/views/AdoptVaultView.tsx+13 −14
@@ -269,7 +269,7 @@269269                 {receiverComplete()270270                   ? "Your devices are connected. Getting your vault ready…"271271                   : receiverSas()272-                    ? "Make sure this code matches the one on your phone."272+                    ? "Match this code with your other device."273273                     : "Scan this QR in Peach on the device that already has your vault."}274274               </p>275275 @@ -303,15 +303,12 @@303303                   }304304                 >305305                   <div class="peach-adopt-confirmation">306-                    <p class="peach-adopt-confirmation-label">8-DIGIT SAFETY CODE</p>306+                    <p class="peach-adopt-confirmation-label">SAFETY CODE</p>307307                     <div class="peach-adoption-sas" aria-label="Pairing confirmation code">308308                       <strong>{receiverSas()}</strong>309309                     </div>310310                     <p class="peach-adopt-confirmation-help">311-                      Confirm this 8-digit code matches the phone you intend to312-                      trust. Approving replaces this empty device with a complete313-                      copy of its vault, including existing passwords, passkeys,314-                      notes, and recovery access.311+                      This device will receive your vault and recovery access.315312                     </p>316313                     <button317314                       class="peach-btn peach-btn--accent peach-btn--md"@@ -323,14 +320,16 @@323320                   </div>324321                 </Show>325322 326-                <div class="peach-adopt-privacy">327-                  <svg viewBox="0 0 24 24" aria-hidden="true">328-                    <path d="M7 10V8a5 5 0 0 1 10 0v2" />329-                    <rect x="5" y="10" width="14" height="10" rx="3" />330-                    <path d="M12 14v2" />331-                  </svg>332-                  <p><strong>Private by design.</strong> {RELAY_DISCLOSURE}</p>333-                </div>323+                <Show when={!receiverSas()}>324+                  <div class="peach-adopt-privacy">325+                    <svg viewBox="0 0 24 24" aria-hidden="true">326+                      <path d="M7 10V8a5 5 0 0 1 10 0v2" />327+                      <rect x="5" y="10" width="14" height="10" rx="3" />328+                      <path d="M12 14v2" />329+                    </svg>330+                    <p><strong>Private by design.</strong> {RELAY_DISCLOSURE}</p>331+                  </div>332+                </Show>334333 335334                 <div class="peach-adopt-actions peach-adopt-pair-actions">336335                   <button class="peach-btn peach-btn--ghost peach-btn--md" onClick={props.onCancel}>Cancel</button>

view file