KamoCRM

Mabadiliko ya Tabianchi

Kila kipengele, kurekebisha na kuboresha, posted kama meli. Hakuna kitu kilichofichwa kwa ajili ya uzinduzi.

17,496
Mabadiliko ya Jumla
5,984
Features ya
5,283
Wa
30
Miradi ya Miradi
Filter ya Mradi
Miradi yote17,496AIService251APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService576InitializerService329KBService151KlusterServices738MCPGatewayService249MediaService602RAGService79SecurityService1,847TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,349kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,657kamo-signer-monorepo56kamolos114
Filter ya aina
Aina zoteBuild16CI523Chore773Docs3,254Feature5,984Fix5,283Other994Performance165Refactor278Revert23Style42Test160Upgrade1
August 5, 2026
Testkamo-shared-library

Pin the contact-point and linker invariants, and drop timeline count queries

The two classes the whole feature rests on had no tests, and all three properties they guarantee fail silently in production: an unmatched call is indistinguish...

Kamo·2mo ago
Featurekamo-internal

Human Resources module shell with five route-backed tabs

Adds /hr with the accounts-page chrome in its route-backed form (the same one /marketing already uses): a layout owning the gradient hero and underlined tab bar...

kamo·2mo ago
FixVOIPService

Kutenga wito inges kwa kila mstari na kiungo tu baada ya kutenda

Two faults with one root: ingest participated in the sweep's transaction. A throw inside a participating transaction marks the SHARED transaction rollback-only...

Kamo·2mo ago
Fixkamo-shared-library

Make communication source ids natural keys, not row ids

A source id derived from the source row's generated UUID is only stable if that row commits. The VOIP ingest paths write inside the sync transaction while LeadC...

Kamo·2mo ago
DocsSecurityService

State honestly why chat entries carry no direction

The javadoc claimed direction was derived from the author while the code hardcoded UNKNOWN. Social conversations record both sides against a Kamo Member — the v...

Kamo·2mo ago
FixVOIPService

Skip soft-deleted extensions in the call-history sweep

syncExtensions soft-deletes by flipping status to UNKNOWN rather than removing the row, so the list accumulates every extension an instance has ever had. Each o...

Kamo·2mo ago
FixEmailService

Page the lead sweep until the window is covered

A single fixed page silently lost mail whenever a mailbox took more than pageSize messages between ticks — a newsletter burst, a busy shared inbox, or just the ...

Kamo·2mo ago
Featurekamo-internal

Complete the Communications tab

Each sub-tab now holds its own data, and All interleaves every channel by date. Notes keeps MediaStream, because notes are authored here — but readOnlyChrome s...

Kamo·2mo ago
FeatureSecurityService

Unified communications timeline API

GET **************** returns one date-ordered page across notes, calls, voicemails, texts, e-mails and chat; ?channel= narrows it. Three sources are merged. Ca...

Kamo·2mo ago
FeatureDaemonService

Drive the mail-to-lead association sweep

Five-minute tick against EmailService's internal sweep endpoint, mirroring VoipGlobalSyncJob. The schedule lives here because EmailService runs several pods and...

Kamo·2mo ago
FeatureEmailService

Associate lead correspondence, and fix the dead push indexer

Adds the mail half of the lead Communications tab, plus the ingestion it needed to exist at all. The platform has no working mail push: IMAP IDLE is hardcoded ...

Kamo·2mo ago
FeatureVOIPService

Persist calls and associate calls, texts and voicemail with leads

Calls were never recorded anywhere — VoipCallEventService published a NATS event for the browser and kept nothing, and RECORDINGS only exists when audio was cap...

Kamo·2mo ago
FeatureInitializerService

Schema and contact-point seed for lead communications

Hibernate creates the three new tables from the shared-lib entities; this adds what it cannot express — the partial unique index that keeps at most one open con...

Kamo·2mo ago
Featurekamo-shared-library

Point-in-time contact-point index and lead communication links

Adds the spine the lead Communications tab reads from. LEAD_CONTACT_POINTS records every phone number and e-mail a lead has ever had, as a window with activeFr...

Kamo·2mo ago
Fixkamo-marketing

Submit the lead at step 1 instead of only on booking

handleFormSubmit iliangalia *** na kuendeleza hatua - haikufanya mtandao Piga simu wakati wote, kwa hivyo maelezo ya mawasiliano ya mgeni aliyeorodheshwa yalien...

Kamo·2mo ago
FeatureMediaService

Kupata demo kuongoza kabla ya hatua booking

The marketing site's demo form collected name, email, company, company size, industry and a message, then advanced to scheduling without telling anyone. Lead cr...

Kamo·2mo ago
Featurekamo-shared-library

Utawala wa Umma wa demo-request risasi kukamata primitives

A visitor who fills in the marketing site's demo form but never books a time left no trace: the lead was only ever written inside the booking transaction. Captu...

Kamo·2mo ago
Fixkamo-internal

Withhold the reply box from senders that cannot receive one

Sending a quick reply to a KamoCRM notification put the literal text `{"error":"Invalid Addresses"}` in the reply box. The mail server had rejected NoReply@Kamo...

kamo·2mo ago
FixEmailService

Address replies at Reply-To, and stop leaking SMTP exceptions to the UI

A quick reply to a KamoCRM notification failed with `{"error":"Invalid Addresses"}` rendered verbatim in the reply box. That string is Jakarta Mail's own wordin...

Kamo·2mo ago
Featurekamo-internal

Kujiandikisha Mtoa Setup katika urambazaji, na kuandika tips haraka

Kichupo cha Mtoa Setup kilichotolewa ndani ya MipangilioView lakini kiliweza kufikiwa tu na kuandika URL - ilikuwa kukosa kutoka maeneo yote mawili kwamba orodh...

Kamo·2mo ago
ChoreVOIPService

Drop the now-dead mailbox parameter and local

Follow-up to c7cb180: once the mailbox left the voicemail id, toVoicemailEntry's mailbox argument and the graphReady local had no remaining readers.

Kamo·2mo ago
Fixkamo-internal

Outbound Teams call party, live audio devices, provider-aware prompt

Three confirmed findings from the review of 08cecc6d. Outbound Teams calls showed the wrong remote party. TeamsAcsSession derived remoteNumber/remoteName from ...

kamo·2mo ago
FixVOIPService

Close a cross-mailbox hole and six more Teams defects

Adversarial review of 6df0008 confirmed 24 findings. The important ones: CRITICAL — any member could delete a colleague's mail. Teams voicemail ids were compos...

Kamo·2mo ago
Featurekamo-internal

Weka sheria za ufikiaji wa geo na IP kwenye mizigo ya ukurasa

checkAccess evaluated the rules itself and matched nothing for its entire life: it compared rule types against **************** while the publisher writes the e...

kamo·2mo ago
FeatureAPIService

Enforce tenant access rules at the gateway

This filter has been inert since it was written. resolveOrgId read org:domain:<host> from Redis, nothing ever wrote that key, and the null return fell through t...

Kamo·2mo ago
FeatureSecurityService

Actually enforce geo and IP access rules

The rules were stored, cached to Redis and never consulted. AccessCheckController was the only caller of the evaluation and nothing called AccessCheckController...

Kamo·2mo ago
Featurekamo-internal

Platform registration card for the Zoom Marketplace app

Completes Zoom's one-click connect path. The backend already resolves PlatformOAuthProviderType.ZOOM, but with no card here a platform operator had nowhere to e...

Kamo·2mo ago
Featurekamo-internal

Microsoft Teams Phone provider, front to back

Adds Teams to **************** and wires the whole path through: provider selection, the Entra + Azure Communication Services config, tenant admin consent, the ...

kamo·2mo ago
FeatureVOIPService

Microsoft Teams Phone as a provider

Teams is not one API, so the provider glues three control planes together: • Graph, app-only — call history (getPstnCalls), presence reads, directory and...

Kamo·2mo ago
Featurekamo-internal

Provider Setup tab and capability-gated meeting settings

Adds the Provider Setup tab to /settings/features/meets and makes every other tab honest about the provider it is configuring. useMeeting no longer builds meet...

Kamo·2mo ago
Featurekamo-shared-library

MICROSOFT_TEAMS provider type

Appends MICROSOFT_TEAMS to VoipProviderType. The enum persists as ORDINAL on **************** so the position is load-bearing and the constant goes last; the cl...

Kamo·2mo ago
FeatureAPIService

Route the meeting provider OAuth callback

Zoom and Microsoft redirect the browser to this gateway after an org authorises Kamo's app. The popup lands here with no tenant session — the org travels in ?st...

Kamo·2mo ago
FeatureMediaService

Meeting provider abstraction with Zoom and Microsoft Teams

Meetings were Kamo Meets by construction — MeetService persisted a Meet room name and nothing else. This introduces the abstraction and two remote providers beh...

Kamo·2mo ago
FeatureInitializerService

Maandalizi kwa ajili ya mkutano wa multi-service layer

Creates **************** and org_meeting_oauth_tokens, adds the provider-identity columns to MEETING_RECORDS and MEETING_RECORDINGS and the Zoom/Teams-capable s...

Kamo·2mo ago
Featurekamo-shared-library

Mkutano wa mfano kama mtoa huduma

Kamo Meets was the only possible backend: OrgMeetConfig was a flat Meet settings bag and a MeetingRecord held nothing but a room name. This adds the schema for ...

Kamo·2mo ago
Fixkamo-internal

Fit the trail in one pane — no wrapped intro, no double scrollbar

Three things made the tab feel cramped: The intro was capped at 900px, which broke a 170-character sentence onto a second line for no reason; it now uses the w...

Kamo·2mo ago
Featurekamo-internal

Allow-list countries on the geo-blocking card

The card could only deny countries, so an org that serves one country had to enumerate every other one. It now has both lists: a mode toggle picks which list th...

kamo·2mo ago
FeatureSecurityService

Allow-list countries alongside geo blocks

The geo section only ever denied: a country was blocked or it was absent. Orgs that want to serve one country had to enumerate every other one, which is unmaint...

Kamo·2mo ago
Refactorkamo-internal

Move System Debug under Platform Administration

**************** diagnostics are operator tooling, not an access rule, so the tab now sits at **************** behind the platform-admin guard instead of MANAGE...

kamo·2mo ago
Fixkamo-internal

PHI access audit tab layout + its missing menu entry

The tab rendered its content flush against the card border: SettingsView's tab panel supplies no padding of its own, and this tab was the one manager that never...

Kamo·2mo ago
Featurekamo-shared-library

Soma ubora wa marekebisho na matoleo ya mwongozo

An assembled price is a base cell PLUS the adjustments stacked onto it, so judging only the cell judges half the number: a cleanly-read 99.875 with a misread -1...

Kamo·2mo ago
Featurekamo-internal

Open links back into this app in the tab the member is already in

Mail in the reading pane opens every link in a new tab, which is right for the whole internet and wrong for us. Our notification emails are almost entirely link...

kamo·2mo ago
FixSecurityService

Fall back through every number the agent holds

Ugani usio na mstari wa org wa kuitundika hauwezi kuepukika, kwa hivyo msuluhishi huanguka nyuma Kwa baadhi ya watu, kwa kweli, ni badala ya kuchapisha chochote...

Kamo·2mo ago
Fixkamo-shared-library

Publish the agent's cell when it is the only number they have

An agent's number can live in any of three columns and commonly sits in only one: e_phone_number on the team member, m_phone_number and m_cell_number on the mem...

Kamo·2mo ago
Fixkamo-internal

Cleaner invite mark in the chat message

The chat invite led with the video-camera emoji, which the message renderer scales to 1.4em — so it landed as an oversized colour sticker rather than an icon. R...

kamo·2mo ago
Featurekamo-shared-library

Per-cell extraction confidence + eligibility-matrix provenance

Two gaps in the confidence model, both on the money path. PER-CELL. A sheet-wide floor is the wrong grain for judging one price: a single badly-read coupon dra...

Kamo·2mo ago
FixKlusterServices

STUN answered on the wrong node, so kamocrm.com:3478 was dead

coturn is hostNetwork with no nodeSelector, so it was scheduled on k3m1 (public 47.181.8.87). Its own --external-ip, and every client's `stun:kamocrm.com:3478`,...

Kamo·2mo ago
FixEmailService

Stop classifying a multipart/related HTML root as an attachment

Every transactional email we send with an inlined org logo arrived in our own /messages viewer with a correct subject and a completely empty body. isAttachment...

Kamo·2mo ago
FixKlusterServices

Bridge advertised only private ICE candidates — no meet had media for 35 days

The bridge never completed a single ICE connection in the 35 days this pod has been up (0 successes, 18 terminations). Every conference joined over XMPP fine an...

Kamo·2mo ago

Je, unaona nini kuhusu usafiri?

Kila kitu kinaingia kwenye tovuti yako mwenyewe. Anza kwenye mpango wa bure na usome ukurasa huu tena katika mwezi mmoja.

Kuwa Huru MileleMtazamo wa bei