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
September 24, 2026
FeatureConversionService

/image/preview cuts a chat photo into one 480px WebP

A chat image attachment is drawn at most 240x240 CSS px and every viewer downloaded the original to do it — a phone photo is 3-8 MB. MediaService will store one...

Kamo·4d ago
Featurekamo-internal

Draw logos from the server's pre-sized variants, never the multi-MB original

A member saw the org header logo small in the composer but a >3 MB image in the sent mail: every logo surface linked `img/logo-full.svg` / `img/logo.svg`, which...

Kamo·4d ago
Featurekamo-register

Register logos load a pre-sized copy, and the original when it is missing

Each theme folder now carries img/sized/<stem>/h<rung>.webp beside every logo. A PNG org's logo.svg / logo-full.svg is its whole upload wrapped in base64 (sever...

Kamo·4d ago
Featurekamo-login

Sign-in logos load a pre-sized copy, and the original when it is missing

Each theme folder now carries img/sized/<stem>/h<rung>.webp beside every logo. A PNG org's logo.svg / logo-full.svg is its whole upload wrapped in base64 (sever...

Kamo·4d ago
FeatureEmailService

Inline pre-sized PNG logos; footer badges served at the drawn height

Transactional emails only inlined a logo when the original was an SVG under 512 KB. A PNG logo org's email linked the whole upload instead — crm's 2.2 MB logo-f...

Kamo·4d ago
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·4d ago
Featurekamo-signer-monorepo

Draw the org's logo from its pre-sized variant, the original only if it is missing

A signing page drew the org's uploaded logo — crm's logo-full.svg is 2.95 MB — at 28-44px tall. The theme service now cuts img/sized/<stem>/h<rung>.webp beside ...

Kamo·4d ago
Featurekamo-apps

Logos ask for a pre-sized variant, and fall back to the original

An organization's logo is drawn 30-180px tall here but downloaded whole: crm's logo-full.png is 2.2 MB, its .svg stand-in 2.95 MB. ThemeLogo now asks for img/si...

Kamo·4d ago
FeatureConversionService

/image/logo-variants cuts a logo into pre-sized PNG + WebP rungs

Org logos are uploaded once and drawn everywhere at 24-120px, and every surface downloaded the original: crm's logo-full.png is 2.2 MB (its .svg stand-in 2.95 M...

Kamo·4d ago
FeatureKlusterServices

Require the API key and admit only RAGService

Kamo·4d ago
FeatureEmailService

Sending mail needs a seat, for people and AI members alike

A member without a licensed seat is refused with the shared 403 SEAT_REQUIRED body before anything is sent: POST /api/email/send, the shared-mailbox send, and t...

Kamo·4d ago
Featurekamo-internal

The chat picker lists only the models the member may pick

The picker read the administrator's model list (403 without MANAGE_AI_MODELS) and offered providers, which never selected a model. It now reads GET /api/ai/mode...

Kamo·4d ago
FeatureInitializerService

Migration for org_alias_domains, seeding the platform org's two

Creates **************** and seeds the platform org (is_top_level) with kamouniverse.com (default, carrying forward the old hardcoded platform.mail.domain) and ...

Kamo·4d ago
FeatureEmailService

Read the composer's alias-domain default from org_alias_domains

**************** used one hardcoded domain (platform.mail.domain, kamouniverse.com) as a synthetic send-as default, and only for the platform org **************...

Kamo·4d ago
Featurekamo-shared-library

Add org_alias_domains, the per-org form of the platform mail domain

Generalizes the single hardcoded platform.mail.domain (kamouniverse.com, and only for the platform org) into a table any org can hold any number of rows in. Ema...

Kamo·4d ago
Featurekamo-shared-library

One seat rule for the console and every service that enforces it

The resolver reads the member with its organization fetched and opens no transaction of its own, so a seat is decided correctly on a thread with no persistence ...

Kamo·4d ago
FeatureKlusterServices

Log in to Redis as mail_rspamd

rspamd reads its password from Secret mail/rspamd-redis-auth, included into local.d/redis.conf. The pod gains fsGroup 11333: the image runs as 11333:11333 and a...

Kamo·4d ago
Featurekamo-internal

Choose how a published application asks its questions

"Publish this application" (Settings → Features → CRM → Vendors & Products) now carries three choices beside the chat, each a pair of cards that say what they m...

Kamo·4d ago
Featurekamo-apps

The lender's layout choices — squeeze, contact first or last, basic

The mortgage application now lays itself out as the product was published (Settings → Features → CRM → Publish this application): - Type. NORMAL is the five gr...

Kamo·4d ago
Featurekamo-internal

The session tab stops wearing Guacamole's icon

A session tab is Guacamole's document, so its own <link rel="icon" href="images/logo-64.png"> owns the tab, and a member opening their company's computer watche...

Kamo·4d ago
Featurekamo-internal

Arive in CRM markets, on the lead page, and on member profiles

- Markets: "Arive" joins the MLOS dropdown, and its Configure dialog holds the four Zapier hooks (write-only, masked), the Arive → Kamo addresses to paste i...

Kamo·4d 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·4d ago
Featurekamo-shared-library

Layout choices for a published loan application

Three columns on LEAD_VENDOR_PRODUCTS, chosen on the publish dialog and read by kamo-apps to lay the public mortgage form out: - APPLICATION_LAYOUT NORM...

Kamo·4d ago
FeatureInitializerService

The columns and activity log the Arive integration maps

**************** (unique), the Arive link fields on lead_los_links (kind, GUID, deep link, stage, pending-since, last error) and los_sync_events. All nullable, ...

Kamo·5d ago
FeatureAPIService

The public address Zapier posts Arive events to

POST **************** trigger> forwards to SecurityService's AriveInboundController, which owns the token check. The query string (the event) crosses the hop, a...

Kamo·5d 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·5d ago
Featurekamo-internal

Start a coder session in the cloud, and show it on the window

which lists the git checkouts on the dev machine (most recently worked in member's model and effort. The machine builds the command, with CCR_FORCE_BUNDLE=1 so ...

Kamo·5d 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·5d ago
FeatureKlusterServices

Start a coder session in the cloud from a local checkout

repository. The bundle is forced because our remotes are Forgejo, not GitHub, and the point is the checkout on this disk. No --permission-mode (the CLI drops by...

Kamo·5d ago
Featurekamo-internal

Attachments sit above the body, as the files themselves

An email whose only content was a PDF had no way to open or download the file: the paperclip showed on the list row, and the reading pane showed nothing. EmailS...

Kamo·5d ago
Featurekamo-shared-library

Arive as a second external LOS, and a provider seam that is real

Arive is reachable only through its invite-only Zapier app, so the connection is Zapier in both directions: Kamo posts commands (create loan, update loan stage,...

Kamo·5d ago
Featurekamo-internal

A designed launch screen, in the organization's own brand

Opening a computer showed one line of plain text on a white page, written straight into the tab with `document.body.textContent`. For up to ninety seconds — a r...

Kamo·5d ago
September 23, 2026
Featurekamo-login

Point a member who typed their work email at their personal one

Forgot-password resets go to the address on the user account, usually a personal one, but members type the work address their organization gave them. SecuritySe...

Kamo·5d 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·5d ago
FeatureEmailService

Move system mail and the platform org's own send domain to kamouniverse.com

platform.mail.domain now defaults to kamouniverse.com (config value, no code default change) and gates every unverified-domain org's transactional fallback From...

Kamo·5d ago
FeatureKlusterServices

Add kamouniverse.com as a second regular-mail domain

Adds kamouniverse.com to postfix's virtual_alias_domains with a local-part-preserving regexp so any address on it lands in the identical kamocrm.com mailbox (no...

Kamo·5d ago
FeatureKlusterServices

Forward kamouniverse.com to kamocrm.com

DNS for the apex and www now point at k1m1's public IP. Add a redirectRegex route on both entrypoints (301, path/query preserved, ACME challenge path excluded o...

Kamo·5d ago
Featurekamo-internal

Select-all/deselect-all for the states lead filter, default to all

The states dimension of the campaign audience panel's and drip trigger's lead filter showed nothing checked by default, even though an unset list already means ...

Kamo·5d 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