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

The card on chat and the clubhouse — rows, roster, message faces, post authors

Surfaces (every id is the string the data already carries): - ConversationRow: each face in a chat row's avatar stack (members[].memberId), and the name an un...

Kamo·1w ago
Featurekamo-internal

The card on leads — assignees, timeline authors, history and ticket agents

Every place the lead screens name a member (staff) now opens that member's card. Ids are the string member ids the data already carries. - Lead view: the Assig...

Kamo·1w ago
Fixkamo-internal

A name with no card to open draws no hover underline

MemberName drew its dotted hover underline even when the surface had no member id, so a plain name promised a card it could not open. The underline now comes on...

Kamo·1w ago
Featurekamo-internal

The card on settings and admin lists — members, billing, platform admins, phone, commissions

The member card on the settings and admin lists that show people. Each name opens the card on hover, focus or tap; a name that already does something on click k...

Kamo·1w ago
Featurekamo-internal

The card on calendar guests, document authors and account notes

- Calendar: the event dialog's resolved guest rows open the member card (the audience preview's memberId, carried onto GuestRow). A hand-typed address has no ...

Kamo·1w ago
FeatureDocsService

The uploader's member id travels with the list and the history

The document list (/imaging/list) and a document's history carried the uploader's name only, so kamo-internal could show who uploaded a file but not open their ...

Kamo·1w 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·1w ago
Featurekamo-internal

The member card — hover any member, see who they are and what you can do

One card for every member name in kamo-internal, gated by the server rule SecurityService now serves (MemberInteractionPolicy, securityservice 5063eaa): chat, c...

Kamo·1w ago
FeatureMediaService

The Presenters table can see which presenters nobody can book

GET **************** — MANAGE_SUPPORT, the caller's own organization's type only (anything else is "not found") — answers each active presenter with hasBookable...

Kamo·1w 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·1w ago
Fixkamo-internal

A client's message pops its window into the front row, not a strip behind it

Reported 2026-09-17: Ian wrote into his Exec2Exec chat and the desk never saw it pop up; it was found only by going into the Interaction Center. Nothing upstre...

Kamo·1w ago
September 17, 2026
Performancekamo-internal

The dock moves on the compositor, and a window that moves no longer re-renders the tool inside it

Everything about a popup tool window that MOVES - re-packing the row, trading places with a strip click, stepping out of a row behind, a drag, a seam pull, taki...

Kamo·1w ago
Featurekamo-internal

A red mark on the calendar when nobody can book a webinar with you

The presenter of a webinar whose hours have run out was never told. The booking page just offers no times, and the one person who can fix it is the one person t...

Kamo·1w ago
FeatureMediaService

Tell a presenter, live, when nobody can book a time with them

A presenter whose declared hours have run out is the one state in this feature nothing reported: the booking page simply offers no times, the visitor leaves, an...

Kamo·1w ago
Fixkamo-internal

The Webinars section reads the lead API that exists

It called /api/webinar/leads/{id}, which MediaService never served (live 404), and a 404 reads to this section as "the feature is off" — so it rendered nothing,...

Kamo·1w ago
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·1w ago
Fixkamo-internal

The chat head menu acts on the person in the chat, not on the window id

A head's id is its window's id (`chat-3`), and the menu read it as the member it was a chat with. So it fetched /api/security/members/chat-3 — a 404 — and with ...

Kamo·1w ago
Featurekamo-internal

A window the member brings to the front lands with a light you cannot miss

Clicking a hexhead, or the strip of a window standing behind, brought the window forward with a faint shadow bloom (strip) or a 600ms green glow (hexhead) - eas...

Kamo·1w ago
Fixkamo-internal

A meeting from a chat window invites the conversation, and one email goes to everyone

Starting a meeting from a conversation window's meet button, or from a chat hexhead's "Invite to Meeting", invited nobody. The dialog closed as though the invit...

Kamo·1w ago
FixMediaService

The public demo page shows no one's contact details, and a site's key books only its own org

Demo requests from the marketing site come from visitors with no account. That path already needed none: the attendee row is the name and email the form collect...

Kamo·1w ago
Buildkamo-marketing

Take the removed copy guard out of prebuild and test

847365e deleted **************** but committed only the deletion: package.json still ran it in prebuild and test, and the web services evidence page still quote...

Kamo·1w ago
Buildkamo-marketing

Stop failing the site build on what the translation service returns

check-copy-punctuation.mjs judged translated values by length, repetition and punctuation, and failed the image build when it disliked one. The dictionary sync ...

Kamo·1w ago
OtherDaemonService

Release idle Hikari connections; liveness off the DB-aware health

Same changes the other services got on 2026-09-16, held back until the lead import this service was running finished. Keep the pool maximum but let idle connect...

Kamo·1w ago
Fixkamo-internal

My Scheduled Webinars and Join Existing read the booking the server actually sends

The Support badge now takes a presenter to My Scheduled Webinars when a session is booked with them (mediaservice 0212445). That tab — and the wizard's Join Exi...

Kamo·1w ago
FixMediaService

The scheduler lists the org's webinar types, and a booking badges its presenter

/support/schedule-webinar said "No webinar types are currently available." for every organization, however many types it had. The wizard loads its picker from G...

Kamo·1w ago
Featurekamo-shared-library

A presenter's viewed stamp, so a booked session can badge them

The Support icon's webinar count reads WebinarAttendee.dateViewed. A presenter is not an attendee row, so a session booked with them was emailed and then never ...

Kamo·1w ago
Featurekamo-marketing

A live demo button beside Start Free Forever

The home hero offered two things: start free, or read the pricing. It now also offers half an hour with a person. "Book a Live Demo", with "30 minutes" on a sec...

Kamo·1w 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·1w ago
Fixkamo-internal

No OAuth client secret in kamo-internal's source; the anonymous token route is gone

**************** assigned the client-credentials secret for four production client ids (kamo:1:crm:internal, kamo:4:kamo:internal, kamo:5:ebonix:internal, kamo:...

Kamo·1w ago
Featurekamo-marketing

A page for unlimited email campaigns and drips, linked from everywhere it belongs

/email-marketing sells what shipped on 2026-09-16 (broadcast campaigns, drips, sending domains): unlimited, and 100% free with Business and Enterprise. The pag...

Kamo·1w ago
Fixkamo-internal

Integration forms send only the credentials that were typed

The org CalDAV/CardDAV tab sent all four server fields on every save of an Apple or custom server. The fields never show what is stored, so they were empty, and...

Kamo·1w ago
FixEmailService

Saving a calendar/contacts integration never blanks or drops its stored credentials

A contact integration's credentialsJson was replaced by whatever a save sent. The org CalDAV/CardDAV tab sends all four server fields (empty — they never show w...

Kamo·1w ago
FixMediaService

No secret has a literal fallback in code or config; the Janus API secret never goes to a browser

The Janus API, token and admin secrets and the TURN password were committed four times over: as @Value defaults in WebRTCController and JanusService, as default...

Kamo·1w ago
FixSecurityService

Securityservice never stores a password as typed

Two writers put plaintext into USERS.PASSWORD. Both called User.encodePassword(), which needs a static encoder that only initializerservice ever sets **********...

Kamo·1w ago
FixSecurityService

Retail store connections are reachable only by their own org's commerce settings managers

The retail provider-config handlers on CommerceMarketController resolved the session's org and then used whatever market and config uid the path named. Update, ...

Kamo·1w ago
FixMediaService

A Canva connect only returns the browser to the org's own console

POST /api/media/canva/connect-start stored whatever returnUrl the body named, and the OAuth callback on the API host redirects to it after Canva's consent scree...

Kamo·1w ago
FixSecurityService

The System User acts only inside the organization it was entered into

There is one System User for the whole platform. Platform operators, and support staff holding a grant scoped to a single ticket's organization, enter a tenant ...

Kamo·1w ago
Fixkamo-login

Send the typed address with the reset code, and forward the caller's address

The reset page sent the 8-character code from the letter on its own, and SecurityService checked it against every account's outstanding reset at once, with no c...

Kamo·1w ago
FixEmailService

A shared mailbox's access list is only readable inside its own organization

GET **************** called **************** which read the access rows for any mailbox id. Every other access operation (update, delete, grant, revoke) loads t...

Kamo·1w ago
Featurekamo-marketing

Play the kamo14 reel, and let it be paused

The recut reel (new closing logo shot, otherwise frame-identical, same 66s running time and chapter timings) is published under its own name. The kamo13 ladder ...

Kamo·1w ago
FeatureKlusterServices

Encode the kamo14 reel

The marketing reel was recut (new closing logo shot) and uploaded as public/kamo14.mp4. It gets a new name instead of replacing kamo13 in place because the ladd...

Kamo·1w ago
Featurekamo-internal

Windows that do not fit the dock stand in rows behind it

A tool window that does not fit the front row now stands in a row BEHIND it, one title strip higher per row: its 42px title bar and 10px of body show above the ...

Kamo·1w ago
FixSecurityService

Only an org's owner, its CONFIGURE_SYSTEM members or active god mode can change its settings

PUT /api/security/org/{id} took no request at all. ResourceServerConfig permits every request and APIService relays /api/security/**, so one anonymous request c...

Kamo·1w ago
FixSecurityService

An OAuth app save keeps its client secret unless a new one is typed; owners' credentials stay out of org JSON

PUT /api/oauth-config/{id} stored whatever arrived under clientSecret. Responses mask the secret, and the edit form sends a blank back while promising "Leave bl...

Kamo·1w ago
TestEmailService

A shared mailbox response carries no IMAP login

GET /api/email/shared-mailboxes (and /my-access, create, update) return SharedMailboxEntity itself to any session in the organization. Until the library's crede...

Kamo·1w ago
Fixkamo-internal

The provider form never holds the stored API key

AIService no longer returns provider API keys (only hasApiKey and a last-four mask). The edit button used to copy the returned key into the form, so it was in t...

Kamo·1w ago
FixAIService

Provider API keys never leave AIService, and only MANAGE_AI_SETTINGS can change a provider

GET /api/ai/providers and GET /api/ai/providers/{id} answered with each provider's DECRYPTED API key. The list is what every member's AI chat model picker loads...

Kamo·1w ago
Fixkamo-shared-library

Keep every credential field out of JSON, and guard the rule library-wide

Follow-up to 034378d2, which covered the columns NAMED as ciphertext. Read-only audits of origin/main in every repository found 61 more fields holding credentia...

Kamo·1w ago
Fixkamo-internal

Overlays clear the tool windows, scrollbars stack with their layer, and the rest of the shell geometry

What was left after pages stopped painting over the shell. Overlays opened BEHIND tool windows. Hand-rolled modals, menus and toasts named levels inside the sh...

Kamo·1w ago
Fixkamo-internal

Start a Facebook / Instagram connection through the authenticated connect-start

The Connect button navigated to **************** MediaService trusted both values with no session, so anyone who knew a connection id could bind their own page ...

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