fix: migration hostnames hub point->tiret + bouton repli sidebar
This commit is contained in:
+39
-10
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Hermes Hub — Client-side Workspace Switcher & Context Manager
|
||||
* Routage natif par sous-domaine (tt.hub.yesminedor.tn, nyora.hub..., perso.hub..., nabil.hub..., dsh.hub...)
|
||||
* Résout à 100% le chargement des assets absolus sans réécriture fragile
|
||||
* Routage natif par sous-domaine 1er niveau (tt-hub.yesminedor.tn, nyora-hub..., perso-hub..., nabil-hub..., dsh-hub...)
|
||||
* Résout à 100% le chargement des assets absolus et la couverture TLS wildcard
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@@ -16,6 +16,8 @@
|
||||
const nabilModeToggle = document.getElementById("nabil-mode-toggle");
|
||||
const tabSession = document.getElementById("tab-session");
|
||||
const tabFiles = document.getElementById("tab-files");
|
||||
const sidebar = document.getElementById("hub-sidebar");
|
||||
const toggleBtn = document.getElementById("btn-toggle-sidebar");
|
||||
|
||||
// Accent mappings
|
||||
const ACCENT_MAP = {
|
||||
@@ -42,24 +44,24 @@
|
||||
function getTargetUrl(universeId, mode) {
|
||||
const hostname = window.location.hostname;
|
||||
|
||||
// 1. Production *.hub.yesminedor.tn (Routage par sous-domaine natif)
|
||||
if (hostname === "hub.yesminedor.tn" || hostname.endsWith(".hub.yesminedor.tn")) {
|
||||
// 1. Production *-hub.yesminedor.tn (Routage par sous-domaine tiret)
|
||||
if (hostname === "hub.yesminedor.tn" || hostname.endsWith(".yesminedor.tn")) {
|
||||
if (universeId === "nabil" && mode === "files") {
|
||||
return "https://dsh.hub.yesminedor.tn/";
|
||||
return "https://dsh-hub.yesminedor.tn/";
|
||||
}
|
||||
return `https://${universeId}.hub.yesminedor.tn/`;
|
||||
return `https://${universeId}-hub.yesminedor.tn/`;
|
||||
}
|
||||
|
||||
// 2. Test local *.localhost
|
||||
// 2. Test local *-hub.localhost ou *.localhost
|
||||
if (hostname.endsWith(".localhost") || hostname === "localhost") {
|
||||
const port = window.location.port ? `:${window.location.port}` : "";
|
||||
if (universeId === "nabil" && mode === "files") {
|
||||
return `${window.location.protocol}//dsh.localhost${port}/`;
|
||||
return `${window.location.protocol}//dsh-hub.localhost${port}/`;
|
||||
}
|
||||
return `${window.location.protocol}//${universeId}.localhost${port}/`;
|
||||
return `${window.location.protocol}//${universeId}-hub.localhost${port}/`;
|
||||
}
|
||||
|
||||
// 3. Fallback IP direct / chemin relatif (pour tests curl/SSH)
|
||||
// 3. Fallback IP direct / chemin relatif (tests curl/SSH)
|
||||
if (universeId === "nabil" && mode === "files") {
|
||||
return "/u/nabil/files/";
|
||||
}
|
||||
@@ -142,6 +144,22 @@
|
||||
}, 50);
|
||||
}
|
||||
|
||||
// Sidebar Collapse / Expand Functionality
|
||||
function setSidebarCollapsed(collapsed) {
|
||||
if (!sidebar) return;
|
||||
if (collapsed) {
|
||||
sidebar.classList.add("collapsed");
|
||||
toggleBtn?.setAttribute("aria-label", "Déplier la barre latérale");
|
||||
toggleBtn?.setAttribute("title", "Déplier la barre latérale");
|
||||
localStorage.setItem("hermes_hub_sidebar_collapsed", "true");
|
||||
} else {
|
||||
sidebar.classList.remove("collapsed");
|
||||
toggleBtn?.setAttribute("aria-label", "Replier la barre latérale");
|
||||
toggleBtn?.setAttribute("title", "Replier la barre latérale");
|
||||
localStorage.setItem("hermes_hub_sidebar_collapsed", "false");
|
||||
}
|
||||
}
|
||||
|
||||
// Écouter le chargement de l'iframe
|
||||
if (iframe) {
|
||||
iframe.addEventListener("load", () => {
|
||||
@@ -262,6 +280,17 @@
|
||||
tabSession?.addEventListener("click", () => setMode("session"));
|
||||
tabFiles?.addEventListener("click", () => setMode("files"));
|
||||
|
||||
// Toggle Sidebar
|
||||
toggleBtn?.addEventListener("click", () => {
|
||||
const isCollapsed = sidebar?.classList.contains("collapsed");
|
||||
setSidebarCollapsed(!isCollapsed);
|
||||
});
|
||||
|
||||
// Restore saved sidebar collapsed state
|
||||
if (localStorage.getItem("hermes_hub_sidebar_collapsed") === "true") {
|
||||
setSidebarCollapsed(true);
|
||||
}
|
||||
|
||||
document.getElementById("btn-edit-persona")?.addEventListener("click", openPersonaModal);
|
||||
document.getElementById("btn-clone-universe")?.addEventListener("click", openCloneModal);
|
||||
document.getElementById("btn-save-persona")?.addEventListener("click", savePersona);
|
||||
|
||||
Reference in New Issue
Block a user