KamoCRM

Mabadiliko ya Tabianchi

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

17,523
Mabadiliko ya Jumla
6,004
Features ya
5,286
Wa
30
Miradi ya Miradi
Filter ya Mradi
Miradi yote17,523AIService253APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService580InitializerService329KBService151KlusterServices741MCPGatewayService252MediaService602RAGService79SecurityService1,850TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,356kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,662kamo-signer-monorepo56kamolos114
Filter ya aina
Aina zoteBuild16CI523Chore775Docs3,255Feature6,004Fix5,286Other994Performance165Refactor278Revert23Style42Test161Upgrade1
August 24, 2026
Fixkamo-internal

A sent message animates in once, not twice

The message list keyed each row on the message id, and a sent message's id changes exactly once — the optimistic row is appended under a local id, and the STOMP...

kamo·2mo ago
Fixkamo-internal

Name rooms after the org id, not the hostname

getOrgToken() took the first label of the current host, and its own comment said why: "so identically-named rooms cannot collide across orgs". On the shared hos...

kamo·2mo ago
Fixkamo-login

Make the auto-login cross-tenant guard actually run

The guard read the host org's id with /"id"\s*:\s*(\d+)/ -- a bare digit straight after the colon. SecurityService's JsSafeLongSerializer writes any Long above ...

Kamo·2mo ago
FixESigService

Stop handing an alias row over as the org's domain

**************** walked org.getDomains() filtering only on isActive. That collection holds the org's root domain AND its alias rows -- api, login, theme and the...

Kamo·2mo ago
Fixkamo-internal

Take the chat-core that stops a sent message showing twice

@kamo/chat-core 0.1.6. The conversation reducer now adopts the pending optimistic row when the member's own message comes back over STOMP, instead of appending ...

kamo·2mo ago
FixSecurityService

Stop requiring DNS verification to sign in

OrgHostResolver.resolveByDomain filtered on od.is_dns_verified = TRUE, so a domain row that existed but had not finished verifying resolved to nothing and login...

Kamo·2mo ago
August 23, 2026
FixVOIPService

Stop RingCentral OAuth signing white-label tenants out

Two faults, both on the same hop, and each one hides the other. RingCentral rejects every scope value this app can ask for — "invalid_request / Parameter [scop...

Kamo·2mo ago
Fixkamo-marketing

Show cents on an add-on rate that has them

Additional Storage is $2.50 per 10 GB block, and the catalog stores that as a number — so 2.50 arrives as 2.5 and rendered straight into the card it read "+$2.5...

Kamo·2mo ago
FixInitializerService

Settle Additional Storage at $2.50 per 10 GB block

Confirms the block size and rate as $2.50 per 10 GB rather than the $4 per 25 GB the production row had drifted to. The seeder, the catalog row, the Stripe pric...

Kamo·2mo ago
FixInitializerService

Price Additional Storage as $4 per 25 GB unit, FLAT not metered

Additional Storage is bought by the unit, belongs to no plan on any tier, and is not seat-based. The seeder still described it as $2.50 per 10 GB block, which i...

Kamo·2mo ago
Fixkamo-internal

Stop offering Business the add-ons it already includes

Choosing Business still presented video conferencing, the AI assistant, the HR system and e-signatures as things to buy, even though the plan bundles all four. ...

kamo·2mo ago
FixInitializerService

Bind add-ons to the app they sell, and stop Business granting mail free

**************** is the column **************** matches on. KamoCRMPricingLoader never wrote it, so every KamoCRM add-on row has it NULL and that comparison can...

Kamo·2mo ago
FixBillingService

Stop selling add-ons the chosen plan already includes

The catalog has always recorded which add-ons a plan bundles, in **************** — Business and Enterprise carry video conferencing, the AI assistant, the HR s...

Kamo·2mo ago
Fixkamo-internal

Let the SSL check lower the flag, not only raise it

checkDns only ever latched sslConfirmed to true. A domain whose stored flag was set under the old any-one-host rule therefore kept a green SSL card and an unloc...

kamo·2mo ago
FixSecurityService

Verify-dns answers for the present, not for a stored flag

The endpoint skipped probing entirely when ssl_confirmed was already true, on the reasoning that under the all-hosts rule it could only have been set when every...

Kamo·2mo ago
FixSecurityService

Re-verify domains already marked SSL-confirmed, and heal them

findAwaitingVerification filters confirmed domains out by design, so once ssl_confirmed was set nothing ever looked at that domain again. That was fine while th...

Kamo·2mo ago
Fixkamo-internal

Open the swatch's own colour window, not the first on the page

The swatch reached its hidden <input type="color"> through document.getElementById on an id built from the picker's translated label. A label is only unique ins...

kamo·2mo ago
Fixkamo-internal

Stop the colour group fighting the colour you are choosing

ModernColorGroup was controlled and uncontrolled at the same time. It kept local state for every slot, mirrored the `value` prop into that state in one effect, ...

kamo·2mo ago
Fixkamo-internal

Read the new org's id when it arrives quoted

The last step of the wizard appeared to do nothing, and clicking Create a second time answered that the organization already exists — because the first click ha...

kamo·2mo ago
FixSecurityService

Make post-commit org setup actually write, and heal the orgs it missed

A @Transactional method called from **************** does not open a transaction of its own. Spring fires those callbacks from processCommit BEFORE cleanupAfter...

Kamo·2mo ago
FixSecurityService

Confirm SSL only when every org host has its own certificate

Certificates are minted one per FQDN -- a single dnsName each, so the leaf CN matches the hostname the browser connected to -- and auto-cert works through an or...

Kamo·2mo ago
Fixkamo-internal

Show per-host certificate progress, not a single spinner

Certificates are issued one per subdomain, and they do not all land at once, so the SSL step now reports how many of the org's hosts are live and names the ones...

kamo·2mo ago
Fixkamo-internal

Point frame media at an endpoint that actually serves it

Every photo and video in a picture frame rendered as a broken image. The URL pointed at **************** I took that for a general imaging proxy — it speaks HT...

kamo·2mo ago
FixSecurityService

Serve frame media ourselves, with Range

Every photo rendered as a broken image. The URL pointed at MediaService's **************** which I took for a general imaging proxy because it spoke HTTP Range....

Kamo·2mo ago
Fixkamo-internal

Make the Spirit Animal visible, and stop the palette vanishing

Two reports, two different mistakes of mine. THE PATTERN WAS INVISIBLE. It painted behind the pane, and every pane surface — FeatureCard, LauncherParentCard, W...

kamo·2mo ago
August 22, 2026
FixInitializerService

Drop the frozen ordinal CHECKs that were failing every new enum value

imgs_assoc_id_check allowed assoc_id 0..13. ImageAssocType.PICTURE_FRAME is ordinal 14, so EVERY Picture Frame upload violated it. Hibernate writes CHECK (col ...

Kamo·2mo ago
FixSecurityService

Stamp last_login so "Last Login" stops reading Never

Nothing in SecurityService has ever written users.last_login. The write lived in the retired AuthenticationService and was not carried over when authentication ...

Kamo·2mo ago
Fixkamo-internal

Stop /validate and /logout from mounting the signed-in shell

A load of / showed a burst of 401/403 before the session settled — user-info, ui-preferences, by-department, chat/unread, timezone/effective and tickets/pending...

kamo·2mo ago
FixSecurityService

Restore the status endpoint the frontend has been polling

kamo-internal polls GET /api/security/session/god-mode once on mount and every 60s thereafter. That endpoint was removed in 9c70cb7 along with the rest of the t...

Kamo·2mo ago
Fixkamo-internal

Stop the drag preview from driving itself into a render loop

Dragging a pane sometimes threw React #185 and left the page scrolling to the bottom forever, undoing every attempt to scroll back up. One cause, two symptoms....

kamo·2mo ago
Fixkamo-internal

Bucket the history by the member's day, not the browser's

groupByDay built its day key from getFullYear/getMonth/getDate, which read the machine's calendar rather than the member's. With createdAt now parsed as the UTC...

kamo·2mo ago
Fixkamo-internal

Restore the timezone fix, and take chat-core 0.1.5 / net 0.1.1

5d1cc23e was committed through a stale private index and reverted ec881208 wholesale — serverTime.ts, the member-timezone provider, the guard and all 216 call-s...

kamo·2mo ago
Fixkamo-internal

Render every timestamp in the member's zone, read every one as UTC

A direct message sent at 3:33 AM Pacific displayed "10:33 AM" — the raw UTC clock, printed as though it were local. Two independent defects, present together on...

kamo·2mo ago
Fixkamo-internal

Stop the master-note ring sweeping a gradient across the launchpad

LIVE ON PRODUCTION since b9b1fe08. The org master note's ring was a conic gradient in a pseudo-element sized 150% by 150%, centred and rotating once every six s...

kamo·2mo ago
Fixkamo-internal

Make the pane logo visible, and stop the two seeding passes racing

Two bugs, either of which alone would have shown no logos. IT WAS PAINTED BEHIND FROSTED GLASS. The mark went in at z-index 0, under the pane's content — where...

kamo·2mo ago
Fixkamo-internal

Do not offer form fields on files that cannot carry them

Replacing the two buttons dropped the isConverted gate the old "Edit PDF" had, so Modify offered form-fillable editing on audio and video — where there is no re...

kamo·2mo ago
Fixkamo-internal

A form fillable row can still be opened in the editor

I had disabled "Edit In Form Fillable Mode" on a form-fillable row, which contradicts the rule: its fields stay editable in every tool the editor has — what a f...

kamo·2mo ago
Fixkamo-shared-library

Do not bill an org twice for a version that owns no bytes

The org storage total is SUM(fileSize) over Img rows, and a derived version points at its original's ImgDat while copying its fileSize — so every modified versi...

Kamo·2mo ago
Fixkamo-internal

Restore the pane fill fix reverted by 006fea03

006fea03 was a DocManager change built from a tree that predated 791b99a5, so it carried all eight of that commit's files back to their previous blobs. Its own ...

kamo·2mo ago
Fixkamo-internal

Let a pane's contents fill the size the member gave it

A resized widget grew its frame and left its contents the size they were. The cause was one missing declaration. Adding the colour control and the resize handl...

kamo·2mo ago
Fixkamo-internal

Send the event's instants, and keep the end after the start

The two datetime fields hold offsetless wall-clock text and the API binds them to a java.util.Date, so the server read them in ITS zone — UTC. A member setting ...

kamo·2mo ago
FixEmailService

Actually move an event when its calendar is changed

The dialog has always offered a calendar picker when editing and the PUT has always carried the chosen calendarId, but updateEvent had no parameter for it — so ...

Kamo·2mo ago
Fixkamo-internal

Widgets are configured by security rights, and nothing else

The timecard widget's rights mirror moves under MANAGE_TIMECARDS, so all five widgets have one shape. The availability-hook machinery is removed with it — useA...

kamo·2mo ago
FixSecurityService

Drop the universal seed; the timecard widget follows MANAGE_TIMECARDS

UNIVERSALLY_SEEDED_RIGHTS is removed entirely. It existed only because the timecard widget had no parent right to inherit from, and now it has one — so the widg...

Kamo·2mo ago
Fixkamo-shared-library

Put the timecard widget under the HR group, like every other widget

TIMECARD_TODAY_WIDGET now hangs off MANAGE_TIMECARDS instead of being a root, so all five widgets have the identical shape the calendar ones set: a parent data ...

Kamo·2mo ago
Fixkamo-shared-library

Restore the CRLF line endings in CalendarEventAttendeeRepository

A scripted edit rewrote the file through a text API, normalising all 62 CRLF line endings to LF and turning a 15-line addition into a 139-line diff. The content...

Kamo·2mo ago
Fixkamo-internal

Restore the CRLF line endings in calendar.ts

A scripted edit rewrote the file through a text API, which normalised every one of its 257 CRLF line endings to LF and turned a 45-line addition into a 559-line...

kamo·2mo ago
August 21, 2026
Fixkamo-internal

Removing from Selected Docs unchecks the row

The mirror ran one way. Removing a document deleted the binder item but left its checkbox ticked in the grid, so the next sync — on the very next visit to the t...

kamo·2mo ago
Fixkamo-internal

Stop rounding document ids into nothing

A document id is a 19-digit int64 — 1200096283020258886, some 133x past Number.MAX_SAFE_INTEGER. OrganizerTab joined the selection into a key so the effect woul...

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