Mabadiliko ya Tabianchi

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

17,933
Mabadiliko ya Jumla
4,614
Features ya
4,543
Wa
32
Miradi ya Miradi
Filter ya Mradi
Miradi yote17,933AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService373InitializerService300KBService74KlusterServices546MCPGatewayService43MediaService461RAGService61SecurityService1,523TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,579kamo-login319kamo-marketing585kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,322kamo-signer-monorepo50kamolos102
Filter ya aina
Aina zoteBuild24CI523Chore670Docs226Feature4,614Fix4,543Other6,781Performance136Refactor274Revert23Style48Test70Upgrade1
May 12, 2026
Fixkamo-login

Resolve subdomain-tenant org bucket to its own MinIO folder

getThemePath() was reducing the hostname to apex+tld for both the themed host and the bucket folder, so subdomain tenants like gnosia.demo.kamocrm.com loaded th...

Kamo·4mo ago
Fixkamo-internal

Route NavTop picker through /me/language

The picker called the generic member PUT, which SystemUserGuard 403s for the System User signed into a sub-org. The catch logged silently, so the kamo-locale co...

kamo·4mo ago
FixSecurityService

Add /me/language endpoint that bypasses SystemUserGuard

The NavTop language picker did nothing for the System User signed into a sub-org: PUT **************** runs SystemUserGuard first, which 403s every System-User ...

Kamo·4mo ago
Fixkamo-internal

Resolve subdomain-tenant org bucket to its own MinIO folder

getThemePath() was reducing the hostname to apex+tld (mainDomain.tld) for both the themed host AND the bucket folder. For subdomain tenants like gnosia.demo.kam...

kamo·4mo ago
Fixkamo-internal

Stop clipping dark-variant color inputs in ModernColorGroup

Color picker rows had a hardcoded 280px wrapper inside a 1fr 1fr grid with overflow:hidden, so the input was chopped on narrow columns. Use flex:1 + minWidth:0 ...

kamo·4mo ago
Fixkamo-internal

Treat thrown subscription stub as no-subscription, not error

The legacy getCurrentSubscription stub throws by design so callers fall back to the ungated path. StatsManager was surfacing the throw as "Could not load subscr...

kamo·4mo ago
Fixkamo-internal

Return empty meters instead of null from getCurrentUsage

StatsManager rendered <UsageMeters usage={null}> when the legacy stub resolved to null, crashing on usage.meters. Return { meters: [] } so the component takes t...

kamo·4mo ago
Fixkamo-internal

Gate My Account slide-out section on CONFIGURE_SYSTEM

Hide the "My Account" menu from members who lack CONFIGURE_SYSTEM so they don't see links (Stats & Costs, Apps & Features, Branch Types, Automation Streams) tha...

kamo·4mo ago
Fixkamo-internal

Auto-route child-org owners to their permitted org

When /settings/account loads for a user who lacks CONFIGURE_SYSTEM on the current org, the previous behavior was a silent redirect to /settings — a dead-end for...

kamo·4mo ago
Fixkamo-internal

Use full FQDN, not eTLD+1, when fetching org by domain

registrableDomainFromAlias strips any multi-label subdomain (e.g. "gnosia.demo.kamocrm.com") down to its eTLD+1 ("kamocrm.com"). That was fine for the API base ...

kamo·4mo ago
FixKlusterServices

Preserve full FQDN for subdomains deeper than two labels

organize_by_root() was extracting only the first label and the last two labels from each Traefik-logged hostname. For the common two-level case (login.b11capita...

Kamo·4mo ago
FixSecurityService

Never gate Kamo-owned subdomains on TXT ownership

Child orgs that picked a Kamo web alias (e.g. gnosia.demo.kamocrm.com) were getting "TXT record found but verification code doesn't match" in the DNS setup UI. ...

Kamo·4mo ago
Fixkamo-internal

Don't show global loading overlay for client-handled forms

NavigationInterceptor's submit listener treated any form whose form.action was truthy and method=get as a navigation, and called setLoading(true) on the global ...

kamo·4mo ago
FixSecurityService

Grant top-level org owners cross-org delete/update access

deleteDomain and updateDomain previously rejected platform admins operating on child-org domains because they checked isUserOwnerOfOrg against the target org di...

Kamo·4mo ago
May 11, 2026
FixSecurityService

Allow deleting per-org *.kamocrm.com subdomains

The endsWith(".kamocrm.com") guard blocked every demo org from swapping its platform subdomain (e.g. gmosia.demo.kamocrm.com) for a custom domain. The platform ...

Kamo·4mo ago
FixKlusterServices

Advertise new public IP 47.181.8.83 for external media

JVB-k1m1 was advertising 75.83.113.11 and coturn was advertising the node's LAN IP via status.hostIP — both broke external WebRTC media now that the public WAN ...

Kamo·4mo ago
Fixkamo-shared-library

Guard admin-essential rights + re-seed roles on template edit

HIGH: **************** now refuses to persist a NUKE or FORCE_NUKE setting on any of the ADMINISTRATOR template's admin-essential rights (CONFIGURE_SYSTEM, MANA...

Kamo·4mo ago
FixSecurityService

Propagate child-org-creator admin status to parent-org membership

When a user creates a child org they become its owner + admin (via **************** Their PARENT-org membership, however, is whatever it was before — typically ...

Kamo·4mo ago
Fixkamo-internal

Wrap toolbar and shrink search/date so New Event stays on-page

Toolbar packed too much fixed-width content into a single non-wrapping flex row; with the parent main area set to overflow: hidden, the right section (New Event...

kamo·4mo ago
Fixkamo-internal

Read *** from master after session refresh to avoid replica lag

The previous fix had /api/user-info call /api/security/session/refresh before reading Redis, but the read went through readKsemJsonFromRedisWithRetry which uses...

kamo·4mo ago
Fixkamo-internal

Track tab by name + refresh session before reading user-info

Two related navigation bugs that both manifest as "the wrong tab opens": 1. SettingsView tracked the active tab by *index*. childrenArray can recompose ...

kamo·4mo ago
FixKlusterServices

Replace heredoc with grouped echos so YAML literal block parses

The /etc/odbc.ini heredoc body sat at column 1, which dedented out of the surrounding startup.sh: | literal-block scalar and broke `kubectl apply` of the Config...

Kamo·4mo ago
FixKlusterServices

Follow rclone remounts via HostToContainer mount propagation

Without slave propagation the pod captures the FUSE bind mount once at container start; if rclone-mount.service restarts on the host, the pod keeps pointing at ...

Kamo·4mo ago
Fixkamo-internal

Gate Docs tab on VIEW_DOCUMENTS / MANAGE_DOCS_SETTINGS

Mirrors the Email + Phone tab gates. A member without VIEW_DOCUMENTS (basic user-level access) and without MANAGE_DOCS_SETTINGS (admin) no longer sees the Docs ...

kamo·4mo ago
Fixkamo-internal

Gate Email + Phone tabs on rights, gate VOIP config edit, periodic session refresh

Adds the missing right-gating so a basic Member without ACCESS_MAIL / ACCESS_VOIP can no longer see the Email & Mailbox or Phone Settings tabs on their own acco...

kamo·4mo ago
May 10, 2026
Fixkamo-internal

Align Type/Name/TTL fields by moving TTL hint to a tooltip

The TTL field rendered its 'use 1 hour if your registrar shows a dropdown' hint as a paragraph below the input. That column ended up taller than Type and Name, ...

kamo·4mo ago
Fixkamo-internal

SSL card stops claiming records are verified before they are

The SSL card had two states (installing / complete) so the "installing" copy ("All required records are verified, we're installing the certificate now") was sho...

kamo·4mo ago
Fixkamo-internal

Remove header gap, ungate subdomains, drop registrar picker

- Move DnsProvisioningPanel inside DnsSetupStudio so the empty px:4 pt:3 wrapper around it (which created a band of whitespace above the hero when the panel...

kamo·4mo ago
Fixkamo-internal

Land on parent's /setup/dns after org create

The wizard previously redirected the creator to **************** right after POST /api/security/org returned. The new org's domain has no DNS yet, so the redire...

kamo·4mo ago
Fixkamo-shared-library

Drop CountryTypeConverter from EmbAddress.country

The converter writes the enum name (e.g. "UNITED_STATES") as a String, but every table embedding EmbAddress (orgs, users, members, user_addresses, account_addre...

Kamo·4mo ago
Fixkamo-register

Only show Account Recovery seed phrase step for under-13

Why: 13+ users already provide email, phone, and security questions as recovery methods, making the seed phrase step redundant for them. Under-13 accounts have ...

Kamo·4mo ago
FixKlusterServices

Scale to 2 replicas to absorb sync + runtime traffic

A single replica is the bottleneck for the dictionary sync workflow: each gunicorn worker handles one request then auto-restarts (~5-10s window of connection-re...

Kamo·4mo ago
FixTranslateService

Bump LibreTranslate per-call timeout to 90s; keep single-translate backward-compat

Two follow-ups to the retry/failedKeys change: 1. Per-call request timeout was 30s. Production has runtime callers (chat, notifications, etc.) hitting the s...

Kamo·4mo ago
FixTranslateService

Retry transient errors and surface failed keys (don't fake passthrough)

Two failure modes were indistinguishable in the response, so the script couldn't tell them apart and kept "translating" the same keys to English on every sync r...

Kamo·4mo ago
FixTranslateService

Alias zh -> zh-Hans so en->zh actually translates

LibreTranslate's /languages endpoint advertises Chinese under the region-specific codes "zh-Hans" and "zh-Hant" (never bare "zh"), even though POST /translate a...

Kamo·4mo ago
May 9, 2026
FixEmailService

Preserve original filename and content type on attachment download

The **************** endpoints (both the personal and shared-mailbox controllers) were emitting Content-Disposition: attachment with no filename parameter and C...

Kamo·4mo ago
Fixkamo-internal

Broken inline images, attachment downloads, and view-pane flicker

- Strip <img> with cid: src in the email sanitizer so embedded images don't render as a flickering broken-image icon, and hide images that fail at runtime v...

kamo·4mo ago
FixTranslateService

Drive supported targets from /languages, not stale list

The hardcoded SUPPORTED_TARGETS claimed sw/ta/etc. were supported, but no public argos packages exist for those, so every en->sw / en->ta translation request hi...

Kamo·4mo ago
FixKlusterServices

Drop unrecognized --workers arg causing crashloop

The libretranslate CLI does not accept --workers, only the gunicorn process inside it does. Passing it caused the pod to fail argparse on boot and CrashLoopBack...

Kamo·4mo ago
May 1, 2026
FixMediaService

Publish NATS CREATE event after transaction commit to fix image attachment race

The NATS message was published inside the @Transactional body, which meant recipients could receive the CREATE event and request the image via /imaging/proxy/{o...

Kamo·4mo ago
FixMediaService

Serialize attachments in WS relay and message history; allow attachment-only sends

Three bugs fixed: 1. ChatSessionSubscriptionManager was building the STOMP messageMap manually and omitting attachments, sourceLanguageId, readMemberId, msg...

Kamo·4mo ago
Fixkamo-shared-library

Add attachments and event fields to ChatMessageDto; ignore unknown fields

ChatMessageDto was missing `attachments`, `readMemberId`, `msgIdLastViewed`, `dateLastViewed`, `addedMemberId`, `objImgId`, `transitMemberId`, and `isJoin` fiel...

Kamo·4mo ago
FixMediaService

Fix NPE in getChatSessions from Map.of() rejecting null nextcoder

java.util.Map.of() throws NullPointerException when nextcoder is null (no more pages). Replace with HashMap that accepts null values. Also wrap entire handler i...

Kamo·4mo ago
Fixkamo-internal

Defects C/D/E — title display name, toolbar layout, header lift

Defect C: Add GET proxy for /sessions/{guid}/members so ChatBox.loadMembers() can populate the SessionMember.name field. ChatTool already uses members[0].name f...

kamo·4mo ago
FixMediaService

Fix upload 500 (missing EmbRecordState) and empty chats tab (Timestamp cast)

Defect A: ChatAttachmentService.upload omitted **************** causing a NOT NULL violation on imgs.is_active. Added the default recordState. Also hardened Cha...

Kamo·4mo ago
FixMediaService

Prefer usernameAlias over User.name in memberDisplayName

Switches display name priority to: Member.usernameAlias → User.name → User.alias → User.username. Also includes the paged query dispatch fix from the previous c...

Kamo·4mo ago
Fixkamo-internal

Show upload error toast in Composer when attachments fail

Catches errors thrown by uploadAll() and renders an MUI Alert above the input row. Root cause of Defect 4 was the missing MinIO bucket (imaging-chat-attachments...

kamo·4mo ago
Fixkamo-internal

Empty Chats tab — frontend already expects {rows} paged shape (no change needed)

The ChatsList component already reads data.rows. Backend fix (shared-lib + MediaService) is the root cause: HAVING CAST(null AS TIMESTAMP) IS NULL did not work ...

kamo·4mo ago
FixMediaService

Use split First/After queries for chat sessions paged endpoint

Addresses empty Chats tab by dispatching to ****************

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