d550f48a729d
fix: Restore Advanced control for passkey entries (v4.9.8)
- time
- 2026-08-14 20:37 UTC · 2 months ago
- machine
- koh2
- parent
- 03887ea0c034
↓ peach-browser-d550f48a.tar.gzatlas at this save
files changed5 files
manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/popup/views/Entry.tsx+1 −1src/popup/views/contracts.test.tsx+42 −0manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach Password Manager",4- "version": "4.9.7",4+ "version": "4.9.8",55 "description": "Zero-knowledge password manager",66 "browser_specific_settings": {77 "gecko": {manifest.json+1 −1
@@ -2,7 +2,7 @@22 "manifest_version": 3,33 "minimum_chrome_version": "116",44 "name": "Peach Password Manager",5- "version": "4.9.7",5+ "version": "4.9.8",66 "description": "Zero-knowledge password manager",77 "action": {88 "default_popup": "src/popup/index.html",package.json+1 −1
@@ -1,6 +1,6 @@11 {22 "name": "peach",3- "version": "4.9.7",3+ "version": "4.9.8",44 "description": "Zero-knowledge password manager",55 "license": "GPL-3.0-only",66 "type": "module",src/popup/views/Entry.tsx+1 −1
@@ -1467,7 +1467,7 @@14671467 </Show>14681468 14691469 {/* ── Advanced (canary + passkey) ───────────────────── */}1470- <Show when={entry().type === "login"}>1470+ <Show when={entry().type !== "note" && entry().type !== "card"}>14711471 <button14721472 class="peach-add-field-link peach-entry-add-link"14731473 onClick={() => setShowAdvanced((v) => !v)}src/popup/views/contracts.test.tsx+42 −0
@@ -947,6 +947,48 @@947947 });948948 });949949 950+ it("Entry shows Advanced for passkey-bearing credential entries", async () => {951+ const container = mount(952+ <EntryView953+ entry={sampleEntry({954+ type: "passkey",955+ username: undefined,956+ password: undefined,957+ totp: undefined,958+ canary: undefined,959+ passkey: {960+ rpId: "vercel.com",961+ rpName: "Vercel",962+ credentialId: "cred-1",963+ publicKeyCose: "cose",964+ userHandle: "handle",965+ userName: "june",966+ userDisplayName: "June",967+ algorithm: -7,968+ signCount: 0,969+ aaguid: "",970+ backupEligible: false,971+ backupState: false,972+ createdAt: 1,973+ },974+ })}975+ onDelete={vi.fn()}976+ onFieldSaved={vi.fn(async () => undefined)}977+ />978+ );979+980+ const advanced = Array.from(container.querySelectorAll(".peach-entry-add-link")).find(981+ (button) => button.textContent?.includes("Advanced")982+ ) as HTMLButtonElement | undefined;983+ expect(advanced).toBeDefined();984+ expect(advanced?.textContent).toContain("+ Advanced");985+986+ advanced!.click();987+ await flushView();988+989+ expect(container.textContent).toContain("passkey · vercel.com");990+ });991+950992 it("Entry refuses to send an empty password update and copies TOTP through COPY", async () => {951993 sendMessageMock.mockResolvedValue({ ok: true });952994 const onFieldSaved = vi.fn(async () => undefined);