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
June 15, 2026
FixEmailService

Authorize privilege-based mailbox access for read + send-as

resolveForMailbox only granted access via a direct MemberMailbox assignment, so mailboxes surfaced through **************** rights threw NoSuchElementException ...

Kamo·3mo ago
June 13, 2026
June 10, 2026
ChoreEmailService

Rebuild for kamo-shared-library update (esign signer email templates)

Picks up the new canonical templates esign.signer_verification + esign.signer_invite so seedForOrg can seed them on first send.

Kamo·3mo ago
May 16, 2026
May 10, 2026
FeatureEmailService

Wire DomainManager and MailboxProvisioner for all cloud providers

Replace the UnsupportedOperationException stubs in every cloud provider with real HTTP calls against each backend's admin API: - Microsoft 365 → Microsoft Gra...

Kamo·4mo ago
May 9, 2026
FeatureEmailService

IMAP/SMTP-backed send, folder, and search for cloud stubs

Extract the IMAP/SMTP delegation pattern into AbstractImapBackedCloudProvider and have Zoho, IceWarp, Exchange, Google Workspace, and Microsoft 365 extend it. T...

Kamo·4mo ago
FeatureEmailService

IMAP-backed MailReader for the cloud-provider stubs

Zoho, IceWarp, Exchange, Google Workspace, and Microsoft 365 all expose IMAP, so wire each cloud-provider stub's MailReader methods through EmailImapService ins...

Kamo·4mo ago
FeatureEmailService

Serve inline image MIME parts and surface Content-ID metadata

Render <img src="cid:..."> in the messages UI by exposing the inline parts that the HTML body references. - AttachmentInfo gains contentId (without angle brack...

Kamo·4mo ago
FixEmailService

Preserve original filename and content type on attachment download

The **************** endpoints (both the personal and shared-mailbox controllers) were emitting Content-Disposition: attachment with no filename parameter and C...

Kamo·4mo ago
April 29, 2026
CIEmailService

Scope concurrency to build jobs, not Kubernetes deploys

Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...

Kamo·5mo ago
April 28, 2026
FixEmailService

Sync members.email when primary mailbox is assigned, changed, or removed

When a mailbox was assigned to a member in a KAMO_MAIL org, members.email was never updated, causing EmailCredentialService to fail to resolve IMAP credentials ...

Kamo·5mo ago
ChoreEmailService

Trigger redeploy for shared library update

Kamo·5mo ago
ChoreEmailService

Trigger redeploy for shared library update

Kamo·5mo ago
April 27, 2026
ChoreEmailService

Trigger redeploy for shared library update

Kamo·5mo ago
April 26, 2026
FixEmailService

Mark-as-read for shared and member mailboxes

EmailController.setFlags now accepts an optional mailboxId query param and routes through resolveProviderWithMailbox so member-mailbox flags are set against the...

Kamo·5mo ago
FixEmailService

Handle IMAPInputStream in getMessage to prevent ClassCastException

JavaMail can return an IMAPInputStream instead of a decoded String from part.getContent() when message content has not been pre-fetched. The direct (String) cas...

Kamo·5mo ago
April 25, 2026
FixEmailService

Use getHasAttachments() to match Boolean wrapper type

**************** is a Boolean (wrapper), so Lombok generates getHasAttachments() not isHasAttachments(). The latter only exists for primitive boolean. Use Boole...

Kamo·5mo ago
FixEmailService

Reset stale hasAttachments on sync and accumulate correctly

- Reset has_attachments=false at start of bulk sync so stale true values from old false-positive MIME detection are cleared before re-indexing - Accumulate ha...

Kamo·5mo ago
FixEmailService

Support fromAddress override on send

Adds FromAddressRequest to EmailSendRequest so the frontend can specify which alias/shared/mailbox address to send from. SmtpOnlyProvider now uses that address ...

Kamo·5mo ago
FixEmailService

Fix attachment parsing and hasAttachment false positives

Three fixes to EmailImapService: 1. toEnvelope: narrow multipart check to multipart/mixed only — plain HTML+text emails (multipart/alternative) no longer sh...

Kamo·5mo ago
April 24, 2026
FixEmailService

Add com.kamo.z.shared.commerce to EnableJpaRepositories scan

**************** (required by **************** in the shared library) lives under com.kamo.z.shared.commerce but was not included in the JPA repository scan, ca...

Kamo·5mo ago
FixEmailService

Correct field name and type in getFromAddresses response

Backend was sending 'email' key but frontend expected 'address', and sent type 'shared_mailbox' when frontend expected 'shared'. Also fixes hasMailboxes flag wh...

Kamo·5mo ago
April 21, 2026
FixEmailService

Fall back to org_domains when no email_provider_domains default set

KamoMailDomainValidator was hard-failing with 403 for orgs that have a DNS-verified domain in org_domains but never added it to the email provider domain regist...

Kamo·5mo ago
April 20, 2026
FixEmailService

Wire up status filter and auto-seed required templates on list

- EmailTemplateController.list() now accepts ?status= param and filters using the existing findByOrgIdAndStatus repository query - Auto-seeds required templat...

Kamo·5mo ago
FeatureEmailService

Add KamoMail domain validator to block cross-tenant email addresses

Introduces KamoMailDomainValidator component that checks, at service layer, whether the submitted email domain matches the org's verified default domain when Ka...

Kamo·5mo ago
April 19, 2026
ChoreEmailService

Rebuild for kamo-shared-library update (CREATE_CHILD_ORG right + apply-to flags)

Pulls the new RoleRightType.CREATE_CHILD_ORG (id 131), the three apply-to flags on ChildOrgSecurityModel, the two 13-arg service overloads, and the AppliedModel...

Kamo·5mo ago
ChoreEmailService

Rebuild for kamo-shared-library update (appConfig upsert-only fix)

Pulls the hardened **************** that no longer deletes appConfig rows whose service types are absent from the caller's payload — prevents silent data loss w...

Kamo·5mo ago
ChoreEmailService

Rebuild for kamo-shared-library update (effective-feature resolver)

Picks up the new AppliedModelEnforcementService methods (computeAvailabilitiesMap, isAppEffectivelyEnabled, getEffectivelyEnabledAppTypes, computeEffectiveFeatu...

Kamo·5mo ago
ChoreEmailService

Rebuild for kamo-shared-library update (applied-model enforcement + appConfigs + isPrivate)

Triggers a rebuild so this service pulls the updated kamo-shared-library containing AppliedModelEnforcementService, ChildOrgSecurityModelAppConfig entity, Servi...

Kamo·5mo ago
ChoreEmailService

Rebuild for kamo-shared-library update (runtime force rules + DEFAULT fallback in MemberRightsAppliedService)

Triggers a rebuild so this service picks up the updated **************** that applies template force rules and DEFAULT-template fallbacks on top of the existing...

Kamo·5mo ago
ChoreEmailService

Rebuild for kamo-shared-library update (master model, default role templates, force-rule resolver)

Triggers a rebuild so this service pulls the new kamo-shared-library revision containing Organization.branchTypeID, Organization.masterModelID, ****************...

Kamo·5mo ago
FixEmailService

Preview uses same auto-vars as sendToUser (org logo + name)

The preview endpoint now injects logoUrl, logoSimpleUrl, and orgName from the org's domain before applying sample content variables, matching the exact variable...

Kamo·5mo ago
FeatureEmailService

Auto-inject logoUrl, logoSimpleUrl, and orgName variables at send time

EmailTemplateService now merges base variables (logoUrl, logoSimpleUrl, orgName) derived from the org's primary domain before rendering, so all transactional te...

Kamo·5mo ago
FixEmailService

Update EMAIL_VERIFICATION sample vars to match current template

Use expiryText instead of expiryMinutes (renamed variable), and update verifyLink to point to the register subdomain (correct send path).

Kamo·5mo ago
April 18, 2026
FixEmailService

Preserve DB domain case in NoReply from address

Removed toLowerCase() — the domain already comes from resolvePrimaryDomain which reads org_domains from the database, so case is canonical from DB.

Kamo·5mo ago
FixEmailService

Resolve root domain for NoReply from-address instead of bare subdomain

resolvePrimaryDomain() was returning the first domain entry (e.g. "www") which produced NoReply@www. Now prefers root domains (parent == null) so transactional ...

Kamo·5mo ago
FixEmailService

Add internal.auth.secret to EmailService configmap

InternalAuthFilter was rejecting all service-to-service calls (send, seed-org) with 503 because internal.auth.secret was unconfigured. Matches the same INTERNAL...

Kamo·5mo ago
FixEmailService

Allow transactional send on port-25 relay and auto-seed missing templates

Port-25 SMTP (postfix) requires no auth — transactionalCredentials() was throwing ProviderUnavailableException when user/pass were unconfigured, blocking all ve...

Kamo·5mo ago
FixEmailService

Add dao.repositories to JPA scan so EmailTemplateRepository is found

Same pattern as KamoInitializerService — explicit basePackages overrides default scanning and must include every package that has repositories.

Kamo·5mo ago
FixEmailService

Bump kamo-shared-library to 1.4.0

Kamo·5mo ago
FeatureEmailService

Add EmailTemplateCategoryController REST endpoints

**************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Sessio...

Kamo·5mo ago
FeatureEmailService

Add EmailTemplateController REST endpoints + DTOs

Exposes /api/email/templates/* CRUD + preview + duplicate + reset-to-default + service-to-service /send + /seed-org/{orgId}. Top-level orgs (no parent) addition...

Kamo·5mo ago
FeatureEmailService

Add InternalAuthFilter for service-to-service endpoints

Validates X-Internal-Auth header on /api/email/templates/send and /api/email/templates/seed-org/* paths. Other paths bypass this filter (user session auth handl...

Kamo·5mo ago
FeatureEmailService

Add EmailTemplateCategoryService — CRUD for org-scoped categories

Case-insensitive name uniqueness per org enforced at service layer (matches the partial unique index in the DB). Deletion nulls category_id on affected template...

Kamo·5mo ago
FeatureEmailService

Add EmailTemplateService — CRUD + send + seed + reset-to-default

Core orchestrator for transactional email. sendToUser resolves the template, renders subject/body, picks the org's primary domain from Organization.domains, and...

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