KamoCRM

Live Change Log

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

18,391
Total Changes
6,526
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,391AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService619InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,995TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,691kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,824kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,526Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
November 11, 2026
FeatureEmailService

Sample values for the co-borrower request and its one-time code, so the admin preview renders them

Rebuilds EmailService onto the shared library that carries the MICRO_ACTION_REQUEST and MICRO_ACTION_CODE templates (an org seeds a missing template on first se...

KamoΒ·7h ago
FeatureEmailService

Preview variables for the invoice and invoice receipt emails

commerce.invoice_sent and the new commerce.invoice_receipt (a paid work order or order invoice's receipt) get sample variables, so the template editor's preview...

KamoΒ·7h ago
FeatureEmailService

Audience filters on every trigger, account and loan triggers, enroll by filter

TriggerConfig gains leadFilter, accountFilter, loanFilter, loanStatuses, audienceId and includeExisting; a drip saved with the flat market/vendor/ product/state...

KamoΒ·8h ago
FixEmailService

Keep filter subqueries on their row-key indexes, and test them

EXPLAIN against the live catalog showed the planner driving callback, loan status and rate lock subqueries from their status indexes (every such row on the plat...

KamoΒ·9h ago
FeatureEmailService

Lead/account/loan audience filters, saved audiences and audience options

Extends LeadAudienceFilter with status/sub status (include or exclude), assignment, source, created/assigned/last-activity date rules, callback, birthday, loan ...

KamoΒ·10h ago
FeatureEmailService

Send bulk mail from the domain itself, and extend SPF instead of replacing it

- A sending domain can now be the domain itself (acme.com), not only a name of its own (news.acme.com): create/lookup take root=true. Its records are SPF, D...

KamoΒ·10h ago
November 8, 2026
FixEmailService

Index backfill candidate query without a '::' cast

Hibernate's native-query parser read ':text' in ARRAY[]::text[] as a named parameter and the first live run answered 500. (attachment_types IS NULL OR NOT (mark...

KamoΒ·3d ago
FeatureEmailService

Targeted index backfill for removed-attachment counts; conversations carry the count

Listings served from email_metadata.search_index only showed antivirusRemoved for messages indexed after b05af4f. Only mail delivered after the Antivirus mail f...

KamoΒ·3d ago
FeatureEmailService

Purchase requests are gated on the Procurement rights

PURCHASE_REQUEST_SUBMITTED (kamo-shared-library 6a765c18) asks for APPROVE_PURCHASE_REQUESTS, the right SecurityService chose its recipients by; PURCHASE_REQUES...

KamoΒ·3d ago
FeatureEmailService

Message-list rows carry antivirusRemoved / hasBlockedAttachment

The IMAP envelope fetch now names X-Kamo-Antivirus beside Message-ID (same HEADER.FIELDS fetch, no body read), and toEnvelope sets the removed count from remove...

KamoΒ·3d ago
FeatureEmailService

Antivirus for mail β€” read gate on every mailbox, milter placeholders, send screening, detections

- Read: every attachment/inline part from any mailbox (Kamo Mail, IMAP providers, Graph; personal and shared routes) is hashed in memory (temp file past 8 MiB...

KamoΒ·3d ago
November 7, 2026
FeatureEmailService

Preview samples for the legal review letters

hr.package_needs_review / hr.package_returned / hr.package_approved (seeded from kamo-shared-library's canonical templates) now preview with realistic whole sen...

KamoΒ·3d ago
November 6, 2026
FeatureEmailService

Members choose which details their signature prints (UPDATE_OWN_SIGNATURE)

/api/email/member-signature GET/PUT/DELETE; the composer narrows the org's USER-scope toggles with the sender's own choices (never the settings editor's explici...

KamoΒ·4d ago
PerformanceEmailService

Read a drip's lead by its primary key

DripContacts.lead/stateOfLead wrote "l.uid = ? AND l.org_id = ?", which YugabyteDB's heuristic planner serves from ix_leads_org_id, walking the whole organizati...

KamoΒ·5d ago
November 2, 2026
FeatureEmailService

A task event links to My Tasks, under Organizer

KamoΒ·1w ago
FeatureEmailService

Sales Floor notices are gated on the Leads right

SALES_FLOOR (kamo-shared-library 3ea204a5) is gated on VIEW_LEADS: every owner, floor worker and deal-role holder holds it today, where a floor right would sile...

KamoΒ·1w ago
FeatureEmailService

Stream emails print the sender's and the org's NMLS and the equal housing mark

Saved and written stream emails alike, above the address and unsubscribe. Only for an org with an NMLS number.

KamoΒ·1w ago
November 1, 2026
FeatureEmailService

Stream emails reach the lead's timeline

KamoΒ·1w ago
ChoreEmailService

Rebuild for the payment-failed letter

KamoΒ·1w ago
FeatureEmailService

A landed call, text or email tells open screens

The contact tracker now announces each communication on the floor's domains, so a call the phone system reports reaches the board at once instead of on the next...

KamoΒ·1w ago
FeatureEmailService

A sent reply closes the message's triage item

KamoΒ·1w ago
FixEmailService

Only write to an owner about domains they have verified

An unverified domain is only a name someone typed in, and the letter's steps assume its owner controls the DNS. Such a domain now counts as nothing to do, so an...

KamoΒ·1w ago
FeatureEmailService

A stream's email wears the org's email template, and can be a saved template

The same compose wrap a drip's email gets. A saved template's HTML goes as it stands, with the compliance lines a written email gets.

KamoΒ·1w ago
FeatureEmailService

Write to an org's owner each week a domain is unfinished

Covers ownership, web addresses, alias-domain mail and what we need to send system mail as the domain. From the platform, one letter per owner, and it stops by ...

KamoΒ·1w ago
FixEmailService

Send as an org's domain when its SPF or DKIM authenticates us

A published DKIM key now puts the org's domain on the From by itself, with the envelope left on the platform so a strict SPF record cannot sink the message. SPF...

KamoΒ·1w ago
FeatureEmailService

Stream emails on the drip road, and a lead's mail reply tells their streams

/api/internal/stream-email queues one edition per run and step through DripEditions, so the campaign path keeps the opt-out check, hosts, warm-up and unsubscrib...

KamoΒ·1w ago
FeatureEmailService

A lead's Stop all outreach ends their drips, and an unsubscribe can set it

An unsubscribe is offered to the lead's Stop all outreach, which does nothing unless the organization turned it on. Mail to and from a lead now updates its last...

KamoΒ·1w ago
October 31, 2026
FixEmailService

Sign calendar invitations from an org domain as well

EmailSmtpService.send carried no domain signer, only sendAsMember did, so an invitation sent from an alias domain left unsigned while the member's ordinary mail...

KamoΒ·1w ago
October 29, 2026
ChoreEmailService

Rebuild for the updated-invoice template

KamoΒ·1w ago
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Β·1w 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Β·1w 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Β·1w 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Β·1w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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Β·2w 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