mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 08:04:45 +00:00
Phase 1 of the messaging privacy lock. Headless cross-platform spine in commons; no UI wiring yet. - LockState sealed interface (Disabled / Locked / Unlocked) - InactivityTimer enum (1m / 5m / 15m / 1h / Never; default 5m) - DmRedactionLevel enum (Generic / Full) - PrivacyLockSettings interface (StateFlows + mutators) - PreferencesPrivacyLockSettings backed by java.util.prefs in jvmAndroid (shared by Desktop + Android; node com/vitorpamplona/amethyst/privacylock) - MessagesLockState — app-global state holder; initial value seeded synchronously from prefs to close the deep-link race; LocalMessagesLockState CompositionLocal provided at App root - CredentialPrompter interface + PromptResult enum + LocalCredentialPrompter CompositionLocal - MessagesLockGate composable — synchronous branch select (no LaunchedEffect guard); LockScreen with biometric button - IdleTimerModifier — pointerInput Initial-pass, non-consuming - 8 unit tests covering cold-start seed, idle expiry, leave-route, Never timer, user-interaction reset, settings cascade, credential-unavailable disable. All green.