22bd36b49aa2

UX: Enter submits the password form (was click-only); pair screen text shortened and QR shrunk to 160px so it fits in the 360px-wide extension window without clipping. (v4.3.17)

time
2026-07-28 18:02 UTC · 3 months ago
machine
koh2
agent
claude-MiniMax-M3
session
sync red indicator port from browser
parent
04f422dac66a
6 files manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/popup/styles/popup.css+8 −0src/popup/views/AdoptVaultView.test.tsx+1 −1src/popup/views/AdoptVaultView.tsx+9 −7
manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach Password Manager",4-  "version": "4.3.16",4+  "version": "4.3.17",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 Password Manager",4-  "version": "4.3.16",4+  "version": "4.3.17",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": "4.3.16",3+  "version": "4.3.17",44   "description": "Zero-knowledge password manager",55   "license": "GPL-3.0-only",66   "type": "module",

view file

src/popup/styles/popup.css+8 −0
@@ -7007,6 +7007,14 @@70077007   line-height: 1.35;70087008 }70097009 7010+.peach-adopt-card .peach-hint-relay {7011+  margin: 12px 0 0;7012+  font-size: 11px;7013+  line-height: 1.4;7014+  color: var(--peach-t2);7015+  opacity: 0.85;7016+}7017+70107018 .peach-adopt-input {70117019   margin-bottom: 12px;70127020 }

view file

src/popup/views/AdoptVaultView.test.tsx+1 −1
@@ -88,7 +88,7 @@8888     // We assert the heading + copy; the actual QR is rendered by a background8989     // call that's out of scope for a jsdom test (chrome.runtime is undefined).9090     expect(view.container.textContent).toContain("Pair with your other device");91-    expect(view.container.textContent).toContain("Scan this code on the device that holds your vault");91+    expect(view.container.textContent).toContain("Scan on the device that holds your vault");9292     // The scan button from the old flow is gone — the phone is the scanner now.9393     expect(view.container.textContent).not.toContain("Enter invitation manually");9494   });

view file

src/popup/views/AdoptVaultView.tsx+9 −7
@@ -148,6 +148,9 @@148148               autocomplete="new-password"149149               value={password()}150150               onInput={(event) => setPassword((event.target as HTMLInputElement).value)}151+              onKeyDown={(event) => {152+                if (event.key === "Enter" && canContinue()) setPhase("pair");153+              }}151154             />152155             <label class="peach-label" for="adopt-confirm-password">confirm password</label>153156             <input@@ -157,6 +160,9 @@157160               autocomplete="new-password"158161               value={confirmPassword()}159162               onInput={(event) => setConfirmPassword((event.target as HTMLInputElement).value)}163+              onKeyDown={(event) => {164+                if (event.key === "Enter" && canContinue()) setPhase("pair");165+              }}160166             />161167             <Show when={createBlocker()}>162168               <p class="peach-hint">{createBlocker()}</p>@@ -171,12 +177,7 @@171177 172178           <Match when={phase() === "pair"}>173179             <h1>Pair with your other device.</h1>174-            <p>175-              Scan this code on the device that holds your vault. That176-              device will send the vault to this extension once the codes177-              match.178-            </p>179-            <p class="peach-hint">{RELAY_DISCLOSURE}</p>180+            <p>Scan on the device that holds your vault. It will send the vault here.</p>180181             <Show181182               when={receiverInvitation()}182183               fallback={@@ -188,8 +189,9 @@188189                 </Show>189190               }190191             >191-              <PairingQrCode value={receiverInvitation()} size={200} />192+              <PairingQrCode value={receiverInvitation()} size={160} />192193             </Show>194+            <p class="peach-hint peach-hint-relay">{RELAY_DISCLOSURE}</p>193195             <div class="peach-adopt-actions">194196               <button class="peach-btn peach-btn--ghost peach-btn--md" onClick={props.onCancel}>Cancel</button>195197             </div>

view file