KamoCRM

Live Change Log

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

17,374
Total Changes
5,891
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,374AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,822TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,631kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,891Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
September 10, 2026
Featurekamo-signer-monorepo

The org's wallpaper behind every page, and white copy on it

kamo-sign was the one white-labelled surface still painting a flat grey. It now plays the inviting organization's background photography the way kamo-login, kam...

Kamo·1mo ago
Featurekamo-internal

Finish the category page — width, one back arrow, real words

The three managers were written to sit inside a nested tab of a tab. As a page of their own they needed the space they now have. - Configuration capped itself ...

Kamo·1mo ago
September 9, 2026
Featurekamo-internal

Categories are a table, and each one opens as its own page

/settings/features/docs carried eight tabs: General, then seven that each mounted the same three managers against a different ordinal. Seven copies of one scree...

Kamo·1mo ago
FeatureDocsService

Serve the document categories from the enum that defines them

The docs settings page named its own categories and sent the ordinal it believed each one had. Those ordinals were written when ImageAssocType was six constants...

Kamo·1mo ago
Featurekamo-signer-monorepo

A compact trigger for the signed-copy menu

The sender's envelope list and any table of assigned packages have a row, not a hero slot, and the labelled pill does not fit one. `iconOnly` gives the SAME men...

Kamo·1mo ago
Featurekamo-signer-monorepo

The § 7001(c) disclosure ships with the code, in twenty-two languages

`@kamo/esign-core` now carries the consumer disclosure itself — six clauses, every language the product signs in, and `consentDisclosure(locale, brand)` to fill...

Kamo·1mo ago
FeatureESigService

A real Certificate of Completion, and the three copies of a signed record

What the flatten pipeline appended was one page per signature carrying seven lines: name, email, member id, timestamp, capture method, IP, user agent. No routin...

Kamo·1mo ago
Featurekamo-shared-library

Record WHICH consent disclosure a signer accepted, and in which language

`consentedAt` records that somebody ticked a box. 15 U.S.C. § 7001(c) is a list of specific things a consumer must be told BEFORE consenting — the right to pape...

Kamo·1mo ago
Featurekamo-signer-monorepo

One signing surface for both apps, and the white label finally paints

The signing UI existed twice — here, and hand-copied into kamo-internal's legal execution wizard — and the two had drifted in both directions. `@kamo/esign-core...

Kamo·1mo ago
Featurekamo-signer-monorepo

Render the Signature Date field, and make readOnly mean something

Three changes, of which only the first is new work. **`signature_date`** is a field ESigService fills at the instant the signer signs — never the browser, whos...

Kamo·1mo ago
Featurekamo-internal

A Signature Date field, and a send that admits when nothing was emailed

**"Sent" was not the same thing as "delivered", and the dialog never said so.** ESigService discarded the result of every invitation email, so a send whose mail...

Kamo·1mo ago
Featurekamo-internal

Open at the front of a new session, stay put inside one

Two rules that only make sense together, and the panel did the opposite of both. A member arriving in a NEW browser tab — a fresh sign-in, a second tab opened ...

Kamo·1mo ago
Featurekamo-marketing

Give the film a watch page, because Google will not index it from the homepage

Search Console reports the one video on this site as "video is not on a watch page". That is not a bug in the hero — it is Google saying the homepage is about t...

Kamo·1mo ago
Featurekamo-internal

Twelve endings, and every one of them looks different

A hand ends for everyone at the table at once and it ends differently for each of them. Until now it ended one way: somebody won a pot, and the window played th...

Kamo·1mo ago
Featurekamo-internal

A side pot says who is playing for it

The last "consider" left in the request, and the one question a short stack actually has: when the middle splits in two, both piles look like money and only one...

Kamo·1mo ago
Featurekamo-internal

One table at a time, and a table you can name

The felt half of the four rules MediaService started enforcing in a02dd1d. ONE WINDOW. The registry said `maxInstances: Infinity`, reasoning in a comment that ...

Kamo·1mo ago
Featurekamo-internal

The whole window celebrates when somebody wins

A win used to be a sentence in a strip under the board. It is now the entire tool window: an impact flash and a shockwave, light turning behind the board, firew...

Kamo·1mo ago
Featurekamo-internal

The Directory leads the tab strip, Chats follows

Flips the two always-present tabs. The strip now reads Directory, Chats, Sales Scripts, Terminals. The panel still OPENS on Chats: the button that opens it is ...

Kamo·1mo ago
FeatureMediaService

No empty tables, numbered tables, and one table per member

Four rules, all of them things a member reported seeing broken. EMPTY TABLES. A lobby showed three tables while one game was being played. Two had no seats at ...

Kamo·1mo ago
Featurekamo-internal

A put-away table says you are on the clock

The other half of the hexhead turn indicator. A minimized Hold'em window now lights its head while the action is on you, and drains the head's own outline — gre...

Kamo·1mo ago
Featurekamo-internal

A minimized game says it is your move

A head could already say a message had arrived. It could not say a game was waiting on you — chess tinted its border brass, which on a forty-pixel hexagon at th...

Kamo·1mo ago
Featurekamo-internal

The Show button, and the clock hook mounted

The client half of showing a hand nobody made you show, plus the mount point for the turn-clock audio that landed dead in the previous commit. SHOWING OUTRANKS...

Kamo·1mo ago
Featurekamo-internal

Your own clock, out loud

A thirty-second clock a player is not watching is a hand lost to a timeout while reading an email, and the felt's draining bar only helps somebody already looki...

Kamo·1mo ago
Featurekamo-internal

Every logo on the Branding card can be downloaded

The download control shipped on one of the six artwork slots — the compact company logo — because the row was written inline at that one call site. The other fi...

Kamo·1mo ago
FeatureMediaService

Show the hand nobody made you show

A pot taken with everybody folding is the one hand at the table whose contents only its owner knows, and there was no way to say what it was. Showing a bluff is...

Kamo·1mo ago
Featurekamo-internal

A table that has ended sends you to the lobby, with the news

An invitation card outlives the table it points at. Somebody follows one ten minutes later, the game is over, and the window answered with a red error bar over ...

Kamo·1mo ago
FeatureMediaService

Opening a table buys you into it, and the last one out closes it

Both ends of a table's life allowed the same thing: a table with nobody at it. OPENING ONE COST NOTHING AND SEATED NOBODY. A host could put a table in front of...

Kamo·1mo ago
September 8, 2026
Featurekamo-internal

The captures get the room the notation was taking

Two things the member asked for after seeing it. **The move list is gone.** Nobody was reading a column of notation; what two colleagues playing each other wan...

Kamo·1mo ago
Featurekamo-internal

The organisation's colour, and chips in the compact pot

Finishes two things the chip subsystem had built and not wired. THE BRAND, where a card never sits. The betting line, the wash under the pot and the lift under...

Kamo·1mo ago
FeatureMediaService

The plies, and how long each one took

Two things the move panel needs, neither of them on the published frame. `GET /games/{id}/moves` hands over every ply in order. It is a separate read rather th...

Kamo·1mo ago
Featurekamo-internal

The board is a table now

The first move of every game was wrong. Pieces were keyed by their position in a FEN scan, and scan order is not identity: after 1.e4 the element that had been ...

Kamo·1mo ago
Featurekamo-internal

The chips are objects on a table

A member asked for the poker chips to stop being decoration. They are a subsystem now: real denominations, real stacking, racks, a betting line, pots that add u...

Kamo·1mo ago
Featurekamo-internal

The table says what just happened

The felt re-rendered a STATE. It never presented an EVENT. Of twenty-six things that happen in a hand of poker, exactly two had any presentation at all — a card...

Kamo·1mo ago
Featurekamo-internal

A poker table in a tool window, and Cheddar in the nav bar

Two genuinely different layouts, a lobby, an invite path that reaches anyone in the organization, and the wallet readout that appears whenever Games does. ## T...

Kamo·1mo ago
FeatureMediaService

A server-authoritative Texas Hold'em, and the Cheddar wallet seam

Up to ten players a table, started from any conversation, with anyone else in the organization invitable into it. Every rule lives here; the browser owns none. ...

Kamo·1mo ago
Featurekamo-shared-library

The app, the right, and the six tables a poker game needs

HOLDEM (36) joins KAMO_UNIVERSE and CHESS under GAMES, with PLAY_HOLDEM (319). Both ids were the next free ones; nothing is renamed and nothing moves, because O...

Kamo·1mo ago
Featurekamo-internal

The chat entry opens the pair's board, and you can ask an opponent back

Two colleagues who have played once have a board together for good, so the chat entry stops offering to introduce them. It reads "Open your game" and goes strai...

Kamo·1mo ago
FeatureMediaService

The chat entry is a door to the pair's board, and you can ask them back

Two colleagues who have played once have a board together for good. So the chat entry stops offering to introduce them: `gameWith` answers with the SHARED game ...

Kamo·1mo ago
Featurekamo-shared-library

Record when a player was last prodded to come back

DATE_LAST_NUDGE, one clock per game rather than per sender — otherwise two people can take turns nudging each other every five minutes and call it twelve messag...

Kamo·1mo ago
Featurekamo-internal

A capture shelf where the move list was, and a hexhead that says it is your turn

THE SHELF. A move list is a record; between two colleagues playing for fun the pieces you have taken are the thing worth looking at, so they get that space and ...

Kamo·1mo ago
Featurekamo-internal

The board you play on now lives in the same room as the pane that started it

You chose a game in a dark room of board lacquer and brass, pressed start, and landed on a white MUI form with a board floating on it — `var(--surface)`, `divid...

Kamo·1mo ago
Featurekamo-internal

Starting a game from a chat asks once, then plays — it never asks who

Clicking chess in a conversation opened the new-game pane and asked whether you wanted to play the computer or a person, then made you pick the person. The pers...

Kamo·1mo ago
Featurekamo-internal

The opening pane, rebuilt around a game instead of an icon

The pane you get when chess has no opponent yet was the SaaS-card kit: an icon in a rounded square, two tab-cards, two segmented rows, a button. It looked like ...

Kamo·1mo ago
FeatureMediaService

The inviter plays immediately, and the invitee is told when it is their turn

An invitation used to produce a board the inviter could look at and not touch, waiting on somebody who might be away from their desk. Now the game is running fr...

Kamo·1mo ago
Featurekamo-shared-library

An invited game starts running, and records whether it has been seen

Inviting somebody created a PENDING game nobody could touch, so the person who had just asked for a game sat in front of a board they were not allowed to use un...

Kamo·1mo ago
FeatureMediaService

A whole game of chess, server-authoritative, over NATS

The rules live in ONE place and it is this one. ChessEngine implements the whole ruleset — move generation, legality under pin and check, castling, en passant, ...

Kamo·1mo ago
Featurekamo-shared-library

Games becomes a parent app, with Kamo Universe and Chess under it

GAMES was a category with exactly one thing behind it — the nav icon launched Kamo Universe directly, so the app and the thing inside it named the same click. C...

Kamo·1mo ago
September 7, 2026
Featurekamo-internal

Filter the bug and improvement reports by who filed them

Reuses /leads' Agent filter — the same field, the same picker, the same gesture — pointed at a different directory: everybody who has filed at least one report,...

Kamo·1mo ago
FeatureMediaService

A reporter filter, for platform team members only

The board is global — every organization sees every report — and what protects a customer is SystemBugIdentityPolicy withholding WHO filed a row. A control that...

Kamo·1mo ago
Featurekamo-shared-library

Let the listing be narrowed to one reporter

Adds an optional reporterId predicate to findVisible (both halves) and to countGroupedByStatus, so the numbers beside the status menu keep promising what pickin...

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