diff --git a/client/index.html b/client/index.html
index 5f94043..cb42c83 100644
--- a/client/index.html
+++ b/client/index.html
@@ -20,7 +20,7 @@
-
+
-
+
diff --git a/client/public/version.js b/client/public/version.js
index 5c37a6e..65f6e74 100644
--- a/client/public/version.js
+++ b/client/public/version.js
@@ -1,5 +1,5 @@
// Maintainer-controlled web client version.
// Format: YYYY.MM.DD Rn (example: 2026.02.20 R2)
-window.CHGRID_WEB_VERSION = "2026.02.25 R245";
+window.CHGRID_WEB_VERSION = "2026.02.25 R246";
// Optional display timezone for timestamps. Falls back to America/Detroit if unset/invalid.
window.CHGRID_TIME_ZONE = "America/Detroit";
diff --git a/client/src/main.ts b/client/src/main.ts
index a45587d..dab65e0 100644
--- a/client/src/main.ts
+++ b/client/src/main.ts
@@ -578,7 +578,10 @@ function loadPersistedAuthPolicy(): void {
/** Enables/disables the connect button based on state and nickname validity. */
function updateConnectAvailability(): void {
- dom.logoutButton.disabled = !authSessionToken.trim() && !state.running;
+ const hasSessionToken = authSessionToken.trim().length > 0;
+ const showLogout = state.running || hasSessionToken;
+ dom.logoutButton.classList.toggle('hidden', !showLogout);
+ dom.logoutButton.disabled = !showLogout;
if (state.running) {
dom.connectButton.textContent = 'Connect';
dom.connectButton.disabled = true;
@@ -588,7 +591,6 @@ function updateConnectAvailability(): void {
}
dom.loginView.classList.toggle('hidden', authMode !== 'login');
dom.registerView.classList.toggle('hidden', authMode !== 'register');
- const hasSessionToken = authSessionToken.trim().length > 0;
const usernameMin = authPolicy?.usernameMinLength ?? 1;
const passwordMin = authPolicy?.passwordMinLength ?? 1;
const hasLoginCredentials =