d52a0fad12
The token refresh callback in websocket.js ignored its ok parameter, causing an infinite reconnect loop when the server rejected the refresh attempt. On failure, redirect to login instead of reconnecting with a cleared token. clearAuthTokens() now also removes vw:permissions from sessionStorage to prevent stale permissions from persisting across logout/login cycles. Also removed duplicate vw:user removeItem call.