From 2129d1366474425384407689febe173ecf3a9718 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Mon, 19 Jan 2026 20:34:32 +0100 Subject: [PATCH 1/4] chore: update ai rules for commit messages --- AGENTS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index a8659a16a..3913a9aee 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -164,7 +164,8 @@ suspend fun getData(): Result = withContext(Dispatchers.IO) { - ALWAYS when fixing lint or test failures prefer to do the minimal amount of changes to fix the issues - USE single-line commit messages under 50 chars; use conventional commit messages template format: `feat: add something new` - USE `git diff HEAD sourceFilePath` to diff an uncommitted file against the last commit -- ALWAYS run `git status` to check ALL uncommitted changes after completing any code edits, then provide exactly 3 commit message suggestions covering the ENTIRE uncommitted diff +- NEVER capitalize words in commit messages +- ALWAYS run `git status` to check ALL uncommitted changes after completing any code edits, then reply with 3 commit message suggestions covering the ENTIRE uncommitted diff - ALWAYS check existing code patterns before implementing new features - USE existing extensions and utilities rather than creating new ones - ALWAYS consider applying YAGNI (You Ain't Gonna Need It) principle for new code From b9deea9038a399a70ba428c658e7cd27745c709b Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Mon, 19 Jan 2026 20:41:49 +0100 Subject: [PATCH 2/4] fix: reset keystore entries on wallet wipe --- .../main/java/to/bitkit/data/keychain/AndroidKeyStore.kt | 6 ++++++ app/src/main/java/to/bitkit/data/keychain/Keychain.kt | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt b/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt index 8f9226669..f60108f8e 100644 --- a/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt +++ b/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt @@ -80,4 +80,10 @@ class AndroidKeyStore( val decryptedDataBytes = cipher.doFinal(actualEncryptedData) return decryptedDataBytes } + + fun deleteEncryptionKey() { + if (keyStore.containsAlias(alias)) { + keyStore.deleteEntry(alias) + } + } } diff --git a/app/src/main/java/to/bitkit/data/keychain/Keychain.kt b/app/src/main/java/to/bitkit/data/keychain/Keychain.kt index ad6e82997..7140c252b 100644 --- a/app/src/main/java/to/bitkit/data/keychain/Keychain.kt +++ b/app/src/main/java/to/bitkit/data/keychain/Keychain.kt @@ -96,8 +96,10 @@ class Keychain @Inject constructor( suspend fun wipe() { val keys = snapshot.asMap().keys keychain.edit { it.clear() } + keyStore.deleteEncryptionKey() + val count = keys.size - Logger.info("Deleted all keychain entries: ${keys.joinToString()}") + Logger.info("Deleted keychain encryption key and all '$count' entries") } private val String.indexed: Preferences.Key From b735c6d000d9e4057cd310b5aadbb1c917d4eb70 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Wed, 21 Jan 2026 17:09:24 +0100 Subject: [PATCH 3/4] fix: keystore key regen after wipe --- app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt | 3 ++- app/src/main/java/to/bitkit/data/keychain/Keychain.kt | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt b/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt index f60108f8e..b2767df23 100644 --- a/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt +++ b/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt @@ -81,9 +81,10 @@ class AndroidKeyStore( return decryptedDataBytes } - fun deleteEncryptionKey() { + fun resetEncryptionKey() { if (keyStore.containsAlias(alias)) { keyStore.deleteEntry(alias) } + generateKey() } } diff --git a/app/src/main/java/to/bitkit/data/keychain/Keychain.kt b/app/src/main/java/to/bitkit/data/keychain/Keychain.kt index 7140c252b..9b777174a 100644 --- a/app/src/main/java/to/bitkit/data/keychain/Keychain.kt +++ b/app/src/main/java/to/bitkit/data/keychain/Keychain.kt @@ -96,10 +96,10 @@ class Keychain @Inject constructor( suspend fun wipe() { val keys = snapshot.asMap().keys keychain.edit { it.clear() } - keyStore.deleteEncryptionKey() + keyStore.resetEncryptionKey() val count = keys.size - Logger.info("Deleted keychain encryption key and all '$count' entries") + Logger.info("Reset keychain encryption key and deleted all '$count' entries") } private val String.indexed: Preferences.Key From 49ad3f69daee10cfb7e2a04f0c20dd69eea803d9 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Wed, 21 Jan 2026 17:18:59 +0100 Subject: [PATCH 4/4] refactor: lift alias as param --- app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt b/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt index b2767df23..3391df16e 100644 --- a/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt +++ b/app/src/main/java/to/bitkit/data/keychain/AndroidKeyStore.kt @@ -28,7 +28,7 @@ class AndroidKeyStore( generateKey() } - private fun generateKey() { + private fun generateKey(alias: String = this.alias) { if (!keyStore.containsAlias(alias)) { try { val generator = KeyGenerator.getInstance(algorithm, type)