* fix(#424): fully fix logout→login cycle — clear ViewModel state + manage WS lifecycle
The previous fix (PR #427) fixed button responsiveness after logout
but left two issues that kept login-after-logout broken:
1. Stale ViewModel state — AuthLoginViewModel is Activity-scoped,
so stayed from the first login. When
the user returned to the login screen, LaunchedEffect fired
instantly with the stale value and bounced them to ChatScreen
without showing the form.
Fix: DisposableEffect(onDispose) clears connectionSuccess,
errorMessage, and isLoading when the screen leaves composition.
2. WebSocket lifecycle — logout() never disconnected the WS, so
it stayed open with a null/stale token. After re-login, no one
called connect() with the fresh credentials.
Fix: HermesWsClient.disconnect() on logout,
HermesWsClient.connect() after successful re-login.
* fix(#424): route landing screen clicks through navigateTo
Avoid direct backStack.add() calls to prevent duplicate screen overlay and unresponsive buttons.
* fix(#424): close drawer when gestures are disabled
Ensure the drawer is closed when transitioning to LandingScreen or LoginScreen to prevent the scrim overlay from intercepting clicks.
---------
Co-authored-by: M57 <hy4ri@users.noreply.github.com>