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
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 11, 2026
ChoreMediaService

Rebuild for shared-lib GeoLite bounded lookup (2-4ms hit+miss)

Picks up kamo-shared-library 011a73e — GeoLookupService's findByIpInRange now LIMIT-1-bounded instead of scanning to exhaustion on gap/high IPs (measured 5-13s ...

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
FixMediaService

Persist scheduled-material thumb flags via targeted update

Same detached-entity orphanRemoval issue as the conversion pipeline: the headless sweep held a detached ImgDat and save()/merge() cascaded into the images colle...

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
OtherMediaService

Give MediaService internal.auth.secret (mlos-internal-auth) for summary emails

MediaService -> EmailService /api/email/templates/send (meeting-summary) needs INTERNAL_AUTH_SECRET to match EmailService's internal.auth.secret.

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
FixMediaService

Wrap recording upload so MediaService compiles

MinIOStorageService.upload throws a checked Exception that ingest() neither caught nor declared — build break on top of the isGuest fix. Wrap it and rethrow as ...

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
FixMediaService

MeetingParticipant.isGuest() (was getGuest, won't compile); repoint transcribe to generic endpoint

MeetingParticipant exposes isGuest() (primitive boolean getter), not getGuest(). Also point the summary transcribe call at the shared /api/conversion/transcribe...

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
FixMediaService

Persist invited participants, enforce MANAGE_MEET_SETTINGS, drop double-invite path

- createMeeting: invited members are numeric snowflake IDs, not UUID strings — route them through longToUUID like the creator. Previously UUID.fromString th...

Kamo·2mo ago
FeatureMediaService

Unified Chats feed across member/support/social sessions

GET /api/media/sessions/chat now accepts a `categories` filter (chat, support, social; default all) and returns one globally most-recent-first, merge of the per...

Kamo·2mo ago
July 6, 2026
FeatureMediaService

Surface parent-org shared topics in request-support popup

Child-org users could not see their parent org's shared support topics (assignToOwnOrg=false) when requesting support, because the popup only fetched own-org to...

Kamo·2mo ago
FeatureMediaService

Org-guard the /topic/leads/rt/{orgId} realtime subscription

Cross-tenant SUBSCRIBE guard for the new lead real-time topic, mirroring the existing /topic/social/feed guard: a member may only subscribe to their own org's l...

Kamo·2mo ago
July 4, 2026
FeatureMediaService

Unified timeline backend (feed persistence, adapters, live relay)

SocialFeedService persists posts/comments onto the MediaSession/MediaObj schema (reusing the chat model); SocialFeedMapper builds the wire DTOs; SocialTimelineC...

Kamo·2mo ago
July 3, 2026
FeatureMediaService

X (Twitter) + Discord adapters

- XAdapter: Account Activity webhook (CRC challenge + x-twitter-webhooks-signature HMAC verify), normalizeInbound (direct_message_events, echo-skip), OAuth 1....

Kamo·2mo ago
FeatureMediaService

M4 Meta adapters + OAuth + 24h window + M2 hardening

- Meta adapters (Messenger/Instagram): fix invalid _caption send (caption now a follow-up message), bytes-upload via Graph Attachment Upload API, URI encode f...

Kamo·2mo ago
July 1, 2026
FeatureMediaService

Relay credit/lead-assignment NATS events to STOMP

Subscribes security.leads.> and security.credits.>, mirrors each to /topic/... so the CRM front-end updates the Leads-Available grid, Manage-Credits fields, and...

Kamo·2mo ago
ChoreMediaService

Rebuild against latest kamo-shared-library

Kamo·3mo ago
June 26, 2026
June 13, 2026
May 16, 2026
May 1, 2026
FixMediaService

Publish NATS CREATE event after transaction commit to fix image attachment race

The NATS message was published inside the @Transactional body, which meant recipients could receive the CREATE event and request the image via /imaging/proxy/{o...

Kamo·5mo ago
FixMediaService

Serialize attachments in WS relay and message history; allow attachment-only sends

Three bugs fixed: 1. ChatSessionSubscriptionManager was building the STOMP messageMap manually and omitting attachments, sourceLanguageId, readMemberId, msg...

Kamo·5mo ago
FixMediaService

Fix NPE in getChatSessions from Map.of() rejecting null nextcoder

java.util.Map.of() throws NullPointerException when nextcoder is null (no more pages). Replace with HashMap that accepts null values. Also wrap entire handler i...

Kamo·5mo ago
FeatureMediaService

Add GET /sessions/{guid}/members endpoint with display-name priority

Returns member list with name resolved via usernameAlias → fullName → alias → username, matching the same priority as the chat sessions list. This feeds ChatBox...

Kamo·5mo ago
FixMediaService

Fix upload 500 (missing EmbRecordState) and empty chats tab (Timestamp cast)

Defect A: ChatAttachmentService.upload omitted **************** causing a NOT NULL violation on imgs.is_active. Added the default recordState. Also hardened Cha...

Kamo·5mo ago
FixMediaService

Prefer usernameAlias over User.name in memberDisplayName

Switches display name priority to: Member.usernameAlias → User.name → User.alias → User.username. Also includes the paged query dispatch fix from the previous c...

Kamo·5mo ago
FixMediaService

Use split First/After queries for chat sessions paged endpoint

Addresses empty Chats tab by dispatching to ****************

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