Live Change Log

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

17,874
Total Changes
4,587
Features
4,515
Fixes
32
Projects
Filter by project
All Projects17,874AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService351InitializerService299KBService74KlusterServices542MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,556kamo-login318kamo-marketing584kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI522Chore670Docs226Feature4,587Fix4,515Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
July 8, 2026
FeatureConversionService

Recording transcription endpoint for post-meeting summaries

POST /api/conversion/meet/transcribe (X-Internal-Auth): normalizes an uploaded meeting recording to 16kHz mono WAV via a new additive FfmpegService helper, forw...

Kamo·2mo ago
July 7, 2026
Featurekamo-internal

Calendar integration for scheduled meetings + real recording storage meter

- calendarIntegrationEnabled: when on, a scheduled clubhouse meeting is also added to the creator's calendar (via the existing calendar system) carrying the ...

kamo·2mo ago
Featurekamo-shared-library

MeetingRecording entity + repository for captured recordings

New MEETING_RECORDINGS table (org, meeting ref, room, MinIO bucket/object key, size, duration, captured/expiry timestamps, summary status) — the parent record f...

Kamo·2mo ago
Fixkamo-analytics

Alias ALL turbopack content-hashed externals, not just prisma

The prior fix only aliased @prisma/client-<hash>; the build also externalizes pg-<hash> (node-postgres, via @prisma/adapter-pg) under the same content-hashed sc...

Kamo·2mo ago
FixSecurityService

Resolve session from X-***-Token header in CallerSessionResolver

The kamo-internal -> APIService BFF path forwards the session as the X-***-Token header, but the resolver only read the X-OTK attribute or the *** cookie — so B...

Kamo·2mo ago
Featurekamo-internal

Marketing app, settings hub, Canva materials

Make Marketing a first-class org-enableable app and ship the Canva-powered Materials experience. App-enablement: - AppType.MARKETING mirror, Organization.isMar...

kamo·2mo ago
FixSecurityService

PatchLoanFile is no longer a status backdoor; unblocking a condition needs the underwrite right; clear cascades

**************** status changes are the pipeline state machine's job (POST /transitions enforces legal arrows + per-arrow role gate + open-blocking-condition ga...

Kamo·2mo ago
FeatureConversionService

Video poster-frame thumbnails for marketing materials

Canva MP4 exports (and any video upload) skip the Docs PDF path and get a single ffmpeg poster-frame thumbnail (_thumb_p0.png) instead of failing. - **********...

Kamo·2mo ago
FeatureMediaService

Canva Connect OAuth + designs/export backend

- CanvaApiClient: PKCE authorize, token exchange/refresh/revoke, users, designs (create/list), export jobs, byte fetch - CanvaTokenService: encrypted per-memb...

Kamo·2mo ago
Fixkamo-shared-library

Partial condition PATCH can't silently clear the blocking flag; template blocking default honored; publish after commit

**************** boolean -> Boolean so a PATCH that OMITS the field is distinguishable from an explicit false. LoanConditionService.update now null-guards *****...

Kamo·2mo ago
Featurekamo-shared-library

Canva integration + Marketing as an org-enableable app

- **************** — platform Canva Connect client registration - ImageAssocType.MATERIALS(13, imaging-materials) — org marketing assets bucket - **************...

Kamo·2mo ago
Featurekamo-meet

Require-password gate for anonymous guests (members bypass)

When an org enables requirePassword, anonymous link visitors must enter the room password; authenticated members are never prompted. - sidecar: no anonymousdom...

Kamo·2mo ago
Fixkamo-analytics

Alias Prisma 7 content-hashed client so DB routes stop 500ing

The prisma-client generator (engineType=client) bakes a content-hashed runtime specifier (@prisma/client-<hash>) into the Next build. The builder satisfied it v...

Kamo·2mo ago
Chorekamo-internal

Update Linux desktop nav icon

kamo·2mo ago
FeatureKlusterServices

Enable Guacamole json-auth SSO + KamoDesktop rebrand

- JSON_SECRET_KEY (optional) on guacamole from the shared desktop-sso secret enables the bundled guacamole-auth-json extension the god-SSO links validate agai...

Kamo·2mo ago
Featurekamo-internal

God-only KamoDesktop icons (Linux + Windows) opening auto-connected sessions

Two nav icons left of Analytics, shown only to god-eligible members (isGod added to NavGateContext). Each fetches a short-lived SSO link from SecurityService an...

kamo·2mo ago
FixSecurityService

Inject KamoDesktop SSO env directly + wire guac-sso into tracked k8s deployment

- @Value reads KAMO_GUAC_SIGNING_KEY / DESKTOP_PASSWORD from env directly (runtime application.yml is configmap-mounted, so property indirection wouldn't bind...

Kamo·2mo ago
FeatureSecurityService

KamoDesktop SSO token endpoint for god members

GET **************** (god-eligible only) mints a 5-minute guacamole-auth-json token (HMAC-SHA256 + AES-128-CBC, per the extension's wire format) and returns an ...

Kamo·2mo ago
Featurekamo-internal

Org-scoped room names, room-name format, calendar Kamo meetings, start reminders; i18n settings

- useMeeting/MeetingDialog: room names are now namespaced by org token so two orgs can never collide into the same Prosody conference, and honor the org's r...

kamo·2mo ago
Featurekamo-meet

Auto-record + recording watermark from org settings

overrides.js loadOrgMeetSettings now, when recording is enabled: - watermarkOnRecordings → shows an org "REC" watermark overlay while a recording is active (J...

Kamo·2mo ago
FeatureMediaService

Scheduled-meeting start reminders + guest-link expiry

- MeetingReminderSweep: @Scheduled sweeper that fires a realtime "meeting starting" reminder to invited members at (start − reminderMinutesBefore) on ******...

Kamo·2mo ago
Featurekamo-internal

Show member availability in chats list; rename tab to Directory

1:1 chat rows now surface the counterpart's live presence + availability the same way the Directory tab does — same useAvailability/usePresence sources and the ...

kamo·2mo ago
DocsKlusterServices

Design spec for KamoDesktop god SSO icons + Guacamole rebrand

Two god-only nav icons (Linux/Windows) in kamo-internal that open Guacamole in a SecurityService (god-eligible gate), deep-linked straight to each instance. Reb...

Kamo·2mo ago
FixKlusterServices

Move guacd to pod network (MTU fix) + unicast WoL

guacd on hostNetwork (k1m1 eno49 MTU 1500) vs guacamole pod on cilium overlay (MTU 1420): RDP connected but large frames were dropped across the boundary -> 'Gu...

Kamo·2mo ago
Fixkamo-meet

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

Kamo·2mo ago
Fixkamo-internal

Sign invited members into meetings via click-time OTK join links

Invite links (chat + email) previously embedded a bare meet-room URL, so recipients landed as anonymous guests instead of themselves. An OTK can't be pre-embedd...

kamo·2mo ago
FixMediaService

Persist invited participants, enforce MANAGE_MEET_SETTINGS, drop double-invite path

- createMeeting: invited members are numeric snowflake IDs, not UUID strings — route them through longToUUID like the creator. Previously UUID.fromString th...

Kamo·2mo ago
FixKlusterServices

Watch the desktop namespace for IngressRoutes

desktop.kamocrm.com IngressRoute lives in the desktop ns, but Traefik's CRD provider only watched **************** — so the route was ignored and requests fell ...

Kamo·2mo ago
FixKlusterServices

Import VM disk as Filesystem, not Block

CDI's block importer crashlooped: 'blockdev: cannot open /dev/cdi-block-volume: Permission denied' — it can't access the raw Longhorn block device. Filesystem v...

Kamo·2mo ago
FixSecurityService

Borrower submit fires the Application-Taken side effects (doc checklist + notify)

The portal borrower submit is PATCH loan-file {statusId:2}, which bypassed the operator /transitions endpoint where the Application-Taken side effects live — so...

Kamo·2mo ago
Fixkamo-shared-library

Reject negative loan amount / property values on section saves

updateLoan and updateProperty now reject a negative monetary amount on the LTV inputs (loan amount, estimated/purchase/appraised value) via requireNonNegative —...

Kamo·2mo ago
FixKlusterServices

Correct KubeVirt VM cloud-init field + modernize spec

- cloudInitNoCloud userdata secret field is 'secretRef' (not userDataSecretRef); KubeVirt v1.8.4 pruned the wrong field -> 'must have at least one userdatasou...

Kamo·2mo ago
Fixkamo-nowww

Never prepend www to subdomains, only to the bare apex

The catch-all redirected ANY non-alias host to https://www.<host>, which is correct for the bare apex (kamocrm.com -> www.kamocrm.com) but wrong for a subdomain...

Kamo·2mo ago
FixSecurityService

Borrower cannot escalate loan-file status or edit the URLA after submission

Two related borrower-authorization holes on the self-service app endpoints: - Privilege escalation (#2): patchLoanFile applied any statusId with no caller-ri...

Kamo·2mo ago
Fixkamo-shared-library

Loan-file status accessor for borrower edit-lock, borrower-delete cascade, gift-recipient app scoping

**************** orgId): read helper backing the borrower post-submission edit lock (a borrower may only edit the URLA while the file is DRAFT). **************...

Kamo·2mo ago
FeatureKlusterServices

Hardened KubeVirt remote desktop + Guacamole gateway

Adds a full remote-desktop stack, GitOps-applied via the deploy workflow: - KubeVirt + CDI installed at deploy time (pinned-stable release URLs) - desktop-1: K...

Kamo·2mo ago
Featurekamo-internal

Sub-tabs for chat groups, remember last-open tab

The chats list filtered by a row of multi-select pill chips that looked out of place under the Chats tab. Replace them with a single-select sub-tab bar (one tab...

kamo·2mo ago
DocsKlusterServices

Design spec for hardened KubeVirt remote desktop + Guacamole gateway

KubeVirt Kubuntu VM (16Gi/500Gi Longhorn) behind Apache Guacamole HTML5, exposed at desktop.kamocrm.com via Traefik (TLS + rate-limit + IP-ban). Adds LAN Window...

Kamo·2mo ago
Refactorkamo-internal

Move status editor onto the tabs row; note callback auto-note

- Status/sub-status editor now shares the primary-tabs row: tabs left, status aligned right (removes the separate row under the action buttons). - Callback di...

kamo·2mo ago
Fixkamo-internal

Show member avatars in the Chats tab

MediaService returns chat-session member avatarUrl=null by design (avatars are resolved on the frontend), but the Chats tab never resolved them, so it always fe...

kamo·2mo ago
FixSecurityService

Borrower self-create idempotency + orphan compensation; don't relay an empty checklist as success

MortgageAppController.create() borrower self-create branch: - Idempotency (#2): resume an existing owned DRAFT via findOwnedDraft instead of minting a duplica...

Kamo·2mo ago
Fixkamo-internal

Readiness banner refreshes with the Refresh button and never shows an empty market name

Two follow-ups on the MLOS default-lead-source readiness banner: - Refresh (IconButton) now also calls loadMlosReadiness(), so surfacing a newly-created marke...

kamo·2mo ago
Fixkamo-shared-library

Idempotent borrower self-create draft + deterministic active lead-market resolution

**************** memberId): resolves the member's existing in-progress DRAFT application so a repeated borrower self-create (double-click / reload / second tab ...

Kamo·2mo ago
Featurekamo-internal

Explain when email isn't configured; gate compose

The /messages inbox previously rendered its full shell even when the org had no email provider or the member had no mailbox, silently failing every API call. Ad...

kamo·2mo ago
Featurekamo-internal

All-types Chats list + browser-tab attention

Chats sub-tab now lists member, group, support and social conversations together, most-recent first, with a multi-select filter (Team Members / Members / Social...

kamo·2mo ago
FeatureMediaService

Unified Chats feed across member/support/social sessions

GET /api/media/sessions/chat now accepts a `categories` filter (chat, support, social; default all) and returns one globally most-recent-first, merge of the per...

Kamo·2mo ago
Featurekamo-shared-library

Paged queries for support + social chat sessions

feed so the unified Interaction Center Chats list can include all kinds: - SUPPORT (TYPE_ID=2): sessions where the member is the assigned agent OR the request...

Kamo·2mo ago
Featurekamo-internal

Finish lead-view header actions + callbacks

- Header: split Call into Call (Work)/Call (Personal) opening the softphone (hidden when the member has no registered extension), Email opens the composer, ...

kamo·2mo ago
FeatureEmailService

Internal endpoint to create/cancel a member's calendar event

POST /api/internal/calendar/events (X-Internal-Auth gated) resolves member -> user -> primary calendar (creating a default if needed) and creates an event. Used...

Kamo·2mo 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