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
October 23, 2026
FeatureEmailService

Refuse a mailbox past the organization's email licenses

Owner rule 2026-10-22: per-user add-ons bill the licenses purchased; how many mailboxes may be in use is limited only by them. Before a mailbox is put into use,...

KamoΒ·20h ago
October 22, 2026
FeatureEmailService

BILLING_INVOICE, gated on viewing subscription invoices

Raised by SecurityService to the selling organization's owners when a subscription invoice draft is waiting for review or a customer's invoice goes past due. Al...

KamoΒ·22h ago
October 19, 2026
TestEmailService

Fixtures stamp the god-mode window's end; an elapsed window is not elevated (shared SessionPlatformFacts expiry)

**************** now also needs godModeExpiresAt ahead (kamo-shared-library 1.6.1). **************** god fixture carries the stamp, and a new case pins that an ...

KamoΒ·4d ago
October 18, 2026
FixEmailService

Email templates and the org calendar/contacts connection take MANAGE_EMAIL_SETTINGS (SITP TP02)

EmailTemplateController and EmailTemplateCategoryController checked a session alone: any member could list, read, preview, create, edit, archive, duplicate or r...

KamoΒ·5d ago
FeatureEmailService

An event names its organiser; an RSVP that cannot be taken says why (SITP TP12)

- EventDto carries organizerEmail, so the Tool Plane's calendar_rsvp names who the answer is mailed to (and classifies an outside organiser as an external mee...

KamoΒ·5d ago
FixEmailService

A shared-mailbox send meets the SI guards; message labels take ?folder= (SITP TP13)

A send as a shared mailbox skipped the checks EmailController#sendEmail runs: an own-domain recipient that is nobody (422 RECIPIENTS_UNKNOWN), the SI thread-tur...

KamoΒ·5d ago
FixEmailService

Stop logging the database password at startup

com.zaxxer.hikari at DEBUG makes HikariConfig print its whole configuration on every start, including dataSourceProperties {password=...} and password......; Pr...

KamoΒ·5d ago
FeatureEmailService

IOT_ALARM phone push body and withdraw-with-update (SP10)

An IOT_ALARM event card (source **************** as iot-service's AlarmNotifier writes it, or <alarmUuid>:<seq>) is mirrored as an IOT_ALARM push: channel/colou...

KamoΒ·5d ago
FeatureEmailService

Preview sample variables for the iot share letters

Rebuilt on the new shared library BEFORE IoTService sends (a missing template key 404s forever).

KamoΒ·5d ago
FeatureEmailService

NoReplySubsystem.IOT, the preview sample and mirrorToPush

IoT Devices SP06: alarm letters (iot.alarm_notice) audit under IOT; the template preview has sample values; POST /api/internal/notifications takes an optional m...

KamoΒ·5d ago
FeatureEmailService

An unsubscribe from one of the organization's own protected addresses is noted, not listed

Owner 2026-10-15: the do-not-block list beside the do-not-contact list. DoNotContactEmailBeans declares shared-lib's DoNotBlockList and hands it to the DoNotCon...

KamoΒ·5d ago
October 15, 2026
FeatureEmailService

Email unsubscribes reach the do-not-contact list, and campaigns, shares and an SI's mail check it

Owner 2026-10-15: one company-wide do-not-contact list per organization, scoped per channel; an email unsubscribe blocks email only. - Writer: MirroringEmailOp...

KamoΒ·1w ago
FeatureEmailService

A meeting that arrives by email asks once, then keeps itself current

A new invitation in the mail reader now offers "Add to calendar". Once a member has added it, the organiser's follow-ups apply on their own: a moved time, a new...

KamoΒ·1w ago
October 14, 2026
FixEmailService

A member's mail carries the name on their member profile

9351aac named a nameless From with the mailbox row's display_name first, and kept any name the request sent. The composer sends that same row name, and rows can...

KamoΒ·1w ago
FixEmailService

A member's mail goes out under their name, not a bare address

The From header carried a name only when the request did, and the composer sends the mailbox's display_name: set for an SI's mailbox when it is made, blank on a...

KamoΒ·1w ago
FixEmailService

An alias-domain From row names the mailbox behind it

The From picker offers the member's primary mailbox again on each org alias domain, with an id like <mailbox>:alias-domain:<domain> to keep it unique in the lis...

KamoΒ·1w ago
BuildEmailService

Rebuild onto kamo-shared-library 6fce139a

Seeds the new SUSPICIOUS_SIGNIN_DETECTED canonical template, which SecurityService sends for a detection rule's NOTIFY_ADMIN_EMAIL response.

KamoΒ·1w ago
FeatureEmailService

Preview the new-lead-available letter

Adds the LEADS_AVAILABLE arm to sampleVariables, built through the same shared-lib LeadsAvailableEmail helper SecurityService sends with, so the admin preview s...

KamoΒ·1w ago
October 13, 2026
FixEmailService

An SI's HIGH chat card is raised even while an unread-chat card stands

A person with an undismissed CHAT_MESSAGE card was never told of an SI's NOTIFY (KamoCollab CP12 D14): the announce-once rule dropped the HIGH card too, while t...

KamoΒ·1w ago
FixEmailService

A meeting's updates and cancellations come from the address that invited its guests

The composer files a meeting under whatever its From said, an alias or a shared mailbox, and that address is the ORGANIZER in every ics. But updates, cancellati...

KamoΒ·1w ago
October 12, 2026
FixEmailService

File a message's search-index row and lead link under its thread id, not the conversation row's surrogate

conversations.thread_id is generated (@GeneratedValue on ConversationEntity, primary key the thread id alone), so the row **************** returns carries a ran...

KamoΒ·1w ago
October 11, 2026
FeatureEmailService

Confidential thread markers and EMAIL_THREAD labels β€” PUT …/thread-confidential on member and shared mailboxes, one audited writer, threadKey and threadConfidential on both message GETs, POST **************** the org graph (KamoCollab CP05 Task 20)

EmailThreadKeys is the one thread-naming rule **************** now calls it): root Message-ID, UUIDv5 thread id, and the EMAIL_THREAD key without angle brackets...

KamoΒ·1w ago
FeatureEmailService

Declare the disclosure ledger recorder, paired with its repository scan (KamoCollab CP08 Task 12)

DisclosureLedgerConfig declares DisclosureRecorder; EmailServiceApplication's @EnableJpaRepositories gains **************** in the same commit. DisclosureLedger...

KamoΒ·1w ago
FeatureEmailService

The two contact notification kinds, and which members an internal address reaches (KamoCollab CP04 Task 11)

CONTACT_REQUESTED and CONTACT_DECIDED are gated on ACCESS_CHAT and listed after MENTIONED. POST **************** ({orgId, addresses[]}, at most 100, KAMOAI_INTE...

KamoΒ·1w ago
FeatureEmailService

The CP05 DDL for per-thread Confidential markers and the thread_id indexes

KamoCollab CP05 Task 4 (spec 5.1): public.email_thread_labels keyed by (org_id, thread_key), ix_thread_messages_thread and the partial ix_search_index_thread. H...

KamoΒ·1w ago
October 10, 2026
FixEmailService

Labels page in one date order with an exact total; Microsoft 365 folders are counted

Labels - A label was paged through the join table by UID and each page sorted by date afterwards. UIDs only order mail within one folder and a label spans f...

KamoΒ·1w ago
FeatureEmailService

Message listings say how many messages they hold (X-Total-Count)

The message list in kamo-internal can now be browsed by pages, and its pager needs the listing's size for "51-100 of 1,240" and a Last button. Every listing ans...

KamoΒ·1w ago
FixEmailService

Lower-case NATS mailbox subjects for live updates

Mixed-case addresses like Sales@kamocrm.com published on different NATS subjects than subscribers used, so watched mailboxes never refreshed.

KamoΒ·1w ago
October 9, 2026
FeatureEmailService

A composed message carries its meeting, and calendar edits ask before telling guests

- /api/email/send takes meetingInvite: the event is filed on the sender's calendar in the same transaction, its ics rides on the composed message with an X-...

KamoΒ·1w ago
October 6, 2026
FixEmailService

An AI hire no longer waits forever on an email provider that was never connected

An org that chose Google Workspace (or another third-party provider) but left it at PENDING_SETUP, or switched it off, can never produce the AI's mailbox, so th...

KamoΒ·2w ago
October 5, 2026
FixEmailService

A provisioning race Yugabyte reports as a serialization conflict no longer 500s the calendar widget (SP98 T26)

listCalendars provisions the shared and the personal calendar find-then-create, each in its own transaction, and treated a lost race as done only when it surfac...

KamoΒ·2w ago
TestEmailService

MailSearchWiringTest registers the recipient-domain validator EmailController now takes (SP98 T26)

ec2c638 gave EmailController a RecipientDomainValidator; the wiring test's context did not have one, so it has failed on main since 2026-09-28 **************** ...

KamoΒ·2w ago
FeatureEmailService

Calendar chat lines say they are system lines (KamoCollab CP00 T5)

MediaChatClient.sendDirect now posts "source": "SYSTEM" beside fromMemberId, toMemberId and message: a calendar invitation or cancellation is a notice written i...

KamoΒ·2w ago
October 4, 2026
FeatureEmailService

A member's new name reaches their mailbox's display name (SP95 T35)

POST **************** {previous, current} -> {updated}, behind the KamoAI internal secret like provision-mailbox. The mailboxes the member holds as primary whos...

KamoΒ·2w ago
FixEmailService

The AI signature disclosure names the company by its spoken name

An AI member's email disclosure filled {organization} with the organization's title (its letterhead), so Luna's mail said "an AI member of the KamoCRM Inc. team...

KamoΒ·2w ago
FixEmailService

Key the cross-root retry on alias-domain membership, not root-or-not

Round 3 review (email-fix-review-3.md) confirmed round 2's BLOCKER fixed (walked sage@kamouniverse.com through both the app code and Postfix's own platform-alia...

KamoΒ·2w ago
September 29, 2026
FixEmailService

Retry every owned domain unconditionally, and drop the +tag fold

Round 2 review (email-fix-review-2.md) found the round 1 fix for MAJOR #3 (multiple root domains) still reopened the original bug: - BLOCKER: kamouniverse.com ...

KamoΒ·3w ago
FixEmailService

Close three false-refusal paths the review found in RecipientDomainValidator

Independent review of D-luna-1 (email-fix-review-1.md) found two BLOCKERs and a MAJOR, each a real false refusal of legitimate mail, demonstrated from code alre...

KamoΒ·3w ago
FixEmailService

Refuse a guessed recipient at the org's own domain before it reaches the mail server

Luna (AI member) asked to email the owner and guessed **************** instead of looking up the real address (sage@kamocrm.com). kamouniverse.com is one of the...

KamoΒ·3w 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