43dfb18543c3

fix: Match browser Codex PDF filename (v2.3.35)

- Suggest dated peach-codex-YYYY-MM-DD.pdf exports from Codex generation - Add filename format coverage and update browser parity notes - Verified with focused CodexGenerateScreenTest and full testDebugUnitTest/assembleDebug/lintDebug gate

time
2026-06-26 10:53 UTC · 4 months ago
machine
koh2
parent
f7363adae266
3 files app/build.gradle+2 −2app/src/main/java/com/peachpasswords/ui/codex/CodexGenerateScreen.kt+5 −1app/src/test/java/com/peachpasswords/ui/codex/CodexGenerateScreenTest.kt+6 −0
app/build.gradle+2 −2
@@ -16,8 +16,8 @@1616         applicationId "com.peachpasswords"1717         minSdk 261818         targetSdk 3519-        versionCode 23340020-        versionName "2.3.34"19+        versionCode 23350020+        versionName "2.3.35"2121 2222         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"2323         vectorDrawables {

view file

app/src/main/java/com/peachpasswords/ui/codex/CodexGenerateScreen.kt+5 −1
@@ -40,6 +40,7 @@4040 import com.peachpasswords.ui.theme.peachColors4141 import com.peachpasswords.ui.theme.PeachType4242 import com.peachpasswords.ui.theme.ShellBackground43+import java.time.LocalDate4344 4445 @Composable4546 fun CodexGenerateScreen(@@ -132,7 +133,7 @@132133                     SummaryRow("codes", "${s.manifest.totalChunks} (${s.manifest.parityChunks} recovery)", accent)133134                     SummaryRow("pages", s.manifest.pageCount.toString(), accent)134135                     Spacer(Modifier.height(24.dp))135-                    CodexButton("Save PDF…", accent, filled = true) { saveLauncher.launch("peach-codex.pdf") }136+                    CodexButton("Save PDF…", accent, filled = true) { saveLauncher.launch(codexPdfFileName()) }136137                     Spacer(Modifier.height(10.dp))137138                     CodexButton("Generate again", peachColors.T2, filled = false) { vm.startGenerate(System.currentTimeMillis()) }138139                 }@@ -156,6 +157,9 @@156157     !recoveryWordsSet -> CodexGenerateGate.RECOVERY_REQUIRED157158     else -> CodexGenerateGate.READY158159 }160+161+internal fun codexPdfFileName(date: LocalDate = LocalDate.now()): String =162+    "peach-codex-$date.pdf"159163 160164 private fun stepLabel(step: CodexStep): String = when (step) {161165     CodexStep.COMPRESS -> "compressing vault…"

view file

app/src/test/java/com/peachpasswords/ui/codex/CodexGenerateScreenTest.kt+6 −0
@@ -2,6 +2,7 @@22 33 import org.junit.Assert.assertEquals44 import org.junit.Test5+import java.time.LocalDate56 67 class CodexGenerateScreenTest {78 @@ -11,5 +12,10 @@1112         assertEquals(CodexGenerateGate.PRO_REQUIRED, codexGenerateGate(isPro = false, recoveryWordsSet = true))1213         assertEquals(CodexGenerateGate.RECOVERY_REQUIRED, codexGenerateGate(isPro = true, recoveryWordsSet = false))1314         assertEquals(CodexGenerateGate.READY, codexGenerateGate(isPro = true, recoveryWordsSet = true))15+    }16+17+    @Test18+    fun codexPdfFileName_matchesBrowserDateFormat() {19+        assertEquals("peach-codex-2026-06-26.pdf", codexPdfFileName(LocalDate.of(2026, 6, 26)))1420     }1521 }

view file