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 11, 2026
Fixkamo-internal

Resolve MUI icons type error and share single STOMP WebSocket connection

- Add tsconfig paths override for @mui/icons-material to bypass broken ESM exports in v7.3.1 that point to non-existent ./esm/index.d.ts - Create ChatWebSocke...

kamo·7mo ago
Fixkamo-internal

Use ref for memberPanelOpen in openChat to prevent stale closure

When a user opens the member panel, clicks a member to chat, then closes the panel before the async session API call returns, the chat window was positioned wit...

kamo·7mo ago
March 10, 2026
FixKlusterServices

Remove forced WebSocket headers from media middleware

Traefik v3 handles WebSocket Upgrade/Connection headers natively. Remove forced headers that broke non-WebSocket API requests.

Kamo·7mo ago
Fixkamo-internal

Route MediaService traffic through Traefik on port 443

- Add MEDIASERVICE_URL env var for cluster-internal service access - Fix getMediaServiceBaseUrl in 9 API routes to use env var first - WebSocket hook connects t...

kamo·7mo ago
FixMediaService

Route WebSocket through Traefik on port 443

- service.yaml: fix port 80→8443 to match pod's actual listen port - ingressroute.yaml: use scheme https + port 8443 for backend - serverstransport.yaml: add in...

Kamo·7mo ago
Fixkamo-shared-library

Make commerce beans conditional on repository availability

Add **************** to EngagementLifecycle and CommerceService so they only load when commerce repositories are scanned. Prevents UnsatisfiedDependencyExceptio...

Kamo·7mo ago
FixKlusterServices

Add system account to all NATS configs

Add $SYS account with admin credentials to k0m1, k1m1, and k2m1 NATS configs. Enables nats CLI cluster management operations (peer removal, step-down, etc.) for...

Kamo·7mo ago
FixMediaService

Use cluster-internal DNS for NATS connection

Change default NATS URL from WireGuard IPs (100.64.x.x) to nats.kamo.svc.cluster.local for the local server. Remote nodes (k0m1, k2m1) remain on WireGuard IPs.

Kamo·7mo ago
Fixkamo-shared-library

Allow app startup when NATS is unavailable

Remove @ConditionalOnBean from jetStream() and add @Nullable to the Connection parameter. When natsConnection() returns null (NATS unreachable), Spring no longe...

Kamo·7mo ago
Fixkamo-internal

Reorder stat cards to match tab order

Communications → Docs → Open Tasks → History

kamo·7mo ago
Fixkamo-internal

Remove layout.tsx, fix docCount/historyCount type errors

- Delete layout.tsx that was incorrectly added (would affect entire site) - Revert page.tsx wrapper div (not needed) - Move gradient background back into LeadVi...

kamo·7mo ago
Fixkamo-shared-library

Guard system role isAllowDelete from being changed

Kamo·7mo ago
FixSecurityService

Save sessionTimeoutMinutes on member update

Kamo·7mo ago
Fixkamo-internal

Update PipelineOrdersTab vendor field names to match backend DTOs

Changed v.uid → v.id, v.name → v.companyName, and selectedVendorId type from number to string to align with CommerceMarketVendor DTO.

kamo·7mo ago
Fixkamo-internal

Align TypeScript types with backend DTOs for commerce markets

The CommerceMarket, CommerceMarketVendor, and VendorCategory TypeScript interfaces used wrong field names (uid/name vs id/title, name vs companyName, websiteUrl...

kamo·7mo ago
Fixkamo-internal

Pipeline markets not loading and market manager layout spacing

Pipeline was showing "No commerce markets configured" because getPOSConfig() never returned the markets field. Now fetches markets from commerceMarketApi direct...

kamo·7mo ago
Fixkamo-internal

Resolve 'u.map is not a function' on POS settings and update Commerce nav

- Add defensive array extraction in commerceMarketApi (getMarkets, getVendorCategories, getMarketVendors, seedVendorCategories) to handle wrapped API responses ...

kamo·7mo ago
Fixkamo-internal

Resolve Next.js dynamic route slug conflict ('id' vs 'marketId')

Merge [marketId] directory into [id] for commerce-markets API routes. Next.js requires all dynamic segments at the same path level to use the same parameter nam...

kamo·7mo ago
Fixkamo-internal

Resolve TypeScript errors in enterprise pipeline tabs

- Make toCSV columns parameter optional with auto-derivation from object keys - Fix downloadBlob call in ProcurementTab (wrong arg count, missing Blob wrapper) ...

kamo·7mo ago
March 9, 2026
Fixkamo-internal

Remove duplicate session timeout fields from session types

Aligns with SecurityService change that removes createdAt/expiresIn from Redis session records and tokenExpiration from session info responses. - user-info/rou...

kamo·7mo ago
FixSecurityService

Remove duplicate session timeout system from Redis records

Session expiry is now managed solely by the Redis key TTL. The internal createdAt/expiresIn fields stored inside the Redis value have been removed — they formed...

Kamo·7mo ago
Fixkamo-internal

Make settings content panel scrollable

kamo·7mo ago
Fixkamo-internal

Balance footer help text spacing

kamo·7mo ago
Fixkamo-internal

Update internal layout and styles

- Make main wrapper background transparent so home page fixed background is not covered - Include latest adjustments to automation, security access, and account...

kamo·7mo ago
February 15, 2026
Fixkamo-internal

Handle optional effectiveDate and processedAt in DateTimeDisplay

Type error: string | undefined not assignable to string | number | Date. Add null checks before passing to DateTimeDisplay, show em-dash when absent.

kamo·8mo ago
Fixkamo-internal

Align Commerce submenu with actual Commerce page tabs

- Rename Domain Configuration to Engagement Types - Add Rental Assets, Vendors, Subscription Plans - Update tab param to engagement-types for consistency - Labe...

kamo·8mo ago
Fixkamo-internal

Advanced datagrids fill 100% of content area

- SettingsView: tab content wrapper overflow hidden, motion.div flex chain so tab content gets bounded height and grids can expand. - PipelineRentalAssetsTab:...

kamo·8mo ago
February 14, 2026
FixKlusterServices

Resilient probes so cluster stays up when one node is offline

- Liveness: tcpSocket on 4222 (do not depend on JetStream meta leader) - Readiness: initialDelay 90s, period 15s, failureThreshold 10 so k0m1+k1m1 can form qu...

Kamo·8mo ago
Fixkamo-internal

Use string IDs for pipeline detail APIs (JS safe integer)

- posApi: getOrder, getMortgageApplication, getEngagementById, getBooking accept number | string, URL uses String(id) - Detail pages: pass route id (string) to ...

kamo·8mo ago
Fixkamo-shared-library

Serialize POS DTO uid/id as string in JSON for JS safe integer

- RetailOrderDTO.uid, **************** EngagementDetailDTO.id/linkId, MortgageAppDTO.uid - Use @JsonSerialize(using = ToStringSerializer.class) to avoid precisi...

Kamo·8mo ago
February 13, 2026
Fixkamo-internal

Restore form controls on settings member tabs - fix flex layout collapse

- TabPanel: keep overflow-y auto for scroll, use overflowX hidden - SettingsView: move scroll to parent Box, motion.div uses display block to size to content - ...

kamo·8mo ago
Fixkamo-internal

Restore vertical scrollbar and fix collapsed panes on settings pages

- TabPanel: change overflow from hidden to auto for tab content scrolling - SettingsView: enable overflow-y auto on tab content Box and motion.div - ProfileTab:...

kamo·8mo ago
Fixkamo-internal

Force light mode - prevent OS/browser dark mode from affecting site

- Add force-light-mode-styles.ts with override rules - Inject override in DynamicMetaLoader after external theme CSS loads - Add server-rendered fallback style ...

kamo·8mo ago
February 12, 2026
Fixkamo-internal

Null-safe API response handling + shared layout for sub pages

- posApi: add null checks for getOrder, getMortgageApplication, getEngagementById, getBooking, getProduct, getRentalAsset, getRentalRequest, getAgreement, g...

kamo·8mo 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