feat(phase4): permanent cache-control & asset versioning, canonical nabil stored_session_id & resume, dsh session persistence fix, dsh dialogue/files toggle, and collapsible conv sidebar

This commit is contained in:
bolbol
2026-08-20 23:51:08 +01:00
parent e40fe71f5c
commit 9c8f292d0f
6 changed files with 150 additions and 36 deletions
+45
View File
@@ -420,11 +420,56 @@ body, html {
flex-direction: column;
flex-shrink: 0;
overflow: hidden;
transition: width 0.2s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease, border-color 0.2s ease;
}
.hub-conv-sidebar.collapsed {
width: 0 !important;
min-width: 0 !important;
border-right: none;
opacity: 0;
pointer-events: none;
}
.hub-conv-header {
padding: 0.75rem;
border-bottom: 1px solid var(--hub-border-subtle);
display: flex;
align-items: center;
gap: 0.5rem;
}
.hub-conv-header .hub-btn-new-chat {
flex: 1;
}
.hub-collapse-conv-btn,
.hub-expand-conv-btn {
background: transparent;
border: 1px solid var(--hub-border-subtle);
border-radius: var(--hub-radius-sm);
color: var(--hub-text-muted);
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
flex-shrink: 0;
transition: all 0.15s ease;
}
.hub-collapse-conv-btn:hover,
.hub-expand-conv-btn:hover {
color: var(--hub-text-primary);
background: var(--hub-bg-card-hover);
border-color: var(--hub-border-medium);
}
.hub-chat-header-info {
display: flex;
align-items: center;
gap: 0.5rem;
}
.hub-btn-new-chat {
+36 -13
View File
@@ -6,11 +6,14 @@ document.addEventListener('DOMContentLoaded', () => {
// Elements
const sidebar = document.getElementById('hub-sidebar');
const btnToggleSidebar = document.getElementById('btn-toggle-sidebar');
const convSidebar = document.getElementById('hub-conv-sidebar');
const btnToggleConvSidebar = document.getElementById('btn-toggle-conv-sidebar');
const btnExpandConvSidebar = document.getElementById('btn-expand-conv-sidebar');
const universeBtns = document.querySelectorAll('.hub-universe-btn');
const activeTitle = document.getElementById('active-universe-name');
const activeScope = document.getElementById('active-universe-scope');
const activeTagline = document.getElementById('active-universe-tagline');
const nabilModeToggle = document.getElementById('nabil-mode-toggle');
const dshModeToggle = document.getElementById('dsh-mode-toggle');
const tabSession = document.getElementById('tab-session');
const tabFiles = document.getElementById('tab-files');
@@ -67,6 +70,31 @@ document.addEventListener('DOMContentLoaded', () => {
});
}
// Conversation Sub-Sidebar Collapse Persistence
const isConvCollapsed = localStorage.getItem('hermes_hub_conv_collapsed') === 'true';
if (isConvCollapsed && convSidebar) {
convSidebar.classList.add('collapsed');
if (btnExpandConvSidebar) btnExpandConvSidebar.style.display = 'inline-flex';
}
if (btnToggleConvSidebar && convSidebar) {
btnToggleConvSidebar.addEventListener('click', (e) => {
e.stopPropagation();
convSidebar.classList.add('collapsed');
if (btnExpandConvSidebar) btnExpandConvSidebar.style.display = 'inline-flex';
localStorage.setItem('hermes_hub_conv_collapsed', 'true');
});
}
if (btnExpandConvSidebar && convSidebar) {
btnExpandConvSidebar.addEventListener('click', (e) => {
e.stopPropagation();
convSidebar.classList.remove('collapsed');
btnExpandConvSidebar.style.display = 'none';
localStorage.setItem('hermes_hub_conv_collapsed', 'false');
});
}
// Accent Mapping
const ACCENT_MAP = {
'tt': { accent: 'var(--accent-tt)', glow: 'var(--accent-tt-glow)' },
@@ -134,19 +162,14 @@ document.addEventListener('DOMContentLoaded', () => {
updateThemeAccent(universeId);
// Show/hide Nabil Files Toggle
if (universeId === 'nabil') {
nabilModeToggle.style.display = 'inline-flex';
tabSession.classList.add('active');
tabFiles.classList.remove('active');
} else {
nabilModeToggle.style.display = 'none';
}
// Determine layout: DSH uses embedded client, others use Native Chat
// Show/hide DSH Mode Toggle (Exclusif à l'univers DSH)
if (universeId === 'dsh') {
if (dshModeToggle) dshModeToggle.style.display = 'inline-flex';
if (tabSession) tabSession.classList.add('active');
if (tabFiles) tabFiles.classList.remove('active');
showIframeView(`https://dsh-hub.yesminedor.tn/`);
} else {
if (dshModeToggle) dshModeToggle.style.display = 'none';
showNativeChatView();
loadConversations();
}
@@ -617,12 +640,12 @@ document.addEventListener('DOMContentLoaded', () => {
});
}
// Nabil Mode Switcher (Chat Natif vs Fichiers DSH)
// DSH Mode Switcher (Dialogue DSH vs Explorateur de Fichiers)
if (tabSession) {
tabSession.addEventListener('click', () => {
tabSession.classList.add('active');
tabFiles.classList.remove('active');
showNativeChatView();
showIframeView(`https://dsh-hub.yesminedor.tn/`);
});
}