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
August 5, 2026
Fixkamo-shared-library

Record the uploader on a deduplicated document

registerExistingDocument built its Img without .createdByMember(member), which the normal upload path sets. Every document registered through dedup therefore la...

Kamo·1mo ago
Fixkamo-shared-library

Targeted conversion updates, so a detached ImgDat save cannot abort conversion

Conversion runs on a virtual thread against a DETACHED ImgDat. save() therefore merges an instance whose LAZY `images` collection is no longer the managed one, ...

Kamo·1mo ago
Fixkamo-shared-library

Put unowned intake leads into the auto-assignment pool

Every lead-creation path funnels through LeadService.createLead — CSV import, the lead-intake endpoints and their scheduled DaemonService job, the public webina...

Kamo·1mo ago
Featurekamo-shared-library

HR_RESOURCE assoc type for the org HR resource library

The /hr Resources tab publishes handbooks, policies, forms and reference material to the whole team, and no existing assoc type fits: MY_DOCS is a person's own ...

Kamo·1mo ago
Testkamo-shared-library

Pin the contact-point and linker invariants, and drop timeline count queries

The two classes the whole feature rests on had no tests, and all three properties they guarantee fail silently in production: an unmatched call is indistinguish...

Kamo·1mo ago
Fixkamo-shared-library

Make communication source ids natural keys, not row ids

A source id derived from the source row's generated UUID is only stable if that row commits. The VOIP ingest paths write inside the sync transaction while LeadC...

Kamo·1mo ago
Featurekamo-shared-library

Point-in-time contact-point index and lead communication links

Adds the spine the lead Communications tab reads from. LEAD_CONTACT_POINTS records every phone number and e-mail a lead has ever had, as a window with activeFr...

Kamo·1mo ago
Featurekamo-shared-library

Public demo-request lead capture primitives

A visitor who fills in the marketing site's demo form but never books a time left no trace: the lead was only ever written inside the booking transaction. Captu...

Kamo·1mo ago
Featurekamo-shared-library

MICROSOFT_TEAMS provider type

Appends MICROSOFT_TEAMS to VoipProviderType. The enum persists as ORDINAL on **************** so the position is load-bearing and the constant goes last; the cl...

Kamo·1mo ago
Featurekamo-shared-library

Model meetings as provider-agnostic

Kamo Meets was the only possible backend: OrgMeetConfig was a flat Meet settings bag and a MeetingRecord held nothing but a room name. This adds the schema for ...

Kamo·1mo ago
Featurekamo-shared-library

Read quality on adjustments and guideline versions

An assembled price is a base cell PLUS the adjustments stacked onto it, so judging only the cell judges half the number: a cleanly-read 99.875 with a misread -1...

Kamo·1mo ago
Fixkamo-shared-library

Publish the agent's cell when it is the only number they have

An agent's number can live in any of three columns and commonly sits in only one: e_phone_number on the team member, m_phone_number and m_cell_number on the mem...

Kamo·1mo ago
Featurekamo-shared-library

Per-cell extraction confidence + eligibility-matrix provenance

Two gaps in the confidence model, both on the money path. PER-CELL. A sheet-wide floor is the wrong grain for judging one price: a single badly-read coupon dra...

Kamo·1mo ago
Featurekamo-shared-library

Publish every way to reach the agent, not just a name

Name and title alone tell a customer who owns the quote but not how to ask about it. The block now carries email and phone, resolved by the caller — the primary...

Kamo·1mo ago
Featurekamo-shared-library

Extraction confidence on the catalog spine + auto sign-off basis

A price is only as trustworthy as the sheet it was assembled from, and nothing on the pricing path carried that signal: confidence existed ONLY on pre-promotion...

Kamo·1mo ago
Fixkamo-shared-library

The opportunity templates own their own markup again

The company line was changed to arrive as a complete <p> element from the sender, so an absent company would not leave an empty paragraph. That was the wrong tr...

Kamo·1mo ago
Featurekamo-shared-library

Page and filter an account's quotes in the database

An account view needs every quote across all its leads. Loading them to render a page degrades every month the account is in use, and any total shown would only...

Kamo·1mo ago
Featurekamo-shared-library

Name the lead's assigned agent on the document

The letterhead identifies the org, but a customer with a question about a price needs the person who owns the relationship. The quote now carries the lead's ass...

Kamo·1mo ago
Featurekamo-shared-library

Reassignable primary agent, and nine notification templates

An approver can hand an opportunity — and the commission with it — to a different agent. PRIMARY_AGENT_MEMBER_ID is who holds it now; REQUESTED_BY_MEMBER_ID is ...

Kamo·1mo ago
August 4, 2026
Featurekamo-shared-library

The overall commission on a sale, and market defaults for it

A reserved opportunity now records what the organization pays out of the sale to the requesting agent and the group they share with — the pot the per-colleague ...

Kamo·1mo ago
Fixkamo-shared-library

Carry lead ids as strings — a JS number silently corrupts them

Lead ids are CockroachDB unique_rowid() values above Number.MAX_SAFE_INTEGER: 1189175700550025222 becomes 1189175700550025200 the moment it touches a JS number....

Kamo·1mo ago
Featurekamo-shared-library

Put the client's details on the document, read off the lead

Dropping the quote's own addressee fields left the document with nothing to say about the client: customerName only ever came from a linked Account, which lead-...

Kamo·1mo ago
Featurekamo-shared-library

Quotes belong to leads, configured per market

Quotes were a commerce-pipeline artifact, which put them beside orders and carts rather than beside the client they are for. They now hang off the lead: the mar...

Kamo·1mo ago
Featurekamo-shared-library

Entities for time-boxed lead opportunity reservations

An agent stakes an exclusive claim on closing a lead for a bounded window; an approver grants, edits or denies it, and colleagues can be offered a share of the ...

Kamo·1mo ago
Featurekamo-shared-library

Address a quote to someone who is not yet an account

The addressee was derived solely from a linked Account, so any quote raised for a prospect — which is most of them — printed a blank "Prepared for" line and the...

Kamo·1mo ago
Fixkamo-shared-library

Resolve the org's real hostname and logo extension for the letterhead

Correcting the theme URL was necessary but not sufficient — the logo still did not render, for two further reasons found in the live data. org_domains stores a...

Kamo·1mo ago
Fixkamo-shared-library

Point the letterhead logo at the path the theme bucket actually serves

The logo URL was built as **************** which that host answers with a 308 rather than an image — so every quote, sent as well as previewed, silently fell ba...

Kamo·1mo ago
Featurekamo-shared-library

PHI_ACCESS_ALERT canonical template

SecurityService's hourly review of phi_access_log needs somewhere to send what it finds. Rather than invent a channel it uses the existing transactional-email r...

Kamo·1mo ago
Featurekamo-shared-library

Audit vocabulary for a change to the compliance boundary itself

Adds PhiResourceType.ORGANIZATION and PhiAccessKind.CONFIGURE so that turning Organization.handlesPhi on or off can be recorded as what it is. Every existing r...

Kamo·1mo ago
Refactorkamo-shared-library

Share the letterhead resolution between the public page and staff

The staff preview has to show exactly what the customer receives, so branding, the document term and the link host now resolve in one place. Two copies would dr...

Kamo·1mo ago
August 3, 2026
Fixkamo-shared-library

Pin option FK column definitions so they do not inherit gen_random_uuid()

Hibernate copies the referenced id's columnDefinition onto a new @JoinColumn, so quote_id and option_id were both created DEFAULT gen_random_uuid(). An insert t...

Kamo·1mo ago
Featurekamo-shared-library

Multi-option quotes with per-option comparison totals

A quote can now present several mutually-exclusive ways to buy — monthly, annual, three-year — instead of forcing three separate documents that drift apart the ...

Kamo·1mo ago
Featurekamo-shared-library

WORM pricing sign-off entity (mlos_pricing_signoff)

Append-only steward APPROVE/REJECT judgement on a frozen priced result. @PreUpdate throws (a reversal is a new row). Table + 4 indexes (org, run, result, loan) ...

Kamo·1mo ago
Featurekamo-shared-library

Durable audit trail — persist PHI access, append-only

Turns §164.312(b) from a log line into evidence. The capture layer has been wired across seven services for a while, but it wrote through Slf4jPhiAccessLogWrite...

Kamo·1mo ago
Featurekamo-shared-library

Mint the Universal Loan Identifier (ULI) + store the org LEI

Adds the HMDA ULI to the LAR export. UliMinter builds the ULI = org LEI(20) + loan number + two ISO 7064 MOD 97-10 check digits (Mod97CheckDigit — the IBAN algo...

Kamo·1mo ago
Fixkamo-shared-library

Drop @Service so 40 services stop constructing an auth bean

MfaEnrollmentService shipped with @Service. Every Kamo service carries @ComponentScan("com.kamo"), so all of them construct it — but each declares its own EXPLI...

Kamo·1mo ago
Fixkamo-shared-library

Pin the constructor Spring uses, and prove the context starts

MfaEnrollmentService is a @Service and every Kamo service component-scans com.kamo, so it is instantiated in roughly forty applications. It had two constructors...

Kamo·1mo ago
Featurekamo-shared-library

TOTP second factor — §164.312(d)

The compliance assessment called the absence of any second factor disqualifying on its own, and under the 2025 Security Rule NPRM MFA stops being addressable at...

Kamo·1mo ago
Featurekamo-shared-library

Quote/estimate domain — entities, pricing engine, share links

Adds a first-class Quote alongside the existing commerce spine. The pre-existing "ServiceQuote" is an Intent plus a JSON blob carrying one offering and one flat...

Kamo·1mo ago
Featurekamo-shared-library

Sender identity model + org-scoped batch email lookups

Backing store and queries for the mailbox sender-avatar chain. SenderIdentityEntity is the durable tier of the avatar cache. org_id is part of the natural key ...

Kamo·1mo ago
Featurekamo-shared-library

Audit spine for PHI access — §164.312(b)

The Security Rule requires recording access to ePHI, which means reads. The platform records changes well — LeadHistory, SystemAccessLog, UserHistory, LoanAudit...

Kamo·1mo ago
Featurekamo-shared-library

Enforce the compliance boundary at the feature switch

Wires PhiTenantGuard into FeatureService, the single choke point through which a module is switched on for an organization. This is where the boundary stops bei...

Kamo·1mo ago
Featurekamo-shared-library

Auto-assign a MERS-compatible loan number at application creation

LoanFile.loanNumber was null on create (both blank-create and lead-promote) and only ever set when a steward typed one — which hard-blocked MERS MIN minting (a ...

Kamo·1mo ago
Featurekamo-shared-library

Persist handlesPhi and phiEffectiveDate on Organization

Backs PhiTenantGuard with a real column. HANDLES_PHI is NOT NULL DEFAULT FALSE following the **************** pattern, so every existing tenant is explicitly ou...

Kamo·1mo ago
Featurekamo-shared-library

PhiTenantGuard and the module compliance boundary

The keystone of the HIPAA compliance boundary: which modules a tenant may reach, given whether that tenant handles protected health information. Everything down...

Kamo·1mo ago
August 2, 2026
Otherkamo-shared-library

Revert "feat(phi): add the handlesPhi tenant flag and PhiTenantGuard"

This reverts commit ****************

Kamo·1mo ago
Featurekamo-shared-library

Add the handlesPhi tenant flag and PhiTenantGuard

The keystone of the HIPAA compliance boundary: a per-organization flag plus a guard deciding which modules that organization may reach. Everything downstream ke...

Kamo·1mo ago
July 30, 2026
July 27, 2026
Featurekamo-shared-library

Shared-lib support for bulk-email recipient resolution + company contact email

- **************** contactEmail branch (company contact email editable via PUT /api/security/org, used as company-scope campaign From) - ApplicationRepository...

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