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

Build out Tracking Codes in place of the referral placeholder

/marketing/discounts was a ComingSoon stub; it is now /marketing/tracking, a working workspace, with the old path kept as a client redirect so existing bookmark...

kamo·1mo ago
Featurekamo-register

Carry the marketing referral into the signup

The marketing site tags a referred visitor with kmrt_vid and kmrt_src on the shared apex, so register.<apex> can read them; handleFinish sends both in the reque...

Kamo·1mo ago
Featurekamo-marketing

Honour a partner link and report what it brought

A visitor who follows https://www.<apex>?mrt=<code> gets two first-party cookies from the edge middleware — an opaque GUID that lasts two years and the code its...

Kamo·1mo ago
FeatureSecurityService

Publish signup and org-created for tracked visitors

The register site now forwards the marketing visitor GUID and tracking code in the request body — not a header, because the proxy strips Cookie and the ingress ...

Kamo·1mo ago
FeatureBillingService

Publish the paid conversion for tracked organizations

Both paths that stamp BillingSourceType.PAID now publish marketing.visitor.paid, because hooking only one silently misses half the traffic — AccountSubscription...

Kamo·1mo ago
FeatureAPIService

Forward the tracking beacon to MediaService

Clones forwardPublicWebinar rather than the generic forward(): that method prints every URI, header map and body length to stdout with no level, and a visitor b...

Kamo·1mo ago
FeatureMediaService

Serve the tracking-codes tab and ingest the visitor beacon

MediaService already backs the other marketing tabs, so it takes both halves of tracking codes: the authenticated CRUD and stats surface at /api/media/marketing...

Kamo·1mo ago
Featurekamo-shared-library

Model tracking codes, their visitors and the visits they bring

A member mints a code, shares **************** and the six totals on the Tracking Codes tab answer what that link actually did: unique visitors, visits, page re...

Kamo·1mo ago
FeatureKlusterServices

Provision MARKETING_EVENTS for visitor conversion signals

Marketing tracking codes credit a partner for the signups, organizations and paid accounts their link produced, and those three moments happen in services that ...

Kamo·1mo ago
August 19, 2026
Featurekamo-internal

Shorten the empty-description hint

The Description column shows {No Description} in place of "No description provided..". The string was hardcoded English, so it now comes from the dictionary — w...

kamo·1mo ago
Featurekamo-internal

Reorder and retitle the document tabs

The strip now reads Originals | Modify (n) | Modified | Binders | Common | Uploads, and Common trades the gear icon for a library one now that it no longer says...

kamo·1mo ago
Featurekamo-internal

Rebuild the knowledge base as a console

The four knowledge-base screens were the last in the app still wearing the old look, and three of them stated things that were not true. /kb showed "Pinned Art...

kamo·1mo ago
FeatureSecurityService

Enforce is_fake, and close the holes that let an unattended signup in

Two halves of one incident. An account registered, verified an address at a disposable provider, took an auto-login session and created five organizations in th...

Kamo·1mo ago
FeatureKBService

Serve what the knowledge console reads, and fix what it never could

Four endpoints the rebuilt knowledge base needs, and three facts the API was unable to state. GET /api/kb/pins returned a Page of pin ROWS, and KbArticlePin.ar...

Kamo·1mo ago
FeatureInitializerService

Add users.is_fake, in the only statement order a populated table allows

Mirrors the new `User.isFake` field. Four statements, and the order is the whole migration: YugabyteDB rejects `ADD COLUMN … NOT NULL` on a populated table — re...

Kamo·1mo ago
Featurekamo-shared-library

Add is_fake, the flag that makes an account invisible instead of deleted

A synthetic account — a test artifact, a seeded fixture, or a signup judged to be automated — now carries `users.is_fake`, and the platform stops acknowledging ...

Kamo·1mo ago
Featurekamo-internal

Rebuild /hr/attendance as a payroll console

Eight flat tabs over eight panels that each drew their own heading, table, skeleton, error line and Snackbar — and had drifted. The overhaul is three things at ...

kamo·1mo ago
Featurekamo-internal

Rebuild the network page as an operations console

The page was the last screen still wearing the old look — a flat gradient bar, white cards, a centred spinner, alert() for every failure — while the rest of the...

Kamo·1mo ago
FeatureSecurityService

Let a member give up their own membership

The network page has offered "Unsubscribe" since it was written. It opened a confirmation dialog and then said the feature would be implemented soon, because th...

Kamo·1mo ago
Featurekamo-internal

Rebuild /hr/legal-compliance as the legal registry

The surface was a MUI tab strip over two AG Grids. Packages rendered as seven columns of counts and an actions cell of six unlabelled icon buttons, three of whi...

kamo·1mo ago
Featurekamo-marketing

Play the kamo13 reel

Points the hero at the new reel's ladder, MP4 fallback and poster. The source is spec-identical to the one it replaces (H.264 720p24, 66s, ~30 MB), so nothing a...

Kamo·1mo ago
FeatureKlusterServices

Swap the hero reel to kamo13

kamo13.mp4 uploaded to MinIO at public/kamo13.mp4 (30 MB, sha256 174aaec6…, verified byte-identical to the local source after transfer — this link has a history...

Kamo·1mo ago
Featurekamo-internal

Rebuild /hr/training as a training console

The tab was two AG Grids under a tab bar: accurate and mute. It now opens on the org's whole training obligation and lets an admin act on the gaps. - A masthea...

kamo·1mo ago
Featurekamo-marketing

Wire the offer banner, fix dead Learn more links and the hexagon field

Five fixes, all of them things that looked present but did nothing. OFFER BANNER — HeroOfferBanner was dead code; nothing imported it. Restored, but driven by ...

Kamo·1mo ago
Featurekamo-login

Rebuild the welcome panel around a live status rail

The left column was a generic headline, a security platitude and a pile of ambient decoration (dot grid, floating orbs, a pulsing dash). Replace it with one sha...

Kamo·1mo ago
Featurekamo-marketing

Rebuild the hero as an editorial split with the reel as an aperture

The reel was a centred rounded rectangle with a drop shadow — an object placed on the design rather than part of it — and it was the ONLY thing in the hero: ff0...

Kamo·1mo ago
Featurekamo-marketing

Play the reel as an adaptive HLS ladder instead of a 31.8 MB MP4

The hero pointed a bare <video src> at a single 3.9 Mbps 720p24 MP4, so a phone on a weak connection downloaded exactly the same stream as a desktop on fibre, a...

Kamo·1mo ago
FeatureKlusterServices

Deploy a streaming server and an ABR ladder for the hero reel

MediaMTX serves live channels over HLS, WebRTC, RTSP and RTMP, and loops the marketing reel as an always-available channel via alwaysAvailableFile — no ffmpeg s...

Kamo·1mo ago
FeatureKlusterServices

Workstation-side mount script for the KAMOTEAM share

NFSv4 over the NodePort, mounted soft with a systemd automount so an unreachable cluster returns an error instead of hanging every process that touches the fold...

Kamo·1mo ago
Featurekamo-marketing

Polish video hero unit with modern animations and optimizations

- Add poster image for instant visual feedback during video load - Implement loading skeleton with pulsing animation - Start video muted (browser autoplay polic...

Kamo·1mo ago
FeatureKlusterServices

KAMOTEAM shared folder on every desktop

desktop-1 hosts /srv/kamoteam and exports it over NFSv4; every VM user gets ~/Desktop/KAMOTEAM as a symlink (via /etc/skel for new accounts and the agent for ex...

Kamo·1mo ago
August 17, 2026
Featurekamo-marketing

Replace hero text unit with autoplay promo video

Swap the homepage hero copy, CTAs, and stats for a looping muted video while keeping the rotating background treatment.

Kamo·1mo ago
August 16, 2026
FeatureKlusterServices

Alert on OOMKills, and on the occupancy that precedes them

Nothing was watching memory. MediaService was OOMKilled every few hours for most of a day and EmailService six times, and the way anyone found out was a chat wi...

Kamo·1mo ago
August 15, 2026
FeatureKlusterServices

Block outbound SSH except sage, resolve k1m1/k3m1, bundle the agent dir

Outbound tcp/22 is rejected for every uid except root and sage, keyed on socket owner so future accounts are covered without re-running anything. Reapplied at b...

Kamo·1mo ago
FeatureKlusterServices

Standard toolchain, taskbar pins and passwordless installs for all users

Adds krita and maven **************** were already present), pins Chrome, VS Code, Kate, Spectacle and Krita to the taskbar for every user, and lets dev users i...

Kamo·1mo ago
Featurekamo-internal

Gate the Linux desktop icon on a provision, not on god

The icon now appears exactly when the connection behind it will work — the SSO endpoint enforces the same rule, so the two cannot disagree. Windows and Master s...

kamo·1mo ago
Featurekamo-internal

Dev Machine dialog on the administrator card

Keeps three states apart that one toggle would collapse: never provisioned (needs a password), provisioned but locked (needs only the switch), and failed (needs...

kamo·1mo ago
Featurekamo-internal

Client module and proxy routes

*** is forwarded explicitly — buildForwardHeaders sets X-OTK but not the session token, and the dev-machine endpoints resolve the caller from it. The action seg...

kamo·1mo ago
FeatureSecurityService

Per-member SSO credentials and a preflight that explains failures

Linux is gated on an enabled provision rather than god, and served with the member's own credentials. The connection is omitted from the token entirely when the...

Kamo·1mo ago
FeatureSecurityService

Dev machine service and controllers

Username derives from the member ACCOUNT email, not the TeamMember work email — a work address can sit on another domain and would silently produce a different ...

Kamo·1mo ago
FeatureSecurityService

HTTP client for the dev machine provisioning agent

health() swallows transport failures and answers false so the SSO preflight can return an actionable 503 rather than a 500.

Kamo·1mo ago
FeatureSecurityService

AES-GCM secret codec and POSIX username derivation

Codec is deliberately reversible — RDP auto-login needs a real password — and uses GCM so a tampered or wrong-key row fails loudly rather than decrypting to noi...

Kamo·1mo ago
Featurekamo-shared-library

Dev_machine_accounts entity, status enum and repository

status and enabled are deliberately separate: a provisioned-but-disabled account keeps its home directory, so re-enabling restores access rather than rebuilding...

Kamo·1mo ago
FeatureKlusterServices

Agent secrets in CI, guacamole liveness, availability alerts

Alert expressions verified against the live Prometheus. Uses kube-state-metrics rather than kubevirt_* — the KubeVirt metrics endpoint is not scraped here, so r...

Kamo·1mo ago
FeatureKlusterServices

Idempotent agent installer, shared by cloud-init and live installs

Staged under /opt/kamo-desktop-agent so install-agent.sh has a distinct source and destination. Covers netplan-by-driver, cloud-init network disable, xrdp sessi...

Kamo·1mo ago
FeatureKlusterServices

Add the provisioning agent and its unit tests

Python 3 stdlib only. Every mutation runs subprocess with an argv list, never a shell string; passwords go to chpasswd on stdin so they stay out of /proc.

Kamo·1mo ago
FeatureSecurityService

Send int64 ids to the browser as strings, without touching sessions

CockroachDB unique_rowid() ids are 19 digits, past Number.MAX_SAFE_INTEGER, so an id sent as a JSON number arrives in the browser with its low digits rounded aw...

Kamo·1mo ago
Featurekamo-login

Replace the stock alert with an animated status plate

The inline sign-in messages ("Login successful! Redirecting...", "Invalid username and/or password.") used MUI's default Alert, whose pastel fill plus matching ...

Kamo·1mo ago
Featurekamo-marketing

Add the 25-year anniversary seal

Two placements, both chosen for where the claim is already being made: Footer — 60px, beside "© 2001–<year> ... established 2025". Site-wide, ...

Kamo·1mo ago
Featurekamo-marketing

Show the 2001 copyright range and the incorporation year

Renders "© 2001–<year> KamoCRM. KamoCRM Inc. established 2025. All rights reserved." The range start is hard-coded next to the dynamic end year rather than livi...

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