343f605f656a
deep-link detached popup to codex-restore on ?codex=pdf — App.tsx routes past onboarding/lock straight into the restore flow (v3.6.73)
- time
- 2026-05-21 01:57 UTC · 5 months ago
- machine
- koh2
- parent
- 3d870e4370eb
↓ peach-browser-343f605f.tar.gzatlas at this save
files changed4 files
manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/popup/App.tsx+13 −0manifest.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",5- "version": "3.6.72",5+ "version": "3.6.73",66 "description": "Zero-knowledge password manager",77 "browser_specific_settings": {88 "gecko": {manifest.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach",4- "version": "3.6.72",4+ "version": "3.6.73",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": "3.6.72",3+ "version": "3.6.73",44 "description": "Zero-knowledge password manager",55 "type": "module",66 "scripts": {src/popup/App.tsx+13 −0
@@ -394,6 +394,19 @@394394 setBootState("ready");395395 document.getElementById("pre-lock")?.setAttribute("hidden", "true");396396 397+ // Deep-link: ?codex=pdf opens a detached window straight into the398+ // Codex restore flow with auto-picked PDF. The action popup can't host399+ // a file dialog without dismissing itself, so this is the only way the400+ // PDF import path survives. See CodexRestoreView.openPdfPicker().401+ try {402+ const route = new URLSearchParams(window.location.search).get("codex");403+ if (route === "pdf" || route === "restore") {404+ setView("codex-restore");405+ }406+ } catch {407+ // location.search unavailable — ignore.408+ }409+397410 // Check for pending session-storage notices from the background.398411 if (chrome.storage.session) {399412 const session = await chrome.storage.session.get(["pendingProGate", "pendingProNotice"]) as