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 13, 2026
Fixkamo-register

Proxy all external API calls through Next.js to avoid CORS

Added catch-all /api/security/[...path] proxy route and updated ThemeConfig, FormAccountRecovery, FormPassportID, FormPersonalInfo, and FormRecoveryEnforcement ...

Kamo·7mo ago
March 12, 2026
Fixkamo-register

Proxy countries API through Next.js and disable testing mode

Direct fetch to api.kamocrm.com failed due to CORS. Added /api/countries proxy route (same pattern as /api/org) and disabled USE_TESTING_MODE.

Kamo·7mo ago
Fixkamo-register

Use full GitHub URLs for action references in Forgejo workflow

Shorthand refs (e.g. actions/checkout@v4) can fail to resolve on Forgejo runners. Aligned with kamo-internal's working format.

Kamo·7mo ago
FixAPIService

Use JdkClientHttpRequestFactory to support PATCH method forwarding

The default RestTemplate uses SimpleClientHttpRequestFactory (HttpURLConnection) which doesn't support the PATCH HTTP method, causing branch-titles save to fail...

Kamo·7mo ago
FixSecurityService

Move loginOrgOpt declaration outside try block to fix scope error

The variable was declared inside the first try block but referenced in the second try block for parent branch title resolution.

Kamo·7mo ago
Fixkamo-internal

Move useUserInfo hook into OrgStep component to fix build error

getParentBranchTitleNonPlural was referenced in OrgStep but only destructured in the parent CreateNetworkPage component.

kamo·7mo ago
Fixkamo-internal

Resolve session timeout maintenance system not running

Root cause: sessionMonitor.start() called stop() after setting this.config, which nullified the config before the 3-second startup timer fired. As a result, the...

kamo·7mo ago
Fixkamo-login

Hide re*** badge when text attribution mode is active

Fixed overly-specific CSS selector that targeted the badge inside #re***-container. Google injects the badge directly into <body>, so the rule never matched. Ch...

Kamo·7mo ago
Fixkamo-register

Force light mode to override external dark mode CSS

- Set Tailwind darkMode to 'class' to prevent OS preference from triggering dark utilities - Add !important overrides in globals.css to lock light mode variable...

Sajon Nadjafinia·7mo ago
March 11, 2026
Fixkamo-internal

Resolve horizontal overlap, follower blind spot, and timing bugs

- flyToHomeRow: compute per-follower actual dx extents to derive rightBuffer/leftBuffer independently, placing anchor correctly to prevent ring followers from...

kamo·7mo ago
Fixkamo-register

Force light mode regardless of OS color scheme preference

Removed prefers-color-scheme dark media query so the site always renders in light mode.

Sajon Nadjafinia·7mo ago
Fixkamo-internal

Bake Size slider zoom into saved SVG via viewBox crop

Avatar Creator's internal scale transform zooms the avatar body within the SVG canvas, but the effect is imperceptible at small display sizes (e.g. a 140x140 Av...

kamo·7mo ago
Fixkamo-internal

Remove redundant CSS scale transform from avatar preview

Avatar Creator's scale option already applies scale(N/100) as an SVG group transform on the avatar body. The preview container was also applying CSS transform: ...

kamo·7mo ago
Fixkamo-internal

Implement makeRoom and post-dock collision resolution

Replaces the no-op hexheads:makeRoom listener with a real handler that runs resolveCollisions after the new tool window's DOM rect is stable. Fixes the listener...

kamo·7mo ago
Fixkamo-internal

Resolve collisions after non-snap drop and swarm

Non-snap drops now run resolveCollisions before saving positions, preventing stacking at the bottom-right corner. Swarm drops also run resolveCollisions and now...

kamo·7mo ago
Fixkamo-internal

Group-aware slot widths in flyToHomeRow

Groups now reserve horizontal slots proportional to their follower ring extent (using correct flat-top axial formula), preventing group followers from invading ...

kamo·7mo ago
Fixkamo-internal

Remove z-index DOM sort to prevent click events being dropped on focus

Sorting windows by zIndex in ToolDock caused DOM node reordering on every focus event (mousedown). Browsers drop the click event when its target element moves b...

kamo·7mo ago
Fixkamo-internal

Bake background color/gradient into saved Avatar Creator avatar SVG

Avatar Creator generates transparent-background SVGs by default. The background was only applied as a CSS wrapper on the preview container, so the stored MinIO ...

kamo·7mo ago
Fixkamo-internal

Dispatch member-panel-toggle via useEffect to avoid stale Framer Motion closure

onAnimationStart/Complete hold the last rendered props, so the exit animation always saw isOpen=true and windows never relayed to the right on close. Using a us...

kamo·7mo ago
Fixkamo-internal

Correct member-panel-toggle event property so tool windows respect panel offset

The event was dispatching `{ isOpen }` but ToolWindowsContext read `detail.open`, causing memberPanelOpenRef to always be falsy and the 500px panel offset to ne...

kamo·7mo ago
Fixkamo-internal

Eliminate hexhead spawn overlap by computing unique column positions

Each head now initialises its MotionValue at its own home-row column X and below the viewport (h + SIZE), then springs up to its final slot. Previously all head...

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

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