Redesign close pages to match welcome page styling
- Background slideshow with fade/scale animation (8s interval) - 15% primary color overlay + gradient atmosphere overlay - Glass morphism card (rgba(255,255,255...
Branded close pages and correct avatar URL construction
- Close pages (close.html, close2.html) now use org background image, logo, favicon, and glassmorphism styling matching the welcome page - Changed close messa...
Double org logo watermark size and force white text in embed dialog
- Double watermark base dimensions (71x32 → 142x64) in _variables.scss - Double .leftwatermark max constraints (140x70 → 280x140) in _base.scss - Force white co...
Derive display name from first/last name and construct avatar URL from session
Use memberFirstName and memberLastName from *** session to build proper display names instead of falling back to usernameAlias. Construct full avatar URL from t...
Resolve OTK auth failure and login redirect issues in KamoMeet
- Fix Redis key lookup in validate-otk (was missing *** prefix, causing all OTK validations to fail) - Map SecurityService session field names correctly (member...
Replace Meet's native login dialog with org portal redirect for KamoMeet auth
KamoMeet uses OTK → JWT authentication exclusively. When Meet's auth middleware would normally show a username/password login dialog, redirect to the org's inte...
Remove stock Meet virtual backgrounds, use only org-level backgrounds
- Removed hardcoded IMAGES array from constants.ts (7 stock Meet backgrounds) - VirtualBackgrounds component now uses dynamic branding backgrounds directly wi...
Serve virtual backgrounds through Meet's native dynamic branding system
Added /api/branding endpoint that returns org backgrounds in Meet's expected format. Set dynamicBrandingUrl in config so Meet fetches backgrounds natively on st...
Integrate org-level settings into Meet config and branding
Sidecar fetches OrgMeetConfig from backend and maps all settings: - Audio/video mute defaults - Lobby/waiting room mode - Guest access and display name requirem...
Load org CSS/favicon immediately on every page load, widen settings to 800px, force dark text/icons in all dialogs, shrink video preview
1. Branding: loadThemeAssets() now runs FIRST before any auth flow, so org CSS (--navpri, --color-primary), favicon, and logo data are set even during the...
Branding overrides, settings dialog layout, and display name lock via source modifications
- PreMeetingScreen: use CSS variable cascade for left column background color (--navpri/--color-primary fallback) - PreMeetingScreen: add favicon override from ...
Make readOnlyName override more aggressive so Meet cannot overwrite it
Meet can replace window.config entirely during bootstrap, clearing the readOnlyName flag. Add Object.defineProperty trap on window.config to re-inject readOnlyN...
Listen for async branding load event so logo and org colors render
PreMeetingScreen, Watermarks, and WelcomePage were reading window.__KAMO_MEET_BRANDING once during render, missing the data when the async loadBranding() comple...
Resolve settings dialog quality issues — height, tab overflow, and white-on-white text
Change fixed 560px height to auto with 85vh max so content fits without scroll bars. Add flexWrap to tab bar so tabs wrap instead of clipping. Override white th...
Preserve original room name (no capitalization/spaces), add copyable meeting URL field
1. Disabled safeStartCase() which was converting 'myroom123' to 'Myroom 123' with capitalization and random spaces. Room names now display exactly as ente...
Restyle settings dialog with glassmorphism design and horizontal tab bar
Validate OTK FIRST before loading any theme assets to prevent expiry
ROOT CAUSE: branding/overrides.js was loading org config, CSS, favicon BEFORE validating the OTK. These network requests took 10+ seconds, causing the OTK to ex...
Properly lock display name via config override + DOM mutation observer
Three-layer approach to ensure name is locked for authenticated users: 1. localStorage flag 'kamo-meet-authenticated' survives the OTK→JWT redirect 2. After red...
Lock display name via Meet's native readOnlyName config for authenticated users
- Sidecar config.js now sets readOnlyName:true when user has *** cookie or JWT in the page URL (detected via referer/cookie headers) - nginx passes Cookie and...
Generate Prosody JWT from OTK session and redirect with ?jwt= for proper moderator auth
The OTK flow now: 1. Validates OTK via sidecar → gets session (memberId, displayName, etc.) 2. Saves display name to localStorage 3. Calls /api/auth/jwt to gene...
Apply org nav color to entire pre-meeting left column, not just toolbar strip
Target .premeeting-screen (the full-height container) and its content panel children instead of generated class names. Also covers in-meeting toolbox and filmst...
Full settings modal with Devices/Sounds/More/Shortcuts tabs, display name on main card, primary color overlay
- Display name is now a required field on the main card above the room input, not in settings. Users must enter their name before joining. - Settings modal ha...
Validate room existence before anonymous join, add settings modal with device selection
Anonymous users must enter a valid meeting room name - the welcome page checks /api/meet/exists/{roomName} before allowing join. If the meeting doesn't exist or...
Lock display name input for authenticated users on pre-join screen
Authenticated members (arriving via OTK) get their name pre-filled and locked — the input is set to readOnly with pointer-events disabled. A MutationObserver en...
Use relative BOSH/WS URLs in config.js, add OTK auth with name pre-fill, load org CSS for nav colors
Three fixes: 1. config.js BOSH URL changed from cluster-internal address to relative /http-bind (nginx proxies to Prosody). WebSocket uses host header. 2. br...
Add custom welcome page with org-themed backgrounds, glassmorphism card, and room name input
Replaces Meet's default welcome screen with a custom landing page that: - Loads org backgrounds from MinIO theme with carousel transitions - Shows org logo and ...
Enable nginx SSI and copy missing HTML include files (head.html, base.html, fonts.html, body.html, plugin.head.html)
Meet Meet uses nginx Server Side Includes to compose index.html from multiple partial HTML files. Without SSI enabled and the include files present, the page re...
Remove non-existent favicon.svg and connection_optimization from Dockerfile COPY
Use make build system and add .dockerignore for Meet Meet Docker build
Meet Meet uses make/webpack, not npm run build. Added --legacy-peer-deps for peer dependency conflicts, and .dockerignore to exclude node_modules from build con...
Add nginx config with BOSH/WS proxy, sidecar API routing, and SPA fallback
Add dynamic org branding system with MinIO theme resolution
Loads org logos, CSS color variables, favicon, and site name from MinIO-hosted theme assets at runtime via branding/overrides.js, and wires the branding data in...
Strip all Meet branding from user-visible UI
Remove static Meet branding to prepare for dynamic org-based theming: - Replace "Meet Meet" app name with generic "Meeting" in configs - Clear Meet watermark, l...
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.