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
↓ peach-browser-22bd36b4.tar.gzatlas at this save
files changed6 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 −7manifest.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": {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",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",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 }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 });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>