10 Commits

Author SHA1 Message Date
e7045ab6ba fix(shell): sageReloadMenu always sets sidebar width and updates toggle icon
Previously sageReloadMenu only set sidebar width when collapsed (64px).
When expanded, the inline width was never restored, leaving the sidebar
potentially stuck at collapsed width after menu rebuild. The menu text
widgets (filler class with overflow:hidden) would clip labels to ~1 char.

Now both collapsed (64px) and expanded (240px) states explicitly set
sidebar.el.style.width and updateSidebarIcon after menu rebuild.
2026-07-27 11:12:37 +08:00
0d62b568e2 fix: sageOnLogin skips dashboard load when Router has saved route
Added sageOnLogin(dashboardUrl) function that checks if the SPA Router
has a route (via Router.current() or URL ?page= param) before loading
the dashboard. This prevents user_logined event from overwriting
Router-restored content on page refresh with deep links.
2026-05-31 13:08:45 +08:00
c36ada56b1 fix: sidebar collapse width, CRUD height overflow, dashboard VScrollPanel 2026-05-30 21:20:29 +08:00
37b648da0e feat: wire Menu collapse/expand to sidebar toggle button + menu-collapsed CSS 2026-05-29 11:12:56 +08:00
3659533102 fix: responsive layout - sidebar collapse, mobile adaptation, prevent text jumping
- Fix text jumping on right side when screen narrows (min-width:0 on flex item)
- Fix sidebar toggle button not working (retry icon init, proper state sync)
- Mobile adaptation: sidebar as overlay with slide animation
- Auto-collapse sidebar on mobile viewport (<=768px)
- Click outside sidebar to close on mobile
- Responsive padding for stat cards and main content
- Hide brand title on very small screens (<=480px)
- Smooth transitions for sidebar collapse/expand
2026-05-28 16:58:29 +08:00
9f8e5a6d1c fix: retry theme icon update until bricks button element exists 2026-05-28 14:33:59 +08:00
4170c0b009 fix: remove global_menu_widget id from sageReloadMenu urlwidget 2026-05-28 10:35:10 +08:00
cbe725bcee feat: dynamic menu reload on login/logout
- shell.ui: add id to menu urlwidget, binds for sage_login/sage_logout events
- shell_theme.js: add sageReloadMenu() to rebuild menu urlwidget
- global_menu.ui: complete with all 22 modules and role-based visibility
2026-05-27 17:57:40 +08:00
61a1b2b2fa feat: integrate bricks.Router into shell
- shell_theme.js: call bricks.Router.init() with sage_main_content target
- Remove standalone spa_router.js (now built into bricks)
- Remove spa_router.js from load_path.py RBAC
2026-05-27 15:19:19 +08:00
ffdc7fc983 feat: modern UI redesign - shell layout, theme switching, dashboard revamp
Phase 1-2 deliverables:
- shell.ui: Global layout framework (topbar + collapsible sidebar + main content)
- shell_theme.css: Dark/light theme CSS custom properties system
- shell_theme.js: Theme toggle + sidebar collapse with localStorage persistence
- global_menu.ui: Unified module navigation menu with RBAC visibility
- index.ui: Redesigned dashboard homepage with modern stat cards + quick links
- Stat card widgets: today_usage, today_amount, total_users, concurrent, errors
- chart_top_models.ui + api/top_models.dspy: ChartBar with data_url pattern
- table_top_users_amount.ui: Jinja2-rendered user ranking table
- build.sh: Added .css file linking support

Design system:
- Dark theme (default): slate color palette (#0B1120, #111827, #1E293B)
- Light theme: clean white palette with matching structure
- Theme persisted in localStorage, toggled via topbar button
- Sidebar collapsible with icon-only mode, state persisted in localStorage
- Responsive stat cards with hover effects and trend indicators
- Quick link cards for model management, users, knowledge base, errors
2026-05-25 16:53:36 +08:00