KamoCRM

Mabadiliko ya Tabianchi

Kila kipengele, kurekebisha na kuboresha, posted kama meli. Hakuna kitu kilichofichwa kwa ajili ya uzinduzi.

17,500
Mabadiliko ya Jumla
5,986
Features ya
5,284
Wa
30
Miradi ya Miradi
Filter ya Mradi
Miradi yote17,500AIService251APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService576InitializerService329KBService151KlusterServices740MCPGatewayService251MediaService602RAGService79SecurityService1,847TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,349kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,657kamo-signer-monorepo56kamolos114
Filter ya aina
Aina zoteBuild16CI523Chore774Docs3,254Feature5,986Fix5,284Other994Performance165Refactor278Revert23Style42Test160Upgrade1
March 11, 2026
Fixkamo-internal

Use inline style for icon colors to prevent CSS specificity override

sx-generated color classes were being overridden by Tab card context styles. Switching color to inline style prop ensures icons always render with the correct c...

kamo·7mo ago
FixSecurityService

Add kamo.commerce.enabled=true to k8s configmap

This is the file the CI pipeline actually applies (k8s/configmap.yaml). Required for CommerceService and EngagementLifecycle to load under the new @ConditionalO...

Kamo·7mo ago
FixSecurityService

Add KAMO_COMMERCE_ENABLED=true to k8s configmap

Required for CommerceService and EngagementLifecycle to load now that they use @ConditionalOnProperty instead of @ConditionalOnBean.

Kamo·7mo ago
Fixkamo-shared-library

Add matchIfMissing=false to ConditionalOnProperty for commerce beans

Makes it explicit that CommerceService and EngagementLifecycle are disabled by default when kamo.commerce.enabled is not set. Any service that does not configur...

Kamo·7mo ago
FixSecurityService

Enable commerce beans via kamo.commerce.enabled property

CommerceService and EngagementLifecycle now use @ConditionalOnProperty instead of @ConditionalOnBean. Set kamo.commerce.enabled=true so they load in SecuritySer...

Kamo·7mo ago
Fixkamo-shared-library

Replace ConditionalOnBean with ConditionalOnProperty for CommerceService

**************** is evaluated before Spring Data JPA registers user-defined repository beans, making it unreliable. Replace with **************** which is evalu...

Kamo·7mo ago
Fixkamo-internal

Prevent overflow:hidden on tab card from clipping status widget

Move overflow:hidden from the Card to the Tabs wrapper Box so scrollable tabs are contained but the right-aligned status/substatus widget remains fully visible.

kamo·7mo ago
Fixkamo-internal

Correct hexhead geometry, z-index layering, and viewport clamping

- Fix axialToPixel to use flat-top hex formula (was pointy-top) so honeycomb aligns flat-edge to flat-edge as the hex SVG shape requires - Fix generateRing to...

kamo·7mo ago
Fixkamo-internal

Use Next.js client-side navigation for all MUI Link components

MUI Link without component={NextLink} renders as a plain <a> tag, causing full page reloads that reset all React state including tool windows. Added component={...

kamo·7mo ago
Fixkamo-internal

Replace window.location hard navigations with router.push/refresh

All window.location.href, window.location.assign(), and window.location.reload() calls in page components caused full page reloads, wiping all React state inclu...

kamo·7mo ago
Fixkamo-internal

Move ToolDock above auth gate to prevent tool window wipe on navigation

PresenceWrapper switches its component tree structure when auth resolves (Fragment > children → ChatWebSocketProvider > PresenceProvider > children). This unmou...

kamo·7mo ago
Fixkamo-internal

Apply toolbar and search changes to embedded chat mode

The ChatBox is always rendered in embedded mode via ChatTool. Move the call controls toolbar with search field and scroll-to-bottom button into the embedded sec...

kamo·7mo ago
Fixkamo-internal

Update HexHeadGroup selectors from data-chatbox-root to data-tool-window

The tool window system uses data-tool-window on ToolWindowShell, but HexHeadGroup was still querying data-chatbox-root for footprint detection. This caused hexh...

kamo·7mo ago
Fixkamo-internal

Chat UI polish - primary color theming, emoji inside input, round send btn, hex status colors

- Department tabs and chatbox header use --color-primary instead of hardcoded green - Emoji picker button moved inside chat input field aligned right - Send but...

kamo·7mo ago
Fixkamo-internal

Chat system improvements - editing spin, hex mask rotation, colors, maximize-minimize

- Detect editing (backspace/delete) vs typing in input to trigger backwards HexHead spin - Rotate hex clip mask along with border during typing/editing (avatar ...

kamo·7mo ago
Fixkamo-internal

Don't invalidate *** session when it matches the new OTK session

The validate route was deleting the existing *** session from Redis before looking up the OTK. When the OTK pointed to the same session, the lookup would fail w...

kamo·7mo ago
FixMediaService

Accept *** from query param for cross-subdomain WebSocket auth

Read *** ID from ?***= query parameter first, falling back to cookie. This allows the frontend on internal.kamocrm.com to authenticate WebSocket connections to ...

Kamo·7mo ago
Fixkamo-internal

Pass *** ID as query param for cross-subdomain WebSocket auth

Instead of relying on cross-domain cookies (which don't work across subdomains), read the *** cookie client-side and pass it as a query parameter when connectin...

kamo·7mo ago
Fixkamo-login

Set *** cookie domain to .kamocrm.com for cross-subdomain sharing

Cookie was set without explicit domain, preventing it from being sent to media.kamocrm.com for WebSocket authentication.

Kamo·7mo ago
Fixkamo-internal

Set *** cookie domain to .kamocrm.com for cross-subdomain sharing

The *** cookie was set without an explicit domain, defaulting to internal.kamocrm.com. This prevented the cookie from being sent to media.kamocrm.com during Web...

kamo·7mo ago
FixMediaService

Handle stale NATS consumer binding with unique consumer retry

- Extract message handler into createNatsMessageHandler() method - Add retry logic with unique consumer name when "Consumer already bound" error occurs after ...

Kamo·7mo ago
Fixkamo-internal

Resolve chat messaging, presence tracking, and auto-open issues

- Fix messages not being received by retrying NATS subscription with unique consumer name when "Consumer already bound" error occurs - Fix offline status by s...

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

Je, unaona nini kuhusu usafiri?

Kila kitu kinaingia kwenye tovuti yako mwenyewe. Anza kwenye mpango wa bure na usome ukurasa huu tena katika mwezi mmoja.

Kuwa Huru MileleMtazamo wa bei