KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

17,374
Total Changes
5,891
Features
5,258
Fixes
30
Projects
Filter by project
All Projects17,374AIService242APIService174BillingService157ConversionService110DaemonService137DocsService223ESigService91EmailService568InitializerService329KBService151KlusterServices738MCPGatewayService235MediaService592RAGService79SecurityService1,822TranslateService62VOIPService248VectorService11kamo-apps26kamo-asterisk-support27kamo-capcha17kamo-capcha-widget4kamo-internal8,321kamo-login335kamo-marketing641kamo-nowww20kamo-register213kamo-shared-library1,631kamo-signer-monorepo56kamolos114
Filter by type
All TypesBuild16CI523Chore773Docs3,252Feature5,891Fix5,258Other993Performance165Refactor278Revert23Style42Test159Upgrade1
October 19, 2026
Testkamolos

Fixtures stamp the god-mode window's end; an elapsed window is not elevated (shared SessionPlatformFacts expiry)

LosRightsFilter reads the window through the shared SessionPlatformFacts, which now also needs godModeExpiresAt ahead (kamo-shared-library 1.6.1). The open-wind...

KamoΒ·4d ago
October 18, 2026
Fixkamolos

A broken servicing rule answers 409 with its own words, not a 500 (SITP TP22)

The services refuse with plain exceptions (offer must be DRAFT to send, draw would exceed credit limit, reason is required, an unknown id's orElseThrow), which ...

KamoΒ·5d ago
Featurekamolos

A loan's assessed fees can be read, so a fee can be named to waive it (SITP TP22)

GET /api/los/fees/by-loan/{loanId}: the loan's fees (late, NSF, annual), newest first, waived or not; PLOS_VIEW_PIPELINE (LosRightsFilter, as every read) and th...

KamoΒ·5d ago
Fixkamolos

A loan offer is drafted only on the organization's own product and borrower, the aging report counts only its loans, and staff acts are the organization's (SITP TP22)

- POST /api/los/offers: the product must be the caller's organization's and the borrower a member of it (or of a child organization); a body naming another te...

KamoΒ·5d ago
Fixkamolos

KamoLOS checks the PLOS right and the organization on every route, and opens a one-time-key door (SITP TP02)

KamoLOS enforced no right: kamo-internal's /api/los proxy was the only gate. LosRightsFilter now applies the proxy's own requiredRight() table (LosRights) to ev...

KamoΒ·5d ago
Fixkamolos

Stop logging the database password at startup

com.zaxxer.hikari at DEBUG makes HikariConfig print its whole configuration on every start, including dataSourceProperties {password=...} and password......; Pr...

KamoΒ·5d ago
September 24, 2026
September 23, 2026
Chorekamolos

Scrub copies of live credentials from config and dumps

A sweep of every repo for the values of the cluster's live Secrets (2026-09-23) found copies here: the JWT signing secret as a `${JWT_SECRET:<literal>}` default...

KamoΒ·4w ago
September 16, 2026
Otherkamolos

Liveness probe on /actuator/health/liveness, not the DB-aware aggregate

The aggregate /actuator/health includes the DataSource indicator, so restarting the database failed liveness on every pod at once and restarted the whole platfo...

KamoΒ·1mo ago
Otherkamolos

Release idle Hikari connections now that YSQL pooling is shared

The connection manager no longer pins sessions **************** so idle app connections no longer each hold a database backend. Keep the pool maximum, but stop ...

KamoΒ·1mo ago
September 13, 2026
Fixkamolos

Accept OCI image indexes when resolving the built digest [skip ci]

The images are pushed as OCI image indexes, so asking the registry for a single image manifest only answered 404, the digest came back empty and the check faile...

KamoΒ·1mo ago
Fixkamolos

Restart when a same-commit rebuild leaves pods on the old digest [skip ci]

The rollout step tried to detect a same-commit rebuild by comparing the Deployment's image reference before and after `set image`. "Apply manifests" has already...

KamoΒ·1mo ago
September 5, 2026
Fixkamolos

Prove the deploy by digest, not by tag

The preceding commit stops `set image` being a silent no-op. This asserts the outcome: after the rollout, the tag is resolved to a digest at the registry and th...

KamoΒ·1mo ago
Fixkamolos

A rebuild of the same commit deployed nothing and reported success

The image is tagged with the commit SHA, so rebuilding the same commit produces an identical image reference. `kubectl set image` then changes nothing, the Depl...

KamoΒ·1mo ago
September 4, 2026
Featurekamolos

Lock every cron job that moves money, and run two pods

KamoLOS ran one pod and its ten cron jobs were correct only because of it. There is no ShedLock anywhere on this platform, so a second replica would have run ea...

KamoΒ·1mo ago
Fixkamolos

Let a rollout finish what the old pod was doing

Deploys replaced the only pod of each service with nothing to catch the requests in flight. Three settings, applied across the fleet: - preStop sleeps 10s befo...

KamoΒ·1mo ago
August 25, 2026
Chorekamolos

Pin kamo-shared-library 1.6.0

The library moved to 1.6.0 while every consumer stayed on 1.5.0. Consumer CI builds the library from a fresh clone into a cold ~/.m2 and ci-settings.xml mirrors...

KamoΒ·1mo ago
August 16, 2026
Fixkamolos

Size the pod above its own JVM heap ceiling [skip ci]

The image starts the JVM with -XX:MaxRAMPercentage=70 -XX:+AlwaysPreTouch, so the heap alone may take 70% of the container limit and pre-touch keeps every commi...

KamoΒ·2mo ago
August 15, 2026
Featurekamolos

Enable ProxyHmacFilter β€” step 2, X-Org-Id is now a proven header

los.proxy-hmac.enabled has been falling through to its false default since this service deployed, so ProxyHmacFilter existed and never ran. X-Org-Id β€” the heade...

KamoΒ·2mo ago
Fixkamolos

Scope statements, draws and payments to the caller's organization

Same bug as LoanController.get(uid), repeated: these controllers took a loan id off the path and handed it to a repository, so GET /api/los/statements/by-loan/4...

KamoΒ·2mo ago
Fixkamolos

A loan id is not a credential β€” scope every LoanController read to the org

LoanController.get(uid) took a loan id and returned whatever it found. Any caller who reached the service got the loan, balances and borrower included, whicheve...

KamoΒ·2mo ago
August 10, 2026
Chorekamolos

Rebuild against shared-library @Lob LONGVARCHAR fix

Hibernate's PostgreSQL dialect read @Lob String columns as OIDs via getLong(). Affects notes, contacts, calendar, OAuth tokens, IMAP passwords, email campaign b...

KamoΒ·2mo ago
Featurekamolos

Point at YugabyteDB and use PostgreSQLDialect

CockroachDB has been replaced by YugabyteDB. Connection strings move from cockroachdb-public:26257 to yb-tserver-service:5433, and the Hibernate dialect from **...

KamoΒ·2mo ago
August 9, 2026
CIkamolos

Retry the shared-library build, which the LAN uplink keeps corrupting

Three builds died today on "Tag mismatch" pulling a jar β€” and the mirror added an hour ago did not help, because kbservice, mcpgatewayservice and ragservice hit...

KamoΒ·2mo ago
CIkamolos

Mirror Maven Central through the Google GCS copy

Every Docker stage starts from a cold ~/.m2 and refetches the whole dependency tree, so Central sees the full weight of every concurrent service build. It answe...

KamoΒ·2mo ago
August 8, 2026
Fixkamolos

Declare security matchers explicitly before the next build breaks startup

kamo-shared-library 1.5.0 was republished today with spring-ws-core as a new transitive dependency, so Spring Boot now auto-registers a second servlet (MessageD...

KamoΒ·2mo ago
August 3, 2026
Fixkamolos

Harden the kubectl download against flaky egress [skip ci]

dl.k8s.io over the runner's egress intermittently drops mid-transfer: curl: (56) OpenSSL SSL_read: decryption failed or bad record mac which fails the deploy ...

KamoΒ·2mo ago
July 1, 2026
June 30, 2026
CIkamolos

Fix kubectl-cache find aborting under set -e + point at unified cluster

- CACHED_KUBECTL=$(find ... | head -1) aborted deploy_k1m1 under set -e/pipefail when the runner .cache/act dir is absent (never reached the curl-install fall...

KamoΒ·3mo ago
June 26, 2026
Revertkamolos

Remove MLOS event-backbone wiring β€” KamoLOS is the personal-loans LOS, not MLOS

MLOS (mortgage) work must not touch KamoLOS (personal loans). The shared-lib com.kamo.z.shared.mlos.* substrate stays (generic, gated mlos.outbox.enabled=off); ...

KamoΒ·3mo ago
Featurekamolos

Adopt MLOS transactional outbox (producer path)

Enables the Phase-0 event backbone in KamoLOS: adds com.kamo.z.shared.mlos.event to the @EnableJpaRepositories scan, mlos.* config (mlos.outbox.enabled=true, ML...

KamoΒ·3mo ago
June 25, 2026
CIkamolos

Clone shared-lib with GIT_CLONE_TOKEN (not registry token)

The registry token authenticates to the k1m1 Docker registry (htpasswd), not to Forgejo git, so the shared-lib clone failed auth. Use the Forgejo git token like...

KamoΒ·4mo ago
CIkamolos

Build on k1m1 β€” clone shared-lib from k1m1, drop k2m1, fix image host

CI cloned kamo-shared-library from the retired k0m1:3000 Forgejo, so the build failed and los-service was never pushed to the k1m1 registry; it survived on a st...

KamoΒ·4mo ago
May 29, 2026
Featurekamolos

Per-offer overrides for rate, APR, and origination fee

LoanOfferCreateRequest gains three optional fields β€” interestRateBpsOverride, aprBpsOverride, originationFeeAmountOverride. createDraft applies them when set an...

KamoΒ·4mo ago
Fixkamolos

Default empty STRIPE_CONNECT_WEBHOOK_SECRET so KamoLOS boots

The configmap referenced **************** without a default, so Spring's placeholder resolver threw before reaching the Java-level **************** which alread...

KamoΒ·4mo ago
Fixkamolos

Track shared-lib LoanRepository β†’ PersonalLoanRepository rename

Updates every import and field type from LoanRepository to PersonalLoanRepository across 20 KamoLOS source files + 1 test (Lombok-injected field names stay as l...

KamoΒ·4mo ago
Featurekamolos

Tier 6+7+9+10 β€” frontend polish, org reports, OpenAPI, JaCoCo

T6 (frontend polish): - New /lib/format.ts: locale-aware formatCurrency / formatDate / formatDateTime / formatPercentBps via Intl APIs (replaces hardcoded t...

KamoΒ·4mo ago
Testkamolos

Tier 4 β€” LoanPaymentPostingService unit tests

Six mocked-repository unit tests covering the heart of the payment posting: - **************** payment of $100 against loan with $25 fees / $50 interest / la...

KamoΒ·4mo ago
Featurekamolos

Tier 5 compliance batch

- OfacSanctionsService: Jaro-Winkler fuzzy match @ β‰₯0.92 after exact-match pass. Hits surface similarity score. Configurable via los.ofac.fuzzy-threshold. - A...

KamoΒ·4mo ago
Featurekamolos

Tier 3 security + Tier 8 bug cleanup batch

T3 β€” Security: - New RateLimitFilter (Bucket4j): 1000/min per IP for webhooks, 10/min per session for offer accept/decoder/rescind, 60/min general. Register...

KamoΒ·4mo ago
May 28, 2026
Performancekamolos

Tier 2 β€” Hikari + RestTemplate timeouts + Stripe SDK + Redis cache

- RestClientConfig: single shared RestTemplate bean with 5s connect / 30s read timeouts. MediaServiceClient / NotificationDispatchService / OfacSanctionsSer...

KamoΒ·4mo ago
Fixkamolos

Tier 1 critical correctness pass

T1.1 Stripe disbursement strategy: TREASURY (stub β€” requires SDK upgrade or raw HTTP) / CONNECTED_ACCOUNT (Transfer.create β€” works in SDK 28.2.0) / MA...

KamoΒ·4mo ago
Featurekamolos

Final batch β€” compliance, packets, adjustments, Grafana, tests

Compliance: - MlaCheckService β€” Military Lending Act covered-borrower lookup against DoD MDC single-record query. Returns NotCovered if unconfigured so dev ...

KamoΒ·4mo ago
Featurekamolos

P2 batch β€” observability, tests, year-end tax, real Stripe IDs

Observability: - micrometer-registry-prometheus on the classpath - /actuator/prometheus exposed via management config (both local + k8s configmap) - LoanMetrics...

KamoΒ·4mo ago
Featurekamolos

P1 batch β€” webhooks advance state, crons, commerce vertical

Money movement (the core P1): - LoanPaymentPostingService: markSucceededAndPost / markFailed / markReturnedAndReverse / markDisbursementSucceeded / markDrawDi...

KamoΒ·4mo ago
Featurekamolos

P0 hardening β€” Stripe Connect endpoint + PDF flatten

- Fix EsignClient imports: EsignGenericEnvelopeRepository / EsignSignatureRepository live in .esign.repos, not .esign root - New StripeConnectController POST ...

KamoΒ·4mo ago
Featurekamolos

Initial personal-loan origination + servicing service

New Spring Boot 3.1.5 / Java 21 microservice modeled on BillingService. Owns personal-loan domain end-to-end: - LoanProduct / LoanOffer / Loan CRUD with REST +...

KamoΒ·4mo ago
May 21, 2026
Featurekamolos

Hide isActive=false programs from borrowers in real time

useProgramCatalog now filters out programs with isActive=false before returning them to the loan wizard. The flag is computed server-side as (base.isActive AND ...

KamoΒ·5mo ago
Fixkamolos

Drive journey sky from SkyToggle, unstack from personality chip

- Move SkyToggle to its own top-right row at top-14 so the slider stops overlapping LoGuideChip, which is positioned at right-14 assuming it only needs to c...

KamoΒ·5mo ago

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing