Mabadiliko ya Tabianchi

Kuona nini sisi ni kujenga katika muda halisi. Kila kipengele, kurekebisha, na kuboresha kusafirishwa kwenye jukwaa.

17,888
Mabadiliko ya Jumla
4,594
Features ya
4,520
Wa
32
Miradi ya Miradi
Filter ya Mradi
Miradi yote17,888AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService364InitializerService299KBService74KlusterServices542MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,557kamo-login318kamo-marketing584kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter ya aina
Aina zoteBuild24CI522Chore670Docs226Feature4,594Fix4,520Other6,781Performance136Refactor274Revert23Style48Test69Upgrade1
August 20, 2026
FeatureInitializerService

Composite lead indexes, and unblock the run that creates them

The /leads grid now filters and pages in the database instead of shipping the whole organisation to the browser. With only IX_LEADS_ORG_ID that would relocate t...

Kamo·3w ago
FixDaemonService

Mark payload outcomes by column, not through the entity

payloadRepo.save() on a detached payload makes Hibernate walk its graph — organization pulls in org_domains — and that read lands in a transaction that has alre...

Kamo·3w ago
FixSecurityService

Settle each backlog payload as it is processed

processBacklog mirrored the scheduled job's two defects: it mutated payload statuses in memory and saved them in one batch at the end, and it saved the whole en...

Kamo·3w ago
Fixkamo-shared-library

Record a payload's outcome by column, not by entity

Marking a payload IMPORTED with payloadRepo.save() makes Hibernate walk the detached entity's graph — including organization, which pulls in org_domains — and t...

Kamo·3w ago
FixDaemonService

Stop overlapping runs importing the same payloads twice

The trigger fires every minute and each run claims work by selecting payloads still in RECEIVED. A backlog that takes longer than a minute therefore still had R...

Kamo·3w ago
FixDaemonService

Bump the processed counter instead of rewriting the endpoint

The job finished a batch by mutating totalProcessed on the endpoint entity it loaded before the batch began and saving the whole row. Two consequences: - it ...

Kamo·3w ago
FixSecurityService

Never fail a submission because its counter update lost a race

storePayload no longer bumps the endpoint's received counter; the receive controller now calls recordReceipt separately, in its own transaction, and swallows th...

Kamo·3w ago
OtherKlusterServices

Prefer brotli on the theme host, and correct the previous rationale

Two things, one of them a correction to the commit before this. The previous commit justified `encodings: [br, gzip]` with a probe against api.kamocrm.com. Tha...

Kamo·3w ago
OtherKlusterServices

Prefer brotli, stop compressing what is already compressed

The shared `compress` middleware was `compress: {}`, which is three separate defaults and none of them is the one we want. Traefik picks gzip whenever the clie...

Kamo·3w ago
Fixkamo-shared-library

Stop losing payloads to endpoint-counter contention

storePayload saved the payload and then bumped totalReceived/lastReceivedAt by dirtying the endpoint entity — in the same transaction. Every submission to an en...

Kamo·3w ago
Fixkamo-internal

Every country flag in the app was a blocked image

Eight more screens had the defect found in the marketing visitor drawer. The app is served under img-src 'self' data: blob: https://theme.kamocrm.com https:/...

kamo·3w ago
Performancekamo-marketing

Compress every response, not just the document

server-nonce.js asks upstream for `identity` so the HTML can be stamped with a CSP nonce without a decompress/recompress round trip, then recompresses on the wa...

Kamo·3w ago
Performancekamo-marketing

Drain deferred work one item per idle period

Four components waited for the main thread to go quiet before doing their work — the toast/consent bundle, the scroll chrome, the touch target sweep and the ref...

Kamo·3w ago
Performancekamo-marketing

Read the scroll position from an observer, not from layout

The nav's scrolled/at-top state came from a scroll handler that read window.scrollY, and the mount effect called that handler synchronously during React's commi...

Kamo·3w ago
Fixkamo-internal

Flags are emoji, because the CSP blocks every flag CDN

The visitor drawer painted a broken-image glyph where each country flag should be. react-country-flag's `svg` mode reads like a self-contained component and is ...

kamo·3w ago
ChoreMediaService

Rebuild against kamo-shared-library 811db57

Picks up the createLead fix that moves the pool-availability recount to afterCommit. Before it, a read-after-write in the lead's own transaction hit YugabyteDB'...

Kamo·3w ago
ChoreSecurityService

Rebuild against kamo-shared-library 811db57

Picks up the createLead fix that moves the pool-availability recount to afterCommit. Before it, a read-after-write in the lead's own transaction hit YugabyteDB'...

Kamo·3w ago
FixDaemonService

Persist each payload's outcome as it happens, not in one batch

processEndpointPayloads looped over the batch mutating statuses in memory and saved them all at the end. createLead commits per lead, so any failure of that fin...

Kamo·3w ago
Fixkamo-shared-library

Move the pool-availability recount after commit

createLead saved the lead and then, in the same transaction, ran countAssignablePool to broadcast the new "Leads Available" figure. On YugabyteDB a read after a...

Kamo·3w ago
Featurekamo-internal

Offer Company Name as a mappable import field

leadFields.ts is the list the mapping canvas draws from, and it must mirror the backend switch in LeadImportController — a path missing from either side is acce...

kamo·3w ago
FeatureSecurityService

Map companyName so a spreadsheet can carry the business name

setDirectFieldOnCreateRequest had no companyName case, so the field was unreachable from the manual-import wizard even though CreateLeadRequest carries it and L...

Kamo·3w ago
FeatureDaemonService

Let a mapped payload carry companyName and source

The intake job's direct-field switch stopped at vendorLeadID, so a mapping onto companyName or source was accepted by the UI, stored on the endpoint and then si...

Kamo·3w ago
Performancekamo-marketing

Serve static assets as build-time brotli

The flagged chunk is react-dom, and I checked it properly before concluding anything: it is the production build (no dev markers, and the profiling hooks `injec...

Kamo·3w ago
Performancekamo-marketing

Drop the unused preconnect, and fix the 565 ms of brotli I added

Two findings, and the second one was mine. THE DOCUMENT TOOK 1,259 ms BECAUSE OF THE NONCE WRAPPER. Measured against the live site: the HTML answered in ~900 ...

Kamo·3w ago
Featurekamo-marketing

Put the headline's swept band back

Restored exactly as it was — same two-layer gradient, same 120deg band, same 9s/1.1s timing and easing — after removing it in the compositing pass. The cost is...

Kamo·3w ago
Performancekamo-marketing

Move every looping animation onto the compositor

All 26 elements Lighthouse listed under "avoid non-composited animations" were the same mistake in four places: animating a paint property. Measured with Chrome...

Kamo·3w ago
Featurekamo-internal

Retitle Modified to Converted and fix two tab icons

Both tabs wore an icon that already means something else in this grid: the Modify tab used GetApp, the row-level download button, and Converted used EditNote, t...

kamo·3w ago
FixMediaService

Stamp every unread frame with the instant its counts were read

The four places that built a member's unread snapshot — the REST read, the frame sent when a message arrives, the frame sent when a session is marked read, and ...

Kamo·3w ago
Fixkamo-internal

Clear the unread badge for a conversation the member is reading

The badge was fed by two unordered sources — the REST unread read and MediaService's unread topic — and applied whichever landed last, with nothing ever re-read...

kamo·3w ago
Featurekamo-internal

Choose which page a tracking link lands on

A code is not tied to a page — the marketing site captures it site-wide — so the only real question when sharing one is where the visitor should land. The produ...

kamo·3w ago
Fixkamo-marketing

Catch the silent version of "sound is not allowed here"

Follow-up to the still. Testing tap-to-play against the deployed site turned up a failure mode the muted fallback did not cover. A refused `play()` rejects, an...

Kamo·3w ago
Fixkamo-internal

Show the code as a handle, not 36 characters of hex

Moving the token to a UUID left the grid rendering the whole thing, which is correct in a URL and useless in a table: it cannot be scanned, compared against the...

kamo·3w ago
Fixkamo-marketing

The microservice count reads 64+, not 30+

The number is 64+ services now. Five untranslated surfaces still claimed 30+: the technology answer in the homepage FAQ JSON-LD (which is what a search result q...

Kamo·3w ago
Featurekamo-marketing

Show a still of the reel instead of a grey pulse

Adds public/img/hero-still.webp — 1280x720, matching the aperture's 16/9 exactly — and makes it what the hero shows until someone presses play. This also fixes...

Kamo·3w ago
FixKlusterServices

Cache CORS preflights for two hours, not 100 seconds

`accessControlMaxAge: 100` meant browsers re-ran the preflight roughly once per visit, so every page load on the marketing site paid two extra OPTIONS round-tri...

Kamo·3w ago
Performancekamo-marketing

63 HTTP requests down to 22

Implements the request-budget report. Measured the same way it was written — Chrome over the debugging protocol, mobile emulation, sixteen-second window. 6...

Kamo·3w ago
Featurekamo-internal

Build the shared link as ?discount=<uuid>

buildTrackingLink emits the new parameter, and the link strip highlights the ?discount= segment it used to highlight as ?mrt=. The token itself is now an opaque...

kamo·3w ago
Featurekamo-register

Read the discount cookies and send the discount* fields

Follows the marketing site: kdsc_vid / kdsc_src, with ?discount= as the query-param fallback for a visitor who lands on the register form with the link still in...

Kamo·3w ago
Featurekamo-marketing

The referral parameter is ?discount= and the token is a UUID

The link a member shares is **************** It used to be ?mrt=<memberId>.<iteration>, which put a real member id in every shared URL and let anyone enumerate ...

Kamo·3w ago
FeatureSecurityService

Accept the discount* signup fields, keep the mrt* ones working

The register site now sends discountVisitorGuid / discountCode. Both names are read, new first, because the two services deploy independently — for the minutes ...

Kamo·3w ago
FeatureMediaService

Mint an opaque UUID token, in one insert

createCode generates the token itself, so there is nothing to read first and nothing for two tabs to collide over. That removes the whole apparatus the old sequ...

Kamo·3w ago
Featurekamo-shared-library

Make the shared token an opaque UUID

The public token was <memberId>.<iteration>, which was wrong on two counts. It published a real member id in every link anyone shared — on a business card, in a...

Kamo·3w ago
FeatureInitializerService

Retire ****************

Tracking codes are shared as ?discount=<uuid> now. The old <memberId>.<n> token published a real member id in every shared link and made the space walkable — on...

Kamo·3w ago
Performancekamo-marketing

The reel was never using hls.js, and phones paid for it

Chasing "make fewer HTTP requests" found two real things, and the second is much larger than the audit that led to it. THE HLS BRANCH NOBODY WAS TAKING. HeroSt...

Kamo·3w ago
CIkamo-marketing

Retry npm ci through the runner's transfer corruption

The build failed on: npm error code ERR_SSL_CIPHER_OPERATION_FAILED ossl_gcm_stream_update:cipher operation failed That is a GCM authentication-tag mi...

Kamo·3w ago
Fixkamo-marketing

Clear every console error and DevTools issue

Diagnosed with Chrome over the debugging protocol rather than by reasoning, collecting exactly what Lighthouse's errors-in-console and inspector-issues audits c...

Kamo·3w ago
Featurekamo-marketing

Serve a real per-request CSP nonce with strict-dynamic

Clears both remaining High findings on script-src: the 'unsafe-inline' one and "host allowlists can frequently be bypassed". Only a nonce with 'strict-dynamic'...

Kamo·3w ago
Featurekamo-marketing

Enforce Trusted Types, path-scope the script allowlist

Clears the "No Content-Security-Policy header with Trusted Types directive found" finding by moving require-trusted-types-for into the enforced policy. This is...

Kamo·3w ago
Fixkamo-marketing

Clean the console, and restore the static rendering I broke

Three things from the console, one of them much bigger than the other two. THE BIG ONE. Chasing the "Fetch failed loading" lines led to the prefetch payload, a...

Kamo·3w ago
Fixkamo-marketing

The Trusted Types policy was being injected by next/script

The report-only console showed two violations, and one of them was the policy component's own doing: This document requires 'TrustedScript' assignment. Thi...

Kamo·3w ago

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei