31792ef38885

test+chore: assert method-card copy/icons in ChirpSync.desktop.test, bump 4.0.3→4.0.4 across manifests + package.json, CONTINUITY session record (v4.0.4)

time
2026-06-18 16:21 UTC · 4 months ago
machine
koh2
agent
claude-opus-4-8
session
sync hub pairing ux redesign
parent
2c9a1a9d8c4e
4 files manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/popup/views/ChirpSync.desktop.test.tsx+13 −3
manifest.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 Password Manager",5-  "version": "4.0.3",5+  "version": "4.0.4",66   "description": "Zero-knowledge password manager",77   "browser_specific_settings": {88     "gecko": {

view file

manifest.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach Password Manager",4-  "version": "4.0.3",4+  "version": "4.0.4",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.0.3",3+  "version": "4.0.4",44   "description": "Zero-knowledge password manager",55   "license": "GPL-3.0-only",66   "type": "module",

view file

src/popup/views/ChirpSync.desktop.test.tsx+13 −3
@@ -87,12 +87,22 @@8787     buttonContaining(container, "Desktop helper")!.click();8888   }8989 90-  it("offers both pairing methods on the method-select screen", () => {90+  it("offers both pairing methods as icon cards on the method-select screen", () => {9191     const { container } = mount();9292     gotoMethodSelect(container);9393     expect(container.textContent).toContain("How do you want to pair?");94-    expect(buttonContaining(container, "Same room")).toBeTruthy();95-    expect(buttonContaining(container, "Desktop helper")).toBeTruthy();94+    // The redundant body copy was removed — the cards explain themselves.95+    expect(container.textContent).not.toContain("In the same room? Use a chirp");96+97+    const sameRoom = buttonContaining(container, "Same room")!;98+    const desktop = buttonContaining(container, "Desktop helper")!;99+    expect(sameRoom).toBeTruthy();100+    expect(desktop).toBeTruthy();101+    // Each card carries its own description and a leading icon.102+    expect(sameRoom.textContent).toContain("Chirp — plays an inaudible sound");103+    expect(desktop.textContent).toContain("Enter the code shown by peach-sync");104+    expect(sameRoom.querySelector(".peach-pair-method-icon")).toBeTruthy();105+    expect(desktop.querySelector(".peach-pair-method-icon")).toBeTruthy();96106   });97107 98108   it("renders a 6-digit numeric code input with birds present", () => {

view file