KamoCRM

Live Change Log

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

17,488
Total Changes
5,978
Features
5,281
Fixes
30
Projects
Filter by project
All Projects17,488AIService251APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService574InitializerService329KBService151KlusterServices738MCPGatewayService246MediaService602RAGService79SecurityService1,846TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,347kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,657kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,254Feature5,978Fix5,281Other994Performance165Refactor278Revert23Style42Test160Upgrade1
May 1, 2026
Chorekamo-internal

Trigger ci/cd

kamo·5mo ago
Featurekamo-internal

Proxy routes for find-or-create, members, attachments, imaging proxy, mute, revoke

Extract shared **************** helper to app/lib/mediaServiceUrl.ts. Add proxy routes: find-or-create, members, receipts, attachments (streaming), mutes, revok...

kamo·5mo ago
FeatureMediaService

Paged chat list with previews, members, unread counts

that returns ChatListRowDto rows including last message preview, member summaries, per-session unread counts, and ownLastViewedAt.

Kamo·5mo ago
Featurekamo-shared-library

Add countUnreadAfter(guid, memberId, since) to MediaObjRepository

Needed by paged chat-list endpoint to compute per-session unread counts when ownLastViewedAt is a LocalDateTime pointer rather than a message UUID.

Kamo·5mo ago
FeatureMediaService

Per-viewer mute endpoint and message filter

Kamo·5mo ago
Featurekamo-shared-library

Add **************** to MediaSessionMuteRepository

Kamo·5mo ago
Featurekamo-shared-library

Add MediaObjImgDownloadRepository with existsByObjImgIdAndMemberId

Required by ImagingProxyService (Task 10) to deduplicate per-member download tracking without a full table scan.

Kamo·5mo ago
Featurekamo-shared-library

Add isAccessRevoked flag for per-attachment access control

Kamo·5mo ago
April 30, 2026
OtherSecurityService

Change to configmap to add kamo-asterisk-support

Kamo·5mo ago
FixKlusterServices

Probe timeout 10s and 2 gunicorn workers

LibreTranslate's /languages probe blocks on the gunicorn worker event loop. With a single worker translating a long chat message, the probe times out at the def...

Kamo·5mo ago
Featurekamo-marketing

Distinguish actively-translating vs queued messages

The translation queue was already sequential, but every queued bubble rendered "Translating…". Now the single in-flight message shows "Translating…" with a puls...

Kamo·5mo ago
Featurekamo-internal

Distinguish actively-translating vs queued messages

The streaming queue was already strictly sequential (one fetch at a time), but every queued message rendered "Translating…" because they all shared the same pen...

kamo·5mo ago
Featurekamo-marketing

Show error icon when a message fails to translate

When the per-message translate call returns translated:false, errors out, or times out, the chat bubble now renders an AlertTriangle icon in red with tooltip "F...

Kamo·5mo ago
Featurekamo-internal

Show error icon when a message fails to translate

When the per-message translate call returns translated:false, errors out, or times out, the chat bubble now renders a small red ErrorOutline icon in place of th...

kamo·5mo ago
FixMediaService

Raise client read timeout to 120s for long messages

LibreTranslate runs CPU-only argos models — a paragraph-length chat message takes 20-30s to translate, and longer ones can push past 60s. The 8-second read time...

Kamo·5mo ago
Fixkamo-internal

Persist language change and show current language in tooltip

The members endpoint accepts PUT not PATCH, so the language picker's PATCH was silently ignored — Member.language never actually updated, which is why refreshin...

kamo·5mo ago
Fixkamo-internal

Forward query string on ****************

The Next.js proxy was dropping the request query string when forwarding to MediaService, which meant the chat history fetch's ?lang=<locale> param was silently ...

kamo·5mo ago
FixSecurityService

Mint owner OTK with grant-all rights without DB round-trip

After **************** assigns the Administrator role and writes member_rights_applied, the OTK-minting block was re-reading those rows via **************** ins...

Kamo·5mo ago
Featurekamo-marketing

Stream translations newest-first for visitor history

When the visitor lands on a non-English locale and the support chat has existing English messages, every bubble flagged needsTranslation by the backend now show...

Kamo·5mo ago
Featurekamo-internal

Stream message translations newest-first on language switch

When the user picks a new language (or opens an existing chat in a language different from the messages' source), every bubble that needs translation immediatel...

kamo·5mo ago
RefactorMediaService

Cache-only bulk translate, FE handles fills

Bulk message-fetch endpoints now return only translations that are already cached and tag missing rows with needsTranslation:true. The chat UIs (kamo-internal C...

Kamo·5mo ago
Otherkamo-internal

Revert "fix(settings): show Plans & Billing tab regardless of root-org status"

This reverts commit ****************

kamo·5mo ago
Featurekamo-marketing

Auto-translate visitor and agent messages

Live agent replies arriving in a language other than the visitor's URL locale now show a "Translating…" bubble while the TranslateService call resolves, then sw...

Kamo·5mo ago
Featurekamo-internal

Translate chat messages into the viewer's language

Adds a "My Language" flag picker in NavTop (left of the email tool, separated by a vertical rule). Selecting a language writes back to Member.language and syncs...

kamo·5mo ago
FeatureAPIService

Proxy support-message translate endpoint

Adds a passthrough route for the new MediaService endpoint that translates a single support-chat message into the visitor's URL locale. The marketing-side chat ...

Kamo·5mo ago
FeatureMediaService

On-demand translation for chat and support messages

Captures the source language for every chat / support message and adds an optional ?lang=XX param on the message-fetch endpoints plus a per-message POST /transl...

Kamo·5mo ago
Featurekamo-shared-library

Translation cache for chat messages

Adds the MediaObjMsgTranslation entity (one row per (message, language) pair) and an optional sourceLanguageId column on MediaObjMsg so chat messages can be tra...

Kamo·5mo ago
Fixkamo-internal

Show Plans & Billing tab regardless of root-org status

The !isRootOrg gate hid the tab on root orgs and blocked org owners and self-viewers from reaching their billing page from "My Account". The PlansBillingTab its...

kamo·5mo ago
Otherkamo-internal

Translate hardcoded UI strings

setup/dns (6 files): page, AliasStatusTable, DnsProgressView, DnsProvisioningPanel, DomainEntryForm, ManualDnsGuide. settings (10 files): diagnostics, essential...

kamo·5mo ago
Fixkamo-internal

Drop in place — jump every member, no softPush on release

The drift on release was softPushCluster firing on the user-drop path. A mega-cluster's bounds extend in all directions from the anchor, so the PADDING-margin /...

kamo·5mo ago
Otherkamo-internal

Translate hardcoded UI strings

account/view: 40 strings reused from existing namespace (no new keys). kb (13 files): translate article editor, viewer, reviews, resources, versions, navigation...

kamo·5mo ago
Otherkamo-internal

Translate remaining hardcoded UI strings

Tasks page: Save Changes, Close, Add Task Item To Automation Stream, Edit title tooltip. Notes page: Dismiss, Loading notes, Delete Note dialog title. Doc manag...

kamo·5mo ago
Otherkamo-internal

Replace hardcoded English with t() across leads pages

Translate remaining hardcoded UI strings in allotments, new, reports, and view/[id] to use next-intl. Add scripts/i18n-audit.py to detect remaining hardcoded st...

kamo·5mo ago
Fixkamo-internal

Drop firmly in place — tail-only throw + jump() to clear velocity

The previous fix still let heads drift on release because: 1. Throw detection averaged velocity across the full 110ms window. A user who flicked then decele...

kamo·5mo ago
Fixkamo-internal

Drop in place after a paused drag instead of drifting

Two cooperating bugs caused dropped heads (single or post-gather) to fly off to seemingly random positions when the user dragged fast, slowed to a stop, then re...

kamo·5mo ago
Featurekamo-internal

Add Personal + Chat/Docs/Notes/KB/HRS sections

The /settings index showed no sections to non-admins because every existing section was gated on an admin right (CONFIGURE_SYSTEM, MANAGE_*_SETTINGS, MANAGE_ACC...

kamo·5mo ago
Featurekamo-internal

Rotate goal opening based on viewport aspect ratio

The goal frame now tilts by atan2(viewportH, viewportW) so its open right side aims toward the viewport diagonal — for 16:9 monitors the opening points ~29° sou...

kamo·5mo ago
Featurekamo-internal

Throw-to-remove goal with score/miss celebrations

A 132×132 goal frame appears in the upper-left whenever a head is in solo-drag or active-throw, offset 56px from the corner so heads can miss past or behind it....

kamo·6mo ago
April 29, 2026
Featurekamo-internal

Throw physics with pool-table collisions and comet trail

Flicking a head past the throw threshold launches it across the viewport under explicit physics (friction, edge bounce, head-vs-head elastic collisions). Slow d...

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