KamoCRM

Live Change Log

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

17,650
Total Changes
6,071
Features
5,339
Fixes
30
Projects
Filter by project
All Projects17,650AIService260APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService586InitializerService329KBService151KlusterServices744MCPGatewayService261MediaService604RAGService79SecurityService1,872TranslateService62VOIPService250VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,411kamo-login340kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,678kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore775Docs3,257Feature6,071Fix5,339Other998Performance165Refactor278Revert23Style42Test162Upgrade1
October 29, 2026
FixEmailService

Outbound mail stops looking like spam: a plain-text part, a real Message-ID, no unreachable Reply-To, no zero-font spacers

rspamd's scan of 76 recent kamouniverse.com messages, fixed where each is built: - MIME_HTML_ONLY (75/76): every body is now multipart/alternative with a text/...

KamoΒ·2h ago
FixEmailService

An explicit alias at the default alias domain keeps the member on it

personalMailboxes() leaves out the primary mailbox's copy on an alias domain when the member holds an explicit alias at that address. When that copy was the org...

KamoΒ·2h ago
FeatureEmailService

Alias domains sign with the org domain's own DKIM key

An alias domain is an organization domain, and SecurityService already gives every org domain one DKIM key (org_domains.dkim_*), the record the owner is told to...

KamoΒ·2h ago
October 28, 2026
FixEmailService

A member's signature prints the address the letter goes out from

The member's own signature always printed the profile's email - their primary mailbox - so mail sent as Dylan@kamouniverse.com (an alias, or the mailbox on an a...

KamoΒ·8h ago
FixEmailService

Voice quiet hours are a partial update and switching them off keeps the member's hours

PUT **************** wrote quietEnd = quietStart to mean 'off', so turning quiet hours off, or saving without quietEnd, lost the member's end, and turning them ...

KamoΒ·23h ago
FeatureEmailService

Per-kind phone and voice channels, the voice mirror, and SI_ASSISTANT_REPLY

Voice Assistant program (2026-10-27) P3-5, P4-1, P4-2, P4-4. - GET/PUT /api/notifications/channels and PUT **************** per-kind PHONE/VOICE choices (BELL...

KamoΒ·1d ago
FixEmailService

A colleague's alias can be sent from when their mailbox can

Composing as a colleague offers their aliases in the From picker, but /send authorizes the From against the logged-in member, whose canSendAs knew only the coll...

KamoΒ·1d ago
FeatureEmailService

Alias domains receive and sign on their own; colleague and self defaults

The mail server now learns an org's alias domains from EmailService instead of hand-edited postfix config. KamoMailAliasDomains keeps an alias_domains table in ...

KamoΒ·1d ago
FixEmailService

Dovecot push publishes once per mailbox, EHR letters get a subsystem; four stale tests fixed

Production: - DovecotPushService published every arrival, change and unread recount once per application spelling of the mailbox. That fan-out existed because...

KamoΒ·1d ago
FeatureEmailService

Manage the org's alias domains, and allow aliases on them

org_alias_domains only ever existed by hand-written SQL. New /api/email/alias-domains lists them (any member of the org) and adds, removes and sets the default ...

KamoΒ·1d ago
October 27, 2026
FeatureEmailService

An alias works on every alias domain, like the primary mailbox

The org's alias domains (org_alias_domains) already mirrored the member's primary mailbox into the composer (erik@kamocrm.com also offered as erik@kamouniverse....

KamoΒ·2d ago
FeatureEmailService

A member can send from an alias by default

PUT **************** chooses which alias stands in for the member's primary mailbox (null clears it). One alias per member at most carries is_default; the colum...

KamoΒ·2d ago
October 26, 2026
FixEmailService

MailProvenanceService names its Spring constructor, so EmailService starts again

5cd632f gave it a second public constructor; Spring found no default one and every new pod crash-looped ("No default constructor found"), holding the deploy on ...

KamoΒ·2d ago
FeatureEmailService

A message's sender facts for SI identity checks; SI_AUTH_REQUEST belongs to no app

The provenance answer now also says what the message itself claims about its sender: From, Reply-To, the server that handed it to ours, and the SPF/DKIM/DMARC r...

KamoΒ·2d ago
FeatureEmailService

A plain-text version beside the HTML, and an SI's recap letter for a supervisor when the SI has no mailbox (TPRECAPS)

/api/email/send takes an optional textBody: the body is then multipart/alternative (text, then the HTML), inside mixed when there are attachments. POST ********...

KamoΒ·2d ago
FeatureEmailService

Prove a teammate sent an SI's email, so an emailed request can count as their order

An internal endpoint answers whether a message in a member's own mailbox was sent by a teammate: its From reaches a member of the same org, and that member's ow...

KamoΒ·2d ago
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Β·6d 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Β·6d 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Β·1w 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Β·1w 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Β·1w 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Β·1w 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Β·1w 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Β·1w 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Β·1w 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Β·1w 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Β·1w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w ago
October 11, 2026

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