KamoCRM

Live Change Log

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

17,500
Total Changes
5,986
Features
5,284
Fixes
30
Projects
Filter by project
All Projects17,500AIService251APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService576InitializerService329KBService151KlusterServices740MCPGatewayService251MediaService602RAGService79SecurityService1,847TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,349kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,657kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore774Docs3,254Feature5,986Fix5,284Other994Performance165Refactor278Revert23Style42Test160Upgrade1
September 23, 2026
FixDocsService

Scope thumbnail backfill to the caller's org; gate history reads by clearance

Two independent gaps in ImagingController: - /backfill-thumbnails selected candidates platform-wide (no organization predicate at all; the last-resort tier w...

Kamo·4w ago
FixDocsService

Throttle the anonymous careers talent-alert form

CareersPublicController's POST /{orgRef}/alerts is the one anonymous, unauthenticated endpoint in this service that sends an email on every accepted call, with ...

Kamo·4w ago
ChoreEmailService

Scrub copies of live credentials from config and dumps

A sweep of every repo for the values of the cluster's live Secrets (2026-09-23) found copies here: the JWT signing secret as a `${JWT_SECRET:<literal>}` default...

Kamo·4w ago
Fixkamo-shared-library

UpdateDocType now requires the doc type to belong to the document's own org

ImageService.updateDocType loaded the target ImgDocType by UUID alone; requireEditableAndOwned proves the caller may edit the Img, but says nothing about whose ...

Kamo·4w ago
Fixkamo-shared-library

Org-scoped counterparts for the thumbnail-backfill candidate queries

DocsService's /backfill-thumbnails admin endpoint selected candidates from **************** (platform-wide, no organization predicate) or, as a last resort, a r...

Kamo·4w ago
Fixkamo-shared-library

Count an org's unconfirmed talent-alert rows for the anonymous form's cap

DocsService's public talent-alert subscribe endpoint sends a confirmation email on every accepted call, with no limit on how many not-yet-confirmed rows one org...

Kamo·4w ago
ChoreSecurityService

Scrub copies of live credentials from config and dumps

A sweep of every repo for the values of the cluster's live Secrets (2026-09-23) found copies here: the JWT signing secret as a `${JWT_SECRET:<literal>}` default...

Kamo·4w ago
ChoreInitializerService

Scrub copies of live credentials from config and dumps

A sweep of every repo for the values of the cluster's live Secrets (2026-09-23) found copies here: the JWT signing secret as a `${JWT_SECRET:<literal>}` default...

Kamo·4w ago
Featurekamo-internal

A switched-to mailbox stays live, and the search box is polished

Live updates. The page asks EmailService to watch the mailbox it has open when it is not the member's own (/app/email/watch, re-sent after a reconnect, stopped ...

Kamo·4w ago
ChoreAPIService

Scrub copies of live credentials from config and dumps

A sweep of every repo for the values of the cluster's live Secrets (2026-09-23) found copies here: the JWT signing secret as a `${JWT_SECRET:<literal>}` default...

Kamo·4w ago
Chorekamolos

Scrub copies of live credentials from config and dumps

A sweep of every repo for the values of the cluster's live Secrets (2026-09-23) found copies here: the JWT signing secret as a `${JWT_SECRET:<literal>}` default...

Kamo·4w ago
ChoreBillingService

Scrub copies of live credentials from config and dumps

A sweep of every repo for the values of the cluster's live Secrets (2026-09-23) found copies here: the JWT signing secret as a `${JWT_SECRET:<literal>}` default...

Kamo·4w ago
Featurekamo-internal

Audio lessons — upload a recording, and learners can really navigate it

Authors (/hr/training course editor) - "Upload file" on every slide, beside "Choose media": audio (MP3, M4A, AAC, WAV, OGG/Opus, FLAC), video or an image, thr...

Kamo·4w ago
FeatureKlusterServices

A way to actually build the golden image

build-golden-image.sh said "Run by CI (see ../../.forgejo/workflows/)". No such workflow was ever written. It needs libguestfs, qemu-img and virt-customize, non...

Kamo·4w ago
FeatureConversionService

Audio — a waveform thumbnail at upload, and peaks and transcripts on demand

An uploaded audio file fell through to the Docs PDF path, which cannot open one, so every audio upload ended "Conversion failed" with a blank library tile. Audi...

Kamo·4w ago
FeatureDocsService

Audio slides — media metadata, and learners play media through their assignment

An audio slide's navigation lives in media_meta_json (duration, waveform peaks, chapters), which the editor writes and the player reads back verbatim. It is sav...

Kamo·4w ago
Featurekamo-shared-library

Audio uploads pass the MIME check, and slides carry media metadata

Every audio upload but MP3 was refused as a MIME mismatch. An upload is accepted only when the browser's type and Tika's sniff resolve to the same ImageMimeType...

Kamo·4w ago
TestEmailService

AliasResponseMemberIsTextTest's session carries the right createAlias now needs

The full suite caught what the targeted run alone would not have: this fixture's session had no rights on it, so createAlias's new MANAGE_EMAIL_ACCOUNTS gate 40...

Kamo·4w ago
PerformanceEmailService

Calendar reminder sends move off the shared scheduler thread

Spring's default single scheduler thread is shared by every @Scheduled method in this service — the 1-second campaign pulse, the drip engine's tick, and Reminde...

Kamo·4w ago
FixEmailService

An IMAP/SMTP connection test must not be usable as a network probe

POST /api/email/member-imap/test and /{id}/imap/test connected to whatever host and port the caller supplied and returned the raw exception message. Any authent...

Kamo·4w ago
FixEmailService

Alias, domain and personal-mailbox admin actions need a management right

create/delete on an email alias, **************** on the org's sending domains, and **************** on a personal (self-hosted) mailbox all needed only a sessi...

Kamo·4w ago
FixEmailService

A member's mailboxes and aliases are only readable inside their own organization

GET **************** took no HttpServletRequest at all — no session, no org check anywhere on the path — and GET **************** checked that the CALLER had a ...

Kamo·4w ago
FixEmailService

A calendar export or import must be one the caller can actually open

GET /export/calendar/{id} and POST /import/{calendarId} took the calendar's UUID alone — no HttpServletRequest, so no session, no org or member check at all. An...

Kamo·4w ago
ChoreSecurityService

No live credentials in application.yml defaults

The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...

Kamo·4w ago
ChoreMCPGatewayService

No live credentials in application.yml defaults

The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...

Kamo·4w ago
ChoreInitializerService

No live credentials in application.yml defaults

The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...

Kamo·4w ago
ChoreDocsService

No live credentials in application.yml defaults

The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...

Kamo·4w ago
ChoreDaemonService

No live credentials in application.yml defaults

The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...

Kamo·4w ago
ChoreConversionService

No live credentials in application.yml defaults

The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...

Kamo·4w ago
ChoreAPIService

No live credentials in application.yml defaults

The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...

Kamo·4w ago
ChoreAIService

No live credentials in application.yml defaults

The local-development defaults carried the database OWNER's password (${DB_PASSWORD:<literal>}), and apiservice/securityservice also the live changelog webhook ...

Kamo·4w ago
Featurekamo-internal

A tool window's full title, however it is cut short

A title bar is one line, and a conversation, an email or ticket subject or a terminal's directory is regularly longer than the room it gets — the member could o...

Kamo·4w ago
FixSecurityService

Gate the API on the app, not only the screen

The settings page and the nav option both check organization.isHostedComputers, and until now that was the whole gate. AppAvailabilityInterceptor never mapped /...

Kamo·4w ago
FeatureInitializerService

Put the app in the entitlement catalog, add-on only

**************** asserts every sold app is categorised and sits somewhere on the tier ladder, because an app the catalog does not describe lands nowhere on the ...

Kamo·4w ago
Fixkamo-shared-library

A Hosted Computer is never provisioned automatically

Hosted Computers was reachable by both automatic provisioning paths, and either one would have put it in front of every organization on the platform at once. F...

Kamo·4w ago
FixKlusterServices

The three templates that never got committed

service-template.yaml, cloud-init.userdata.yaml and cloud-init.networkdata.yaml. They were written into a second worktree and committed from neither — the earli...

Kamo·4w ago
Featurekamo-internal

Human/AI member accounts, phonetic names, job title and department requirements

Add Member / Add Team Member - A first "Person or AI" section: Human Intelligence (default) or Artificial Intelligence as two keyboard-operable choice cards. ...

Kamo·4w ago
FeatureSecurityService

Human/AI members, phonetic names, role requirements; fix position saves wiping security

Members - Create, create-team-member and bulk-create accept `intelligenceType`, `namePhonetic` (new accounts only, like the name), and for AI accounts `aiSupe...

Kamo·4w ago
Featurekamo-shared-library

Intelligence type, phonetic names, AI supervision, job title/department requirements

Members: `Member.intelligenceType` (HUMAN | ARTIFICIAL, STRING, defaults HUMAN on every construction path and in the column), `aiSupervisorMemberId` (plain id —...

Kamo·4w ago
FixEmailService

SearchService marks its injection constructor, so the service starts

9809d4b gave SearchService a second constructor (a clock, for tests) and marked neither, so Spring chose neither, looked for a no-argument constructor, and the ...

Kamo·4w ago
Featurekamo-internal

The nav option, the settings section, and the storage figure

A member's own Linux computer, opened from the top bar. The app (ServiceType 37) and its three rights landed in the shared library; this is the half people see....

Kamo·4w ago
Featurekamo-internal

Checklists in the Notes app — prerequisites, stickies, home panes and the calendar

A note is memory; a checklist is work. /notes now has two halves — Notes and Checklists (?view=checklists) — and a checklist is its own record (/api/checklists,...

Kamo·4w ago
Fixkamo-internal

Every folder of a switched-to mailbox works, and search is rebuilt

Switching mailboxes. The folder sidebar always loaded the member's OWN folder tree, whatever mailbox was open - so a second mailbox showed the primary's folders...

Kamo·4w ago
FixEmailService

Search that honours its query, and every mail action on the mailbox that is open

Two problems on /messages, fixed in the service. Search did not work. The index path threw a ClassCastException on every hit (Instant -> Timestamp, visible in ...

Kamo·4w ago
FeatureAPIService

Forward /api/checklists to KBService

Checklists live in the Notes app and are served by KBService beside the notes themselves; without this route the whole feature answers 404 at the gateway.

Kamo·4w ago
FeatureKBService

The checklist API, with prerequisites the server enforces

/api/checklists: list, get, create, update, delete, duplicate, reset, clear-done, sequence ("do in order"), clear links, and per task add, edit, tick/untick, se...

Kamo·4w ago
Featurekamo-shared-library

Checklist and ChecklistItem entities, repository and DTOs

Checklists are the Notes app's second record type: work to get through, whose tasks can wait on other tasks. Three tables — checklists, checklist_items and chec...

Kamo·4w ago
CIKlusterServices

Apply the shared infrastructure on deploy

The namespace, the single-replica StorageClass, the clusterwide seal, computeservice's RBAC and the tenant gateway. Guarded on the hosted-computers/ directory c...

Kamo·4w ago
FeatureSecurityService

The browser-facing surface, and the second Guacamole gateway

SecurityService is the trust boundary for Hosted Computers. It holds the session, the rights and the org chart; ComputeService holds the Kubernetes credentials ...

Kamo·4w ago
FeatureEmailService

A member can put a checklist on their calendar, once

Checklists live in KBService and the calendar owns only WHEN, so a scheduled checklist is an ordinary member event carrying sourceType CHECKLIST, the checklist ...

Kamo·4w 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