Security improvement: PINs are now stored as salted SHA-256 hashes
instead of plain text.
- PinSecurity.kt: Hash/verify utilities with salt
- AdminActivity: Uses hashed PINs for storage and verification
- Backward compatible: verifies against legacy plain text PINs
- PIN field shows placeholder when hashed (enter new to change)
- PinSecurityTest.kt: Unit tests for hashing logic
Format: 'base64salt:base64hash' stored in DataStore
XML onClick handlers require a View parameter. Missing parameter
was causing crash when triple-tapping admin area.
Fixes admin settings access crash on tap.
- ProgressBar in activity_main.xml (top of screen)
- LoadingProgress.kt utility with WebChromeClient
- Shows during page load, hides on complete
- Smooth UX with slight hide delay
Integration: webView.setupProgressBar(binding.progressBar)
- error.html: User-friendly error page with retry button
- ErrorHandler.kt: Utility for handling WebView errors
- ErrorHandlerTest.kt: Unit tests for error handling
Shows friendly error page on network failures instead of blank/broken page.
Includes error code display and one-tap retry.