cb5e4242bca1

fix: Match browser export filenames (v2.3.30)

- Suggest date-stamped PeachScript and CSV export filenames - Pin the browser filename format with a deterministic test - Record T012 export filename progress in the parity map Verified: ./gradlew compileDebugKotlin testDebugUnitTest --tests com.peachpasswords.ui.vault.ExportRoundTripTest Verified: ./gradlew testDebugUnitTest :app:assembleDebug lintDebug

time
2026-06-26 09:09 UTC · 4 months ago
machine
koh2
parent
f6b8ff169519
3 files app/build.gradle+2 −2app/src/main/java/com/peachpasswords/ui/vault/ExportScreen.kt+6 −2app/src/test/java/com/peachpasswords/ui/vault/ExportRoundTripTest.kt+7 −0
app/build.gradle+2 −2
@@ -16,8 +16,8 @@1616         applicationId "com.peachpasswords"1717         minSdk 261818         targetSdk 3519-        versionCode 23290020-        versionName "2.3.29"19+        versionCode 23300020+        versionName "2.3.30"2121 2222         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"2323         vectorDrawables {

view file

app/src/main/java/com/peachpasswords/ui/vault/ExportScreen.kt+6 −2
@@ -58,6 +58,7 @@5858 import com.peachpasswords.vault.VaultRepository5959 import dagger.hilt.android.lifecycle.HiltViewModel6060 import dagger.hilt.android.qualifiers.ApplicationContext61+import java.time.LocalDate6162 import javax.inject.Inject6263 6364 // ─────────────────────────────────────────────────────────────────────────────@@ -123,6 +124,9 @@123124     const val COPIED = "Copied to clipboard."124125 }125126 127+internal fun exportFileName(prefix: String, extension: String, date: LocalDate = LocalDate.now()): String =128+    "$prefix-${date}.$extension"129+126130 private enum class ExportRoute { CHOOSE, PEACHSCRIPT, CSV }127131 128132 @Composable@@ -314,7 +318,7 @@314318         }315319         Spacer(Modifier.size(8.dp))316320         GhostButton("Save to file", peachColors.T1) {317-            saveLauncher.launch("peach-backup.peach")321+            saveLauncher.launch(exportFileName("peach-backup", "peach"))318322         }319323         status?.let {320324             Spacer(Modifier.size(12.dp))@@ -369,7 +373,7 @@369373     AccentButton(370374         label = "Export CSV",371375         enabled = acknowledged && !isEmpty,372-        onClick = { saveLauncher.launch("peach-export.csv") },376+        onClick = { saveLauncher.launch(exportFileName("peach-export", "csv")) },373377     )374378     status?.let {375379         Spacer(Modifier.size(12.dp))

view file

app/src/test/java/com/peachpasswords/ui/vault/ExportRoundTripTest.kt+7 −0
@@ -4,6 +4,7 @@44 import org.junit.Assert.assertEquals55 import org.junit.Assert.assertTrue66 import org.junit.Test7+import java.time.LocalDate78 89 class ExportRoundTripTest {910 @@ -57,5 +58,11 @@5758         val blob = PeachScriptExport.buildEncrypted(listOf(entry()), "backup-pass-12")5859         val r = PeachScriptImport.decryptAndParse(blob, "wrong-password")5960         assertTrue(r is PeachScriptImport.DecryptResult.WrongPassword)61+    }62+63+    @Test fun export_file_names_match_browser_date_format() {64+        val date = LocalDate.of(2026, 6, 26)65+        assertEquals("peach-backup-2026-06-26.peach", exportFileName("peach-backup", "peach", date))66+        assertEquals("peach-export-2026-06-26.csv", exportFileName("peach-export", "csv", date))6067     }6168 }

view file