fix: light theme dialogs, workspace panel snap, model cache staleness, docker-compose docs — v0.50.68

Fixes four bugs + locks in one existing fix with regression tests.

Closes #594 (light theme dialogs), #576 (workspace panel snap), #585 (stale model list after CLI change), #567 (docker-compose macOS UID docs). Confirms and tests #590 (transcribing spinner already present).

Reviewed and approved by @nesquena. 1340 tests passing.
This commit is contained in:
nesquena-hermes
2026-04-16 11:55:18 -07:00
committed by GitHub
parent 54e83fb8b6
commit 6c5911a79f
7 changed files with 211 additions and 9 deletions

View File

@@ -683,13 +683,18 @@ function applyBotName(){
await loadWorkspaceList();
await loadOnboardingWizard();
_initResizePanels();
// Restore workspace panel open/closed state from last visit
if(localStorage.getItem('hermes-webui-workspace-panel')==='open'){
_workspacePanelMode='browse';
}
// Workspace panel restore happens AFTER loadSession so we know if
// the session has a workspace — prevents the snap-open-then-closed flash (#576).
const saved=localStorage.getItem('hermes-webui-session');
if(saved){
try{await loadSession(saved);syncWorkspacePanelState();await renderSessionList();if(typeof startGatewaySSE==='function')startGatewaySSE();await checkInflightOnBoot(saved);return;}
try{
await loadSession(saved);
// Only restore the panel from localStorage when the session actually has a workspace.
// Without this guard, sessions without a workspace snap open then immediately closed.
if(S.session&&S.session.workspace&&localStorage.getItem('hermes-webui-workspace-panel')==='open'){
_workspacePanelMode='browse';
}
syncWorkspacePanelState();await renderSessionList();if(typeof startGatewaySSE==='function')startGatewaySSE();await checkInflightOnBoot(saved);return;}
catch(e){localStorage.removeItem('hermes-webui-session');}
}
// no saved session - show empty state, wait for user to hit +

View File

@@ -555,7 +555,7 @@
<div class="settings-section-title">System</div>
<div class="settings-section-meta">Instance version and access controls.</div>
</div>
<span class="settings-version-badge">v0.50.67</span>
<span class="settings-version-badge">v0.50.68</span>
</div>
<div class="settings-field" style="border-top:1px solid var(--border);padding-top:12px;margin-top:8px">
<label for="settingsPassword" data-i18n="settings_label_password">Access Password</label>

View File

@@ -25,6 +25,31 @@
--input-bg:rgba(0,0,0,.03);--hover-bg:rgba(0,0,0,.05);
--strong:#1a1715;--em:#5a544a;--code-text:#8b4513;--code-inline-bg:rgba(0,0,0,.06);--pre-text:#2c2825;
}
/* #594: app-dialog light theme overrides — base styles use hardcoded dark gradients */
:root[data-theme="light"] .app-dialog{
background:linear-gradient(180deg,rgba(240,237,232,.99),rgba(228,224,216,.99));
border-color:rgba(0,0,0,.12);
box-shadow:0 12px 40px rgba(0,0,0,.15);
}
:root[data-theme="light"] .app-dialog-input{
background:rgba(0,0,0,.04);border-color:rgba(0,0,0,.2);
}
:root[data-theme="light"] .app-dialog-input:focus{
border-color:rgba(45,111,163,.5);box-shadow:0 0 0 3px rgba(45,111,163,.12);
}
:root[data-theme="light"] .app-dialog-close{
background:rgba(0,0,0,.04);
}
:root[data-theme="light"] .app-dialog-close:hover{background:rgba(0,0,0,.09);}
:root[data-theme="light"] .app-dialog-btn{background:rgba(0,0,0,.04);}
:root[data-theme="light"] .app-dialog-btn:hover{background:rgba(0,0,0,.09);}
:root[data-theme="light"] .app-dialog-btn.confirm{
border-color:rgba(45,111,163,.45);background:rgba(45,111,163,.12);color:var(--blue);
}
:root[data-theme="light"] .app-dialog-btn.confirm:hover{background:rgba(45,111,163,.2);}
:root[data-theme="light"] .file-rename-input{
background:rgba(0,0,0,.04);
}
:root[data-theme="light"] ::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);}
:root[data-theme="light"] ::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3);}
:root[data-theme="light"] ::selection{background:rgba(45,111,163,.2);}