KamoCRM

Live Change Log

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

17,671
Total Changes
6,083
Features
5,346
Fixes
30
Projects
Filter by project
All Projects17,671AIService261APIService174BillingService158ConversionService110DaemonService138DocsService223ESigService91EmailService588InitializerService330KBService151KlusterServices745MCPGatewayService261MediaService604RAGService79SecurityService1,876TranslateService62VOIPService250VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,415kamo-login340kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,684kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild17CI523Chore776Docs3,257Feature6,083Fix5,346Other998Performance165Refactor278Revert23Style42Test162Upgrade1
August 7, 2026
FeatureInitializerService

Mailbox pointers for departments and orgs, and backfill the departments

DEPTS.MAILBOX_ID and ORGS.CONTACT_MAILBOX_ID, both plain UUID with no FK to email_provider.mailboxes: mailboxes sync from external providers and can be removed ...

Kamo·2mo ago
Featurekamo-shared-library

Let a department and an org point at one of their mailboxes

A department's contact email was free text, so it could name an address the org does not own -- two of the three departments with one set today do exactly that....

Kamo·2mo ago
Featurekamo-internal

A Manager field on Position, and one people picker for the whole app

The Position card gains Manager, optional. It is a search, not a dropdown: an org can hold thousands of names, and the only thing a select with all of them guar...

kamo·2mo ago
FeatureSecurityService

Set a manager, and search the directory a page at a time

GET **************** answers one page of the session org's directory. Search, ordering and paging happen in the database; a hostile ?size= is capped. Words are ...

Kamo·2mo ago
Featurekamo-shared-library

A manager, and a directory search that survives a big org

TeamMember gains an optional self-reference for who it reports to. columnDefinition is pinned to INT8 so Hibernate cannot copy Member.ID's DEFAULT unique_rowid(...

Kamo·2mo ago
FeatureInitializerService

Give a team member a manager

Adds MANAGER_ID to member_team_member, a nullable self-reference for the reporting line. Nothing is backfilled: no manager is a complete answer, both at the top...

Kamo·2mo ago
FeatureInitializerService

Add DEPTS.PARENT_DEPT_ID for nested departments

Nullable with no backfill -- null means top level, which is what every existing department was and most will stay. Declared plain UUID with an explicit DROP DE...

Kamo·2mo ago
FeatureSecurityService

Thread the parent department through create and update

DepartmentService now takes its request DTO instead of eight positional arguments, so the parent joins the payload rather than becoming a ninth in a row of same...

Kamo·2mo ago
Featurekamo-internal

Draw departments as an org chart with a parent picker

The departments tab was a flat list, so an org with Operations > Customer Success > Onboarding had no way to say so and no way to see it. Add/edit gets a Paren...

kamo·2mo ago
Featurekamo-shared-library

Let a department sit under a parent department

Departments were a flat list, so an org chart with Operations > Customer Success > Onboarding had no way to say so. Department gains an optional self-referencin...

Kamo·2mo ago
Featurekamo-internal

Grow the To/Cc/Bcc fields to three rows, then scroll

The recipient fields in the compose tool window were a single nowrap row that had to be dragged sideways to read, and the window is 360px wide and not resizable...

kamo·2mo ago
Featurekamo-internal

Make org creation survivable, and offer every branding option up front

The wizard could fail a customer in ways nothing on screen explained, and it asked for a fraction of what Settings → Behavior & Labeling exposes. Creation reli...

kamo·2mo ago
Featurekamo-internal

Send the editor's back button where the member came from

The wallpaper editor was a dead end — no way out but the nav rail. Both entry points (the home top-bar chip and the member profile header shortcut) now stamp th...

kamo·2mo ago
Featurekamo-internal

Show a primary mailbox under its member's profile name

A mailbox held as somebody's primary is that person's address, so suggesting it as "Sales Desk" — whatever it happened to be labelled when it was provisioned — ...

kamo·2mo ago
FeatureEmailService

Name a primary mailbox after the member who holds it

A mailbox someone holds as their primary is that person's address, so presenting it under whatever the mailbox was labelled at provisioning time — "Sales Desk" ...

Kamo·2mo ago
Featurekamo-internal

Register the commission pages in the settings nav and landing page

The tabs existed but nothing linked to them. **************** is the cautionary example already in this repo: a real page with no card, no tab and no nav entry,...

kamo·2mo ago
Featurekamo-internal

Member commissions tab and the two finance account tabs

Member tab (self-only, team members only): balance + ledger, commissioned opportunities, payout setup, and withdrawals. Account settings gains Organization Stri...

kamo·2mo ago
Featurekamo-internal

Folders you can act on, mail you can select

Right-click any folder for its actions. The menu header is not chrome — it names the folder and shows its live unread/total, so Mark all read and Empty folder c...

kamo·2mo ago
FeatureEmailService

Nenda kwenye folda nzima, sio tu ukurasa uliopigwa

Mark wote kusoma na Empty folder ni shughuli folder nzima mteja Haiwezi kuelezea kwa kuunganisha uids: daima inashikilia ukurasa ambao una a a a a a a a ...

Kamo·2mo ago
FeatureSecurityService

Browser-facing relay for the commission feature

Resolves the session, authorizes, and relays to CommissionService with the org and member stamped from that session — never from anything the caller sent. This ...

Kamo·2mo ago
Featurekamo-shared-library

Find a member's commission splits for their own commissions view

Org-scoped rather than keyed on the member alone: ORG_ID is duplicated onto this table so a row can never be read cross-tenant by id, and a finder that ignored ...

Kamo·2mo ago
Featurekamo-internal

Make the member surface a real kamo data grid

The member's packages were a card list with no motion, which is not how the rest of kamo looks. This is now the house AG Grid: Pending and Completed sub-tabs sy...

kamo·2mo ago
Featurekamo-internal

Show the member's name without the "Hi," prefix

kamo·2mo ago
FeatureDocsService

Server-side paging for the member assignment listing

The member surface asked for MAX_SIZE unconditionally and sliced the result in the browser, so a grid that showed a page had already downloaded a whole employme...

Kamo·2mo ago
Featurekamo-internal

Personal Email Notifications card replaces the Notifications tab

Both switches move onto My Profile in the same shape as the password card: one card, an icon tile and help text per row, and a tinted inset that appears only wh...

kamo·2mo ago
FeatureSecurityService

Expose the user-account email on your own member profile

The profile's Personal Email Notifications card has to name the address missed-message notices actually reach, and that address is the user account's — not the ...

Kamo·2mo ago
Featurekamo-internal

Accounting & Finance permission group and finance-right access to account settings

The Access Security and Administration groups existed only in SecurityRoleManager as inline name lists, so JobTitleManager, DepartmentManager and RolesPermissio...

kamo·2mo ago
FeatureInitializerService

Migration for the commission ledger and Stripe payout tables

Mirrors com.kamo.z.shared.commission. ddl-auto would create these from the annotations anyway; the explicit DDL is the house convention and is what makes the sh...

Kamo·2mo ago
FeatureSecurityService

Seed the finance rights onto every branch model's ADMINISTRATOR template

Ya tatu ya Tume ya Haki za Binadamu ambayo haikuwapo hapo awali, hivyo New RIGHT SEEDS kwa makusudi anasema chochote kuhusu wao - kwamba utaratibu hubeba ruzuku...

Kamo·2mo ago
Featurekamo-shared-library

Tume ya wanachama wa timu ya kuongoza na Stripe malipo ya uwanja

Adds com.kamo.z.shared.commission: an append-only signed ledger, a per-member balance row that exists purely to serialize concurrent withdrawals, the Commission...

Kamo·2mo ago
Featurekamo-internal

Fold MFA into the password card and drop the Sign-in Security tab

Two places asked one question — how do I get into this account — so the second factor now lives beside the password on My Profile, in a card retitled "Password ...

kamo·2mo ago
Featurekamo-internal

Kupendekeza masanduku ya barua pepe ya org mwenyewe, aliases na masanduku ya barua ya pamoja

Mpokeaji autocomplete tu alijua anwani na anwani zilizofutwa nje ya Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ...............................................

kamo·2mo ago
Featurekamo-internal

One mailbox view, and a column that is all list

The Conversational/Classic toggle is gone and every member gets the classic list. Conversation view carried its own list, its own thread pane and its own API su...

kamo·2mo ago
FeatureSecurityService

Onyesha barua pepe ya mawasiliano katika orodha ya department

The Interaction Center needs a member's address to pre-fill a composer, and the only endpoint that carried one was the single-member detail fetch — one request ...

Kamo·2mo ago
Featurekamo-internal

Email a member straight from their row

Dock ya hatua ya mstari inaweza kuzungumza, kukutana, piga na kufungua wasifu - moja Kitu ambacho hakuweza kufanya ni kuanza barua pepe, hivyo kufikia mwenzake ...

kamo·2mo ago
FeatureDaemonService

Daily legal-package reminder tick

Huduma ya Daemon inamiliki tiba kwa sababu Huduma ya Docs haiwezi. Huduma ya Daemon Mkakati: Recreate - pod ya zamani imeenda kabla ya mpya kuanza, hivyo kupele...

Kamo·2mo ago
FeatureDocsService

Na kwa mchana unapo lidhihirisha

The bucket is a pure function of (dueDate, today) and never of "when we last sent": UPCOMING_D{n} for the configured offsets, DUE_TODAY, then PAST_DUE_P{floor(d...

Kamo·2mo ago
August 6, 2026
FeatureDocsService

Tell the member — assigned, voided and completed

ONE hr.package_assigned per member per package, never one per document: that is what suppressInvite exists for, and 8 documents x 200 members is 1,600 envelopes...

Kamo·2mo ago
FeatureDocsService

Outbound email client and a Redis notification ledger

Idempotency with NO schema change. The reminder bucket is a pure function of (dueDate, today) and never of "when we last sent", so the only durable state a noti...

Kamo·2mo ago
FeatureDocsService

DocsService's first inbound internal-auth filter

DocsService has no service-to-service authentication: ResourceServerConfig is anyRequest().permitAll() and OTKPreAuthFilter CONTINUES the chain when X-OTK is ab...

Kamo·2mo ago
Featurekamo-shared-library

Four canonical HR legal-package templates

hr.package_assigned, hr.package_reminder, hr.package_voided and hr.package_completed, as {json,html} pairs plus four CANONICAL_KEYS entries. The CONSTANT is no...

Kamo·2mo ago
Featurekamo-internal

Signature button with a live legal-package badge

Hand-written into the fixed left cluster between My Profile and Log out. NAV_REGISTRY cannot express a position between two fixed controls and its badgeKey fiel...

kamo·2mo ago
Featurekamo-internal

Live pending-package count over the EXISTING chat socket

LegalPackageCountContext consumes **************** rather than opening a fourteenth STOMP connection for one integer, and subscribes to **************** — the d...

kamo·2mo ago
FeatureMediaService

Relay the legal-package count and guard per-member SUBSCRIBEs

legal.packages.> -> **************** core NATS, no stream — the same shape SupportStompRelayController and PlatformStompRelayController already use. topicFor is...

Kamo·2mo ago
Featurekamo-internal

Proxy the member's pending-package count

A static segment sibling to [uid] so App Router matches it first. PATH ONLY — forwardToApi owns the query string — and one upstream call, because the OTK is sin...

kamo·2mo ago
FeatureDocsService

Serve the caller's own pending-package count

GET **************** through memberGuarded() and the identity funnel. No memberId and no orgId parameter — both come from the session, because an id in a path i...

Kamo·2mo ago
FeatureDocsService

Emit the badge count on every transition that moves it

Four sites: delivery (none -> PENDING), void (open -> VOIDED), redelivery (open -> SUPERSEDED) and finish (open -> EXECUTED). Each passes the status it read BEF...

Kamo·2mo ago
FeatureDocsService

Publish the member's open-package count to core NATS

Kuunganisha. kuchapisha juu ya kisheria.packages. pins huduma hiyo.expectedStream (CHAT MESSAGES) katika kuchapisha na kuchapisha, hivyo JetStream kuchapisha ju...

Kamo·2mo ago
Featurekamo-internal

Kutoa Kunyongwa-package kukarabati button halisi

POST **************** existed upstream and was tested, but nothing in the product could reach it: no proxy route, no helper, no button. Every failure branch in ...

kamo·2mo ago
Featurekamo-login

Nenda kwa mwenyeji wa kuingia ili kupona kunaweza kutatua org

Password ahueni sasa anapokea mwanachama wa msingi mailbox anwani, ambayo tu Andika jina la akaunti ndani ya org. Wakala huu unafikia huduma ya usalama juu ya n...

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