# Auto Logout Module

## Architecture overview

- `useAutoLogout` drives timers, warnings, and logout.
- `multi-tab-sync` propagates activity/warning/logout messages.
- `operation-queue` blocks timeout during active operations.
- `work-preservation` stores 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 `AutoLogoutProvider` once in app shell.
- Surface `AutoLogoutSettings` under 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`.
