Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

17,980
Total Changes
4,641
Features
4,557
Fixes
32
Projects
Filter by project
All Projects17,980AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService385InitializerService301KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,527TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,598kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,326kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,641Fix4,557Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
July 28, 2026
FixSecurityService

Master Machine SSO uses a VNC connection, not RDP

guacd cannot render KRdp's H.264-only RDP GFX. buildAutoConnectUrl now mints a vncConnection() for Master Machine (192.168.4.46:5900, shared password). Linux/Wi...

Kamo·1mo ago
July 23, 2026
FixSecurityService

Pin RDP color-depth so KamoDesktop SSO reuses one xrdp session

The god-via-kamo-internal SSO path defines its Guacamole connection inline in the json-auth token, so the color-depth pin must live here too (kept in sync with ...

Kamo·1mo ago
July 22, 2026
FixSecurityService

Make org branding authz reachable (owner, god mode, or right)

Uploading a logo to a child org 403'd with no way to succeed: canManageOrgBranding only admitted the org owner, and the isGodModeActive fallback could never ret...

Kamo·1mo ago
FixSecurityService

Thread orgId into the rate-sheet version-spine read

The gateway relayed only investorId, so the upstream had nothing to scope by and returned another tenant's version spine for a foreign investor id. Its siblings...

Kamo·1mo ago
FixSecurityService

Stop pinning the expired wildcard-kamocrm-com secret

wildcard-kamocrm-com was a legacy multi-SAN secret that cert-manager orphaned when its Certificate was repointed at a per-host secret. Nothing renewed it and it...

Kamo·1mo ago
July 19, 2026
FixSecurityService

Stamp the borrower quote's actor from the session

The quote requires createdByMemberId and the browser must never supply it. memberId(req) is hoisted out of the party-check branch so it resolves for stewards to...

Kamo·1mo ago
July 18, 2026
FixSecurityService

Send AIService the secret it actually validates

The vision-capability proxy authenticated with internal.auth.secret, but AIService validates **************** — a different secret. Confirmed live: the console ...

Kamo·1mo ago
FixSecurityService

LoanTransactionService ctor gained LeadRealtimePublisher param

assignLoanOfficer now publishes the chat-routing event, so the service ctor takes a 10th arg (LeadRealtimePublisher). Update the unit test's direct instantiatio...

Kamo·1mo ago
July 17, 2026
FixSecurityService

Enforce ACTIVE member status on every session & off-boarding path

The ACTIVE-member login gate previously lived only in the password-login controller. Extend it to every session-minting path via the shared-lib ****************...

Kamo·1mo ago
FixSecurityService

Rate-lock commit gate + cross-org loan resolution + borrower vendor-order projection

Verified defects from the session review: - CRITICAL: commitLock hardcoded **************** which the RCE commit engine rejects with a 400 (only LOCK_ELIGIBLE...

Kamo·1mo ago
July 16, 2026
FixSecurityService

Mirror native e-sign completion to the disclosure stub + fix sent status

(1) BorrowerSignatureService now mirrors a terminal native envelope status back onto the locked disclosure stub (doc 05 §4.2 map) on the borrower's my-signature...

Kamo·1mo ago
FixSecurityService

Revive soft-deleted member pref on upsert instead of 500

Per-member UI preferences (nav layout, hex-head sizes, etc.) are stored one row per (member_id, pref_key) in MEMBER_UI_PREFERENCES, guarded by the unique constr...

Kamo·1mo ago
FixSecurityService

Accept X-***-Token header on my-networks + all-networks

getMyNetworks/getAllNetworks only read the OTK request-attr or the *** cookie, — no org beyond the device-exchanged primary ever loaded, and the active org had ...

Kamo·1mo ago
July 15, 2026
FixSecurityService

Trainer must not clobber its own claim or an operator's pause

After the atomic claim() bulk-updates the row to RUNNING, mirror that in the in-memory entity — the pool thread has no open session, so a later full-row save wo...

Kamo·1mo ago
July 13, 2026
July 12, 2026
FixSecurityService

Register mlos.notification JPA repos so SecurityService starts

EconsentService autowires DisclosureTextRepository **************** but that package was absent from @EnableJpaRepositories — the context failed to start, Crash...

Kamo·2mo ago
July 11, 2026
FixSecurityService

Prepare-signin authenticates on api.<root> — the auth path can't resolve the myloan.* alias

Same constraint as in-cluster login: provider resolution keys on the canonical api host, not the portal alias, so a correct password still 401'd.

Kamo·2mo ago
July 10, 2026
FixSecurityService

Preferred name fills AKA+first; pool entry publishes the realtime lead event

(1) The funnel's preferred name now writes nameFirstAKA AND stands in for nameFirst until the legal name arrives (owner rule) — it was landing on first name onl...

Kamo·2mo ago
FixSecurityService

Weld the LO chain — portal leads enter the accept-lead pool; accepted LO survives conversion

(1) PortalLeadService routes a portal lead into the credit-based assignment pool (requiresAssignment=true) the moment it has a contact point — portal leads were...

Kamo·2mo ago
FixSecurityService

Real soft-delete + reactivate-on-upsert for LOS connection; safe test-connection message

I1: view()/testConnection() now read via the shared-lib's active-filtered finder so a soft-deleted (market,provider) connection reads as "not configured" instea...

Kamo·2mo ago
July 9, 2026
FixSecurityService

Fail the upload if resize fails (no full-size fallback)

Reverts the store-original fallback: if ConversionService cannot resize the image, return 422 instead of storing the full-size original (a huge image would then...

Kamo·2mo ago
FixSecurityService

Fall back to the original image when resize fails

ConversionService can native-crash (libwebp-imageio SIGSEGV) or be unavailable, which made every member wallpaper upload fail ("Failed to process image" -> 500)...

Kamo·2mo ago
July 8, 2026
FixSecurityService

Include both desktops in every SSO token, deep-link to the chosen one

Each token carried only its own connection, so the browser's reused json session lacked the other one -> opening Windows after Linux gave 'connection does not e...

Kamo·2mo ago
FixSecurityService

Route borrower submit through the pipeline so it fires **************** (audit #3)

patchLoanFile's borrower submit (DRAFT->APPLICATION_TAKEN) now calls **************** instead of a raw updateLoanFile status set, so the submit produces the has...

Kamo·2mo ago
July 7, 2026
FixSecurityService

Resolve session from X-***-Token header in CallerSessionResolver

The kamo-internal -> APIService BFF path forwards the session as the X-***-Token header, but the resolver only read the X-OTK attribute or the *** cookie — so B...

Kamo·2mo ago
FixSecurityService

PatchLoanFile is no longer a status backdoor; unblocking a condition needs the underwrite right; clear cascades

**************** status changes are the pipeline state machine's job (POST /transitions enforces legal arrows + per-arrow role gate + open-blocking-condition ga...

Kamo·2mo ago
FixSecurityService

Inject KamoDesktop SSO env directly + wire guac-sso into tracked k8s deployment

- @Value reads KAMO_GUAC_SIGNING_KEY / DESKTOP_PASSWORD from env directly (runtime application.yml is configmap-mounted, so property indirection wouldn't bind...

Kamo·2mo ago
FixSecurityService

Borrower submit fires the Application-Taken side effects (doc checklist + notify)

The portal borrower submit is PATCH loan-file {statusId:2}, which bypassed the operator /transitions endpoint where the Application-Taken side effects live — so...

Kamo·2mo ago
FixSecurityService

Borrower cannot escalate loan-file status or edit the URLA after submission

Two related borrower-authorization holes on the self-service app endpoints: - Privilege escalation (#2): patchLoanFile applied any statusId with no caller-ri...

Kamo·2mo ago
FixSecurityService

Borrower self-create idempotency + orphan compensation; don't relay an empty checklist as success

MortgageAppController.create() borrower self-create branch: - Idempotency (#2): resume an existing owned DRAFT via findOwnedDraft instead of minting a duplica...

Kamo·2mo ago
FixSecurityService

Revert securityProvider to self-pointing; self-heal member applied rights

Two prod issues from the securityProvider-mirror change: 1. Enter-as-System-Member failed with "No membership in the organization's security provider" for e...

Kamo·2mo ago
FixSecurityService

Interpret lock LAST_EDIT_AT as UTC for epoch-millis expiry

dbNow() now returns DB-UTC wall-clock (now()::timestamp), so recover the absolute instant with toInstant(UTC) instead of the JVM default zone — keeps the browse...

Kamo·2mo ago
July 6, 2026
FixSecurityService

File new accounts under the org of the domain, not kamocrm

/register bound the new member's org to the request Host, but the org signal never survived the hop: kamo-register proxies every signup to the shared api.kamocr...

Kamo·2mo ago
FixSecurityService

Scope borrower's loan document-requirements to their own party

The enriched /document-requirements read authorized any party to the app and returned EVERY party's requirements, so on a joint loan a borrower saw the co-borro...

Kamo·2mo ago
FixSecurityService

Per-party vault authorization + per-party notification routing

The account vault held documents per-PARTY (shared human) but authorized access per-ACCOUNT — two HIGH multi-human defects on a joint loan: - PII leak / lockou...

Kamo·2mo ago
FixSecurityService

Pipeline per-transaction grouping was broken

TransactionSummaryDTO.loanUids carried LOAN-FILE uids, but the pipeline console keys rows on the APPLICATION uid — so grouping silently fell back to one row per...

Kamo·2mo ago
FixSecurityService

Member-vault upload was broken (access_level NOT-NULL)

The account-level imaging path had never actually run (0 vault Imgs in prod): uploadDocument was passed accessLevel=null. Pass CONFIDENTIAL for borrower PII (ID...

Kamo·2mo ago
FixSecurityService

Satisfy-across confused-deputy IDOR + account party self-heal

- HIGH: satisfy-across gated on the path partyId but fanned out over the DOCUMENT's own party downstream; verify the document belongs to the authorized party ...

Kamo·2mo ago
FixSecurityService

Self-heal party links before enriched requirement read

listDocumentRequirements calls ensurePartyLinks so requirement rows always carry an accountBorrowerPartyId (the borrower upload/satisfy target).

Kamo·2mo ago
July 5, 2026
FixSecurityService

Default-product set failed — HQL bulk UPDATE disallows the vendor→org join

setDefault used a bulk 'update LeadVendorProduct ... where p.vendor.id in (subquery)' — Hibernate bulk updates reject the implicit association join, so the call...

Kamo·2mo ago
FixSecurityService

Borrower self-create = createBlank then stampOwnershipAndGet (two txs)

Sequence the borrower ownership stamp as a separate service call after createBlank commits, so the new borrower/declarations graph is flushed before the account...

Kamo·2mo ago
July 3, 2026
FixSecurityService

Close residual cross-org existence oracles + cap WORM-bound JSON blobs

Adversarial-review findings MLOS-W-01/03/04: - the 404-normalized empty list envelope now echoes the request's identity keys **************** so unknown, fore...

Kamo·2mo ago
FixSecurityService

Atomic claim before lead creation — prevent orphan pooled leads

social.lead.new can be processed concurrently (old + new SecurityService pod both hold a core-NATS subscription during a RollingUpdate → one publish delivered t...

Kamo·2mo ago
July 2, 2026
FixSecurityService

Fail-closed tenant guard on underwriting waivers/validations

Review found the org guard was a no-op on the common empty-list case for the by-id waivers/validations reads (which the MLOS service does not org-filter), leaki...

Kamo·2mo ago
FixSecurityService

Gate FFA acceptability on suspension in available-summary + available

available-summary now resolves the member's allotment and skips the product when suspended BEFORE the free-for-all short-circuit, and available() gates creditOk...

Kamo·2mo ago
FixSecurityService

Accept leadId as string in createPost to preserve CRDB id precision

Lead IDs are CRDB unique_rowid() values that exceed JS MAX_SAFE_INTEGER. The frontend now sends leadId as a string; parse both String and numeric forms so findB...

Kamo·2mo ago
FixSecurityService

Correctness, scale & PII hardening in LeadImportController

- dedup via scoped LeadRepository query instead of findAll() over all tenants (was an OOM/DoS + cross-tenant exposure risk, re-run per 1000-row batch) - cap i...

Kamo·2mo ago
July 1, 2026
FixSecurityService

Set site region + use node-local MinIO per pod

- Add kamo.minio.region (MINIO_REGION, default us-west-ca-s-1) so SigV4 signatures match the server's enforced site region; fixes background upload and sett...

Kamo·2mo ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing