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 26, 2026
Featurekamo-internal

Paint each tab from its organization's alias, not from the hostname

The theme base was built from a hostname: drop the leading label, join the rest with dashes, and that is the bucket folder. It answered correctly while every or...

kamo·2mo ago
FixMediaService

A child org's lobby offers its own backgrounds, not the platform's

The folder holding an org's meeting backgrounds and theme config was derived from a hostname — the request's, or the org domain the sidecar passed — by taking t...

Kamo·2mo ago
FixESigService

The signer app gets the sender's brand, not Kamo's

Two separate ways the same wrong assumption showed up. The signing page's logo URL was https://<org fqdn>/theme/logo-full.<ext>, which is not a path anything s...

Kamo·2mo ago
FixEmailService

Build the org logo URL from its alias, not its domain

Transactional email is sent to real inboxes, so the header and footer logos have to resolve without any client-side theme JavaScript — they are built exactly th...

Kamo·2mo ago
FeatureSecurityService

Provision an organization's branding under its alias, and migrate what exists

The folder every logo, colour, favicon and background is written to was the organization's hostname with the dots turned into dashes. A domain is optional now, ...

Kamo·2mo ago
Fixkamo-shared-library

Editing top-level lines no longer deletes every option's lines

Quote.lineItems is orphanRemoval=true and option rows set both quote and option — which is why QuoteMapper filters on getOption() == null twice. A bare clear() ...

Kamo·2mo ago
Fixkamo-shared-library

An option quote keeps the tax and shipping staff entered

recalculate zeroed taxTotal and shippingTotal whenever a quote had options. Both were still stored on the row and still rendered by QuoteMapper, so a staff memb...

Kamo·2mo ago
Fixkamo-shared-library

Terminal guards on cancel and revise, and stop swallowing bad input

cancel() and revise() had no isTerminal() guard, so an ACCEPTED quote could be flipped to CANCELLED or REVISED while acceptedAt and acceptedByName survived — a ...

Kamo·2mo ago
Testkamo-shared-library

Actually exercise the terminal guards

The test that shipped with them asserted only that an ACCEPTED quote reports itself terminal — true before the guards existed and still true if both were delete...

Kamo·2mo ago
Featurekamo-shared-library

An organization's branding lives under its ALIAS, not its domain

The folder an organization's logo, colours, favicons and backgrounds are written to in the public bucket was its hostname with the dots turned into dashes — wen...

Kamo·2mo ago
Featurekamo-internal

A tap opens the tool, a right-click opens its menu

Clicking a hex head opened a context menu, which meant the common act — get my chat back — cost two clicks, and the menu itself was reachable no other way. The ...

kamo·2mo ago
Fixkamo-internal

A healthcare market could not be edited

The edit screen still built its picker by mapping over a hardcoded array of seven verticals. HEALTHCARE was not among them, so a healthcare market opened to a s...

kamo·2mo ago
Fixkamo-internal

Gate the population-level surfaces on their own rights

EXPORT_PATIENT_DATA, VIEW_QUALITY_MEASURES and MANAGE_PATIENT_PORTAL were added to Java in August and never mirrored into the client enum, so RoleRightType.THE_...

kamo·2mo ago
Docskamo-internal

Define SW4's behaviour for a market-less quote

Task 1 made create() read marketUid but did not backfill, so every quote that exists today still has a null market. The converter must fall back to PurchaseLine...

kamo·2mo ago
Fixkamo-shared-library

Stop dropping the market and the customer account

CreateQuoteRequest has always declared marketUid and accountUid and QuoteService.create has never read either, so Quote.market and Quote.customerAccount were NU...

Kamo·2mo ago
Fixkamo-internal

The clinical rights were ungrantable

The permission editors render one section per enabled app and filter each role's rights by that section's serviceType. There was no EHR section, so all ~30 clin...

kamo·2mo ago
Chorekamo-internal

Follow Java — the EHR is TESTING in both mirrors

Java moved the app off PLANNING now the vertical is built. Neither mirror is read for its stage — consumers match on id and copy comes from GET /api/security/fe...

kamo·2mo ago
Chorekamo-shared-library

The EHR is in TESTING, not PLANNING

The vertical is built end to end — charts, scheduling, notes, orders, results, claims, FHIR and bulk export, C-CDA, TEFCA exchange, quality measures and the pat...

Kamo·2mo ago
Docskamo-internal

SW4's billing choice is per-org configuration

Owner's call, and the right one: a maintenance contractor bills each period, a capital-equipment installer bills the term up front. Either hard-coded choice cha...

kamo·2mo ago
Featurekamo-internal

Hand the patient a link, not a token

The invitation now has somewhere to go — the portal lives on apps.<practice> — so the panel shows the whole activation URL with a copy button rather than the op...

kamo·2mo ago
FixAIService

Remove the unreviewed-reply unread-count endpoints

Paired with the kamo-internal removal of the AI unread badge: the count never told the member anything actionable (no push channel backs it, so non-zero only ev...

Kamo·2mo ago
Fixkamo-internal

Remove the AI unread-count indicator entirely

It never told the member anything actionable: AIService has no push channel for assistant replies, so a nonzero count only ever meant "you minimized the window ...

kamo·2mo ago
Featurekamo-internal

Release the record as FHIR as well as C-CDA

§164.524(c)(2)(ii) is the form and format the individual requested if it is readily producible. Both were already producible; only one was offered. A C-CDA is ...

kamo·2mo ago
FeatureSecurityService

$everything records a disclosure when a recipient is named

The whole chart in one response is the largest single thing this system hands out, and until now it wrote a PHI audit row and nothing else. That was right for t...

Kamo·2mo ago
Fixkamo-internal

The new workspace is opened by a click, from /network

Creating an org disabled the form, did the work, and then appeared to do nothing: no new tab, and the button back to reading "Create Organization". window.open...

kamo·2mo ago
Featurekamo-internal

The unread badge goes red, pulses, and sits on the hexagon

Three things, all about a badge nobody notices. It was `--presence-color`, so it was GREEN whenever the member was online — the one state in which it is least ...

kamo·2mo ago
Featurekamo-internal

Bank reconciliation on the healthcare revenue cycle

The last EHR endpoint without a caller, and it belongs beside the other six revenue-cycle queues rather than anywhere new. The gap between posted and banked. A...

kamo·2mo ago
Docskamo-internal

Plan SW4, quote to order conversion

Five defects, not the spec's three. The converter deliberately does NOT mint a Commitment: processOrderPaid returns immediately when one exists, so hand-creatin...

kamo·2mo ago
Featurekamo-internal

Who asked — unrecognised callers and Part 2 disclosures

Two compliance queues that were recorded server-side and never shown. UNRECOGNISED CALLERS. Every inbound exchange request that could not be attributed to a pa...

kamo·2mo ago
Featurekamo-internal

Resolve duplicate records, and record the ones that are not

Registration prevents duplicates; nothing could fix the ones already there — from an import, a phone booking taken before the record was found, a married name. ...

kamo·2mo ago
Docskamo-internal

Record what the chat switcher column left undone

Ordered by what would hurt most if left alone. The first entry is the one worth from MediaService's, which was not looked at — five of the switcher's six bucket...

kamo·2mo ago
Fixkamo-internal

Patch a self-created session's guid back onto the window's props

When opened without a sessionGuid (launcher / nav / command palette), AiChatTool POSTs a new session and calls setSessionGuid(guid) but never told the tool-wind...

kamo·2mo ago
Fixkamo-internal

Switcher column opts out of presence it cannot honestly show

Passes showPresence={false} to its ConversationsPane mount. This column renders under ToolDock, a sibling of **************** (see ToolProviders.tsx's own doc c...

kamo·2mo ago
Fixkamo-internal

Thread showPresence to rows, and gate the empty state on prefsLoaded

- Adds `showPresence` (default true), forwarded to every ConversationRow — the pane-side half of the switcher-column presence fix (see ConversationRow's own...

kamo·2mo ago
Fixkamo-internal

Row honors showPresence, and formats a TEXT preview's E.164 sender

Two whole-branch-review findings against this component: - ConversationRow always read **************** directly. Mounted inside the switcher column (a sibli...

kamo·2mo ago
Fixkamo-internal

Give the Chats tab pane a definite height, not just min-height

The chats-tab motion.div had `height: undefined` (only `minHeight: '100%'`), so its containing block was auto-height and ConversationsPane's own `height: 100%` ...

kamo·2mo ago
Fixkamo-internal

Close review round 1 on the chat-switcher column

- ChatSwitcherColumn: move the collapse preference's PUT out of the setCollapsed updater into the click handler itself. The updater was impure (it fired a f...

kamo·2mo ago
Refactorkamo-internal

One window per session, and the shared column

AI chat was the only tool deriving "maximized" from a ResizeObserver threshold instead of reading the flag every other tool reads, and the only one switching co...

kamo·2mo ago
Featurekamo-internal

A conversation switcher beside every maximized chat

ChatSwitcherColumn mounts ConversationsPane beside a maximized chat window's own content, so a member can switch conversations without leaving the window. ToolD...

kamo·2mo ago
Fixkamo-internal

Stop the fallback-bucket flash, guard the double-click

Review found the pane had dropped the old chats-list component's prefsLoaded gate: activeBucket started at initialBucket/DEFAULT_BUCKET and was handed to useCon...

kamo·2mo ago
Fixkamo-internal

A restored maximized window remembers where it came from

A snapshot written while a window was maximized used to lose what that window would return to, so a restored session's first conversation-switch dropped it in t...

kamo·2mo ago
Docskamo-internal

Close out SW3

Thirteen departures from plan. The two that mattered most: OrderLineItem .discountType should never have been a String, and exporting the DDL before applying it...

kamo·2mo ago
Testkamo-internal

Pin toSessionType and backendCategoryFor

Neither had a single caller in this file before now, despite being exactly the class of function its own header warns about: a one-character typo ('Text' for 'T...

kamo·2mo ago
Fixkamo-internal

Stop the text branch's retry storm, pin the observer re-root

voipApi.getConversations goes through apiCall, which throws on any non-2xx — unlike loadMore's other two branches, which fetch() directly and check res.ok. The ...

kamo·2mo ago
ChoreSecurityService

Rebuild against kamo-shared-library for the SW3 service work domain

An empty commit. A shared-library change reaches nobody until its consumers rebuild, and SecurityService hosts POSController and the order path — so without thi...

Kamo·2mo ago
Fixkamo-shared-library

Pin ServiceJob's join columns to INT8

Exporting the table's DDL showed org_id, engagement_id and customer_uid each emitted as INT8 DEFAULT unique_rowid() — inherited from the referenced key. Three f...

Kamo·2mo ago
Fixkamo-internal

Stop the previous commit's CRLF rewrite of memberColor

The previous commit's one-word doc-comment edit (dropping the ChatsList reference) rewrote the whole memberColor function from LF to CRLF: this file mixes line ...

kamo·2mo ago
Refactorkamo-internal

Render the shared pane, and widen to 550

NavTopPanel's Chats tab now renders ConversationsPane instead of the old ChatsList, keeping its own search field and passing **************** so members keep th...

kamo·2mo ago
Featurekamo-shared-library

The first FulfillmentPolicy implementation

FulfillmentPolicy has declared supports/createFromCommitment since it was written and a repo-wide grep returned exactly one line: the declaration. Its work was ...

Kamo·2mo ago
Featurekamo-internal

Visit preparation, cancellation, and vaccine lot recall

The last endpoints without a screen. CANCEL, beside no-show on the day. They were one action short of each other and they are not the same thing: somebody TOLD...

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