KamoCRM

Live Change Log

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

18,406
Total Changes
6,537
Features
5,540
Fixes
30
Projects
Filter by project
All Projects18,406AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService622InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,997TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,699kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,826kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,537Fix5,540Other1,001Performance174Refactor282Revert23Style45Test175Upgrade1
July 14, 2026
FeatureMediaService

Direct-to-assigned-LO routing + LO presence endpoint

Powers the borrower portal's merged LO/chat widget: - **************** direct-assigns a public-chat ticket to a SPECIFIC agent (the borrower's assigned loan o...

Kamo·4mo ago
FeatureSecurityService

Expose assigned-LO member id + phone for direct chat + presence

The merged LO/chat widget needs to (a) target the assigned officer directly in the borrower's live-support session and (b) query the officer's live presence. Bo...

Kamo·4mo ago
FeatureSecurityService

Assign a loan officer to a NAME-ONLY lead (before email/phone)

The borrower portal already creates the lead the instant a name is given, but enterAssignmentPoolIfActionable kept a name-only lead OUT of the credit accept poo...

Kamo·4mo ago
FeatureEmailService

Inline-CID org logo (SVG->PNG) so it renders in Gmail; remove message content; preserve From-domain case

- FIX (security): notification emails carry no message body — remove messagePreview from template vars, ledger, samples and the settings toggle. - FIX (logo):...

Kamo·4mo ago
July 13, 2026
Featurekamo-internal

Missed-message email deep links, auth-continuity stash, unread chat auto-popup, notification settings

DeepLinkToolBootstrap opens ?openChat/?openTicket tool windows (params survive the login round-trip via a sessionStorage stash captured pre-auth and preserved a...

kamo·4mo ago
FeatureMediaService

Missed-message email notifications (chat + support) with per-source suppression

Durable NATS consumer chat-email-notifier on chat.session.> feeding a MESSAGE_EMAIL_NOTICES ledger (PENDING/SENT, per-sender for chat, per-ticket for support), ...

Kamo·4mo ago
FeatureEmailService

Editor sample variables for missed-message notification templates

Preview samples for MISSED_CHAT_MESSAGE and SUPPORT_TICKET_REPLY incl. raw vs html-escaped sender/title variants used by the canonical bodies.

Kamo·4mo ago
Featurekamo-shared-library

Missed-message email notification ledger + canonical templates

MessageEmailNotice entity (MESSAGE_EMAIL_NOTICES, unique recipient+sourceKey+channel) with PENDING/SENT suppression states, repository incl. sudo-safe markRead/...

Kamo·4mo ago
FeatureEmailService

Microsoft 365 mail via Microsoft Graph app-only (zero per-mailbox setup)

Microsoft 365 mail now reads/sends through Microsoft Graph app-only (Mail.ReadWrite/Mail.Send application permissions) instead of IMAP — one app credential cove...

Kamo·4mo ago
Featurekamo-shared-library

GraphMessageIdMap entity for Microsoft 365 Graph mail id mapping

Maps opaque Microsoft Graph message ids to stable synthetic numeric UIDs per mailbox, so Graph mailboxes flow through the existing numeric-uid mail contract (co...

Kamo·4mo ago
July 12, 2026
FeatureDaemonService

Bump GENERATOR_VERSION 7 — backfill GBIF fauna into all cities

The bird engine now consumes the fauna block, so backfill it everywhere: the fill job re-drains stale rows at 24/min (user-requested cities first), so real loca...

Kamo·4mo ago
FeatureDaemonService

Sample locally-common birds from GBIF into city fauna

FaunaClient (mirrors PetrologyClient): GBIF occurrence facet on class Aves in a ~27km box around the city → top ~10 species by record count → resolve taxonomy (...

Kamo·4mo ago
FeatureDaemonService

63 US-ecoregion signature flora overrides (fully populate the biomes)

Cities within a state looked the same because flora came from just 15 coarse biome defaults (+1 Mojave override). Now curated real signature species for 63 US e...

Kamo·4mo ago
FeatureDaemonService

Petrology (Macrostrat) + roads (.trf) + waterfalls (.hyf) — level up the KamoUniverse systems

GLiM never downloaded (PANGAEA 404s; KamoUniverse itself falls back to default lithology), so petrology comes from the Macrostrat global geologic-map API: per-p...

Kamo·4mo ago
FeatureDaemonService

City-scene sampler over the KamoUniverse earth tiles

- EdtTile: byte-exact reader for EDT4 tiles (Copernicus DEM + ESA WorldCover + WorldClim + HydroSHEDS + RESOLVE ecoregions + ocean mask), memory-mapped, offse...

Kamo·4mo ago
FeatureSecurityService

Expose full geo fields + city-scene profile API

- geoip/me now returns **************** (already loaded by the single block+location lookup, previously discarded) — powers city scenes and client personali...

Kamo·4mo ago
Featurekamo-shared-library

CitySceneProfile entity + GeoLite city-lookup indexes for city-based portal scenes

- CitySceneProfile (city_scene_profile): per-city environmental scene factors (terrain/relief/silhouette, climate/koppen, hydrology, RESOLVE ecoregion + flo...

Kamo·4mo ago
FeatureSecurityService

E-consent with WRITTEN ESIGN Act text + the real credit-bureau adapter rail — no owner input required

E-CONSENT: full ESIGN Act §101(c) disclosure authored in-code (scope of consent, right to paper copies, right to withdraw + effect, contact upkeep, hardware/sof...

Kamo·4mo ago
July 11, 2026
FeatureSecurityService

Account bridge — email check, existing-user sign-in provisioning, portal registration

Owner flow: after the funnel captures full name + contact, the next step keys on EMAIL. /portal/account/check → exists?; /prepare-signin verifies the password t...

Kamo·4mo ago
FeatureSecurityService

Closing eSign through the NATIVE engine — envelopes actually send now

Recording a disclosure e-sign envelope was v1 metadata-only. Now, when the tenant's ESIGN vendor rail resolves to KAMO_NATIVE (per-market integrations config — ...

Kamo·4mo ago
FeatureESigService

Non-metered internal platform-envelopes endpoint — DISCLOSURE-context signing rail

Platform-internal envelopes (mortgage disclosure/closing signing) are product, not the tenant's programmatic API usage: tagged MANUAL so completed signatures ne...

Kamo·4mo ago
FeatureSecurityService

Leads-first resume rail — signed magic links, contact recovery, lead snapshot

- PortalResumeService: 30-day HMAC token (PRESUME|guid|orgId|exp, keyed off the cluster internal.auth.secret — no new secret); mails RESUME_PORTAL_LINK. - POS...

Kamo·4mo ago
July 10, 2026
FeatureSecurityService

Expose US state/region from GeoLite lookups

GeoLookupResult gains subdivisionCode/subdivisionName (GeoLite2 subdivision_1 = US state incl. DC; territories PR/GU/VI/AS/MP arrive as countryCode with no usab...

Kamo·4mo ago
FeatureSecurityService

Anonymous GET /portal/assigned-lo — accepting LO identity for the guid's lead

Powers the borrower portal's top-left LO card the moment an LO accepts the lead (pre-login, pre-application): guid header + org host → lead → assignedTeamMember...

Kamo·4mo ago
FeatureSecurityService

'Meet your loan officer' — the borrower hears the moment their lead is accepted

On accept (ASSIGNED), best-effort MEET_YOUR_LO email to the mortgage lead's borrower: the accepting LO's real name + NMLS + email + a continue-application link....

Kamo·4mo ago
FeatureSecurityService

The lead→application conversion seam — POST /portal/promote

The funnel was a closed loop: nothing ever converted the portal lead into an application (blank mints only — no sourceLead, no seeded fields, no LO inheritance)...

Kamo·4mo ago
Featurekamo-internal

Member tooltip shows last active datetime + time ago

Interaction Center member rows now show a two-line tooltip: availability status plus when the member was last active — 'Active now' while online, otherwise 'Las...

kamo·4mo ago
FeatureMediaService

Durable last-seen timestamps + bulk endpoint

PRESENCE:{id} is deleted the moment a member goes offline, so nothing recorded when they were last active. Stamp PRESENCE_LAST_SEEN:{id} (orgId + ts, 400d TTL) ...

Kamo·4mo ago
FeatureSecurityService

Borrower pricing-quote endpoint — party-gated, integration-config-gated

POST **************** caller must be a loan party (or pipeline steward); resolves the tenant's PRICING_PPE integration — NOT_CONFIGURED / EXTERNAL_VENDOR_PENDIN...

Kamo·4mo ago
Featurekamo-shared-library

**************** (borrower quote candidate set)

Kamo·4mo ago
FeatureSecurityService

Integrations-status endpoint — the portal's honest view of the org's vendor wiring

GET **************** per-category **************** runtimeVendor from the market integrations config via the runtime resolver. Session-gated; no secrets.

Kamo·4mo ago
Featurekamo-shared-library

The doc-04 vendor RUNTIME — MortgageProviderResolver + VendorTypeBridge

The integrations tab wrote MortgageProviderConfig rows nothing consumed at runtime. Resolver: (org, VendorCategory) → activation-gated, profile-scoped, first-en...

Kamo·4mo ago
FeatureSecurityService

AI vision document extraction — docs → org's vision provider → VerifiedFact(OCR)

The first producer of VerifiedFactSource.OCR: POST **************** reads a vault document (bank **************** ID) with the ORG'S OWN configured vision provi...

Kamo·4mo ago
Featurekamo-shared-library

Real verified-fact reconciliation — evidence facts now populate the URLA

Replaces the M3a log-only stub: asset.* facts (grouped per source document) become Asset rows and employment.* facts become Employment rows via BorrowerSectionS...

Kamo·4mo ago
FeatureSecurityService

ClaimedFactsDTO carries the FULL mortgage lead (35 fields)

Adds the 16 fields the portal structurally couldn't send (monthlyDebts, taxes, insurance, HOA, currentPayment, sellerCredits, renovationCost, borrowerAge, isVet...

Kamo·4mo ago
Featurekamo-internal

Company NMLS ID field in org Company Info

Edit + read row + hydration + PUT (nmlsId). Feeds the borrower portal footer trust pill and the originator projection's company NMLS.

kamo·4mo ago
Featurekamo-shared-library

NmlsId is patchable — the company NMLS finally has a write path

Organization.nmlsId (SAFE Act identifier feeding the originator projection's originatorOrgNmlsId and the borrower portal's verified-license pill) was readable e...

Kamo·4mo ago
Featurekamo-internal

Mortgage fields as 3 column panes on the Client Lead Data tab (reuse form via layout prop)

Add layout?: 'tabs' | 'panes' to MortgageFieldsComponent (default 'tabs', byte-identical to the existing Mortgage Workshop rendering). editControls, loanFields,...

kamo·4mo ago
Featurekamo-internal

Make What-If Studio its own pane below the form (drop the 4th tab)

Removes the "What-If Studio" sub-tab; the Scenario Sandbox now renders as its own pane below the Loan/Borrower/Subject Property form. Retitled "Scenario Sandbox...

kamo·4mo ago
Featurekamo-internal

Address-field layout + move agent block to Borrower tab + Payment above Eligibility

- Subject Property: Address + Address Details half-width side by side; City/State/Zip on one row (md 5/4/3, Zip narrowest). - Move buyer's-agent block (Repres...

kamo·4mo ago
Featurekamo-internal

Add savable Seller Credits field to the Loan tab

kamo·4mo ago
Featurekamo-shared-library

Add sellerCredits field + @JsonIgnoreProperties tolerance on lead request DTOs

Mirrors renovationCost: entity column, 3 DTOs (CreateLeadRequest/ UpdateLeadRequest/LeadDTO MortgageFieldsDTO + LeadDTO builder), LeadService create/update pass...

Kamo·4mo ago
Featurekamo-internal

Remove estimate/disclaimer footnotes from scenario cards

Drop the EstimatedNote component and its plumbing, and the AI-narrative verify-before-relying disclaimer, per owner request to stop showing estimate/disclaimer ...

kamo·4mo 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