KamoCRM

Mabadiliko ya Tabianchi

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

17,543
Mabadiliko ya Jumla
6,017
Features ya
5,292
Wa
30
Miradi ya Miradi
Filter ya Mradi
Miradi yote17,543AIService257APIService174BillingService157ConversionService110DaemonService138DocsService223ESigService91EmailService581InitializerService329KBService151KlusterServices741MCPGatewayService254MediaService602RAGService79SecurityService1,855TranslateService62VOIPService249VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,359kamo-login336kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,666kamo-signer-monorepo56kamolos114
Filter ya aina
Aina zoteBuild16CI523Chore775Docs3,255Feature6,017Fix5,292Other994Performance165Refactor278Revert23Style42Test162Upgrade1
August 15, 2026
Fixkamo-internal

The analyzer could not see nested arguments — six rights were never decorative

26 unenforced becomes 20, and none of it is new enforcement. The six sales-agent rights have been gated the whole time: AiSalesAgentController checks them acros...

kamo·2mo ago
Featurekamo-internal

The editors say "Enforced as MANAGE_TIMECARDS" instead of "Not yet enforced"

One chip was carrying two different truths and misleading in opposite directions. Unbuilt means nothing checks the right and granting it does nothing. Supersede...

kamo·2mo ago
Docskamo-internal

Eleventh cluster triaged — employees, time off and schedules all stay

The first cluster whose honest answer is "no action", and two of the six looked deletable until the last check. TimecardService has one authentication boundary...

kamo·2mo ago
Fixkamo-internal

Let a failed branding save say what actually went wrong

"Save failed: Failed to save branding identity settings" discarded the status and body of a PUT that enforces the applied security model, so a 403 whose reason ...

kamo·2mo ago
Fixkamo-internal

28 unenforced becomes 26 — AI models and usage are gated

MANAGE_AI_MODELS gates all four endpoints of AiModelController and VIEW_AI_USAGE both of AiUsageController. Neither checked a right before, only org ownership. ...

kamo·2mo ago
Fixkamo-internal

30 unenforced becomes 28 — voicemail is gated, call routing is kept

VIEW_VOICEMAIL and MANAGE_VOICEMAIL now gate VoipVoicemailController, which asked for a right only when playing back a recording in a PHI organization and for n...

kamo·2mo ago
Featurekamo-internal

Let an org paint the home page logo a solid colour

Adds "Home Page Logo Overlay" to Branding on **************** directly above Background Watermark: No Overlay, White, Black, and every step of the org's own pri...

kamo·2mo ago
Fixkamo-internal

32 unenforced becomes 30 — mailbox administration gated, email logs deleted

VIEW_EMAIL_ACCOUNTS now gates the administrative reads on MailboxController and MANAGE_EMAIL_ACCOUNTS gates every write. Both were client-only before: the whole...

kamo·2mo ago
Featurekamo-internal

Put the note composer at the top of All Communications

The composer only existed on the Notes sub-tab, so writing a note about what you were reading meant leaving the tab you were reading it on. All now carries the ...

kamo·2mo ago
Fixkamo-internal

Keep a security model's app grants off the catalog

The Allowed Apps tab showed "Not Available" for every app and snapped back whenever another option was picked. loadModels() runs from a mount-only effect, so i...

kamo·2mo ago
Featurekamo-internal

Choose the new org's apps while creating it

Adds an Apps & Features step between Type and Basics. It lists the apps the chosen branch type's security model actually offers -- the forced ones as "Always in...

kamo·2mo ago
Fixkamo-internal

37 unenforced becomes 32 — CRM contacts and leads are gated

Contacts: all 26 endpoints of EmailService's ContactRestController now take the verb that names them. They checked ownership carefully and no right at all, with...

kamo·2mo ago
Fixkamo-internal

Stop the letter-fallback org logos from flashing

An org with no logo shows its initial, and on /network that initial blinked continuously. Three things stacked up. PlatformRightsProvider wraps the whole app, ...

kamo·2mo ago
Fixkamo-internal

41 unenforced becomes 37 — the document verbs are gated

CREATE, EDIT, DELETE_DOCUMENTS and MANAGE_STORAGE now gate DocsService's ImagingController and DocumentController and ConversionService's upload endpoints. The ...

kamo·2mo ago
Docskamo-internal

Sixth cluster triaged — documents span four services, and must not be seeded

CREATE, EDIT, DELETE_DOCUMENTS and MANAGE_STORAGE all have real live features, so nothing here is deletable. VIEW_DOCUMENTS is client-only in navRegistry, the s...

kamo·2mo ago
Featurekamo-internal

God accounts are protected on the platform admins list

Two rules the server enforces and this only mirrors: a god account's platform rights can be changed by another god and nobody else, and a god account can never ...

kamo·2mo ago
Fixkamo-internal

43 unenforced becomes 41 — the two notes placeholders are deleted

Mirrors the shared-lib removal of SHARE_NOTES (72) and MANAGE_NOTES_SETTINGS (73): the TS constants and the registry array, the one parent-map edge in both righ...

kamo·2mo ago
CIkamo-internal

Rebuild — the i18n guard raced the dictionary push

No source change. 9a5b5167 failed on eleven missing background-slideshow keys because the components reached main at 01:47 and the strings reached kamo-translat...

kamo·2mo ago
Fixkamo-internal

46 unenforced becomes 43 — the notes endpoints are gated

Fifth cluster. The Notes backend is KBService, not SecurityService: the entity sits under donotmodify/dao/beans/security/ and kamo-internal proxies /api/notes/*...

kamo·2mo ago
Fixkamo-internal

Stop a page-2 request from cancelling the folder you just opened

Junk, Trash, Archive and every custom folder showed the same mail — whatever was on screen before them. The server was not the problem: replaying listMessages a...

kamo·2mo ago
Fixkamo-internal

Let a granted administrator actually see Platform Administration

The section gate and the settings menu topic still asked useUserInfo's hasPlatformAdminAccess, which is owner-of-the-top-level-org or an open god-mode window an...

kamo·2mo ago
Fixkamo-internal

Send an operator with no Configuration tab somewhere real

SYSTEM_USER and MANAGE_UNIVERSE gate surfaces that are not tabs on this page, so somebody holding only those is a platform administrator the page guard admits a...

kamo·2mo ago
Featurekamo-internal

Platform Admins console gates every platform surface

Renames the System User tab to Platform Admins and turns it into what it was always standing in for: a list of the people who may operate the platform, each hol...

kamo·2mo ago
Fixkamo-internal

48 unenforced becomes 46 — meet create and join are gated

Fourth cluster of the 48, and it split three ways rather than the two the design predicted. The design attributed the enforced MANAGE_MEET_SETTINGS check to Ch...

kamo·2mo ago
Chorekamo-internal

Drop the now-unused Button import

kamo·2mo ago
Featurekamo-internal

Drop the Reset Filters button from the leads list

kamo·2mo ago
Fixkamo-internal

Draw the callback markers as soon as the summary loads

The summary lands after the grid has drawn its rows, and AG Grid keeps the cellRenderer a column was built with and only re-creates a cell when its row changes....

kamo·2mo ago
Fixkamo-internal

A deleted upload now falls back instead of going silent

The previous commit claimed a retired sound "degrades to the layer beneath it rather than to silence". It did not. `isKnownSoundId` accepts a custom id on shape...

kamo·2mo ago
Featurekamo-internal

Move the callback marker beside the contact name, add a Callback filter

The marker sits with the name because that is who the call is to, rather than in the id column where it pushed the ids out of line. The filter offers All / Sch...

kamo·2mo ago
Featurekamo-internal

Upload your own sound effects, at all three layers

The system could only ever play the thirty-nine tones it shipped with. Now any layer can add its own file — the platform's catalogue, an organization's, a membe...

kamo·2mo ago
Fixkamo-internal

48 unenforced — the six PLOS rights are gated now

Gating the LOS proxy made PLOS_* enforced, but they stayed on the unenforced list, so the editors were showing 'Not yet enforced' against six live gates. Third ...

kamo·2mo ago
Featurekamo-internal

Let the sender edit the meeting invite email subject

The invitation subject was fixed at "<host> from <org> invited you to a meeting" and built inside the send route, so nobody could say what the meeting was actua...

kamo·2mo ago
Docskamo-internal

Third cluster triaged — Meet splits in two

All five Meet rights have real running features, so none is a chat-channel case: kamomeet-deployment is live and Meet-jibri is deployed, making recording real i...

kamo·2mo ago
Fixkamo-internal

Put the callback marker after the lead id

Leading the cell with the marker pushed the id right on any row with a call waiting, so the ids no longer lined up down the column while scrolling.

kamo·2mo ago
Featurekamo-internal

Gate the personal-loan proxy on the PLOS rights

KamoLOS enforces nothing — no rights check anywhere in its source — so this proxy is the authorization boundary for the module, the position denyUnless occupies...

kamo·2mo ago
Fixkamo-internal

The meeting reminder reaches the bell, and pops once

MeetReminderPopup drew its own Snackbar from its own subscription to **************** Nothing else knew a reminder had happened: the bell stayed at zero, the de...

kamo·2mo ago
Docskamo-internal

Second cluster triaged — PLOS is implement, and cheap right now

The six PLOS_* rights have a real feature: KamoLOS is a full loan service. Not deletable. But nothing enforces any of them — no rights check anywhere in KamoLOS...

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

One calendar reminder, announced once

A reminder was arriving twice. The deck picks it up as a notification, and the older path picked it up as well: CalendarWebSocketContext opened a second STOMP c...

kamo·2mo ago
Featurekamo-internal

Subscribe to the course count instead of asking for it every minute

NavTop sums two counts into one obligation badge, and only the legal half was live. A member assigned a course — or excused from one by HR — kept the old number...

kamo·2mo ago
Chorekamo-internal

Drop the proxy route for an endpoint that never existed

/api/notes/statistics forwarded to a KBService endpoint NotesController does not implement, and nothing in the app ever called it — so the only thing it could d...

kamo·2mo ago
Testkamo-internal

Catch a template-built i18n key that next-intl cannot reach

The catalogue's keys contain dots, and they were written into en.json as literal flat keys. next-intl resolves by splitting on dots, so every one of the 46 even...

kamo·2mo ago
Featurekamo-internal

The bell tells the truth in every tab, not just the one you clicked in

The nav-top bell was live for arrivals and nothing else. Reads, dismissals, snoozes and deletions were applied to whichever tab the member clicked in and announ...

kamo·2mo ago
Refactorkamo-internal

The player is a module singleton, not a React value

Firing a sound read a context, which made every call site's POSITION IN THE TREE part of its correctness. A component rendered above SoundProvider got a no-op a...

kamo·2mo ago
Featurekamo-internal

Drop the three chat-channel rights from the frontend

Mirrors the shared-lib deletion: the enum mirror, its registry array, both hierarchy edges (ACCESS_CHAT -> CREATE_CHANNELS -> MANAGE_CHANNELS and ACCESS_CHAT ->...

kamo·2mo ago
Fixkamo-internal

A note is owned by a member, not by an account

Mirrors the API: NoteDTO now carries memberId in place of userId. A member is the signed-in account inside ONE organisation, so opening a different org shows a ...

kamo·2mo ago
Featurekamo-internal

One event-sound system, three layers, wired to what actually fires

There were two sound systems and neither knew about the other: four mp3s behind useChatSounds, and four synthesised tones behind notificationSound with a five-o...

kamo·2mo ago
Docskamo-internal

First cluster triaged — chat channels are vestigial

Implementing gates for the 57 started with chat and the cluster came back empty. CREATE_CHANNELS, MANAGE_CHANNELS and MODERATE_CHAT have no feature: chat is rea...

kamo·2mo ago
Testkamo-internal

Make 'do not hand-edit the unenforced list' enforceable

The list has been wrong four times (58 -> 52 -> 47 -> 57) and every single time because it was edited by reasoning instead of regenerated. The file already said...

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