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
+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/`);
});
}