Some checks failed
Wraps the terminal screen in an IdleTracker that observes pointer-down events and fires onLockScreen after 2 min of silence (per spec). Each tap restarts the timer via a LaunchedEffect re-launch. awaitFirstDown(requireUnconsumed = false) lets us observe touches without intercepting them, so children (text fields, buttons, lists, keypad) keep working normally. Body extracted into a private TerminalContent so the wrapper stays tidy. Caveat: Compose AlertDialogs render in a separate window, so the timer keeps ticking through an open dialog. This is correct behavior — a cashier who walks away mid-dialog should be locked out — and the dialog disposes when the NavHost pops the terminal route on lock. Documented in IdleTracker.kt. Verified by ./gradlew assembleDebug — clean build. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>