- Hide omnibox search bar when user is not logged in
- Hide Drive, Tasks, CRM, and Calendar navigation items when logged out
- Update theme manager to use correct CSS path (/suite/public/themes/)
- Improve theme switching to update all color variables including --color1/--color2
- Fix bot config color override logic to respect user's theme selection
- Add disconnect notification flag to prevent duplicate notifications
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update JS asset version from 20260207 to 20260215 to force
browser cache reload after theme/logo fixes.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Fix theme CSS path from /public/themes/ to /suite/public/themes/
- When user selects theme, update chat color variables to match
- Only apply bot config colors if user hasn't selected custom theme
- Add bot logo support to login page
- Add CSS styling for login logo image
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Increment CACHE_VERSION from v1 to v2
- Forces all users to fetch fresh translations from API
- Fixes issue where old cache with placeholders was overriding correct HTML
- Browser cache had stale translations from before i18n embed fix
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add CACHE_VERSION constant (v1)
- Include version in cache key to auto-invalidate old caches
- Update clearCache to handle versioned keys
- Add comment explaining when to increment version
- Remove chat header (logo and title) from chat window since logo
will be displayed in top bar from config.csv
- Update CSS to use --chat-color1 and --chat-color2 for all themed elements
- Remove hardcoded theme overrides that interfered with config colors
- Fix text contrast: bot messages now use color2 background with black text
- Update suggestion buttons to use theme colors from config.csv
- Clean up JavaScript to remove references to deleted header elements
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed root-level static routes (/:dir/*path) that conflicted with
bot name prefixes like /edu. Now all assets are served under /suite/
path, allowing the fallback handler to properly detect and strip
bot prefixes before resolving file paths.
Fixes:
- /edu/suite/js/api-client.js now returns 200 OK
- /edu/suite/css/apps-extended.css now returns 200 OK
- /edu/suite/admin/admin.js now returns 200 OK
- Base href injection working correctly for bot prefixes
- Remove 'paths' filter from push/pull_request triggers
- Path filters like 'botui/**' only work in main gb repo
- In standalone botui repo, files are at root level (src/, Cargo.toml, etc.)
- CI will now run on all pushes to main branch
- Fix RustEmbed folder path to use $CARGO_MANIFEST_DIR/ui
- Remove duplicate interpolate-folder-path feature (now in workspace)
- Verified: 13 HTML files embedded, binary works from any directory
- Changed rust-embed folder from '../ui' to 'ui' (relative to crate root)
- Added conditional imports to eliminate unused import warnings
- Now UI files properly embed into botui binary during compilation
- Resolves production error: 'Asset suite/index.html not found in embedded binary'
- New workflow for botui-only builds and deployments
- Trigger only on botui/**, botlib/** changes
- Build only botui package with embed-ui feature
- Deploy only botui binary
- Restart only ui service
- Separate cache key to avoid conflicts with botserver
- Use window.location.origin for redirect to ensure it works from any path
- Redirects to chat (#chat) after successful authentication
- Maintains support for custom redirect parameter
- Hide omnibox search mechanism when search_enabled=false in product config
- Hide apps menu launcher when menu_launcher_enabled=false or when no apps are visible
- Check effectiveApps (after filtering by compiled features) to determine if menu should be shown
- Automatically hide the apps menu button when there are no apps to display
This provides UI controls that respect the new search_enabled and menu_launcher_enabled
directives added to the .product configuration.
- Add bot_name field to WsQuery struct
- Extract bot_name from URL path (e.g., /edu, /chat/edu)
- Pass bot_name to backend WebSocket URL
- Use URL path for bot identification instead of relying on client message