Mstari kwenye mwenyeji wa mkutano wa pamoja umechorwa na kusanidiwa kama yenyewe
Juu ya kukutana.kamocrm.com jina la mwenyeji ni jukwaa la kila shirika ambalo haina uwanja wake mwenyewe, na hakuna kitu kwenye ukurasa milele aliiambia sidecar...
Jina la tab linasoma folda ya shirika pia
kichwa.html ni SSI-kujumuishwa katika ukurasa wa chumba na wengi wa tuli / (wote karibu) kurasa, 404, oauth, offline, dialInfo, prejoin, whiteboard. Maandishi y...
Unda ushawishi wa mpangaji kutoka kwa folda yake ya alias, na nembo iliyopakiwa
Juu ya kukutana.makeitpopsigns.com kila alama, background, stylesheet na favicon Hitilafu ya 404. Upande wa gari uliamua shirika la mwenyeji kwa mipangilio yake...
Jaribu kuweka kwa digest, si kwa tag
Ahadi ya awali inaacha "kuweka picha" kuwa kimya hakuna-op. Hii inathibitisha kuwa matokeo: baada ya rollout, tag ni kutatuliwa kwa digest katika Usajili na Vio...
Ujenzi wa mradi huo haukuleta chochote na uliripoti mafanikio
Picha ni tagged na SHA ahadi, hivyo kujenga upya ahadi hiyo kuzalisha Mfano wa picha sawa. "Kuweka picha" kisha hakuna mabadiliko, Kufukuzwa ni kamwe kuguswa, '...
Let a rollout finish what the old pod was doing
Deploys replaced the only pod of each service with nothing to catch the requests in flight. Three settings, applied across the fleet: - preStop sleeps 10s befo...
The lobby wears the meeting owner's brand, not the platform's
The overlay derived its theme folder from the browser's hostname. On the shared meet host that is the platform's for every tenant, so the CSS, favicon and logo ...
A member's identity and their org stop leaking between tabs
meet.<platform> is shared by every organization without a host of its own, and localStorage is per ORIGIN. The signed-in member's name, email and avatar were wr...
Retry npm ci, which is where this image actually fails
The build has failed on every push since 2026-08-15 and it is not the code. The log shows npm ci dying with ERR_SSL_CIPHER_OPERATION_FAILED and ossl_gcm_stream_...
Scope rooms to their organization on the shared meet host
Room isolation was the HOST. A member of org B could not present a *** cookie on meet.<org-A-domain>, so knowing org A's room name got them nowhere. Serving org...
The column tint over the slideshow is 90%, not 50%
Half strength let too much of the photography through the join column and the preview pane. Both are now 90% of their own colour, so the background reads as a f...
The slideshow covered both columns instead of sitting behind them
#preview is a plain flex item with no position, so the slideshow layer — positioned, z-index 0 — painted over its background and, worse, over the member avatar ...
Size the org logo to 80% of the join column
The join screen capped the branding logo at 40px tall with objectFit contain, so it rendered letterboxed inside the 300px column and looked undersized no matter...
Browsers kept serving a stale app bundle after every deploy
index.html shipped a hardcoded `libs/app.bundle.min.js?v=139` that no build ever changed, the bundle filenames are stable, and nginx sent no Cache-Control at al...
The avatar fallback URL could never resolve
Both avatar-lookup catch blocks built **************** Avatars moved to the fixed, domain-independent `platform/` prefix (SecurityService AvatarObjectPaths) whe...
Colibri-ws proxying always 502'd — nginx had no resolver
The /colibri-ws/<jvb-id>/ location builds its upstream from a capture group. nginx resolves such names at request time and only when a resolver is configured, s...
A dead avatar URL rendered a permanent broken image instead of initials
A participant whose photo is missing from storage showed a broken-image icon to everyone else in the call, forever — it never degraded to initials. Upstream ca...
Kuchochea kubectl download dhidi ya flaky egress [skip ci]
dl.k8s.io juu ya egress ya mkimbiaji hupungua katikati ya uhamisho: curl: (56) OpenSSL SSL read: decryption kushindwa au rekodi mbaya ya Mac ambayo inashindwa k...
Close JWT-forge hole, fix guest join, add "Sign in with Kamo"
- sidecar /api/auth/jwt: derive the member identity (id/name/email/org) from the server-side *** session, not the request body. Previously anyone could POST...
Extend JWT expiry from 5 minutes to 24 hours
Prosody re-validates the JWT when new participants join or conference state changes. With a 5-minute expiry, the presenter's JWT expired mid-meeting causing "Un...
Force-set avatar via Redux dispatch after JWT redirect
The JWT delayed-load pipeline for avatars fails silently with disableThirdPartyRequests. Three-layer approach now: 1. Avatar.tsx _mapStateToProps falls back to...
Use participant avatarURL directly as fallback in Avatar component
The loadableAvatarUrl pipeline (preload check → setLoadableAvatarUrl) was never setting the URL due to disableThirdPartyRequests and the delayed-load flow clear...
Extract CockroachDB IDs as strings before JSON.parse loses precision
CockroachDB unique_rowid() IDs (e.g. 1161936315562426374) exceed JavaScript's Number.MAX_SAFE_INTEGER (9007199254740991). JSON.parse silently corrupts them — 11...
Fetch avatar URL from SecurityService API instead of constructing from hash
The static URL construction from the session hash was returning 404/500 because Avatar Creator SVGs aren't always stored at the expected MinIO path. Now the si...
Set avatar URL directly without preload check, add sidecar logging
The preload check in _getFirstLoadableAvatarUrl was failing because the theme CDN URL couldn't be preloaded from within the browser's security context with disa...
Logo variant race condition, defaultLobbyEnabled ignored, and whoCanRecord not passed to config
- Defer logoUrl resolution in overrides.js until org config loads to prevent flashing the wrong logo variant (SIMPLE vs FULL) - Fire kamo-branding-loaded even...
Allow avatar photos when disableThirdPartyRequests is true and redesign virtual background settings layout
Avatar URLs from the JWT context are first-party theme CDN URLs, not third-party requests. The disableThirdPartyRequests guard was preventing them from loading,...
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...
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...
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...
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...
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...
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...
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.