diff --git a/dashboard/app.js b/dashboard/app.js index bff48f1..457eff2 100644 --- a/dashboard/app.js +++ b/dashboard/app.js @@ -1,9 +1,11 @@ const pageCache = {}; +const PAGE_BASE = '/dashboard/pages/'; + async function loadPage(name) { if (pageCache[name]) return pageCache[name]; try { - await loadScript(`pages/${name}.js`); + await loadScript(`${PAGE_BASE}${name}.js`); pageCache[name] = true; } catch (err) { console.error(`Failed to load page: ${name}`, err); diff --git a/dashboard/pages/cost-analytics.js b/dashboard/pages/cost.js similarity index 100% rename from dashboard/pages/cost-analytics.js rename to dashboard/pages/cost.js diff --git a/dashboard/styles.css b/dashboard/styles.css index 0a5ef81..769234d 100644 --- a/dashboard/styles.css +++ b/dashboard/styles.css @@ -93,8 +93,20 @@ body { .sidebar.collapsed .sidebar-section-label, .sidebar.collapsed .agent-status-text, .sidebar.collapsed .theme-label { display: none; } -.sidebar.collapsed .nav-item { justify-content: center; padding: 12px; } -.sidebar.collapsed .sidebar-header { justify-content: center; } +.sidebar.collapsed .nav-item { + justify-content: center; + padding: 10px 0; + margin: 1px 6px; +} +.sidebar.collapsed .nav-item .nav-icon { + width: auto; + font-size: 18px; +} +.sidebar.collapsed .nav-item.active::before { left: -6px; } +.sidebar.collapsed .sidebar-section { padding: 4px 0; } +.sidebar.collapsed .sidebar-toggle { display: none; } +.sidebar.collapsed .sidebar-header { justify-content: center; padding: 18px 0; } +.sidebar.collapsed .sidebar-footer { justify-content: center; padding: 12px 0; flex-direction: column; gap: 8px; } .sidebar-header { display: flex; @@ -545,19 +557,11 @@ pre { @media (max-width: 900px) { .grid-4 { grid-template-columns: repeat(2, 1fr); } .grid-3 { grid-template-columns: repeat(2, 1fr); } - .sidebar:not(.collapsed) { width: 68px; min-width: 68px; } - .sidebar:not(.collapsed) .logo-text, - .sidebar:not(.collapsed) .nav-label, - .sidebar:not(.collapsed) .sidebar-section-label, - .sidebar:not(.collapsed) .agent-status-text, - .sidebar:not(.collapsed) .theme-label { display: none; } - .sidebar:not(.collapsed) .nav-item { justify-content: center; padding: 12px; } - .sidebar:not(.collapsed) .sidebar-header { justify-content: center; } .topbar-search { display: none; } + .page-content { padding: 16px; } } @media (max-width: 600px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } - .page-content { padding: 16px; } .form-row { grid-template-columns: 1fr; } } diff --git a/server.py b/server.py index 418816c..f9fb5be 100644 --- a/server.py +++ b/server.py @@ -432,6 +432,12 @@ def index(): return HTMLResponse(content=content) return HTMLResponse("

Agentic OS

Dashboard not built yet. Run ./install.sh first.

") +# ─── Favicon ────────────────────────────────────────────────────── + +@app.get("/favicon.ico") +def favicon(): + return HTMLResponse("") + # ─── Main ───────────────────────────────────────────────────────── if __name__ == "__main__":