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 3, 2026
Featurekamo-internal

Delivery coverage, pricing sign-off, large-deposit panels

Replaces the final Coming-soon chips (Hedge & coverage, Pricing sign-off, Large-deposit) with live panels wired to the new steward proxies.

kamo·1mo ago
Featurekamo-internal

Steward console round 2 — exception queues, governance, MERS recon

- Capital + Underwriting: StewardExceptionQueue (shared panel) wired to the real steward-tasks endpoint — lock exceptions **************** and guideline exc...

kamo·1mo ago
Featurekamo-internal

Build out the mortgage steward console coming-soon features

Replaces stubs with real, endpoint-backed panels + fixes a dead-write bug: - Underwriting: Income calculation panel (qualification: DTI/PITIA/reserves/LTV + A...

kamo·1mo ago
Fixkamo-internal

Surface quotes in every vertical, not just retail

The Quotes tab was only wired into the RETAIL sub-tab set, so on an org whose active markets are SUBSCRIPTION / MORTGAGE / PERSONAL_LOANS there was no way to re...

kamo·1mo ago
Featurekamo-internal

Set the org LEI in Company Info (activates the HMDA ULI)

The Company Info card gains a Legal Entity Identifier field (20-char, upper- cased), sent through the existing org PUT — OrganizationController deserializes it ...

kamo·1mo ago
Fixkamo-internal

Resolve the org from the real request host, not the internal address

checkAccess resolves the tenant by looking up `org:domain:<hostname>`, and was being handed request.nextUrl.hostname — which behind Traefik is 127.0.0.1. That k...

kamo·1mo ago
Featurekamo-internal

Promote an ingested guideline version from the console

For a GUIDELINE source document the ingestion panel shows a "Promote as guideline version" card (product select + revision label). The rate-sheet card is now hi...

kamo·1mo ago
Fixkamo-internal

Apply the image policy to every page, not just the authenticated ones

The policy was attached only at the final `NextResponse.next()`, so /logout and /validate — both real, browser-rendered documents — were served with no img-src ...

kamo·1mo ago
Featurekamo-internal

Automatic logoff after inactivity (HIPAA 164.312(a)(2)(iii))

A session left open on an unattended workstation stayed usable indefinitely. This terminates it after 15 minutes of no interaction, with a 60-second warning so ...

kamo·1mo ago
Fixkamo-internal

Restore theme assets — CSP derived the wrong host and SVG was disabled

Avatars, org logos and backgrounds stopped loading for every tenant. Two separate regressions I introduced in 36ad904b, both live for hours. 1. The per-request...

kamo·1mo ago
Featurekamo-internal

Promote an ingested eligibility matrix from the console

For an ELIGIBILITY_MATRIX source document the ingestion panel now shows a "Promote as eligibility matrix" card: pick the product, limit type (MAX_LTV/CLTV/DTI),...

kamo·1mo ago
Featurekamo-internal

Authoring UI — list, line-item editor, share-link management

Completes the quote/estimate system: staff can now build a quote, price it, mint a share link and email it, all from the pipeline. app/lib/quotesApi.ts ...

kamo·1mo ago
Fixkamo-internal

Close the /_next/image open proxy

remotePatterns was [{ protocol: "https", hostname: "**" }]. That made the image optimizer a general-purpose fetcher: any caller could ask this server to retriev...

kamo·1mo ago
Featurekamo-internal

Show a facepile for group conversations

A thread with five people on it was represented by one arbitrary face, which reads as a message from one person. Up to three participants now overlap, so "sever...

kamo·1mo ago
Featurekamo-internal

Promote an ingested LLPA matrix into adjustments from the console

The ingestion panel could only publish a rate sheet. For an LLPA_MATRIX source document it now shows a "Promote as LLPA adjustments" card: pick the existing rat...

kamo·1mo ago
Fixkamo-internal

Show the other party in Sent, not the reader's own face

Both list views keyed a row on its sender, so every row of the reader's own outbox showed the reader — their photo, their name, their address. The message list ...

kamo·1mo ago
Chorekamo-internal

Commit outstanding work in progress

Staged and committed as-is so nothing is left uncommitted in the working tree. 5 files changed, 4879 insertions(+), 12 deletions(-)

kamo·1mo ago
Fixkamo-internal

Harden the kubectl download against flaky egress [skip ci]

dl.k8s.io over the runner's egress intermittently drops mid-transfer: curl: (56) OpenSSL SSL_read: decryption failed or bad record mac which fails the deploy ...

kamo·1mo ago
Featurekamo-internal

Show sender and recipient photos

The mailbox rendered a single letter on a single shared gradient for everyone, so every row looked the same and the circle carried no information. It now shows ...

kamo·1mo ago
August 2, 2026
Fixkamo-internal

Delete /api/set-token and /api/get-jwt-token; add route guards

Both routes were dead — no caller anywhere in kamo-internal, kamo-login or kamo-register — and both leaked credentials. /api/set-token built its upstream URL f...

kamo·1mo ago
July 31, 2026
Fixkamo-internal

Resolve template images from kept sources, not neighbouring slots

The composer re-resolved a template's image sources whenever the template config changed, and for 'member-avatar' it guessed the URL from whichever of signature...

kamo·2mo ago
Featurekamo-internal

Blink the mail icon while an unread indicator is showing

The unread badge alone was easy to miss in the top bar. NavItemButton gains a blinkIcon prop that pulses the icon (and its badge) — kept distinct from the exist...

kamo·2mo ago
Fixkamo-internal

Double vertical scrollbar width for easier dragging

Bump the nav options scroll container from a 6px to a 12px webkit scrollbar and widen the thumb radius to match, giving members a larger drag target. The collap...

kamo·2mo ago
July 30, 2026
Featurekamo-internal

MeridianLink loan-officer credential card on member profile + lead-button LO pre-warn

Phase L3 of the MeridianLink LOS loan-officer mapping (per §3.4-3.6 of the design spec): - New member-scoped LOS-credential proxy **************** and type...

kamo·2mo ago
Fixkamo-internal

Drop redundant "+" — pen now sets the balance both ways

The credit-balance pen is now an absolute set-to-N editor (backend mints when the value is raised, invalidates the excess when lowered), so the separate "+" dis...

kamo·2mo ago
July 28, 2026
Chorekamo-internal

Re-trigger build for Bulk Email i18n (run 338 failed transiently)

Local `next build` compiles clean with the full dictionary (a95bc92); the prior CI build failed on a transient step, not on content. Re-triggering to bundle the...

kamo·2mo ago
Chorekamo-internal

Rebuild to bundle completed Bulk Email i18n strings

No code change — triggers CI to re-clone kamo-translation-dictionary (a95bc92) so the deploy bundles the 208 new **************** strings into messages/en.json ...

kamo·2mo ago
Fixkamo-internal

Add 'desktopMaster' to NavActionKey union — unblocks next build

The Master Machine launcher (navRegistry + NavOptionView + CommandPalette) references actionKey 'desktopMaster' but it was missing from the NavActionKey union, ...

kamo·2mo ago
July 27, 2026
Featurekamo-internal

Bulk Email campaigns UI — grid, editor, provider tab, leads action

Adds the org-level bulk email marketing surface under /marketing/email: - Bulk Email tab (after Social Media) + campaigns AG Grid workspace with live status/s...

kamo·2mo ago
Featurekamo-internal

Add Master Machine remote-desktop launcher (god-gated)

Third one-click desktop next to Linux/Windows: navRegistry entry (ComputerIcon), 'master' target through openKamoDesktop + the SSO proxy route, and dispatch in ...

kamo·2mo ago
Featurekamo-internal

Date-of-birth on lead view + create form

Adds a "Date of Birth" field under Primary Contact on /leads/view/[id] using a MUI DatePicker that opens to the year grid first (openTo=year, disableFuture, min...

kamo·2mo ago
July 23, 2026
Featurekamo-internal

Author document-requirement overlay rules from the steward console

The "what documents does this loan need" rule matrix had no authoring surface. This adds a Document-requirement rules section to the Documents & Conditions scre...

kamo·2mo ago
Featurekamo-internal

Author conditional LLPAs from the catalog panel

Adjustments could not vary by borrower: MlosAdjustmentCondition had no writer, and the pricing engine treats an adjustment with no conditions as always-applies,...

kamo·2mo ago
Featurekamo-internal

Confirm email when reassigning a lead from the lead-view

The Assignment card now reassigns via leadsApi.reassignLead, which surfaces the server's assigneeNotified flag. On a reassignment to a new member the toast read...

kamo·2mo ago
July 22, 2026
Featurekamo-internal

Bulk-reassign selected leads to a team member

The grid already had multi-select checkboxes but nothing to do with a selection. Checking rows now reveals a Reassign action beside the other lead actions, gate...

kamo·2mo ago
Fixkamo-internal

Render member photos on avatars inside the chat window

The small avatar icons in a chat popup — the per-message sender avatar (MessageBubble) and the seen-receipt list (SeenIndicator) — all read SessionMember.avatar...

kamo·2mo ago
Fixkamo-internal

Show member avatars in chat tool window title bars

The tool-window title bar renders its icon from the window STORE props — ToolDock passes `avatarSrc={w.toolId === 'chat' ? w.props.avatarSrc : undefined}` and f...

kamo·2mo ago
Fixkamo-internal

Surface real upload errors, sync god mode to session

"Save failed: Full logo upload failed" discarded the status and body, so a 403 from the branding gate read identically to a MinIO outage. The server's own messa...

kamo·2mo ago
Featurekamo-internal

Author eligibility matrices from the catalog panel

Without a matrix covering a scenario's occupancy and purpose, pricing returns NO_COVERAGE — so before this, only a purchase of a primary residence could be pric...

kamo·2mo ago
Featurekamo-internal

Rebuild the agent studio as a full-width workspace

Removing the width cap was not the fix; the layout itself needed to be designed for the space rather than tolerated in it. The studio is now three zones side b...

kamo·2mo ago
Featurekamo-internal

Author lock policies — without one, no rate can be locked at all

RateCommitmentService refuses a lock whenever the priced result carries no lockPolicyVersionId ("lock-policy version is required"), and a result only carries on...

kamo·2mo ago
Fixkamo-internal

Stop the promote preview overcounting rows the server will reject

The "N approved row(s) will publish" caption counted a row whenever an APPROVED note_rate and base_price candidate existed for it, ignoring the values. A price ...

kamo·2mo ago
Fixkamo-internal

Use the full page width; make renaming an agent visible

Two things I got wrong. **Width.** The brief was explicit — use the full width of the page, do not waste real estate — and I capped the studio at a centred 880...

kamo·2mo ago
Fixkamo-internal

Stop the lead view crashing on a lead with no name

/leads/view/{id} died with "Cannot read properties of null (reading 'preferredName')". LeadDTO.toDTO() only builds primaryContact inside `if (lead.getName() != ...

kamo·2mo ago
Featurekamo-internal

Show how each agent is doing

Adds a performance section to the top of the agent studio: conversations, how often a person took over and what triggered it, outreach outcomes, and cost. Writ...

kamo·2mo ago
Fixkamo-internal

Retry an upload with the MIME type the server actually detected

The upload validates the multipart part's Content-Type against the type the server detects from the bytes, and that part type comes from the browser's File.type...

kamo·2mo ago
July 19, 2026
Featurekamo-internal

Edit what each model costs

Adds per-model price editing to the provider setup screen. Prices are seeded from each vendor's published list price where we know it, and blank where we do not...

kamo·2mo ago
Featurekamo-internal

Show the AI handoff context to the agent taking over

Renders an AI_HANDOFF system event as a card with the reason, the AI's summary, and a collapsible transcript of the conversation so far - so the borrower does n...

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