21d1b52d8bd8

Codex restore on Settings → DATA — free always, generate Pro-gated, onboarding link via Lock no-vault footer

time
2026-05-17 21:02 UTC · 5 months ago
machine
koh2
parent
fbd343623e31
2 files src/popup/App.tsx+1 −0src/popup/views/Settings.tsx+12 −0
src/popup/App.tsx+1 −0
@@ -1503,6 +1503,7 @@15031503                   onOpenFileImport={handleOpenFileImport}15041504                   onOpenPanic={() => setView("panic")}15051505                   onOpenCodexGenerate={() => setView("codex-generate")}1506+                  onOpenCodexRestore={() => setView("codex-restore")}15061507                 />15071508               </Suspense>15081509             </Show>

view file

src/popup/views/Settings.tsx+12 −0
@@ -63,6 +63,7 @@6363   onOpenFileImport?: () => void;6464   onOpenPanic?: () => void;6565   onOpenCodexGenerate?: () => void;66+  onOpenCodexRestore?: () => void;6667 }6768 6869 type SectionName =@@ -1054,6 +1055,17 @@10541055             <button10551056               class="peach-btn peach-btn--subtle peach-btn--sm"10561057               onClick={() => props.onOpenCodexGenerate?.()}1058+            >1059+              open1060+            </button>1061+          </div>1062+          {/* Restore from Codex: intentionally never gated — a printed1063+              Codex must remain restorable regardless of license state. */}1064+          <div class="peach-settings-row peach-settings-row--meta">1065+            <span>Restore from Codex</span>1066+            <button1067+              class="peach-btn peach-btn--subtle peach-btn--sm"1068+              onClick={() => props.onOpenCodexRestore?.()}10571069             >10581070               open10591071             </button>

view file