KamoCRM

Live Change Log

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

18,391
Total Changes
6,526
Features
5,537
Fixes
30
Projects
Filter by project
All Projects18,391AIService276APIService177BillingService161ConversionService117DaemonService146DocsService240ESigService93EmailService619InitializerService344KBService162KlusterServices769MCPGatewayService277MediaService620RAGService79SecurityService1,995TranslateService62VOIPService265VectorService11kamo-apps26kamo-asterisk-support28kamo-capcha17kamo-capcha-widget4kamo-internal8,691kamo-login342kamo-marketing642kamo-nowww20kamo-register213kamo-shared-library1,824kamo-signer-monorepo57kamolos114
Filter by type
All TypesBuild23CI525Chore794Docs3,286Feature6,526Fix5,537Other1,001Performance174Refactor281Revert23Style45Test175Upgrade1
August 20, 2026
FixDaemonService

Bump the processed counter instead of rewriting the endpoint

The job finished a batch by mutating totalProcessed on the endpoint entity it loaded before the batch began and saving the whole row. Two consequences: - it ...

Kamo·2mo ago
FixDaemonService

Persist each payload's outcome as it happens, not in one batch

processEndpointPayloads looped over the batch mutating statuses in memory and saved them all at the end. createLead commits per lead, so any failure of that fin...

Kamo·2mo ago
FeatureDaemonService

Let a mapped payload carry companyName and source

The intake job's direct-field switch stopped at vendorLeadID, so a mapping onto companyName or source was accepted by the UI, stored on the endpoint and then si...

Kamo·2mo ago
August 19, 2026
ChoreDaemonService

Rebuild against the shared-library lead id fix

This service creates leads through LeadService, so it hit the same failure as /leads/new: on a mortgage market Hibernate 6.2 emitted "insert into leads (...) re...

Kamo·2mo ago
August 16, 2026
FixDaemonService

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 14, 2026
FeatureDaemonService

Nightly payroll-provider sync job

Drives TimecardService's **************** which syncs every organization whose next sync is due. Cron lives here rather than in TimecardService because that de...

Kamo·2mo ago
August 12, 2026
FeatureDaemonService

Schedule the nightly timecard sweeps

Cron lives here rather than in TimecardService because that deployment is RollingUpdate with maxSurge: 1 — two pods overlap on every rollout and every @Schedule...

Kamo·3mo ago
August 11, 2026
FeatureDaemonService

The hourly training reminder tick

HOURLY at :10, unlike the legal sweep's daily 13:00. Training reminds each org at its OWN local send hour, and Organization.timezone spans 21 hours (Pacific/Hon...

Kamo·3mo ago
August 10, 2026
PerformanceDaemonService

Refresh planner statistics after the weekly GeoLite rebuild

YugabyteDB does not auto-analyze, and the staging+rename swap replaces geolite_blocks wholesale -- so after every Sunday sync the planner had no statistics for ...

Kamo·3mo ago
PerformanceDaemonService

Geolite range index must be ASC, not YugabyteDB's default HASH

The IP lookup is a range scan: WHERE network_start <= ? ORDER BY network_start DESC LIMIT 1 YugabyteDB partitions the LEADING index column by HASH unless tol...

Kamo·3mo ago
ChoreDaemonService

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·3mo ago
FeatureDaemonService

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·3mo ago
August 9, 2026
CIDaemonService

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·3mo ago
CIDaemonService

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·3mo ago
August 7, 2026
FeatureDaemonService

Daily legal-package reminder tick

DaemonService owns the tick because DocsService cannot. DaemonService is strategy:Recreate — the old pod is gone before the new one starts, so a deploy window c...

Kamo·3mo ago
August 5, 2026
ChoreDaemonService

Rebuild against kamo-shared-library 8f3c1ec

Picks up the intake-pool fix: LeadService.createLead now flags unowned leads with requiresAssignment so imported leads are counted by countAssignablePool and ca...

Kamo·3mo ago
FeatureDaemonService

Drive the mail-to-lead association sweep

Five-minute tick against EmailService's internal sweep endpoint, mirroring VoipGlobalSyncJob. The schedule lives here because EmailService runs several pods and...

Kamo·3mo ago
August 3, 2026
FixDaemonService

Annotate the injectable StewardNotifier constructor

DaemonService has been in CrashLoopBackOff for days — 1654 restarts on the pod before the last deploy, 60 on the current one — and never started: Failed to i...

Kamo·3mo ago
FixDaemonService

Scan the shared MFA repositories

MfaEnrollmentService is a @Service in kamo-shared-library, so the wildcard @ComponentScan("com.kamo") in this application constructs it whether or not this serv...

Kamo·3mo ago
FixDaemonService

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·3mo ago
July 27, 2026
FixDaemonService

Notify the ASSIGNED steward of a routed decision, via email

DECISION_ROUTED's steward notification was a record-only no-op: StewardNotifier fanned out over SMS to a static CSV **************** that is empty by default, a...

Kamo·3mo ago
July 17, 2026
FeatureDaemonService

Durable consumer forwards investor purchase to loan-file FUNDED

MlosLoanFundedConsumer subscribes **************** (durable daemon-mlos-loan-funded) and forwards each purchase to SecurityService's /funded pipeline endpoint v...

Kamo·3mo ago
FeatureDaemonService

Durable consumer forwards eClose completion to the loan-file pipeline

The DaemonService half of the eClose -> loan-file status seam. New MlosClosingCompletedConsumer subscribes **************** (durable daemon-mlos-closing-complet...

Kamo·3mo ago
July 12, 2026
FeatureDaemonService

Bump GENERATOR_VERSION 7 — backfill GBIF fauna into all cities

The bird engine now consumes the fauna block, so backfill it everywhere: the fill job re-drains stale rows at 24/min (user-requested cities first), so real loca...

Kamo·4mo ago
FeatureDaemonService

Sample locally-common birds from GBIF into city fauna

FaunaClient (mirrors PetrologyClient): GBIF occurrence facet on class Aves in a ~27km box around the city → top ~10 species by record count → resolve taxonomy (...

Kamo·4mo ago
FeatureDaemonService

63 US-ecoregion signature flora overrides (fully populate the biomes)

Cities within a state looked the same because flora came from just 15 coarse biome defaults (+1 Mojave override). Now curated real signature species for 63 US e...

Kamo·4mo ago
FixDaemonService

Crystalline/metamorphic basement classifies correctly (was VOLCANIC)

Macrostrat 'metamorphic and undivided crystalline (...may include volcanic...)' tripped the volcan substring; check metamorphic/crystalline before volcanic. Als...

Kamo·4mo ago
FixDaemonService

Ridge petrology search to 25km, no relief gate

The gazetteer point often sits in the valley floor with the range 15-20km off; the 15km search + relief gate missed them (Yucca Valley returned alluvium despite...

Kamo·4mo ago
FixDaemonService

Petrology reads the ridge bedrock, not the valley floor

A town centroid usually sits on valley ALLUVIUM while the mountains the scene draws are bedrock — so a granite-ringed desert town returned 'alluvium' and got no...

Kamo·4mo ago
FeatureDaemonService

Petrology (Macrostrat) + roads (.trf) + waterfalls (.hyf) — level up the KamoUniverse systems

GLiM never downloaded (PANGAEA 404s; KamoUniverse itself falls back to default lithology), so petrology comes from the Macrostrat global geologic-map API: per-p...

Kamo·4mo ago
FeatureDaemonService

City-scene sampler over the KamoUniverse earth tiles

- EdtTile: byte-exact reader for EDT4 tiles (Copernicus DEM + ESA WorldCover + WorldClim + HydroSHEDS + RESOLVE ecoregions + ocean mask), memory-mapped, offse...

Kamo·4mo ago
July 11, 2026
FixDaemonService

VoipGlobalSyncJob stamps the MLOS internal-auth secret VOIP actually validates

After the hostname fix the job 401'd: VOIP's InternalAuthFilter checks the mlos-internal-auth value, but the job read internal.auth.secret, which in DaemonServi...

Kamo·4mo ago
July 10, 2026
FixDaemonService

VoipGlobalSyncJob targeted a nonexistent host — kamovoip-service, not voip-service

Every minute the job failed DNS on **************** the actual Service (and what StewardNotifier already uses) is kamovoip-service. Fixed the configmap default ...

Kamo·4mo ago
FixDaemonService

Re-parent geolite config under daemon: so the weekly sync actually runs

Commit 53eed7b re-parented the geolite block under internal: while the code reads daemon.geolite.* — with SPRING_CONFIG_LOCATION replacing classpath defaults, G...

Kamo·4mo ago
FixDaemonService

Boot crash — Ant matchers for the multi-servlet context (spring-ws /services/*)

MVC-implicit string requestMatchers are rejected by Spring Security 6 once the MeridianLink integration's MessageDispatcherServlet joins the DispatcherServlet —...

Kamo·4mo ago
FeatureDaemonService

MeridianLink 60s inbound poll job

Drain the per-appCode modified-loans queue (collapsed to distinct (instanceBaseUrl, appCode) poll-units) and forward recognized field changes to SecurityService...

Kamo·4mo ago
July 4, 2026
FixDaemonService

Consumer review findings - MLOS secret, HTTP timeouts, max-deliver clamp, 4xx skip, boot rebind

Adversarial review (2 lenses; 5 verifiers died on a session limit - adjudicated the 9 raw findings by hand, 6 real): - WRONG SECRET (confirmed by hash compariso...

Kamo·4mo ago
July 3, 2026
FixDaemonService

Register JSR-310 on the consumer mappers - real envelopes carry an Instant occurredAt

E2E caught it: both real decision.routed events were dead-lettered as 'unparseable' because the bare ObjectMapper cannot deserialize java.time.Instant. findAndR...

Kamo·4mo ago
FeatureDaemonService

[03] MLOS read-side consumers - decision.routed steward fan-out + task.resolved seam (D26/D27)

The doc-03 read-router folded into the fleet's MLOS-consumer host (the only Recreate-strategy deployment - durable rebinds die under RollingUpdate), per the doc...

Kamo·4mo ago
July 1, 2026
FeatureDaemonService

Daily-allotment forfeit audit job (hourly, per-member timezone)

Records FORFEITED rows for members with drip allotments who did not sign in on their completed local day. Idempotent, yields to GRANTED rows. Compiles clean (mv...

Sage·4mo ago
ChoreDaemonService

Rebuild against latest kamo-shared-library

Sage·4mo ago
June 28, 2026
FixDaemonService

Recreate deploy strategy so NATS durable consumers rebind on deploy

DaemonService binds EXCLUSIVE JetStream durable consumers (daemon-sync-trigger, **************** [the §2.8 breach loop], daemon-recording-received) in @PostCons...

Sage·4mo ago
FixDaemonService

Enable OutboxRelay @Scheduled backstop + @Async hot path

DaemonService activates the MLOS transactional outbox (mlos.outbox.enabled) and produces events (the compliance-timer breach emitter), but lacked @EnableSchedul...

Sage·4mo ago
FixDaemonService

Register com.kamo.z.shared.mlos.event repos (OutboxWriter dep)

Enabling mlos.outbox activates OutboxWriter, which requires MlosOutboxEventRepository (+ ProcessedEvent /DeadLetter) from com.kamo.z.shared.mlos.event — add tha...

Sage·4mo ago
FeatureDaemonService

MLOS compliance-timer escalation consumer (BLOCKED→STALE)

The consumer half of the compliance-timer breach loop (doc 03 §2.8; emit half already ships). ComplianceTimerBreachConsumer subscribes (durable JetStream) to **...

Sage·4mo ago
June 26, 2026
FeatureDaemonService

DaemonService compliance-timer SLA sweep (timer adopter)

First adopter of the MLOS compliance timers: a Quartz job (every 5 min) calls **************** to flip ARMED-but-past-deadline ECOA (AdverseActionTimer) + Reg X...

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