feat(android-terminal): Phase F — kiosk, immersive, queued-action toast
Some checks failed
CI / ruff (push) Successful in 14s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled

Closes out the Android terminal plan (Phases A → F).

- MainActivity:
  * Immersive mode via WindowInsetsControllerCompat — hides status +
    navigation bars, swipe-to-reveal with auto-hide
    (BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE). Re-applied in onResume so
    a transient overlay can't leave the bars visible.
  * Lock Task Mode — startLockTask() in onResume. The manifest already
    declares lockTaskMode="if_whitelisted", so this enters kiosk on a
    properly MDM-provisioned tablet and is a silent no-op (caught
    SecurityException) on dev / unprovisioned devices.

- TerminalScreen:
  * SnackbarHost pinned at the bottom; LaunchedEffect(actionResult)
    shows "Queued — will sync when back online" whenever an offline
    action gets queued, so the cashier has explicit feedback beyond the
    top-bar pending pill.
  * 4 new locale strings (en/fr/de/lb) for the snackbar copy.

- Manifest cleanup: dropped redundant tools:replace from the debug
  AndroidManifest overlay (networkSecurityConfig isn't set in the main
  manifest, so the replace directive was a no-op + emitted a warning).

Skipped from the plan: a custom splash screen (the existing theme
background renders for the cold-start frame; adding the splashscreen
library is polish for a follow-up) and per-action success toasts
(the action sheet closing + balance refresh + recent-feed update are
adequate confirmation).

Verified by ./gradlew assembleDebug — clean build.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-08 00:20:46 +02:00
parent ac5f46cff3
commit c1d367bac2
8 changed files with 101 additions and 4 deletions

View File

@@ -70,6 +70,12 @@ dependencies {
debugImplementation(libs.compose.ui.tooling)
// Networking (Retrofit + Moshi)
// Note: Moshi 1.15.x prints a one-line "Kapt support … deprecated" warning
// during hiltJavaCompileDebug because Hilt's javac compile auto-discovers
// its annotation processor. It's purely cosmetic — KSP runs the codegen
// and the warning has no effect on output. Cure (moshix) needed Kotlin
// 2.1.21+, which would cascade into bumping KSP / Compose BOM. Living
// with the warning until Moshi 2.0 ships KSP-native.
implementation(libs.retrofit)
implementation(libs.retrofit.moshi)
implementation(libs.okhttp)