feat(android): reach desktop feature parity and fix 16 KB page-size crash

Swap lazysodium/JNA for a pure-Java Bouncy Castle crypto envelope so the
APK ships no native .so files (resolves the Android 15 16 KB alignment
crash) while staying byte-compatible with the desktop libsodium sync.

Bring the Android app up to the desktop feature set: full item CRUD with
an add/edit screen and FAB, inline editing on the detail view (status,
rating, favorite, per-unit/segment watched toggles, delete), online
metadata search (TMDB/OpenLibrary/AniList/RAWG) that pre-fills the editor,
library filtering and sorting, a statistics view, and settings polish for
dark mode and provider API keys/language.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Tronax 2026-06-21 01:40:55 +02:00
parent de353f0218
commit c0389bd8d2
Signed by: Tronax
SSH key fingerprint: SHA256:2pKKXDZucWvaF/GzXNz0FY53EAO1YDLN80bqS+TTz/o
24 changed files with 2162 additions and 75 deletions

View file

@ -6,7 +6,9 @@ import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Surface
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.umt.tracker.ui.UmtNavHost
import com.umt.tracker.ui.theme.UmtTheme
@ -15,7 +17,8 @@ class MainActivity : ComponentActivity() {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContent {
UmtTheme {
val darkTheme by Graph.appPrefs.darkMode.collectAsStateWithLifecycle()
UmtTheme(darkTheme = darkTheme) {
Surface(modifier = Modifier.fillMaxSize()) {
UmtNavHost()
}