Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

18,042
Total Changes
4,671
Features
4,589
Fixes
32
Projects
Filter by project
All Projects18,042AIService114APIService140BillingService133ConversionService87DaemonService109DocsService191ESigService80EmailService392InitializerService304KBService76KlusterServices550MCPGatewayService45MediaService466RAGService63SecurityService1,532TranslateService47VOIPService175VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,606kamo-login319kamo-marketing590kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,332kamo-signer-monorepo50kamolos104
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,671Fix4,589Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
March 29, 2026
Fixkamo-meet

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...

Kamo·5mo ago
Fixkamo-internal

Use forwardToApi for meet background uploads instead of manual fetch

The manual fetch with FormData forwarding was breaking multipart boundaries. Now reconstructs FormData and uses forwardToApi which handles headers correctly.

kamo·5mo ago
Fixkamo-shared-library

Use subquery to find org theme backgrounds by user membership instead of direct member join

The previous INNER JOIN on tb.member excluded backgrounds where member was NULL, which is most user-level backgrounds. Now uses a subquery through User→Member→O...

Kamo·5mo ago
Featurekamo-meet

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...

Kamo·5mo ago
FeatureMediaService

Add public config and backgrounds endpoints for sidecar consumption

GET /api/meet/public-config?domain= returns org meet config by domain. GET **************** returns combined virtual backgrounds. Both endpoints are unauthentic...

Kamo·5mo ago
FixMediaService

Remove duplicate endpoints from MeetController, add org-themes to MeetConfigController

MeetConfigController already handled config/background endpoints. The duplicate endpoints in MeetController caused ambiguous mapping. Added org-theme background...

Kamo·5mo ago
FeatureMediaService

Add config CRUD, background management, and org-theme endpoints

All endpoints enforce MANAGE_MEET_SETTINGS privilege. Config auto-creates with defaults on first access per org. Background uploads go to MinIO with SHA-256 has...

Kamo·5mo ago
Featurekamo-internal

Add org theme backgrounds to meets settings and remove deprecated fields

- Add GET route for org theme backgrounds **************** - Update meetApi.ts: remove whoCanCreate and emailInvitesEnabled from MeetConfig, add OrgThemeBackgro...

kamo·5mo ago
Fixkamo-internal

Fetch signature template directly from EmailService with OTK auth, add debug logging

forwardToApi for /api/email/signature-templates went through APIService gateway instead of the Next.js email proxy. Now fetches directly from EmailService with ...

kamo·5mo ago
Fixkamo-internal

Read session from Redis directly (same as /api/user-info), use forwardToApi for all service calls

Root cause: the sender profile showed 'Your colleague' because the session fetch called a non-existent SecurityService endpoint. Signature was malformed because...

kamo·5mo ago
Fixkamo-internal

Replicate exact email composer data flow for meeting invite emails

The previous implementation only filled 8 of 20+ SignatureContent fields, causing malformed signatures with no images, name, or contact info. Now replicates th...

kamo·5mo ago
Fixkamo-internal

Clean up meeting invite email — remove logo, fix subject/host, embed custom message properly

Template changes: - Removed logo image (signature template header handles branding) - Removed 'Hi, Your colleague has invited you' — replaced with custom mess...

kamo·5mo ago
Fixkamo-internal

Wrap meeting invite emails with org signature template (header/footer/signature) and include custom message

Now replicates the exact same email wrapping as the email composer: 1. Fetches signature template from EmailService (USER scope, COMPANY fallback) 2. Fetches se...

kamo·5mo ago
FixMediaService

Update health probes to HTTP port 80 to match new server config

Startup, readiness, and liveness probes were still pointing to port 8443 with HTTPS scheme, causing pod restart loops.

Kamo·5mo ago
Fixkamo-internal

Send meeting invite emails DIRECTLY to EmailService, not through APIService gateway

Root cause: forwardToApi routes through APIService's Java gateway which doesn't preserve multipart FormData boundaries correctly. The email composer works becau...

kamo·5mo ago
Fixkamo-internal

Use subtle background tints on calendar page header and sidebar

Match the leads/allotments page styling with light color-mix backgrounds instead of heavily saturated primary colors.

kamo·5mo ago
FixMediaService

Switch MediaService to HTTP port 80 — TLS termination at Traefik

Internal cluster traffic doesn't need HTTPS. Traefik handles TLS for external clients. This aligns MediaService with all other services.

Kamo·5mo ago
Fixkamo-meet

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...

Kamo·5mo ago
Fixkamo-meet

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 ...

Kamo·5mo ago
Fixkamo-internal

Clear stale hexheads on page refresh instead of restoring orphaned state

Minimized tool windows don't survive refresh, so restoring hexhead positions created orphaned heads with missing icons and non-functional click handlers. Now cl...

kamo·5mo ago
Fixkamo-meet

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...

Kamo·5mo ago
Fixkamo-meet

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...

Kamo·5mo ago
Fixkamo-meet

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...

Kamo·5mo ago
Refactorkamo-internal

Rewrite HexHead placement system with deterministic layout engine

Replaces the buggy collision-avoidance system (spiralSearch, resolveCollisions, flyToHomeRow, dock/group RAF loops) with a single deterministic reflow() functio...

kamo·5mo ago
Featurekamo-meet

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...

Kamo·5mo ago
Chorekamo-meet

Add @mui/icons-material dependency

Kamo·5mo ago
Featurekamo-internal

Add typing indicator to AI chat while waiting for response

The streaming bubble only showed when content was already being streamed, leaving no visual feedback during the REST wait. Added bouncing dots indicator that di...

kamo·5mo ago
Fixkamo-internal

Hide member-specific tabs when memberID is "new" to prevent BAD_REQUEST errors

The /settings/member/new URL (from "Add Team Member" button) is caught by the [memberID] dynamic route, causing AccountActivityTab, MembershipPermissionsTab, an...

kamo·5mo ago
Fixkamo-meet

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...

Kamo·5mo ago
Fixkamo-internal

60s OTK TTL for meet windows, independent chat/email invites that don't block on backend

ROOT CAUSE: The OTK had a 10-second TTL. By the time the kamo-meet page loaded all its assets and branding/overrides.js ran to validate the OTK, it had already ...

kamo·5mo ago
Fixkamo-meet

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...

Kamo·5mo ago
Fixkamo-internal

Send chat invites via existing chat session API, email invites via multipart to EmailService

Chat invites: creates/gets a chat session via POST /api/media/sessions/chat then sends the meeting invite as a text message in that session. Uses the exact same...

kamo·5mo ago
FixAPIService

Use getServerName() instead of getHeader(Host) for original host resolution

ForwardedHeaderFilter consumes X-Forwarded-Host and adapts getServerName() accordingly, while getHeader(Host) returns the raw HTTP Host which may be a K8s inter...

Kamo·5mo ago
Fixkamo-meet

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...

Kamo·5mo ago
FixMediaService

Send chat invites to correct WebSocket topic /topic/chat/incoming/{memberId}

Was publishing to /topic/chat/member/{id} but kamo-internal subscribes to /topic/chat/incoming/{id}. Also fixed Member entity field access **************** inst...

Kamo·5mo ago
Fixkamo-internal

Forward all meeting fields (sendChatInvite, sendEmailInvite, customMessage, roomAlias, joinUrl) to backend

The Next.js API route was stripping sendChatInvite, sendEmailInvite, customMessage, and roomAlias — only forwarding roomName and inviteMemberIds. Backend receiv...

kamo·5mo ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing