Auto Logout Module
Architecture overview
useAutoLogoutdrives timers, warnings, and logout.multi-tab-syncpropagates activity/warning/logout messages.operation-queueblocks timeout during active operations.work-preservationstores and restores draft state.
Hook API
useAutoLogout({ enabled, timeoutMinutes, warningSeconds, onLogout })
Returns warning visibility, expiry timestamp, last activity, and actions (stayLoggedIn, logoutNow).
Integration guide
- Mount
AutoLogoutProvideronce in app shell. - Surface
AutoLogoutSettingsunder account security; the preferences page may also link to the same security controls. - Track long-running operations with
trackOperationStart/trackOperationComplete. - Route changes auto-reset activity via pathname watcher.
Multi-tab protocol
Message types: activity, warning, stay-alive, logout.
Transport: BroadcastChannel with localStorage fallback.
Work preservation contract
Persist safe UI draft data only. TTL is 24h. Corrupt payloads are purged.
Testing
- Hook unit tests in
src/hooks/__tests__/useAutoLogout.test.ts. - Work preservation tests in
src/lib/session/__tests__/work-preservation.test.ts. - Integration checks in
tests/integration/auto-logout.test.ts.