This release fixes critical issues with rotation behavior and user interaction:
ROTATION LOGIC FIXES:
- Rotation now properly pauses when user interacts with any URL
- Added manualNavigationMode check to rotation logic
- User interaction (touch, scroll, type) sets manualNavigationMode=true
- "Return to Rotation" button resets manualNavigationMode=false
- Prevents unwanted auto-rotation when user is actively using content
USER INTERACTION IMPROVEMENTS:
- markActivity() now sets manualNavigationMode=true for actual user interaction
- Differentiates between content interaction and prompt responses
- Time extensions continue to be honored during user interaction
- Inactivity prompt closes when user interacts with content
EDGE CASE HANDLING:
- Fixed return to rotation when home URL exists but all URLs have 0 time
- Return to home URL still works even with no rotation configured
- Inactivity prompt properly fires on home URL in no-rotation scenario
PASSWORD/LOCKOUT PRECEDENCE:
- Verified password prompt blocks all interaction on boot
- Lockout properly blocks rotation and prompts
- System resume, screen lock trigger password protection correctly
Technical changes:
- Line 3913: Added !manualNavigationMode check to rotation condition
- Lines 3647-3651: Set manualNavigationMode on user content interaction
- Line 4086-4090: Enhanced returnToHome() documentation for no-rotation case
- Updated VERSION constants and release notes
All existing functionality preserved including:
- Time extensions honored
- Manual tab switching clears extensions
- Prompt only appears on interacted sites
- Password takes precedence on boot/resume/lockout
Password Protection Enhancements:
- Password prompt now appears on bootup if lockout enabled
- Password prompt on system suspend/resume (via powerMonitor)
- Password prompt on screen lock events
- Ensures kiosk is always protected when password feature is enabled
Critical Inactivity Popup Fix:
- Fixed popup not appearing on rotation sites (major UX bug)
- Auto-rotation now preserves userInteractedWithCurrentSite flag
- Added isAutoRotation parameter to attachView()
- Only resets interaction flag on manual navigation
- Inactivity check moved BEFORE rotation check
- Rotation pauses while inactivity prompt is displayed
Lockout Timer Independence:
- Lockout timer now uses lastLockoutCheck instead of lastUserInteraction
- Responding to inactivity prompts no longer resets lockout timer
- Added resetLockoutTimer parameter to markActivity()
- Only actual user interactions (touches, swipes, keyboard) reset lockout
- Ensures lockout fires even if user keeps responding to prompts
Other Fixes:
- Fixed script bailing on manual electron update (graceful error handling)
- Changed "Nuclear reinstall" to "Reinstall complete! System is fresh."
- Moved Session Lockout from Sites menu to Core Settings menu (option 7)
All markActivity() calls updated with proper resetLockoutTimer flags
Critical fix:
- Rotation now pauses completely when session is locked
- Previously rotation would continue running in background while lockout screen displayed
- This caused the lockout screen to disappear after ~1 minute when rotation occurred
- Added sessionLocked check to rotation logic (line 3888)
- Added sessionLocked check to inactivity prompt logic (line 3836)
- Password lockout screen now stays visible until correct password is entered
Major improvements:
- Moved Session Lockout configuration from Sites menu to Core Settings menu
- Now accessible as option 7 in Core Settings for easier access
- Removed from Sites menu to reduce clutter
- Fixed critical inactivity popup bug on rotation sites
- Popup now appears on ALL sites where user has interacted
- Previously only worked on manual (0-timed) sites
- Inactivity check now happens BEFORE rotation check
- Prevents sites from rotating away before popup can appear
- Rotation pauses while inactivity prompt is displayed
Version bump: v0.9.8 → v0.9.9