KamoCRM

Live Change Log

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

18,392
Total Changes
6,527
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,392AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService619InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,995TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,692kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,824kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,527Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
November 8, 2026
Featurekamo-shared-library

Market on the engagement, job numbers, dispatch, customer accounts, market-scoped lists

Service work orders: - createJob stores the chosen market on Engagement.market (it only picked the engagement type before) and the customer account on Engagem...

Kamo·3d ago
Featurekamo-internal

Every rental has a renter; cancel, re-date, check out, check in and end; booked dates beside the date picker

- New Rental Request: the Renter (customer account) is required and pre-filled from ?accountId; ?marketId is sent so the rental is filed under the market. Onc...

Kamo·3d ago
Featurekamo-internal

Market-filtered lists, line items, approve/reject/withdraw, send/receive/close/cancel, and a real Vendors list

- Procurement tab: Purchase Requests / Vendor Orders / Vendors; lists ask the server for the selected market (plus rows with none), show a Market column, and ...

Kamo·3d ago
FeatureSecurityService

ProcurementController — market-filtered lists, change/reject/withdraw a request, send/receive/close/cancel a vendor order, records returned from every change

- purchase requests and vendor orders move out of POSController into ProcurementController (MANAGE_PROCUREMENT to buy and run orders, APPROVE_PURCHASE_REQUEST...

Kamo·3d ago
Featurekamo-shared-library

Market, lines, approval decisions, and the vendor order lifecycle (send, receive, close, cancel)

ProcurementService owns purchase requests and vendor orders: - the engagement carries the market (chosen Procurement market, else the vendor's); lists filter by...

Kamo·3d ago
FeatureKBService

Turn Antivirus scanning on in kbservice

KamoAntivirus is Ready (StatefulSet kamowsantivirus 2/2, /readyz ready, release 2026.11.08.0101); a direct scan from the cluster returns MALICIOUS/TEST_FILE for...

Kamo·3d ago
Docskamo-internal

Markets and Lines of Business replace "Commerce"

"Commerce" is retired in the product. The 23 published articles that said it now say Markets (the nav option, the page, the pipeline) or Lines of Business (the ...

Kamo·3d ago
FeatureDocsService

Turn Antivirus scanning on in docsservice

KamoAntivirus is Ready (StatefulSet kamowsantivirus 2/2, /readyz ready, release 2026.11.08.0101); a direct scan from the cluster returns MALICIOUS/TEST_FILE for...

Kamo·3d ago
FeatureMediaService

Turn Antivirus scanning on in mediaservice

KamoAntivirus is Ready (StatefulSet kamowsantivirus 2/2, /readyz ready, release 2026.11.08.0101); a direct scan from the cluster returns MALICIOUS/TEST_FILE for...

Kamo·3d ago
FeatureConversionService

Turn Antivirus scanning on in conversionservice

KamoAntivirus is Ready (StatefulSet kamowsantivirus 2/2, /readyz ready, release 2026.11.08.0101); a direct scan from the cluster returns MALICIOUS/TEST_FILE for...

Kamo·3d ago
FeatureDocsService

Assignment rows say what the member still owes

Adds signableOutstandingCount (signable documents not yet signed) and uploadsOwedCount (required requests with no live file) to each assignment row, so the memb...

Kamo·3d ago
FeatureKBService

KBService checks knowledge-base resources and looks up the verdict before signing

- Resource upload writes the raw kb bucket, so it goes through AntivirusUploadGuard (KB) before anything touches storage: 422 ANTIVIRUS_BLOCKED (nothing store...

Kamo·3d ago
FixMCPGatewayService

Commerce_request_rental names the renter's account

SecurityService now refuses a rental request without a customer account (every rental has a renter), so the tool takes a required accountUid and passes it on. T...

Kamo·3d ago
FeatureSecurityService

The Antivirus API, platform controls and scheduled endpoints; gate SecurityService's own file paths

/api/antivirus/** (and the /api/security/antivirus twin the console proxy tries first): overview, detections, settings (audited ANTIVIRUS_POLICY_CHANGE), false ...

Kamo·3d ago
FeatureKlusterServices

KamoAntivirus mail filter first on inbound smtpd (port 25), tempfail when unreachable

smtpd_milters = { **************** default_action=tempfail }, then rspamd unchanged. Harmful attachments are replaced by a small placeholder part and the messag...

Kamo·3d ago
Fixkamo-internal

The member's package button names what is actually owed

A Quick Request that only asks for uploads showed "Continue Signing" with nothing to sign. memberActionFor now labels from the row's new signableOutstandingCoun...

Kamo·3d ago
FeatureEmailService

Antivirus for mail — read gate on every mailbox, milter placeholders, send screening, detections

- Read: every attachment/inline part from any mailbox (Kamo Mail, IMAP providers, Graph; personal and shared routes) is hashed in memory (temp file past 8 MiB...

Kamo·3d ago
FeatureSecurityService

Rental steps, market-filtered lists, and a renter that can move but never be cleared

- GET /rental-requests and /bookings take ?marketId (the caller's own market) and filter by the engagement's market. - POST /rental-requests/{id}/cancel, PUT ...

Kamo·3d ago
Featurekamo-internal

Orders tab filters by the organization's own markets

Chips and row labels were per line of business, named after its first market, so two Retail markets collapsed into one. Each row now shows its own market (from ...

Kamo·3d ago
FeatureDocsService

DocsService refuses locked documents everywhere and checks editor saves

- WOPI PutFile writes raw MinIO, so the save goes through AntivirusUploadGuard first: a harmful save writes nothing, keeps the document's last good content an...

Kamo·3d ago
FeatureSecurityService

Each Orders row names its own market

Rows carry marketId / marketTitle from their engagement (one query by engagement uid), so an organization with two Retail markets sees which one an order came f...

Kamo·3d ago
FeatureKlusterServices

Antivirus alerts (scanner down, signatures stale, mirror gate failing, p95, detection spike, hold backlog)

Applied by hand (monitoring/ is not a CI target).

Kamo·3d ago
Featurekamo-shared-library

A rental needs a renter; market on the engagement; cancel, re-date, check out, return and cancel a booking

- createRentalRequest refuses a missing or foreign customer account, records the market (the asset's, else the chosen one) on the engagement, and validates da...

Kamo·3d ago
Fixkamo-shared-library

BLAKE3-256 that is 32 bytes on every BouncyCastle on the classpath

new Blake3Digest(256) is 256 BITS on bcprov 1.78 but 256 BYTES on bcprov-jdk15on 1.70, which this library brings and which loads FIRST in services that also dec...

Kamo·3d ago
FixDocsService

Certificates name people by name and email, never by member id

The Executed Package Certificate and the Review Certificate printed raw member ids ("Sam Supervisor (1200096283021512387)"). They now show the name plus a human...

Kamo·3d ago
Featurekamo-internal

Markets — the organization's own markets, by their own names

"Commerce" is gone. A market is what members define (title + description); its Line of Business is only its kind. - The nav option is Markets. With one market ...

Kamo·3d ago
FeatureMediaService

MediaService checks attachments with Antivirus and refuses locked files on every read

- Chat attachments (member CHAT, web-chat visitor PUBLIC), system-bug files, Growth Hub images are checked inside storeContentAddressed with their context (me...

Kamo·3d ago
Chorekamo-shared-library

ACCESS_COMMERCE reads "Access Markets"

The owner retired "Commerce" in the UI; the nav option is Markets.

Kamo·3d ago
FixESigService

A 40001 while preparing completion notices no longer rolls the signature back

The first press of Finish failed with a 500 and the retry succeeded. Completion notices were composed INSIDE the signing transaction under a catch-all: their re...

Kamo·3d ago
FeatureConversionService

ConversionService checks uploads with Antivirus, completes held files, re-checks on new signatures

Replaces the in-service clamd client (malware/ package, UploadScanGuard, QuarantineStore, retro-scan) with the shared-library Antivirus: - /upload, /replace, /...

Kamo·3d ago
Featurekamo-shared-library

An engagement belongs to a member-defined market

commerce_engagements.market_id (applied by hand, FK to commerce_markets, indexed with org_id). Retail orders, service jobs, rental and procurement records have ...

Kamo·3d ago
Featurekamo-internal

The Antivirus UI — protection seals everywhere a file appears, the Antivirus Center, the platform tab, alerts and help

Design kit (app/components/antivirus): ProtectionSeal with five animated faces (Checking, Protected, Caution, Blocked, Couldn't Check; brand + --av-* tokens, re...

Kamo·3d ago
FeatureKlusterServices

Svc_antivirus login + ANTIVIRUS stream; conversion/email may consume antivirus.>

- svc_antivirus: STREAM.INFO/CREATE ANTIVIRUS, publish antivirus.> and rt.org.>, subscribe antivirus.> and _INBOX.> (Secret kamo/nats-user-antivirus, SECRETS....

Kamo·3d ago
Featurekamo-shared-library

Shared-library half of Antivirus — gate, client, tables, rights, kinds, templates, report

- Entities/repos for the six hand-applied tables (content_scan_verdicts, antivirus_detections, antivirus_false_alarm_reports, antivirus_allowlist, antivirus_o...

Kamo·3d ago
Featurekamo-internal

Safety & Oversight and Brains & Tools, premium — live cards, Spend Pace, Approval Rules, Connected Tools rooms with test before saving (SIS9)

Safety & Oversight - Spending: the default budgets on the kit save bar, explained with the job description's budgets and each role's daily caps (live values, ...

Kamo·3d ago
FeatureInitializerService

Record the six Antivirus tables (hand-applied 2026-11-07)

content_scan_verdicts, antivirus_detections, antivirus_false_alarm_reports, antivirus_allowlist, antivirus_org_settings, antivirus_daily_stats - the exact IF NO...

Kamo·3d ago
FixDocsService

An approved package is filed, not left EXECUTION_INCOMPLETE

**************** called imgDatRepository.save on the ImgDat that uploadDocument returned from its own transaction. The entity is detached, so save() merges it a...

Kamo·3d ago
Featurekamo-internal

Each SI's own rooms — Workbench, Job Description, Voice & Calls, Access & Tools, Hiring (SIS10)

One SI's setup was split between the SI room, the Identity room and the Permissions tab. Its profile now lists its own rooms first, by name in the URL *********...

Kamo·3d ago
November 7, 2026
FixAIService

An SI's budget alert opens its Workbench room (SIS10)

The deep link was the bare profile; it now names the SI's Workbench room, where its budget is.

Kamo·3d ago
FixDocsService

Reviewer notices skip the platform System User

The System User is an administrator of every organization, so it holds REVIEW_LEGAL_SUBMISSIONS everywhere and every submission in every org mailed hr.package_n...

Kamo·3d ago
FixDocsService

The SI pre-check card settles when a package has a No Review item

The pre-check reads SUBMITTED submissions only, and an item whose review is off is sealed ACCEPTED at finish, so its files were never read. The review workspace...

Kamo·3d ago
FixDocsService

Legal, careers and training emails present EmailService's own secret

DocsService sent X-Internal-Auth from internal.auth.secret, which is ESigService's secret (***). EmailService's InternalAuthFilter compares against mlos-interna...

Kamo·3d ago
Featurekamo-internal

Real rental and procurement screens, filed under a customer account

The Rental and Procurement pipeline screens were mock data and their New pages were Coming Soon placeholders. They now read and write SecurityService: - Rental...

Kamo·3d ago
FeatureAIService

Test a connected tool server before saving it (SIS9)

- POST /api/ai/mcp/test (MANAGE_AI_SETTINGS): the save's body (transport, url, headers, removedHeaders) plus a saved server's id, so a header left as the mask...

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