Mabadiliko ya Tabianchi

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

17,865
Mabadiliko ya Jumla
4,581
Features ya
4,512
Wa
32
Miradi ya Miradi
Filter ya Mradi
Miradi yote17,865AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService348InitializerService299KBService74KlusterServices539MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,553kamo-login318kamo-marketing584kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter ya aina
Aina zoteBuild24CI522Chore670Docs226Feature4,581Fix4,512Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
August 27, 2026
FeatureBillingService

Refuse a self-serve Enterprise subscription

Enterprise is negotiated. Hiding the price is presentation; this is the boundary. A request naming the Enterprise plan is refused unless the caller holds ******...

Kamo·2w ago
FixVOIPService

A recording whose bytes are gone answers 410, not 500

Same split as the imaging proxy and the docs download. A call recording that is not in storage is permanently not there, and a player handed a 500 shows nothing...

Kamo·2w ago
FeatureSecurityService

Withhold Enterprise pricing from the catalog

Enterprise is negotiated with KamoCRM directly, so its rate is not ours to publish. Every surface that quotes a plan price reads this one endpoint - the public ...

Kamo·2w ago
FixDocsService

A document whose bytes are gone answers 410, not 500

The streaming download caught every storage failure as one unexpected error and returned 500, which tells a reader nothing and leaves a viewer with a blank erro...

Kamo·2w ago
FixMediaService

An attachment that cannot be read says so instead of 500ing

The imaging proxy already answers 410 for revoked access and for a removed message, but let openRange's IOException escape uncaught — so the one case where the ...

Kamo·2w ago
Featurekamo-internal

Show what the chart says before the prescription is written

The server now refuses a prescription that conflicts with a recorded allergy, a drug the patient is already on, or a patient nobody has ever asked about allergi...

kamo·2w ago
FeatureKlusterServices

CouchDB and RabbitMQ on k3m1

CouchDB q=8 / n=1, verified live. q is fixed at database creation and KamoPBX creates a database per account plus monthly MODBs, so q is sized now for the event...

Kamo·2w ago
Featurekamo-shared-library

Tell "the bytes are gone" apart from "storage is down"

openRange collapsed every node failure into one IOException, so a caller could do nothing with it but return 500. A browser's <img>/<video>/<audio> cannot rende...

Kamo·2w ago
Featurekamo-shared-library

MANAGE_ENTERPRISE_SUBSCRIPTIONS

Enterprise is negotiated, never self-serve. This right gates both halves of that: seeing what it costs, and putting an organization on it. Category.OPERATIONS ...

Kamo·2w ago
Docskamo-internal

Correct four SW6a claims, one measured false

A plain @Autowired List of an interface with no implementations does NOT resolve to an empty list — it throws UnsatisfiedDependencyException. Measured, not reas...

kamo·2w ago
Docskamo-internal

Correct three SW6a claims, one of them measured false

An earlier draft said a plain @Autowired List of an interface with no implementations resolves to an empty list. It throws UnsatisfiedDependencyException — meas...

kamo·2w ago
Fixkamo-shared-library

Actually call the fulfillment policy

SW3 implemented FulfillmentPolicy as the first member of an interface that had none, and nothing ever called it — a grep across kamo-shared-library and Security...

Kamo·2w ago
Refactorkamo-internal

The tab's own session names its organization; `?org=` leaves the URL

Builds directly on 05ff51b3, which established the right source of truth — the tab asks its own session which workspace it is in, over a call the per-tab token ...

kamo·2w ago
FeatureSecurityService

Check the chart before writing a prescription

Prescribing was added with the allergy table, the interaction-checking query and a "safety context" endpoint all sitting beside it, unread. A system that record...

Kamo·2w ago
Chorekamo-marketing

Rebuild to pick up the early-bird offer copy

The dictionary change landed after the last build, and messages/ is pulled at build time.

Kamo·2w ago
Fixkamo-marketing

The seat headline read a default, not a ceiling

The card printed "Up to 5 users" from plan.maxSeats, directly above its own feature list reading "Users (25)" and a comparison column reading 25 - the same card...

Kamo·2w ago
FixInitializerService

Catalog rows that made the pricing page contradict itself

COMMERCE_POS is ServiceType.POS(21), whose real name is "Lines of Business" - the umbrella switch for what an org sells, rents, services or lends. It was labell...

Kamo·2w ago
FixSecurityService

A CCD preview is not a disclosure

Previewing a summary recorded a disclosure naming the recipient — so a patient asking who has their record under §164.528 would be told it went to somebody who ...

Kamo·2w ago
FeatureKlusterServices

Phase 0 infrastructure gate

- TURN over TLS on 5349 with a real cert (turn-kamocrm-com-cert). Without turns:, a customer behind a 443-only egress firewall has no media path. Verified e...

Kamo·2w ago
ChoreSecurityService

Rebuild for SubscriptionPlanFeatureDTO.unit

The catalog stores a unit per feature and the DTO now carries it, so the pricing page can render "15 GB per user" instead of a bare 15. Shared-lib reaches a ser...

Kamo·2w ago
FixInitializerService

Three catalog rows that made the pricing page contradict itself

Seat counts. The plan card headline reads max_seats ("Up to 5 users") while the feature list beneath it and the comparison table read the USERS feature row, whi...

Kamo·2w ago
Featurekamo-shared-library

Carry a plan feature's unit to the buying surfaces

The catalog has stored a unit per feature all along - "GB/user", "users", "contacts" - and the plan-feature DTO dropped it, so every surface rendering a measure...

Kamo·2w ago
Fixkamo-marketing

The page contradicted itself, and the calculator billed email per user

Included-in badge named the wrong plan. All four per-seat modules are included in Business and Enterprise, and the badge picked the FIRST id in includedInPlanId...

Kamo·2w ago
Docskamo-login

FreePBX is deprecated (Decision 4 revised)

No migration and no permanent coexistence. KamoPBX stays on k3m1 whose host netns is empty, so it needs none of FreePBX's ports and no shutdown is required. Des...

Kamo·2w ago
Docskamo-internal

Plan SW6a, and split SW6 into three

The spec calls SW6 'wire the finished UI', which assumed a backend existed to wire to. ServiceJob, ServiceVisit and ServiceLineItem's new columns have zero runt...

kamo·2w ago
Testkamo-internal

Pin the two form rules that fail silently

Both decide what NOT to send, which is the half of a form with no visible symptom when it goes wrong. A blank remittance line must not become a zero. Every lin...

kamo·2w ago
RefactorSecurityService

One request-body parser, not three

The three clinical write controllers each grew their own string/uuid/integer/ date helpers within a week of each other — identical except for which ones each fi...

Kamo·2w ago
Docskamo-login

KamoPBX implementation plans (programme + 9 phases)

Decomposed into one plan per phase; a single plan would not produce working software until the end. Full bite-sized TDD detail: Phase 0 infrastructure gate ...

Kamo·2w ago
BuildSecurityService

Rebuild against the storage dedup fix

Picks up kamo-shared-library d21e01ce. uploadDocument — the path behind member documents, mortgage disclosures, picture frames and media streams here — created ...

Kamo·2w ago
BuildMediaService

Rebuild against the document upload fix

Picks up kamo-shared-library d21e01ce, which landed minutes after the previous build. The chat-attachment path already has f848f394; this carries the second hal...

Kamo·2w ago
BuildDocsService

Rebuild against the storage dedup fix

Picks up kamo-shared-library d21e01ce. uploadDocument created its ImgDat with isMissing=false BEFORE sending the bytes, and its @Transactional did not roll back...

Kamo·2w ago
BuildConversionService

Rebuild against the storage dedup fix

Picks up kamo-shared-library d21e01ce. uploadDocument created its ImgDat with isMissing=false BEFORE sending the bytes, and its @Transactional did not roll back...

Kamo·2w ago
Docskamo-login

Record KamoPBX decisions — KAZOO confirmed, k3m1 placement, ACDc, Tier 3 rebrand

Six open questions answered: 1. KAZOO is the route; hardware owned, so cost framing removed entirely. 2. One node/cluster now, three later — CouchDB q=8 from da...

Kamo·2w ago
Fixkamo-shared-library

The document upload publishes its row only once the bytes land

The buffered uploadDocument was the one store that wrote its ImgDat with isMissing=false BEFORE sending anything, and merely re-set it to false after a successf...

Kamo·2w ago
BuildMediaService

Rebuild against the storage dedup fix

Picks up kamo-shared-library f848f394. A chat attachment whose upload failed left an ImgDat row that later uploads of the same file deduplicated against, so the...

Kamo·2w ago
Fixkamo-shared-library

A failed upload must not become a dedup match

A member sent an 11 MB .wav to a chat, got "Cannot invoke ObjectWriteResponse.etag() because response is null", sent it again, and the second one delivered inst...

Kamo·2w ago
ChoreKlusterServices

Drop dead rate.loans and priceturbo.com from static provisioning

Both have had ACME challenges stuck pending for 47-54 days. The ratestack estate they proxy to has been scaled to 0 since 2026-08-04, so nothing can answer HTTP...

Kamo·2w ago
FixKlusterServices

Bound the Go heap with GOMEMLIMIT and declare a real memory request

Root cause of the crash-loop was not a leak. The 485Mi steady state that kept tripping the old 512Mi limit was two normal things stacked: ~350Mi Go heap at ...

Kamo·2w ago
Docskamo-internal

Close out SW5

Six departures. The sharpest: the task-book proxy could not be copied from the quotes proxy, which exports PATCH and no PUT — a verbatim copy would have made ev...

kamo·2w ago
FeatureKlusterServices

Swap the inbound greeting to KamoCRM-Main-Intro-2

Uploaded as a new file rather than overwriting the old one, so rolling back is a one-line change to KAMO_ATTENDANT_INTRO plus a dialplan reload — no re-upload n...

Kamo·2w ago
ChoreSecurityService

Rebuild against kamo-shared-library for the SW5 task book

An empty commit. ServiceTaskBookService and the four task-book entities live in the shared library; ServiceTaskBookController cannot resolve them until Security...

Kamo·2w ago
Featurekamo-internal

Author a flat-rate task book, priced by the minute

Replaces the SW5 placeholder pane with the real authoring surface: three sub-views on one tab — books, categories, entries — following the SubView switcher Mark...

kamo·2w ago
Docskamo-internal

BaseLosController's unauthorized()/forbidden() do exist

A task brief told an implementer those helpers were invented and did not exist. requireOrgId genuinely does not; those two do, declared protected static on Base...

kamo·2w ago
FeatureSecurityService

Right-gated task book API

SW5 Task 3, controller half. CRUD for books, categories, tasks and options, plus GET /{bookUid}/tasks/by-code/{code} - the lookup a quote or work order performs...

Kamo·2w ago
Featurekamo-shared-library

Task book service with org-scoped CRUD and code resolution

SW5 Task 3, library half. ServiceTaskBookService exposes books, categories, tasks and options behind an org-scoped API, plus resolveTaskByCode - the lookup a qu...

Kamo·2w ago
Featurekamo-internal

Un-gate pricing, tax and tiers for service markets

A SERVICE market got exactly three tabs — Overview, Vendors, Agreements. Customers, Tax & Shipping and Discounts & Pricing were all gated on commerceType === 'R...

kamo·2w ago
Featurekamo-internal

Apply a remittance to a claim

"Unapplied money" is money the payer has sent that nobody attached to a claim, and the queue could only be looked at. POST_INSURANCE_PAYMENTS gated an operation...

kamo·2w ago
FeatureSecurityService

Find a claim by the number a payer quotes

Posting a remittance needs the claim it settles, and a remittance carries no internal id — only the number the practice sent. Without this lookup, applying mone...

Kamo·2w ago
Fixkamo-internal

An inbound call reads properly and respects the status pill

Three things wrong with the softphone tool window's incoming-call overlay. The number was painted exactly as the INVITE carried it, so a caller arrived as "+15...

kamo·2w ago
Featurekamo-internal

Four things that could be looked at and not done

Each of these had a working endpoint, a client function, and no way for a person to reach it. Closing an order loop. The open-loops queue exists because the or...

kamo·2w 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