KamoCRM

Live Change Log

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

19,292
Total Changes
7,055
Features
5,846
Fixes
30
Projects
Filter by project
All Projects19,292AIService291APIService184BillingService169ConversionService125DaemonService153DocsService284ESigService106EmailService678InitializerService359KBService167KlusterServices783MCPGatewayService283MediaService644RAGService80SecurityService2,131TranslateService62VOIPService279VectorService11kamo-apps31kamo-asterisk-support32kamo-capcha17kamo-capcha-widget4kamo-internal9,026kamo-login362kamo-marketing642kamo-nowww20kamo-register224kamo-shared-library1,951kamo-signer-monorepo73kamolos121
Filter by type
All TypesBuild23CI528Chore810Docs3,305Feature7,055Fix5,846Other1,009Performance176Refactor286Revert23Style46Test184Upgrade1
September 2, 2026
Featurekamo-internal

Print the full line on the quote, and stop losing work at the mode switch

Two things a quote could not do. The printed line items inside an option card showed a name and an amount, nothing else — no quantity, no unit label, no rate, ...

Kamo·2mo ago
Featurekamo-internal

Re-issue a share link from its row, and stop losing the one-time URL

The Share links list offered no way to view or copy a link, and nothing explained why. Nothing can reveal an existing one — only the token's SHA-256 is stored, ...

Kamo·2mo ago
FeatureRAGService

Resolve the articles a passage names into link targets

A hub article — "Setting Up Your Organization — A Checklist" is one — exists to send the reader to a dozen others, and names every one of them in plain text. Th...

Kamo·2mo ago
Featurekamo-internal

Ask whether the guests should be told, and how

Adding a guest to an event did not tell them, and the dialog never said so. The only thing that ever wrote to a guest was a reminder — which reaches a colleague...

Kamo·2mo ago
FeatureInitializerService

The columns that let an event invite its guests

Three on calendar_events, because whether a meeting invites people belongs to the meeting rather than to the moment it was saved — an edit six weeks later that ...

Kamo·2mo ago
FeatureEmailService

Send the meeting invitation the guest list implied

Adding somebody to an event's guest list did not tell them. Only a reminder ever wrote to a guest, and a reminder reaches a member in-app and an outside address...

Kamo·2mo ago
Featurekamo-shared-library

Let an event invite its guests, and put it on their calendar

Saving an event told nobody. The guest list was materialized and the audience stored, and the people on it heard nothing until a reminder fired — which reaches ...

Kamo·2mo ago
FeatureSecurityService

A member address signs you into its own org, not every org

A member who signs in with the org mailbox flagged Primary on their member settings was being offered every workspace their user account belongs to. The address...

Kamo·2mo ago
FeatureSecurityService

Enforce the platform's visibility, and let it be edited

GET/PUT /api/security/reports/catalog, both gated on MANAGE_REPORTS on the platform spine. The list comes from the REGISTRY, not the override table: an operator...

Kamo·2mo ago
Featurekamo-internal

Decide who sees each report, from Platform Administration

A Reports tab on the Configuration console, gated by MANAGE_REPORTS on the platform spine — which is also, with no further work, a row in the Manage Rights dial...

Kamo·2mo ago
Featurekamo-internal

Give the quote billing choice a screen to live on

The org-wide setting deciding whether a quote is billed each period or in full up front has existed on OrgPOSConfig for some time, and the endpoint that writes ...

Kamo·2mo ago
Featurekamo-shared-library

Let the platform decide who may see each report

MANAGE_REPORTS, appended to PlatformRightType, and a REPORT_CATALOG override row per report holding one of ALL_ORGS, PLATFORM_ORG_ONLY or PLATFORM_ADMIN_ONLY. ...

Kamo·2mo ago
Featurekamo-signer-monorepo

Show the whole term when the seller bills up front

The card led with the recurring rate regardless, so a customer signing a three-year deal payable at signing saw a monthly figure and a separate total below it. ...

Kamo·2mo ago
Featurekamo-internal

Lead with the whole term when the bill is due up front

An org that charges the committed term at signing saw the monthly rate on its own three-year quotes. The quote now carries the basis it was raised under, and th...

Kamo·2mo ago
FeatureInitializerService

Commerce_quotes.billing_basis

The per-quote snapshot of the org's quoteConversionBilling choice, so a quote keeps the terms it was raised under after an administrator changes the setting. Nu...

Kamo·2mo ago
Featurekamo-shared-library

Bill the whole term up front, and say so on the quote

An org that charges up front saw the monthly rate on a three-year deal. The setting deciding that already existed — **************** — but it reached only Quote...

Kamo·2mo ago
FeatureDaemonService

Tick SecurityService's scheduled-report sweep

Every five minutes. A schedule is set to the minute, so a finer tick buys nothing a member would notice and a coarser one makes an 8:00 report arrive at 8:15. ...

Kamo·2mo ago
FeatureSecurityService

Run the reports that are due, and send them

One internal endpoint, X-Internal-Auth gated and constant-time compared, that DaemonService ticks. The cron stays in the daemon because it is replicas: 1 with s...

Kamo·2mo ago
FeatureEmailService

Let a transactional send carry one attachment

Added for scheduled reports, which are a rendered PDF or workbook that has to reach people who may have no account — a link would not be a delivery for them. T...

Kamo·2mo ago
Featurekamo-shared-library

The email a scheduled report arrives in

REPORT_SCHEDULED, registered in CANONICAL_KEYS — absent from that list a template is a permanent 404, whatever files exist beside it. The body states the data ...

Kamo·2mo ago
FeatureSecurityService

The lists a share dialog picks from, and a share target that fits every id

GET **************** returns the organization's people, departments and roles as picker options, in one call and in one shape. Built on the reporting option pro...

Kamo·2mo ago
Featurekamo-internal

Step through every search hit, not only the newest

The search at the top of a chat window marked every occurrence of the query and then scrolled to exactly one of them — the newest — with nothing to say how many...

Kamo·2mo ago
Featurekamo-shared-library

A service-work report, and a share target that fits every id

ServiceWorkReport is the tenth seed report and the one that makes row-level scope real rather than merely present. Commerce carries the platform's own/all pair ...

Kamo·2mo ago
Featurekamo-internal

Pin the well-known folders to the top of the sidebar

Inbox, Drafts, Sent, Junk, Trash and Archive stop moving. They hold that order at the top of the folder list, and everything the member made sits underneath und...

Kamo·2mo ago
Featurekamo-marketing

Rebuild the index as a map of the product

It was one recursive list of all three hundred articles, indented by depth. Everything was on the page and nothing was findable, and the page weighed 3.9 MB. T...

Kamo·2mo ago
Featurekamo-internal

The Report Studio — a library, and one renderer for every report

/reports is a shelf, not a card grid: two hundred identical rounded boxes is a wall to scan, and a row gives a report's name room to be read. Saved views nest u...

Kamo·2mo ago
FeatureSecurityService

Run, export and schedule the Report Studio's reports

The service half of the framework: the catalogue, the run, the pickers, four exporters, saved views and schedules. Authorization is explicit on every path, bec...

Kamo·2mo ago
Featurekamo-shared-library

The Report Studio framework, and nine reports built on it

A report is now a Java class here and nothing anywhere else. ReportDefinition describes what a report is, what it may be asked, which columns it has and how eac...

Kamo·2mo ago
Featurekamo-internal

The importer, and three things it taught us

Publishes the corpus by driving the real KBService API rather than writing rows -- a direct INSERT skips the version row, the kb.article.published event that is...

Kamo·2mo ago
Featurekamo-shared-library

Persist a market's quote-contact rule, and refuse a half-stated one

The DTOs carried quoteContactMode and quoteContactMemberId but no writer read them, so the setting round-tripped through the form and was silently dropped. Both...

Kamo·2mo ago
Featurekamo-internal

Choose who a quote names as the customer's contact

The market dialog gains "Quote's Future Contact" under Enable quotes: the lead's assigned agent, a choice made per quote, or one explicit person picked with the...

Kamo·2mo ago
FeatureSecurityService

Honour a market's contact rule wherever a quote names somebody

The staff detail, the staff preview and the customer's own page now resolve the contact through one method, so they cannot disagree about who is printed on the ...

Kamo·2mo ago
Featurekamo-internal

The article corpus, and the pipeline that builds it

307 articles across 16 categories and 29 sections, from the 248 draft articles under Documentation/ plus 59 written here: every category and section landing pag...

Kamo·2mo ago
Featurekamo-shared-library

A market decides who a quote names as the customer's contact

QuoteContactMode gives a LeadMarket three answers: the lead's assigned agent (resolved per read, which is what every quote does today and what a null column mea...

Kamo·2mo ago
FeatureInitializerService

Columns for a market's quote contact and the per-quote snapshot

A market names its answer in QUOTE_CONTACT_MODE (+ QUOTE_CONTACT_MEMBER_ID when that answer is one explicit person), and each quote keeps the contact it was rai...

Kamo·2mo ago
Featurekamo-internal

Curate an article's related articles

KbRelatedPanel is one component in three places: it curates in the composer and the editor, and reads back on the article view. Adding an article here also adds...

Kamo·2mo ago
FeatureKBService

Related articles, and a public path that keeps the tree

Three things, all reaching the same page. Related articles. KbArticleRelationService owns the symmetric "see also" links: list, set, suggest, and a clear that ...

Kamo·2mo ago
FeatureInitializerService

Migration for KB_ARTICLE_RELATIONS

Mirrors KbArticleRelation in kamo-shared-library. Written explicitly rather than left to ddl-auto so the UID and DATE_CREATED defaults live in the database, whi...

Kamo·2mo ago
Featurekamo-shared-library

Article-to-article relations

KB_ARTICLE_RELATIONS holds the curated "see also" links between articles in one knowledge base. Rows are per direction and the pair is kept symmetric by KbArtic...

Kamo·2mo ago
FeatureSecurityService

Page and search the org directory, and stop two row builders drifting

The networks endpoints answer with the whole set in one body. That is fine for a member of a dozen orgs and impossible for an operator on an estate meant to rea...

Kamo·2mo ago
August 31, 2026
Featurekamo-marketing

Starter base up $10 on every term

69 / 59 / 49, from 59 / 49 / 39. The commitment ladder is untouched by design — still exactly $10 off for a year and $20 for three — which is the standard every...

Kamo·2mo ago
Featurekamo-internal

The running offer, on Plans & billing and on the launchpad

The console quoted list prices while kamocrm.com advertised a third off the same plan, because nothing in kamo-internal could see that an offer existed. It now ...

Kamo·2mo ago
FeatureBillingService

Serve the running offer, and say whether a seat is actually PAID for

Adds GET /markets/{id}/promotion. There was no way for an in-app buying surface to know an offer was running at all — the marketing site read promotions through...

Kamo·2mo ago
Featurekamo-marketing

The offer reaches the hero and the pricing strip

The hero had a countdown ribbon already, and it had been rendering NOTHING since the catalog moved to a percentage: `pickHeroOffer` filtered on FLAT_PER_SEAT be...

Kamo·2mo ago
Featurekamo-marketing

A three-term commitment rail, and a promotion the page can prove

New prices: Starter $59/$49/$39 and Business $119/$109/$99 per seat per month on monthly, yearly and three-year terms. The rail replaces the monthly/annual pair...

Kamo·2mo ago
Featurekamo-internal

Sell the three-year term, and stop four copies of the cycle drifting

The billing cycles were typed out by hand in five places. One of them, the plan-pricing editor, offered "BIENNIAL" — a value the server has never had — so choos...

Kamo·2mo ago
FeatureBillingService

Bill the three-year term, and quote its rate to the console

BillingCycles gains TRIENNIAL, expressed to Stripe as three YEARs rather than thirty-six MONTHs so the renewal tracks the signup anniversary — the same reason A...

Kamo·2mo ago
Featurekamo-shared-library

A three-year term, and the promotion rules that were never read

Adds BillingCycle.TRIENNIAL so a subscriber can commit for three years. The column is varchar with no CHECK constraint anywhere, so this needs no migration — bu...

Kamo·2mo ago
Featurekamo-internal

Show the report title in Send To AI, editable

The dialog let an operator edit the instruction and the description but never showed the title, and the title was not in the message either — the session at the...

Kamo·2mo ago
FeatureSecurityService

Put the report title in the message, and let it be corrected

A dispatch composed the operator's instruction and the bug description with the separator between them. The title was never in it, so the session opening the me...

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