Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

17,865
Total Changes
4,581
Features
4,512
Fixes
32
Projects
Filter by project
All Projects17,865AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService348InitializerService299KBService74KlusterServices539MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,553kamo-login318kamo-marketing584kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI522Chore670Docs226Feature4,581Fix4,512Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
July 19, 2026
FixMediaService

Reject cross-org sales agents; widen bootstrap cache busting

salesAgentId was persisted from the request body unchecked, so a cross-org or dangling agent id could be stored on a WebChatIntegration. It failed safe only bec...

Kamo·1mo ago
FixAIService

Anthropic dropped every system message but the last

buildRequestBody assigned rather than accumulated the system field, so with more than one system message only the final one reached the model. In practice that ...

Kamo·1mo ago
Featurekamo-internal

Full-page AI Sales Agent studio, replacing the modals

The agent editor was a ~800px MUI Dialog whose entire surface was a 10-row textarea, on the one AI tab that used a dialog at all. It is now a dedicated route, a...

kamo·1mo ago
FixAIService

Locked rules survive a section or whole-document override

An author taking over a rule section by hand replaced the entire section body, which silently discarded the locked pack rules inside it - so 'never quote a rate...

Kamo·1mo ago
FixSecurityService

Stamp the borrower quote's actor from the session

The quote requires createdByMemberId and the browser must never supply it. memberId(req) is hoisted out of the party-check branch so it resolves for stewards to...

Kamo·1mo ago
FeatureAIService

Sales-agent compiler, versioning, outreach gate; fix tool replay

Structured agent config compiles to the system prompt, freezes per published version, and gains the gate an agent must pass before initiating contact. Compiler...

Kamo·1mo ago
Featurekamo-shared-library

Structured sales-agent config, version spine and outreach state

Replaces the single training-context blob with a structured, versionable agent model, and adds the per-contact spine an agent needs before it may initiate conta...

Kamo·1mo ago
Fixkamo-internal

Correct the CATALOG_SOURCE ordinal — every rate-sheet upload was rejected

ImageAssocType.CATALOG_SOURCE is id 14 but ordinal 12: the ids skip 6, so id is not ordinal+1 past SYSTEM_WIDE. The panel sent 13, which is out of range for a 1...

kamo·1mo ago
July 18, 2026
Featurekamo-internal

AI Sales Agents tab + per-channel agent assignment

Builds out /settings/ai?tab=sales-agents (was a stub): orgs create agents for their sales industry, either from a built-in template or by writing the training c...

kamo·1mo ago
FeatureSecurityService

Enrich borrower chat routing + capture subject-property state

chat-routing now returns the assigned officer's NMLS, title, photo, phone, email and whether they hold a valid license for the subject-property state, plus the ...

Kamo·1mo ago
FeatureMediaService

Assign a sales agent per channel + report LO availability

- WebChatIntegration CRUD threads salesAgentId (null clears the assignment) - lo-presence now returns the member's availabilityStatus alongside online, so the ...

Kamo·1mo ago
FeatureAIService

Sales-agent CRUD, mortgage template, and agent-driven chat prompt

- AiSalesAgentController (/api/ai/sales-agents): org-scoped CRUD + GET /templates - SalesAgentTemplateRegistry: built-in starter templates, beginning with a m...

Kamo·1mo ago
Featurekamo-shared-library

SalesAgent entity + per-channel agent assignment

Org-configurable AI sales agents: a named agent for a sales industry, programmed with a training context the org authors (from a template or by hand), assignabl...

Kamo·1mo ago
Refactorkamo-internal

Translate the steward console panels; drop the label escape hatch

Catalog, Identifiers, Ingestion, Loan Sale Desk and the Pipeline table rendered hardcoded English inside a console whose other screens were fully translated. Al...

kamo·1mo ago
FixAIService

Streamed replies were dropped, persisting blank assistant messages

Every successful chat completion came back as an EMPTY assistant bubble. The assistant rows were being saved with content_len=0 and is_error=false, so there was...

Kamo·1mo ago
FixSecurityService

Send AIService the secret it actually validates

The vision-capability proxy authenticated with internal.auth.secret, but AIService validates **************** — a different secret. Confirmed live: the console ...

Kamo·1mo ago
FixSecurityService

LoanTransactionService ctor gained LeadRealtimePublisher param

assignLoanOfficer now publishes the chat-routing event, so the service ctor takes a 10th arg (LeadRealtimePublisher). Update the unit test's direct instantiatio...

Kamo·1mo ago
Fixkamo-internal

Resolve the k1m1 npm registry host inside the build container

kamo-internal has not deployed since 2026-07-16: every build died in npm ci with ENOTFOUND k1m1 while fetching the private @kamo/* packages, which package-lock....

kamo·1mo ago
FeatureSecurityService

Auto-provision platform-managed MLOS chat + serve site key by host

- ManagedChatIntegrationService: lazily mint the org's platform-managed SPECIFIC_AGENT WebChatIntegration on first access. KamoMLOS is first-party: org resolv...

Kamo·1mo ago
FeatureMediaService

Verify routing token, persist leadUid, reassign chat on lead move

- createSupportSession takes a signed routingToken (not preferredAgentMemberId); verified via ChatRoutingTokenCodec + cluster internal.auth.secret, enforces ...

Kamo·1mo ago
Featurekamo-shared-library

Signed agent-routing token + lead-reassignment propagation

Foundation for making the reusable public-chat widget handle the KamoMLOS borrower->loan-officer variant securely, and for propagating lead reassignment into an...

Kamo·1mo ago
FixAIService

Try the next model when a vision model rejects the image

Probing production again after the modality fix, routing moved from a text-to-speech model to o3-mini — an o-series reasoning model that also takes no image inp...

Kamo·1mo ago
FixAIService

Stop routing vision to text-to-speech models

Found by probing production: org 1188756624575266822's vision calls resolved to gpt-4o-mini-tts-2025-03-20 — a TEXT-TO-SPEECH model — so every vision call retur...

Kamo·1mo ago
Refactorkamo-internal

Use next-intl keys for the Mobile Devices strings

Swaps the literal labels added with the Devices sub-tabs for **************** and .mobileDevices.* keys, now published in the translation dictionary (CI fans th...

kamo·1mo ago
Refactorkamo-internal

Fold Document QC into Documents & Conditions; PDF ingest notices

Document QC had its own steward screen for work that is the same documents, on the same loans, done by the same reviewer. Splitting it across two tabs made some...

kamo·1mo ago
FeatureSecurityService

Expose vision capability so the console can explain a missing provider

PDF rate sheets are read by the org's configured vision provider. When none is configured the AI call fails the same way a model error does, so the console had ...

Kamo·1mo ago
FeatureAIService

Inline image vision + tier fallback that prefers stronger over weaker

Two limits made org-configured vision unusable for whole classes of caller. 1. Vision was URL-ONLY. Every caller had to stand up public, provider-fetchable ser...

Kamo·1mo ago
Featurekamo-internal

Split Devices into "Phone System(s) Devices" + "Mobile Devices"

The Devices tab now has two sub-tabs. The existing PBX/softphone hardware table moves under "Phone System(s) Devices" unchanged; the new "Mobile Devices" tab M...

kamo·1mo ago
FeatureSecurityService

Org-admin endpoints for mobile device policy + enrolled devices

Backs the new "Mobile Devices" sub-tab under Settings → Features → Phone → Devices (its sibling "Phone System(s) Devices" stays on VOIPService and covers - GET...

Kamo·1mo ago
Featurekamo-internal

Ingestion panel accepts spreadsheets, not just CSV

The extractor now reads .xlsx/.xls and sniffs the format from the file itself, so the picker no longer restricts to CSV and the copy says plainly what is readab...

kamo·1mo ago
Featurekamo-internal

Steward Ingestion tab + the Catalog/Identifier proxy routes that were missing

Rate-sheet ingestion existed end-to-end in the backend and none of it was reachable. This adds the one surface that walks the whole chain: upload an investor's ...

kamo·1mo ago
FixConversionService

A bad assocType index is a 400, not a 500

The upload/register paths indexed ImageAssocType.values() with the client's raw index, so an out-of-range value surfaced as an ArrayIndexOutOfBoundsException (5...

Kamo·1mo ago
Featurekamo-shared-library

CATALOG_SOURCE assoc type for MLOS catalog source documents

Investor rate sheets / LLPA + eligibility matrices / lock policies need somewhere to live: the ingest extracts from the blob, and the published rate-sheet versi...

Kamo·1mo ago
FeatureSecurityService

Gateway for candidate review + rate-sheet promotion

Exposes the two new catalog promotion writes to the steward console under the existing MLOS steward gate, with organizationId server-stamped from the operator s...

Kamo·1mo ago
Featurekamo-shared-library

MobileDevicePolicy — org default + per-member override

personal phone or must be on a company-managed (Android Device Owner enrolled) device: - MobileDevicePolicy enum: PERSONAL_ALLOWED | COMPANY_MANAGED_REQUIRED. ...

Kamo·1mo ago
FeatureSecurityService

Steward gateway for ingestion (intake + staging area were unreachable)

MLOSIngestionService had no gateway presence, so no tenant could hand a rate sheet to the extractor and the candidates it stages had no reader on any reachable ...

Kamo·1mo ago
Featurekamo-internal

Steward Identifiers tab — resolve an external number to its loan

New Identifiers tab in the mortgage steward console: paste an external number (loan number, MERS MIN, DU/LP/GUS case file, e-sign envelope...) and resolve it ba...

kamo·1mo ago
FeatureSecurityService

Identifier gateway — steward can resolve an external number to its loan

MLOSIdentifierService had no gateway, so the typed identifier plane (the routing gate every inbound vendor/agency/AUS/e-sign callback uses) was unreachable from...

Kamo·1mo ago
Featurekamo-shared-library

Value-keyed AUS case-file + e-sign envelope finders for identifier owner-delegation

Completes the owner-column lookups the MLOS identifier plane needs to route inbound callbacks: **************** (DU/LP/GUS run handle) and **************** Both...

Kamo·1mo ago
Featurekamo-shared-library

Value-keyed loan-identity finders for identifier owner-delegation

The MLOS identifier plane resolves an inbound vendor/agency callback back to a loan; for OWNED_ELSEWHERE types the authoritative value lives on the OWNER's colu...

Kamo·1mo ago
Featurekamo-shared-library

CONDITION_ADDED / CONDITION_CLEARED canonical email templates

The borrower-facing half of the conditions loop: two generic checklist templates for the new condition notification consumer. Added to CANONICAL_KEYS with their...

Kamo·1mo ago
July 17, 2026
Fixkamo-internal

Filter non-ACTIVE members from live-participant pickers

Defense-in-depth behind the SecurityService gates: never render a non-ACTIVE team member as a selectable/live participant. Add teamMembershipStatus to the membe...

kamo·1mo ago
FixMediaService

Exclude non-ACTIVE members from chat participation & routing

A non-ACTIVE **************** member must not appear as, or be targeted as, a live chat participant. Gate every chat path on the shared-lib **************** pre...

Kamo·1mo ago
FixSecurityService

Enforce ACTIVE member status on every session & off-boarding path

The ACTIVE-member login gate previously lived only in the password-login controller. Extend it to every session-minting path via the shared-lib ****************...

Kamo·1mo ago
Fixkamo-shared-library

Gate live sessions & participation on ACTIVE member status

Add **************** as the single source of truth for the "only ACTIVE members may sign in or appear as a live participant" invariant: base members must be rec...

Kamo·1mo ago
FeatureSecurityService

Public pre-auth trial-status endpoint for login/register pill

GET **************** resolves the org by hostname (alias-fallback) and reports whether its account is in an active native trial, reusing **************** (now p...

Kamo·1mo ago
Featurekamo-register

Show TRIAL USE ONLY pill above Powered-by for trial orgs

Refactors PoweredByKamo into a fixed column stack and self-fetches /api/trial-status/{host} (proxy to SecurityService public trial-status endpoint), rendering a...

Kamo·1mo ago
Featurekamo-login

Show TRIAL USE ONLY pill above Powered-by for trial orgs

Self-fetches /api/trial-status (proxy to SecurityService public trial-status endpoint, resolved by login host) and renders an amber pill above the Powered-by pi...

Kamo·1mo ago
Featurekamo-internal

View third-party (loan) documents in the steward requirements review

A steward reviewing a THIRD_PARTY requirement (appraisal/title/flood) can now open the satisfying document. New binary Next.js route streams the per-loan authz'...

kamo·1mo ago
FeatureSecurityService

Per-loan third-party (LOAN) document viewer — appraisal/title/flood

Completes the doc-review byte path started with the vault viewer. LOAN-collection imgs (appraisal/title/flood) are refused by the generic imaging endpoints (per...

Kamo·1mo ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing