KamoCRM

Live Change Log

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

15,120
Total Changes
5,169
Features
4,935
Fixes
30
Projects
Filter by project
All Projects15,120AIService197APIService161BillingService143ConversionService107DaemonService129DocsService215ESigService88EmailService518InitializerService318KBService105KlusterServices697MCPGatewayService85MediaService546RAGService71SecurityService1,658TranslateService55VOIPService205VectorService11kamo-apps25kamo-asterisk-support24kamo-capcha17kamo-capcha-widget4kamo-internal6,937kamo-login330kamo-marketing625kamo-nowww20kamo-register213kamo-shared-library1,455kamo-signer-monorepo53kamolos108
Filter by type
All TypesBuild11CI523Chore738Docs2,167Feature5,169Fix4,935Other986Performance157Refactor274Revert23Style42Test94Upgrade1
August 14, 2026
FeatureMediaService

Unread means the requestor spoke, or the ticket just became yours

The badge counted "live tickets nobody has picked up, plus the ones I hold" — message-blind, and it only ever fell when a ticket reached a terminal status. So i...

Kamo·1mo ago
August 13, 2026
FeatureMediaService

Stamp unseen counts on the ticket list, and keep the queue live

getTickets now bulk-loads an unseen-message count per row for the caller, beside the visitor rows it already loads that way, and getTicketDetail computes its ow...

Kamo·1mo ago
August 12, 2026
FeatureMediaService

One conversation, many hands — join on open, name every message, re-open on a reply

A support ticket is worked by whoever is helping, not only by whoever it is currently stamped with. Assignment decides who the work is offered to and whose list...

Kamo·1mo ago
August 11, 2026
FeatureMediaService

Reassignment reaches the new agent, and the requestor is told who is there

Reassignment did not reach anybody. assignmentOpenedAt records that a client put the conversation on screen, and it is what raises a ticket at sign-in — but it ...

Kamo·1mo ago
August 10, 2026
FeatureMediaService

Endpoints for the sign-in auto-open handover

GET /sessions/chat/auto-open returns the chat conversations this member's client should raise; POST /sessions/{guid}/auto-opened records that it did. The durabl...

Kamo·1mo ago
FeatureMediaService

AUTO_ASSIGNMENT, and raise an assigned conversation on the agent's screen

A chat request and a submitted ticket are the same unit of work; the topic's strategy is the only thing that decides how either is handed over. The PRE_TICKET s...

Kamo·1mo ago
FeatureMediaService

Point at YugabyteDB and use PostgreSQLDialect

CockroachDB has been replaced by YugabyteDB. Connection strings move from cockroachdb-public:26257 to yb-tserver-service:5433, and the Hibernate dialect from **...

Kamo·1mo ago
August 9, 2026
FeatureMediaService

Attach an already-stored file without uploading it again

Forwarding a 2 GB video to three colleagues cost three full uploads. Storage deduplicated them into one object, but only after each transfer had completed and b...

Kamo·1mo ago
August 8, 2026
FeatureMediaService

Accept 3 GiB attachments by streaming them to storage

file.getBytes() cannot represent an upload this large — a Java array stops just above 2 GiB — so every attachment past that died on an OutOfMemoryError regardle...

Kamo·1mo ago
August 7, 2026
FeatureMediaService

Report the caller's claimable ticket queue

Kamo·1mo ago
FeatureMediaService

GET /types/{typeId}/slots so the settings editor can list slots

The settings UI has always fetched this path, but only POST/PUT/DELETE were mapped, so the Availability Slots tab got a 405 and rendered empty. Unlike /slots/av...

Kamo·1mo ago
August 6, 2026
FeatureMediaService

Relay the legal-package count and guard per-member SUBSCRIBEs

legal.packages.> -> **************** core NATS, no stream — the same shape SupportStompRelayController and PlatformStompRelayController already use. topicFor is...

Kamo·1mo ago
FeatureMediaService

Relay SecurityService platform events onto STOMP

SecurityService owns the platform-admin surface — system configuration, DNS provisioning, commerce sync — but has no WebSocket endpoint, so every screen backed ...

Kamo·1mo ago
August 5, 2026
FeatureMediaService

Capture the demo lead before the booking step

The marketing site's demo form collected name, email, company, company size, industry and a message, then advanced to scheduling without telling anyone. Lead cr...

Kamo·1mo ago
FeatureMediaService

Meeting provider abstraction with Zoom and Microsoft Teams

Meetings were Kamo Meets by construction — MeetService persisted a Meet room name and nothing else. This introduces the abstraction and two remote providers beh...

Kamo·1mo ago
August 3, 2026
FeatureMediaService

Persist MediaService PHI access trail to phi_access_log

Chat message reads were recorded through the Slf4j default writer, which puts the §164.312(b) trail in a 14-day log stream against a six-year retention obligati...

Kamo·1mo ago
FeatureMediaService

Record chat message reads on the endpoints that return bodies

Sending a message left a row; reading one left nothing. Every chat, support and social thread on the platform renders from a handful of endpoints here, and none...

Kamo·1mo ago
July 19, 2026
FeatureMediaService

Carry the AI conversation into the human thread on handoff

Creates or reuses the support session, copies the AI transcript in as one system event, routes it, and tells the visitor honestly what happens next. Confidenti...

Kamo·2mo ago
FeatureMediaService

Accept agent-authored outreach into an open borrower thread

The counterpart AIService's outreach dispatcher calls. Without it the whole outbound path terminated in a recorded 404 - the gate authorized a touch, the messag...

Kamo·2mo ago
July 18, 2026
FeatureMediaService

Assign a sales agent per channel + report LO availability

- WebChatIntegration CRUD threads salesAgentId (null clears the assignment) - lo-presence now returns the member's availabilityStatus alongside online, so the ...

Kamo·2mo ago
FeatureMediaService

Verify routing token, persist leadUid, reassign chat on lead move

- createSupportSession takes a signed routingToken (not preferredAgentMemberId); verified via ChatRoutingTokenCodec + cluster internal.auth.secret, enforces ...

Kamo·2mo ago
July 16, 2026
FeatureMediaService

Snapshot web-chat integration id on support visitor + ticket

Resolves the WebChatIntegration by creatingKeyHash (enabled-filtered, consistent with bootstrap()/AI-prompt resolution) once in createSupportSession and stamps ...

Kamo·2mo ago
FeatureMediaService

Public-chat bootstrap config resolver

Adds an internal GET **************** that resolves a WebChatIntegration by X-Public-Chat-Key-Hash and returns its resolved design/behavior config (default-fill...

Kamo·2mo ago
FeatureMediaService

WebChatIntegration CRUD (mints key + integration, org-scoped)

Org-facing management API for the Phase-2 web-chat settings tab. On create, mints the underlying PublicChatApiKey (same key-gen approach as PublicChatKeyControl...

Kamo·2mo ago
July 15, 2026
FeatureMediaService

Mobile push dispatch (FCM data + direct APNs) with presence gate

chat incoming (MediaController), support ticket (SupportNotificationService), SMS/voicemail (VoipStompRelayController), social **************** Presence-gated l...

Kamo·2mo ago
FeatureMediaService

Accept X-***-Token on REST; slide TTL with per-session timeout

OTKPreAuthFilter resolves X-***-Token when no X-OTK is present (same call MediaService REST without the BFF. KSessionService now slides the Redis TTL with the s...

Kamo·2mo ago
July 14, 2026
FeatureMediaService

Reach the borrower's OWN officer directly, no support-right gate

Drop the ACCEPT_SUPPORT_TICKETS requirement from assignToPreferredAgent: the borrower's assigned loan officer is reachable regardless of whether they're a confi...

Kamo·2mo ago
FeatureMediaService

Direct-to-assigned-LO routing + LO presence endpoint

Powers the borrower portal's merged LO/chat widget: - **************** direct-assigns a public-chat ticket to a SPECIFIC agent (the borrower's assigned loan o...

Kamo·2mo ago
July 13, 2026
FeatureMediaService

Missed-message email notifications (chat + support) with per-source suppression

Durable NATS consumer chat-email-notifier on chat.session.> feeding a MESSAGE_EMAIL_NOTICES ledger (PENDING/SENT, per-sender for chat, per-ticket for support), ...

Kamo·2mo ago
July 10, 2026
FeatureMediaService

Durable last-seen timestamps + bulk endpoint

PRESENCE:{id} is deleted the moment a member goes offline, so nothing recorded when they were last active. Stamp PRESENCE_LAST_SEEN:{id} (orgId + ts, 400d TTL) ...

Kamo·2mo ago
July 8, 2026
FeatureMediaService

AI auto-tag + caption via org's providers (P3)

MaterialAiController POST **************** verifies ownership, mints a short-lived signed material URL, and calls AIService's internal vision endpoint (org's ow...

Kamo·2mo ago
FeatureMediaService

MaterialAnalyticsController — record events + aggregates

POST **************** (record) + GET /analytics (per-material counts by type + org totals).

Kamo·2mo ago
FeatureMediaService

MaterialReviewController — status map + set-status

GET /api/media/materials/reviews (org-wide imgId→status map) + POST to set a material's status (validated, reviewer-stamped, upsert).

Kamo·2mo ago
FeatureMediaService

MaterialCampaignController — CRUD + item map + add/remove

/api/media/materials/campaigns: list/create/update/delete, GET /items (org-wide imgId↔campaignId map), POST /add + /remove with org-ownership checks.

Kamo·2mo ago
FeatureMediaService

MaterialTagController — tag CRUD + assign/unassign + assignment map

/api/media/materials/tags: list/create/delete tags, GET /assignments (org-wide imgId↔tagId map the workspace joins client-side), POST /assign + /unassign with o...

Kamo·2mo ago
FeatureMediaService

Managed public-link endpoints (create/list/revoke) + tracked serve

Adds POST/GET /api/media/materials/links and DELETE /links/{id} backed by MaterialShareLink, and resolves managed tokens on the public GET first (checking revok...

Kamo·2mo ago
FeatureMediaService

Thumbnail scheduled-generated materials in-process

A headless sweep can't drive ConversionService's OTK thumbnail pipeline, so generate a page-0 PNG thumbnail via ImageIO right after storing the export — schedul...

Kamo·2mo ago
FeatureMediaService

Scheduled generation — sweep runs recipes on a cadence

- CanvaScheduleController: CRUD for org schedules (recipe + cadence + hour/day + optional social targets), computes nextRunAt - CanvaGenerationService: headle...

Kamo·2mo ago
FeatureMediaService

Saved autofill recipes CRUD (org-scoped)

CanvaRecipeController: GET/POST /api/media/canva/recipes + DELETE /{id} — save/list/soft-delete a named brand-template + field mapping, scoped to the caller's o...

Kamo·2mo ago
FeatureMediaService

Enterprise autofill — data-merge brand templates

- CanvaApiClient: list brand templates (dataset=non_empty), get dataset, asset-upload jobs, create/get autofill jobs - CanvaController: GET /brand-templates, ...

Kamo·2mo ago
FeatureMediaService

Short-lived signed public URLs for marketing assets

Lets social providers (Meta) and email fetch a specific material for a bounded window without exposing the private imaging-materials bucket. - MaterialUrlSigne...

Kamo·2mo ago
FeatureMediaService

Import a file into Canva as an editable design

- **************** (binary design import) - CanvaController POST /imports (multipart) → create+poll import job → editor deep-link with correlation_state for r...

Kamo·2mo ago
FeatureMediaService

Verify return-nav JWT signature; tidy token refresh

- CanvaJwtVerifier: verify the correlation_jwt's Ed25519 signature against Canva's JWKS (/connect/keys), plus aud/exp/type; keys cached by kid. Return-nav n...

Kamo·2mo ago
FeatureMediaService

Recording ingest, retention/quota, storage usage, summary pipeline

- MeetRecordingController: internal (X-Internal-Auth) ingest endpoint the jibri finalize.sh posts finished recordings to. - MeetRecordingService: uploads reco...

Kamo·2mo ago
July 7, 2026
FeatureMediaService

Canva Connect OAuth + designs/export backend

- CanvaApiClient: PKCE authorize, token exchange/refresh/revoke, users, designs (create/list), export jobs, byte fetch - CanvaTokenService: encrypted per-memb...

Kamo·2mo ago
FeatureMediaService

Scheduled-meeting start reminders + guest-link expiry

- MeetingReminderSweep: @Scheduled sweeper that fires a realtime "meeting starting" reminder to invited members at (start − reminderMinutesBefore) on ******...

Kamo·2mo 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