KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

17,374
Total Changes
5,891
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,374AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,822TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,631kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,891Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
March 19, 2026
FixVOIPService

Serialize Long IDs as strings to prevent JS precision loss

CockroachDB unique_rowid() generates 64-bit integers larger than Number.MAX_SAFE_INTEGER (2^53-1). JS JSON.parse silently rounds them, causing conversation ID m...

Kamo·7mo ago
Fixkamo-internal

Remove duplicate Back button from RingCentralConfig

Parent PhoneProviderSetup already renders an IconButton with ArrowLeft in the config view header, making the Back button inside RingCentralConfig a duplicate.

kamo·7mo ago
FixVOIPService

Return flat map from send endpoint to prevent LazyInitializationException

VoipMessage.conversation is FetchType.LAZY; after @Transactional commits, Jackson serializing the entity would throw LazyInitializationException causing a 500, ...

Kamo·7mo ago
FixVOIPService

Fall back to org mainPhoneNumber when member has no VOIP config

Members without an individual MemberVoipConfig (or no fromPhoneNumber set) now use the org's mainPhoneNumber from VoipProviderConfig as the outbound number, ins...

Kamo·7mo ago
FixVOIPService

Remove getJwtKey() from WebhookController after OAuth migration

Signature validation used jwtKey as HMAC secret which no longer exists on VoipProviderConfig. Skip validation for now consistent with ****************

Kamo·7mo ago
Fixkamo-internal

Use plain img tags for local SVG provider logos

next/image does not reliably serve local SVGs without unoptimized flag. Plain img tags load /public assets directly with no issues.

kamo·7mo ago
FixVOIPService

Use correct session key casing for orgID and memberID

KSessionService stores keys as orgID and memberID (capital D). Both controllers were calling .get("orgId") and .get("memberId") which always returns null, causi...

Kamo·7mo ago
Fixkamo-internal

Always show softphone and SMS buttons in NavTop

Removed isVoip gate so the buttons are always visible regardless of feature flag state.

kamo·7mo ago
Fixkamo-internal

Use feature type name as key before numeric id in org feature preprocessing

Java returns features with `type: "VOIP"` and a numeric `id`. The preprocessing chain had `obj.id` before `obj.type`, causing all features to get numeric string...

kamo·7mo ago
FixMediaService

Add voip.> to NATS stream subjects and handle IllegalStateException in VoipStompRelayController

The NATS stream only covered chat.> so subscribing to voip.> threw IllegalStateException ([SUB-90007] No matching streams). Added voip.> to the stream subjects ...

Kamo·7mo ago
FixEmailService

Add security-service.*** to K8s ConfigMap

KamoJwtService requires this property for Bearer token validation in DavAuthFilter, but the K8s ConfigMap overrides application.yml and was missing it — causing...

Kamo·7mo ago
Fixkamo-internal

Show Phone System(s) settings unconditionally so orgs can configure VOIP before enabling it

- Remove isVoip gate from phone section on /settings page — Provider Setup card has no condition so it always appears; Agents and Dial Plans still gated by isVo...

kamo·7mo ago
Fixkamo-internal

Guard against non-array API responses in useContacts hook

setBooks, fetchContacts, and searchContacts now safely handle error objects and Spring paginated wrappers instead of crashing with 'e.map is not a function'.

kamo·7mo ago
Fixkamo-internal

Use outer SettingsView help panel on email provider config page

Push provider-specific help to HelpTipsOverrideContext so the config view uses the same Help & Tips panel layout as the list view, instead of rendering its own ...

kamo·7mo ago
Fixkamo-internal

Rename email nav sub-item from General to Provider Setup

Uses namespaced key Email - Provider Setup to avoid collision with the existing AI Provider Setup route entry.

kamo·7mo ago
FixEmailService

Add *** secret to deployment envFrom

Kamo·7mo ago
FixEmailService

Remove duplicate JPA repo scan — use parent package only

com.kamo.z.shared.email covers metadata.repos, scanning both caused BeanDefinitionOverrideException on messageLabelRepository.

Kamo·7mo ago
March 18, 2026
Fixkamo-internal

Reorder source dropdown, default to user, use team member label

- Default scope changed from "company" to "user" - Dropdown order reversed: Team Members first, Department, then org - "Individual User" renamed to the parent o...

kamo·7mo ago
Fixkamo-internal

Remove placeholder text from preview, allow sending without subject

- Empty email body in preview no longer shows "Start typing your email..." - Subject is no longer required to send — Send button is enabled with just a recipi...

kamo·7mo ago
Fixkamo-internal

Template dropdown fills remaining width, other controls right-aligned

The template source dropdown now has flex:1 to fill all remaining space. Edit/Preview toggle, attach button, Draft, and Send buttons are right-aligned with flex...

kamo·7mo ago
Fixkamo-internal

Wrap email body in template HTML when sending

The send handler was sending raw editor content without the template. Now wraps the body in the full template layout (far bg, margin, near bg, padding, header, ...

kamo·7mo ago
Fixkamo-internal

Remove horizontal scrollbar and extend preview to full height

- Use padding on the outer far-bg div instead of margin on the inner near-bg div to prevent width:100% + margin overflow - Set overflowX:hidden on the preview...

kamo·7mo ago
Fixkamo-internal

Repopulate member/org data when switching source scope

The sync ref was set once and never reset, so switching scope left the new scope's config with empty content fields (empty names, email, company, etc.) causing ...

kamo·7mo ago
Fixkamo-internal

Move template dropdown, preview toggle, and attach to footer row

Move template scope dropdown, Editor/Preview toggle, and attachment button from the subject row to the bottom footer bar, aligned left. Draft and Send buttons s...

kamo·7mo ago
Fixkamo-internal

Fetch member/org data directly instead of through hooks

Removed useUserInfo, useSignatureData, and useImageResolver hooks which each had independent async fetch cycles causing race conditions where memberId/orgId wer...

kamo·7mo ago
Fixkamo-internal

Use example data in email preview when member/org data not loaded

The preview was rendering empty signatures because member/org data from useSignatureData returns empty strings while loading (or when memberId/orgId are 0). Now...

kamo·7mo ago
Fixkamo-internal

Always render template preview even without saved backend template

When no template is saved in the backend (404), fall back to DEFAULT_CONFIG instead of showing plain unformatted content. The preview now always renders with at...

kamo·7mo ago
Fixkamo-internal

Re-render templates client-side with real data in email preview

The preview was showing placeholder text ({{member.firstName}} etc.) because it used the pre-rendered placeholder HTML from the backend. Now the MessageTool: -...

kamo·7mo ago
FixEmailService

Add rspamd config to K8s ConfigMap and set ddl-auto to none

The rspamd.base-url property was missing from the production ConfigMap, causing CrashLoopBackOff on deploy. Also corrects dev ddl-auto to none.

Kamo·7mo ago
Fixkamo-internal

Simplify source selector, add dirty tracking and unsaved changes dialog

- Remove department/user sub-type selectors — templates are org-level for the organization, all departments, and all users - Remove the avatar icon to the lef...

kamo·7mo ago
Fixkamo-internal

Move Live Preview label into email header bar, remove Copy HTML button

Live Preview title and icon now sit right-aligned inside the To/Subject header bar. Removed the Copy HTML button and all clipboard logic.

kamo·7mo ago
Fixkamo-internal

Move source selector into builder header, 2-col templates, wider preview

- Move Source dropdown from top card into the builder panel header bar (matching the Live Preview title position) - Remove Undo and Reset buttons entirely - C...

kamo·7mo ago
Fixkamo-internal

Default margin to 8px and padding to 16px

kamo·7mo ago

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing