v0.9.5-8: CRITICAL fix - extensions now reset lockout activity timer

CRITICAL FIX: Extensions now properly reset lockout activity timer
- Pause button extensions now reset lockoutActivityTime when selected
- Manual site timeout extensions now reset lockoutActivityTime when selected
- Prevents lockout from counting idle time accumulated BEFORE extension
- Lockout timer now truly starts fresh when user selects an extension

ROOT CAUSE (v0.9.5-7 was incomplete):
In v0.9.5-7, I added code to checkLockoutTimer() to SKIP lockout checks during
active extensions. This prevented lockout from triggering during the extension
period. However, the extension handlers themselves didn't reset lockoutActivityTime.

TWO PLACES WERE MISSING lockoutActivityTime reset:

1. showInactivityPrompt() - Manual site timeout extensions (line 4632)
   When user selects "15 minutes" on manual site inactivity prompt:
   ✓ Set inactivityExtensionUntil = now + 15min
   ✓ Set lastUserInteraction = now
   ✓ Set siteStartTime = now
   ✗ Did NOT set lockoutActivityTime = now

2. showPauseDialog() - Pause button extensions (line 4680)
   When user clicks pause button and selects "15 minutes":
   ✓ Set inactivityExtensionUntil = now + 15min
   ✓ Set lastUserInteraction = now
   ✓ Set siteStartTime = now
   ✗ Did NOT set lockoutActivityTime = now

BROKEN SCENARIO IN v0.9.5-7:
- Lockout configured for 30 minutes of inactivity
- User is idle for 10 minutes
- User clicks "15 minutes" extension
- lockoutActivityTime still shows 10 minutes ago (NOT reset)
- Extension blocks lockout for 15 minutes (v0.9.5-7 fix working)
- After 15 minutes, extension expires
- v0.9.5-7 code resets lockoutActivityTime to now
- Lockout would happen 30 minutes later

The problem: This means lockout NEVER enforced the configured timeout if
users kept selecting extensions, because each extension expiration reset
the lockout timer.

FIX IN v0.9.5-8:
Added lockoutActivityTime = now to BOTH extension handlers:
- Lines 4637-4641: Manual site inactivity prompt extension handler
- Lines 4684-4688: Pause button extension handler

NEW BEHAVIOR:
- User idle for 10 minutes
- User clicks "15 minutes" extension
- lockoutActivityTime = now (RESET on extension selection)
- User is now considered "active" (selected extension = user interaction)
- Extension blocks lockout for 15 minutes
- After 15 minutes, lockoutActivityTime shows 15 minutes ago
- Lockout happens 30 minutes after extension selected (at 15 + 30 = 45 min total)

This is more intuitive: selecting an extension is a user interaction that
proves the user is present, so lockout timer should start fresh.

Includes all fixes from v0.9.5-7 (checkLockoutTimer respects extensions)
This commit is contained in:
Claude
2025-11-22 03:52:42 +00:00
parent 1a3bb99696
commit 2cfa029a7a
File diff suppressed because it is too large Load Diff