You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit introduces database encryption support for the Desktop JVM target using SQLCipher, achieving feature parity with the Android and iOS versions. This was accomplished by replacing the standard `sqlite-jdbc` driver with `sqlite-jdbc-crypt`, a fork that bundles SQLCipher.
Key changes include:
- **feat(db-sqldelight):**
- Added `sqlite-jdbc-crypt` as the JDBC driver for the `jvmMain` source set.
- Updated `JdbcDatabaseHolder` to construct an encrypted JDBC URL with SQLCipher parameters (`cipher=sqlcipher`, `legacy=4`, and `key`) when a password is provided.
- Implemented `JvmCipherUtils` to handle the encryption and decryption of the database file by leveraging SQLCipher's `ATTACH` and `sqlcipher_export` functionalities.
- Added `JvmCipherUtilsEncryptionTest` to provide robust testing for the encryption/decryption logic.
- **test(desktop):**
- Enabled previously ignored encryption-related UI tests for the desktop module (`flowAfterCryptTest`, `settingPasswordTest`).
- Improved the reliability of UI tests by adding descriptive logging, explicit waits, and ensuring `requireNotNull` checks in the navigation router for better error reporting.
- **refactor(ui-test):**
- Enhanced UI test helpers (`waitUntilDisplayed`, `waitAssert`, etc.) with descriptions for better debugging and logging.
- Added logging to UI test cases (`SettingPasswordTestCase`, `FlowAfterCryptTestCase`) to trace test execution flow.
- **chore(deps):**
- Bumped various dependencies, including AGP, Firebase, Compose, and SQLCipher.
- Updated package versions for Android, iOS, and Desktop to `8.4.8`.
- **docs:**
- Updated `README.md` and `ARCHITECTURE.md` files to reflect that encryption is now supported on the Desktop JVM platform.
- **fix(android):**
- Configured the Crashlytics log writer to capture logs from `Debug` severity and higher in release builds to improve remote diagnostics.
- iOS: `cd iosApp && pod install` then open `iosApp/iosApp.xcworkspace` in Xcode and run. Regenerate podspec if needed: `./gradlew :app:ios-kit:podspec`.
23
24
- Web app: `./gradlew :app:web:wasmJsBrowserDevelopmentRun --continuous` (launches the web app in a browser with hot reload).
24
25
- Build without iOS link tasks: `./gradle/build_quick.sh` (see [gradle/build_quick.sh](gradle/build_quick.sh))
Copy file name to clipboardExpand all lines: app/desktop/README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Overview
4
4
5
-
The `app:desktop` module is the **Desktop JVM application** for NoteDelight, built with Compose Multiplatform. It provides a native desktop experience on Windows, macOS, and Linux with full feature parity to the mobile apps.
5
+
The `app:desktop` module is the **Desktop JVM application** for NoteDelight, built with Compose Multiplatform. It provides a native desktop experience on Windows, macOS, and Linux with full feature parity to the mobile apps, including database encryption support via SQLCipher.
6
6
7
7
## Purpose
8
8
@@ -78,7 +78,7 @@ See `app/desktop/keystore.properties` for the stub template. For CI/CD, the cert
78
78
79
79
### Desktop UI Tests
80
80
81
-
Located in `src/jvmTest/`:
81
+
Located in `src/jvmTest/`. The desktop UI tests include full encryption test coverage (setting password, flow after encryption, etc.).
0 commit comments