KamoCRM

Live Change Log

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

18,392
Total Changes
6,527
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,392AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService619InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,995TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,692kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,824kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,527Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
September 25, 2026
FeatureSecurityService

Hire-step store with claim, backoff record and retry

An outcome or a prerequisite wait lands only on a step that is still PENDING or WAITING, so a retire during an in-flight attempt keeps the step SKIPPED (SP02-T1...

Kamo·1mo ago
FeatureSecurityService

AI members take and release a seat on the organization's primary plan

The claim never takes a spare row beyond the paid seat count (SP02-T17).

Kamo·1mo ago
FeatureSecurityService

SecurityService announces its own org changes

Kamo·1mo ago
FixSecurityService

A hot reassign's first note creates the lead's stream linked to the lead

The stream is created for the lead, as the lead view's feed creates it, so its MEDIA_SESSION_POST row carries LEAD_ID and POST_CREATED goes to media.feed.lead.<...

Kamo·1mo ago
September 24, 2026
FeatureSecurityService

Pre-sized copies of every org logo beside the original

Every surface drew org logos from the original upload: 2.2 MB for crm's full logo at a 30-56px nav/header, 2.95 MB (its .svg stand-in) in the email composer, 4....

Kamo·1mo ago
RefactorSecurityService

Capabilities come from the shared seat rule the servers enforce

EntitlementService reads the seat facts and asks SeatCapabilityRules for the decision, then maps it onto the unchanged MemberCapabilities wire shape, so the con...

Kamo·1mo ago
FixSecurityService

Point loan officers at the card they will actually find — Lender credentials

Both the MeridianLink and the Arive 'officer not linked' refusals named cards that no longer exist under those titles.

Kamo·1mo ago
FeatureSecurityService

Layout choices, and saving contact details as they go

The publish dialog now chooses how the public mortgage application lays itself out (kamo-shared-library ac83bea1): NORMAL or SQUEEZE, contact details at the STA...

Kamo·1mo ago
FeatureSecurityService

Arive through Zapier — connection, inbound events, and per-lead actions

A market bound to Arive gets a connection (four Zapier Catch Hooks for create-loan, update-loan, update-lead and convert-lead, plus one inbound URL whose token ...

Kamo·1mo ago
FeatureSecurityService

Start a coder session in the cloud, and say which terminals are

repository as cwd) and answers `cloud: true`; the machine builds the a cloud session can start from. The terminal listing carries the agent's `cloud` mark throu...

Kamo·1mo ago
September 23, 2026
FixSecurityService

The forgot-password hint is the account's address, whatever it is

d7ff5ed called the address on the user account "personal" everywhere: in the 409's message, the response field and the class. It is not always personal. An admi...

Kamo·1mo ago
FeatureSecurityService

A work address on forgot-password asks for the account's own, shown masked

Members open their account with a personal address (gmail, yahoo) and are later given a work address by their organization, which is the one they remember and t...

Kamo·1mo ago
OtherSecurityService

Add per-org primary application: toggle endpoint + by-host lookup

PUT **************** designates (or clears) a product's published application as the org's primary, mirroring the existing mlos-default single-active toggle. Ne...

Kamo·1mo ago
FeatureSecurityService

DKIM and DMARC advisory endpoints for /setup/dns

Adds two endpoints alongside the existing SPF one, so an org's transactional mail (password resets, invitations, notifications) can carry a DKIM signature and t...

Kamo·1mo ago
OtherSecurityService

Rename apps DNS alias to apply

The apps.* host serves the loan-application and patient-portal pages (kamo-apps), not app downloads, so rename the alias everywhere it is enumerated: KnownAlias...

Kamo·1mo ago
FeatureSecurityService

Computers is a standard alias, and the link uses the org's own

Every white-label org points a fixed set of labels at Kamo and computers was not one of them, so an org could follow /setup/dns to the letter and still have a H...

Kamo·1mo ago
PerformanceSecurityService

Maintain commit_logs.translation_count at write time

DDL: **************** (column + partial-friendly index, applied to production already) and **************** (one-time catch-up, already run — 19,373 rows, all l...

Kamo·1mo ago
PerformanceSecurityService

Use the lean LeadVendorProduct reads, not the 8-way eager findById

Caller half of the kamo-shared-library fix: switches every findById() call on LeadVendorProductRepository in securityservice to whichever lean method matches wh...

Kamo·1mo ago
FeatureSecurityService

List only the Getting Started steps an organization is asked

An organization whose security model fixes every Compliance answer (no product a member may switch, one age range for each member type) was still counted agains...

Kamo·1mo ago
PerformanceSecurityService

Read the public changelog's commit counts from a ledger, not COUNT(*)

pg_stat_statements: `SELECT COUNT(c) FROM CommitLog c WHERE c.project IN (:~33 public projects) [AND c.commitTypeId = :t]` ran ~140K times a day at 100-200 ms e...

Kamo·1mo ago
FixSecurityService

Gift cards take the Discounts tab's pricing rights

Listing gift cards, issuing one and editing one (including its balance, which the shared library sets again as of the companion kamo-shared-library commit) chec...

Kamo·1mo ago
FixSecurityService

A member's official title and status need member security too, on their own record

Department and job title already needed MANAGE_MEMBER_SECURITY (or an open god window) on /member-security, your own record included. The rest of the Position c...

Kamo·1mo ago
FixSecurityService

CommerceMarketController's retail sub-resources are org-scoped

CommerceMarketController's get-one/update/delete handlers under /retail/... called RetailService methods that took no orgId (bare findById/deleteById) - a same-...

Kamo·1mo ago
FixSecurityService

Drop 4 newly-guarded handlers from the unguarded-endpoints ratchet

**************** caught the previous commit: **************** and **************** now resolve a session (getCachedOrganizationId, in each handler's own body), ...

Kamo·1mo ago
FixSecurityService

Scope roles, member access and profile writes to the caller's org

Five gaps let a signed-in member reach outside their own organization, or reach a colleague's account, with no right check: - **************** resolved no sess...

Kamo·1mo ago
PerformanceSecurityService

An entry page reads three rows, not the whole public changelog

pg_stat_statements put the public changelog's single-entry reads at the top of the database by a distance: the slug lookup and the two neighbour lookups ran ~90...

Kamo·1mo ago
FixSecurityService

Forward the actor when relaying a commission line

addLine/updateLine relayed memberId (normalized to Long in 789c544) but never who was making the call — unlike openDraft, send, voidLine and every Stripe-config...

Kamo·1mo ago
FixSecurityService

Forward subjectMemberId and role so TimecardService can verify punch ownership

**************** resolved the caller's role against a CLIENT-SUPPLIED subjectMemberId (resolveRole -> EMPLOYEE whenever actor==subject) but never forwarded that...

Kamo·1mo ago
FixSecurityService

Adding people and member security need their rights

POST /members/create, /create-team-member and /bulk-create, and GET /members/lookup-user, now require MANAGE_MEMBERS or an open god window. They checked only fo...

Kamo·1mo ago
ChoreSecurityService

Scrub copies of live credentials from config and dumps

A sweep of every repo for the values of the cluster's live Secrets (2026-09-23) found copies here: the JWT signing secret as a `${JWT_SECRET:<literal>}` default...

Kamo·1mo ago
ChoreSecurityService

No live credentials in application.yml defaults

The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...

Kamo·1mo ago
FixSecurityService

Gate the API on the app, not only the screen

The settings page and the nav option both check organization.isHostedComputers, and until now that was the whole gate. AppAvailabilityInterceptor never mapped /...

Kamo·1mo ago
FeatureSecurityService

Human/AI members, phonetic names, role requirements; fix position saves wiping security

Members - Create, create-team-member and bulk-create accept `intelligenceType`, `namePhonetic` (new accounts only, like the name), and for AI accounts `aiSupe...

Kamo·1mo ago
FeatureSecurityService

The browser-facing surface, and the second Guacamole gateway

SecurityService is the trust boundary for Hosted Computers. It holds the session, the rights and the org chart; ComputeService holds the Kubernetes credentials ...

Kamo·1mo ago
FixSecurityService

Intake endpoints show exact received/imported counts from the intake ledger

The Lead Intake settings list showed total_received / total_processed / last_received_at straight off the endpoint row, where they were bumped once per payload ...

Kamo·1mo ago
PerformanceSecurityService

Manage-Credits and Leads-Available read the lead ledgers once instead of counting per row

/leads/credits (GET /api/security/credits/manage) counted the lead pool once per allotment row — ~8 s apiece against one org's 796k-lead pool — then once more g...

Kamo·1mo ago
September 19, 2026
FixSecurityService

Normalize memberId when relaying line add/update requests

The browser keeps member ids as strings to avoid IEEE-754 rounding on CockroachDB unique_rowids. Normalize to Long before relaying so the credit lands on the in...

Kamo·1mo ago
September 18, 2026
FixSecurityService

The account view names its primary member

GET /customers/{uid} sent the primary member only as primaryMemberId, while the account view reads a primaryMember object — so its Primary member row read "---"...

Kamo·1mo ago
FeatureSecurityService

The member card carries the wallpaper their desktop shows

GET /members/{id}/card gains "wallpaper" for the card's header, resolved the way the console backdrop and the profile hero resolve a member's desktop: none when...

Kamo·1mo ago
FixSecurityService

An account note names the member who wrote it, not "System"

GET /customers/{uid}/notes sent each note's authorMemberId but no authorName, and the account view shows a note with no name as written by the system — so every...

Kamo·1mo ago
FeatureSecurityService

One rule for what a member may do with another, served per member and per roster row

The same five actions — chat, call, email, meet, view profile — were offered from three places in kamo-internal (the Interaction Center row, the chat hex-head p...

Kamo·1mo ago
September 17, 2026
FeatureSecurityService

The demos booked on a lead, on the lead

GET **************** The lead page's Webinars section has called /api/webinar/leads/{id} since it was written and nothing ever served it — the live API answers ...

Kamo·1mo ago
FixSecurityService

Short one-time codes can no longer be guessed without limit

Every short code the platform mails or texts was checked with no count: - POST /api/recover/email/verify-code took the 8-hex-character reset code ALONE and mat...

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