Live Change Log

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

17,848
Total Changes
4,568
Features
4,508
Fixes
32
Projects
Filter by project
All Projects17,848AIService110APIService138BillingService132ConversionService85DaemonService107DocsService189ESigService78EmailService347InitializerService299KBService73KlusterServices539MCPGatewayService43MediaService459RAGService61SecurityService1,515TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,548kamo-login318kamo-marketing580kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI522Chore670Docs226Feature4,568Fix4,508Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
September 6, 2026
FixInitializerService

Drop the frozen type_id CHECK that blocked every bug thread

`media_sessions` is created by Hibernate's ddl-auto, not by a migration, so it carries the constraint ddl-auto writes for an `@Enumerated(ORDINAL)` column β€” fro...

KamoΒ·4d ago
FixInitializerService

Stop the operator seed re-granting revoked platform rights

Rights taken away from a platform administrator on Platform Admins came back on their own days later, which read from the console as a save that would not stick...

KamoΒ·5d ago
August 28, 2026
FixInitializerService

Let a seeded org omit its year established

createOrg took the year as a primitive int, so every seed had to supply one even though YEAR_EST is nullable and the field is optional platform-wide. Integer, s...

KamoΒ·2w ago
FixInitializerService

The invoice takes REVOKE DELETE, not REVOKE UPDATE

attachPdf writes PDF_BLOB_ID after the finalize transaction commits, on purpose: rendering inside it would hold the document-counter row lock across a MinIO rou...

KamoΒ·2w ago
August 27, 2026
FixInitializerService

State the company phone column defaults where IF NOT EXISTS cannot swallow them

The 2026-08-27 run proved the ADD COLUMN ... DEFAULT FALSE never applied: ddl-auto builds the SessionFactory before any CommandLineRunner, so Hibernate had alre...

KamoΒ·2w ago
FixInitializerService

Volume bands stop pricing seats the plan does not sell

Starter admits 5 seats and Business 25, but the bands ran to 25 and 100 β€” four of the six priced seat counts nobody could reach. Starter's 10%-off-at-11 tier wa...

KamoΒ·2w ago
FixInitializerService

KI would not compile against the shared library on main

VendorDTO.uid became a String β€” a Long in the database, a string on the wire β€” and this call site still handed it to **************** which is a server-side req...

KamoΒ·2w ago
FixInitializerService

Drop the CountryType frozen ordinal checks

CountryType has 196 constants, AFGHANISTAN(0) through ZIMBABWE(195), and every check written over it froze at 0..195. They are not one value away from failing -...

KamoΒ·2w ago
FixInitializerService

Seed Starter at 5 seats and Business at 25

The USERS rows read 25 and 100 while max_seats, the card headline and the plan quiz all said 5 and 25. The volume-discount bands that run past those ceilings ar...

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
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
August 25, 2026
FixInitializerService

Drop the frozen ordinal CHECK constraints Hibernate froze at create

Hibernate writes CHECK (col >= 0 AND col <= N) over an @Enumerated(ORDINAL) column at CREATE TABLE, where N is the highest ordinal that existed that day, and dd...

KamoΒ·2w ago
August 23, 2026
FixInitializerService

Settle Additional Storage at $2.50 per 10 GB block

Confirms the block size and rate as $2.50 per 10 GB rather than the $4 per 25 GB the production row had drifted to. The seeder, the catalog row, the Stripe pric...

KamoΒ·2w ago
FixInitializerService

Price Additional Storage as $4 per 25 GB unit, FLAT not metered

Additional Storage is bought by the unit, belongs to no plan on any tier, and is not seat-based. The seeder still described it as $2.50 per 10 GB block, which i...

KamoΒ·2w ago
FixInitializerService

Bind add-ons to the app they sell, and stop Business granting mail free

**************** is the column **************** matches on. KamoCRMPricingLoader never wrote it, so every KamoCRM add-on row has it NULL and that comparison can...

KamoΒ·2w ago
August 22, 2026
FixInitializerService

Drop the frozen ordinal CHECKs that were failing every new enum value

imgs_assoc_id_check allowed assoc_id 0..13. ImageAssocType.PICTURE_FRAME is ordinal 14, so EVERY Picture Frame upload violated it. Hibernate writes CHECK (col ...

KamoΒ·2w ago
August 15, 2026
FixInitializerService

The meet seed recomputes applied rights instead of waiting for a boot

Granting the two rights on org_role_rights changes nothing anybody can observe. member_rights_applied is the flattened snapshot the session and the server-side ...

KamoΒ·3w ago
August 14, 2026
FixInitializerService

Match the enum-whitelist CHECK sweep to the YugabyteDB rendering

dropStaleEnumWhitelistChecks() looked for '% IN (%', which is how CockroachDB stored a @Enumerated(EnumType.STRING) whitelist. PostgreSQL and YugabyteDB normali...

KamoΒ·4w ago
August 13, 2026
FixInitializerService

Point at YugabyteDB, and stop `mvn test` migrating production

The datasource still named port 26257. That is the retired CockroachDB, which is still running and still answering, so a run against it succeeds completely and ...

KamoΒ·4w ago
August 12, 2026
FixInitializerService

Start again, and stop the billing migration deleting its own index

KamoInitializer could not start at all. Hibernate detects CockroachDialect, whose supportsInsertReturning() and **************** are both false, so an @Id carry...

KamoΒ·4w ago
August 11, 2026
FixInitializerService

Recognise an existing CHECK constraint through Spring's wrapper

TrainingSchemaMigration @Order(43) has been aborting EVERY KamoInitializer run, silently withholding all 29 runners ordered after it (orders 45-112). Observed i...

KamoΒ·4w ago
FixInitializerService

Retry a serialization conflict instead of aborting the whole initializer

Found by running it. YugabyteDB performs online schema change, so a CREATE UNIQUE INDEX issued while Hibernate's ddl-auto pass is still settling can lose the ra...

KamoΒ·4w ago
FixInitializerService

Stop shipping a shared credential as a config default

The platform's shared password was baked in as the fallback for DB_PASSWORD and MINIO_ROOT_PASSWORD, so it lived in this repo and in the built image as well as ...

KamoΒ·4w ago
August 10, 2026
FixInitializerService

Widen the support topic assignment_strategy range CHECK to 0..3

SupportAssignmentStrategyType is @Enumerated(ORDINAL), so Hibernate emitted CHECK (assignment_strategy >= 0 AND assignment_strategy <= 2) on CREATE TABLE rather...

KamoΒ·4w ago
FixInitializerService

CockroachDB-only SQL that PostgreSQL rejects

CockroachDB spells the text type STRING; PostgreSQL and YugabyteDB use TEXT. 25 casts across native queries were still emitting CAST(x AS STRING) and ::STRING, ...

KamoΒ·4w ago
August 9, 2026
FixInitializerService

Only real entitlement roots get the platform app rows

Owning subscription plans was treated as proof of being an entitlement root. It is not: a customer org runs its own commerce markets and sells its own plans whi...

KamoΒ·4w ago
FixInitializerService

Same alias NPE in the initializer seeders

resolveAll() has no entry for a deprecated alias sharing an id with a live app, so looping ServiceType.values() and dereferencing the result would have thrown m...

KamoΒ·4w ago
August 8, 2026
FixInitializerService

Bind the rename cutover as a Timestamp, not a String

CockroachDB refuses <timestamp(6)> < <varchar> rather than casting, so the app-config repair threw on its first statement every boot: 'unsupported comparison op...

KamoΒ·4w ago
FixInitializerService

Repair the second name-persisted site of the LOS rename

**************** is @Enumerated(STRING) and holds RoleRightType names, so a default role granting mortgage stores "LOS_VIEW_PIPELINE". That is the third place t...

KamoΒ·4w ago
FixInitializerService

Bound the LOS rename repair to rows that predate the rename

The repair matched on the string alone and ran on every boot, so it stopped being idempotent the moment anyone granted the personal-loan app: a row holding 'LOS...

KamoΒ·4w ago
FixInitializerService

Master model honours a runtime retirement; drop a dead guard

provisionMaxedOutMasterModel force-enables every app for the platform org, and that breadth is deliberate β€” pre-launch dogfooding is what the model is for. But ...

KamoΒ·4w ago
FixInitializerService

Repair mortgage grants orphaned by the LOS to MLOS rename

ServiceType is persisted in two places and the 2026-08-08 rename only accounted for one. ORG_FEATURES.FEATURE_TYPE stores the numeric id, so keeping mortgage at...

KamoΒ·4w ago
FixInitializerService

Grandfather orgs already running a gated commerce market

Gating MORTGAGE behind MLOS made the gate unsatisfiable for tenants: MLOS is still PLANNING, and FeatureController.enable refuses a non-COMPLETED app for a chil...

KamoΒ·4w ago
FixInitializerService

Seed app entitlement for every root, and stop inventing plan tiers

Two defects found by checking prod before flipping kamo.entitlement.fail-open. Sign Pink is a second entitlement root (isPlatformProduct, with its own FREE/BUS...

KamoΒ·4w ago
August 6, 2026
FixInitializerService

Fail the run when a required UNIQUE index cannot be created

ensure() caught Exception and logged, so a failed CREATE UNIQUE INDEX reported success and the service booted with no uniqueness guarantee at all β€” the one outc...

KamoΒ·1mo ago
FixInitializerService

Scope empty binders to (MY_DOCS, '') not the owner's member id

The My Docs DocManager never passes an assocObjectId prop, so it always resolves and queries (3, ''). BACKFILL_EMPTY_SQL was scoping empty binders to (3, member...

KamoΒ·1mo ago
FixInitializerService

Correct javadoc on Hibernate ddl-auto behavior for NOT NULL columns

CockroachDB rejects ADD COLUMN ... NOT NULL without a DEFAULT on a populated table, so Hibernate's ddl-auto attempt fails (logged, non-fatal) rather than no-opp...

KamoΒ·1mo ago
August 3, 2026
FixInitializerService

Repair the quote-option FK defaults ddl-auto cannot reach

The existing dynamic sweep only covers nullable FK columns that already carry a FOREIGN KEY constraint. commerce_quote_options.quote_id is NOT NULL, so it is ex...

KamoΒ·1mo ago
July 30, 2026
FixInitializerService

Register **************** repositories

LeadService now eagerly wires MarketLosConnectionResolver, which requires the integrations.los repositories **************** KI's explicit @EnableJpaRepositorie...

KamoΒ·1mo ago
July 6, 2026
FixInitializerService

Mlos requirement single-live index keyed per-human (borrower_uid)

Drop the party-only **************** (it would reject a legitimate 2nd co-borrower requirement); create **************** on **************** Already applied to ...

KamoΒ·2mo ago
July 4, 2026
FixInitializerService

Scan mlos.intake repos (Β§5.A) + drop orphan mlos_aus_connection_config (D40)

- Add com.kamo.z.shared.mlos.intake to @EnableJpaRepositories β€” the Β§5.A **************** was component-scanned but not a JPA repo, aborting KI startup befo...

KamoΒ·2mo ago
June 30, 2026
FixInitializerService

Null-safe split of the AiPullThroughPolicy single-active index (doc 09 Β§8)

CRDB is NULLs-distinct, so the single (lender_profile_id, market_id) WHERE status='ACTIVE' index did NOT backstop the org-wide (market_id IS NULL) grain β€” two c...

KamoΒ·2mo ago
April 24, 2026
FixInitializerService

Use CockroachDB-compatible DROP INDEX CASCADE syntax

CockroachDB rejects ALTER TABLE ... DROP CONSTRAINT for UNIQUE constraints with: unimplemented: cannot drop UNIQUE constraint "uk_org_oauth_provider" using ...

KamoΒ·4mo ago
April 23, 2026
FixInitializerService

TeamMember is-a Member; drop bogus tm.getMember() calls

TeamMember uses JOINED inheritance β€” it IS a Member, no nested member field. The backfill was calling tm.getMember() which doesn't exist. Also switches the JPQL...

KamoΒ·4mo ago
April 20, 2026
FixInitializerService

Drop stale CHECK constraints on default-role-rights enum columns

Hibernate auto-generates CHECK (column IN ('VAL1', 'VAL2', ...)) constraints on CREATE TABLE for @Enumerated(EnumType.STRING) columns, freezing the enum's value...

KamoΒ·4mo ago
FixInitializerService

Add missing unique constraints for role-right upserts

**************** + syncSecurityModelRoleRights use `ON CONFLICT (role_id, right_type) DO NOTHING` and `ON CONFLICT (default_role_id, right_type) DO NOTHING`, wh...

KamoΒ·4mo ago
April 19, 2026
FixInitializerService

UPSERT SYSTEM email template rows on every run

Previously the seed runner only inserted rows that didn't exist, so canonical HTML changes never propagated to the DB. Now existing SYSTEM rows have their bodyH...

KamoΒ·4mo ago
April 18, 2026
FixInitializerService

Add dao.repositories to EnableJpaRepositories scan

EmailTemplateRepository lives under dao.repositories.email, not dao.repos, so it was not picked up as a Spring bean.

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