Live Change Log

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

17,984
Total Changes
4,645
Features
4,557
Fixes
32
Projects
Filter by project
All Projects17,984AIService112APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService385InitializerService302KBService74KlusterServices547MCPGatewayService43MediaService462RAGService61SecurityService1,528TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,599kamo-login319kamo-marketing588kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,327kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI523Chore670Docs231Feature4,645Fix4,557Other6,781Performance136Refactor274Revert23Style48Test71Upgrade1
August 15, 2026
Featurekamo-shared-library

Rewrite the app catalog copy for the people who read it

The display name and description on ServiceType are the only description of an app most people ever see: an org admin on Settings -> Apps & Features, a parent-o...

Kamo·4w ago
Featurekamo-shared-library

Background_order column for the public slideshow order

Nullable VARCHAR; null resolves to sequential on every client, which is what every org had before the column existed. Plain String rather than an enum so a late...

Kamo·4w ago
Featurekamo-shared-library

Delete SHARE_NOTES and MANAGE_NOTES_SETTINGS, which name nothing

Notes are real, and as of today fully gated — VIEW, CREATE, EDIT and DELETE are enforced on every endpoint of KBService's NotesController. These two had nothing...

Kamo·4w ago
Featurekamo-shared-library

Platform rights as a spine of their own

Who may operate the platform has been three different answers in three different places — a system_user_access grant table, an owner check copied into each plat...

Kamo·4w ago
Featurekamo-shared-library

Uploaded sound effects, and the storage domain that counts them

EVENT_SOUND_ASSETS: a sound file somebody uploaded, ready to be assigned. Scope mirrors EVENT_SOUND_PROFILES exactly — same three layers, same SCOPE_ID conventi...

Kamo·4w ago
Featurekamo-shared-library

A kind for the meeting that is about to start

MEETING_REMINDER, so MediaService can raise the start-time nudge as a notification instead of a popup only it knows about. Its own kind rather than CALENDAR_EV...

Kamo·4w ago
August 14, 2026
Featurekamo-shared-library

Delete the three chat-channel rights — 196

CREATE_CHANNELS (74), MANAGE_CHANNELS (75) and MODERATE_CHAT (76) gated nothing and could not be implemented as written: chat is real but the platform has no ch...

Kamo·4w ago
Fixkamo-shared-library

Scope notes to a membership instead of an account

A note hung off USER_ID alone and carried no organisation at all. A user is global and a member is that user inside one organisation, so an account belonging to...

Kamo·4w ago
Featurekamo-shared-library

One table for the three layers of the event-sound stack

Platform defaults, an organization's overrides and a member's own are the same shape, so they are the same table: a scope, the id that scope is about, and the s...

Kamo·4w ago
Featurekamo-shared-library

Parent/child hierarchy for all 199 rights

RoleRightType has declared a 'parent' field and a public getParent() for years. Every constant passed null and nothing ever called it. This finishes that scaffo...

Kamo·4w ago
Featurekamo-shared-library

A note records whether it is rich text or plain text

The mode cannot be derived from the content. A rich note the member has not formatted yet serializes byte-for-byte identically to a plain one — both are a Lexic...

Kamo·4w ago
Featurekamo-shared-library

Org-level default legal text

LegalSettings is one row per organization carrying the wording a NEW legal package starts with. It is a DEFAULT, never a live reference: creating a package copi...

Kamo·4w ago
Featurekamo-shared-library

Let the history be queried by specification

The browsable history filters by kind and by whether a notification has been read, and those combine freely — which as JPQL is a query per combination, or one q...

Kamo·4w ago
Fixkamo-shared-library

Stop an omitted date window failing every event lookup

The calendar page could never list anything. It asks for every event a member has, with no window, and these queries took the range as nullable and tested it wi...

Kamo·4w ago
Featurekamo-shared-library

Pending callbacks for a whole organisation in one query

Feeds the leads list's per-row callback marker. The grid holds every lead the member can see, so asking per lead would be a request per row to render one column...

Kamo·4w ago
Featurekamo-shared-library

Member notification centre, and an event's origin

Adds MemberNotification and MemberNotificationPreference: one row per member per notification, because read, dismissed and snoozed are per-person answers and a ...

Kamo·4w ago
Featurekamo-shared-library

Map is_answered, now that the column exists

KamoInitializer added **************** on 2026-08-13 **************** verified in Yugabyte: boolean, default false, no nulls). Mapping it is safe now and was no...

Kamo·4w ago
Fixkamo-shared-library

Unmap is_answered until its migration has run

Mapping the column ahead of the migration that creates it is armed, and I armed it. SearchIndexEntity is hydrated from fullTextSearch, which is a native SELECT ...

Kamo·4w ago
Featurekamo-shared-library

Record whether a message was replied to in the mail index

email_metadata.search_index has carried is_read and is_starred since it was created but never the third IMAP flag, \Answered. That was harmless while the index ...

Kamo·4w ago
Fixkamo-shared-library

Bind the system-event pattern — a brace in native SQL never reaches the database

Hibernate scans native SQL text for its legacy {alias.path} placeholders, so the inlined '{"systemEvent"%' raised QueryException: Unmatched braces for alias pat...

Kamo·4w ago
Fixkamo-shared-library

ADP takes per-org credentials, not a platform registration

ADP shipped classified PLATFORM_OAUTH on the strength of ADP publishing a Marketplace ISV model, where Kamo would hold one partner client id, secret and certifi...

Kamo·4w ago
Featurekamo-shared-library

One definition of an unread support conversation

The navtop badge and the ticket list have twice drifted apart by answering different questions. findUnreadStateForViewer is the single answer both now read, so ...

Kamo·4w ago
Featurekamo-shared-library

Carry whether a ticket is one of the items the support badge counts

The navtop badge and the ticket list were answering different questions and nobody could tell. The badge counts items awaiting attention — overwhelmingly ticket...

Kamo·4w ago
Featurekamo-shared-library

The payroll-provider domain behind the timecard engine

Adds the persistence spine for connecting an organization's timecards to a third-party payroll system: the connection and its encrypted per-org config, the OAut...

Kamo·4w ago
August 13, 2026
Featurekamo-shared-library

Count unseen messages for a viewer who is not in the conversation

Unread has always been derived from the viewer's own MediaSessionMember row, so a conversation they had not joined produced no count at all. On a support queue ...

Kamo·4w ago
Featurekamo-shared-library

A punch can be voided without being deleted

Four nullable columns and a second write-once transition on TimecardPunch. A void says the punch should never have existed — a double tap on the clock, an aband...

Kamo·4w ago
August 12, 2026
Fixkamo-shared-library

Quote the feed queries' aliases, and stop counting your own support messages against you

Two independent defects in the Chats feed, both invisible from the Java side. The native chat/support/social queries aliased columns in camelCase without quoti...

Kamo·4w ago
Featurekamo-shared-library

An audit trail for accounts, and a directory that includes non-staff

ACCOUNT_HISTORY records what happens to an account the way LEAD_HISTORY records what happens to a lead — deliberately the same columns, because the internal sit...

Kamo·4w ago
Performancekamo-shared-library

Fetch the summary slices' to-one associations and count instead of scanning

The Overview's attention and recent slices read a title per row off a LAZY @ManyToOne, costing up to 16 extra selects per block under open-session-in-view. All ...

Kamo·4w ago
Featurekamo-shared-library

Per-member overdue rollup for the compliance matrix

The HR Overview's matrix branches on `row.overdue > 0`, but the legal and training rollups shipped with that field hardcoded to 0 — a branch that could never be...

Kamo·4w ago
Featurekamo-shared-library

Bounded count/sum/recent queries for one org+assoc live set

HrResourceSummaryService was materialising an org's entire non-hidden Img collection into memory to compute a count, a byte sum and a 5-row recent slice. Adds c...

Kamo·4w ago
Featurekamo-shared-library

Summary queries for the HR Overview

Status histograms, overdue slices and per-member rollups for legal and training, plus template/course status counts. No entity change.

Kamo·4w ago
Featurekamo-shared-library

Org configuration, holiday calendars and schedules

TimecardOrgConfig holds the workweek, workday boundary, rounding, rule-set pointers and the review switches. Nothing in it is read at calculation time — every v...

Kamo·4w ago
Featurekamo-shared-library

Carry the adjustment reason on the punch itself

A corrected or inserted time now records WHY on the wage record rather than only in the audit log. Under Anderson v. Mt. Clemens Pottery an employer with inadeq...

Kamo·4w ago
Featurekamo-shared-library

Add the meal start deadline to the break rule

California requires the first meal to BEGIN before the end of the fifth hour. A 30-minute meal taken at hour seven is a full violation even though it was the ri...

Kamo·4w ago
Featurekamo-shared-library

Pay periods, breaks, premiums, labor accounts, accruals, export

Batches the remaining wage-and-hour schema into one shared-lib change so the whole domain lands in a single KamoInitializer run rather than a migration per phas...

Kamo·4w ago
Featurekamo-shared-library

Exception model and detector

Makes the blockingExceptions gate real. Until now the transition table read a count that nothing wrote, so every timecard looked clean and 'a missing punch is n...

Kamo·4w ago
Featurekamo-shared-library

APPROVE_TIMECARD_ADJUSTMENTS (197) and FINALIZE_PAY_PERIODS (198)

Split so separation of duties is expressible: whoever approves a timecard is not automatically whoever may close a pay period over it. MANAGE_TIMECARDS (183) st...

Kamo·4w ago
Featurekamo-shared-library

The approval tier state machine

Employee submits -> manager approves -> payroll closes, per the owner's decision. Four rules, enforced in a pure transition table and pinned by 25 tests: 1. A...

Kamo·4w ago
Featurekamo-shared-library

Database-clock accessor on the punch repository

Every punch instant comes from the DB, never the JVM: pods restart and node clocks skew, and a wage record whose ordering depends on which pod answered is not a...

Kamo·4w ago
Featurekamo-shared-library

Workday bucketing, stage 2 of the pipeline

Resolved intervals become per-business-date seconds, ready for the allocator. An interval is SPLIT at every workday boundary it crosses: a 22:00-06:00 shift un...

Kamo·4w ago
August 11, 2026
Featurekamo-shared-library

Workweek and workday boundaries

The workweek is the FLSA overtime unit -- a fixed, regularly recurring 168-hour period -- and it is NOT the pay period. A biweekly period holds exactly two work...

Kamo·4w ago
Featurekamo-shared-library

Interval resolution, stage 1 of the calculation pipeline

Punches become resolved spans. Pure, total, and over value types rather than entities so every stage is fixture-testable with no persistence context. Durations...

Kamo·4w ago
Featurekamo-shared-library

Non-pyramiding overtime allocator with jurisdiction presets

Rules are DATA on the RequirementRule shape already used in this library, not code branches, so California is a configuration row instead of a rewrite. Allocat...

Kamo·4w ago
Featurekamo-shared-library

WorkSite, the jurisdiction anchor

Named WorkSite, not WorkLocation: TeamMember.workLocation is an existing office/remote enum and a second symbol by that name would collide in every grep. zoneI...

Kamo·4w ago
Featurekamo-shared-library

Employment and effective-dated assignment revisions

Punches will reference an ASSIGNMENT, not a member. That is what makes concurrent positions, the 29 CFR 778.115 weighted-average regular rate, multi-site jurisd...

Kamo·4w ago
Featurekamo-shared-library

Effective-dated, append-only pay rate

No employee compensation existed anywhere on this platform before this entity. It is required: overtime is computed against the FLSA regular rate, CA requires t...

Kamo·4w ago
Featurekamo-shared-library

Append-only punch log and audit event

Both served by NARROW Repository interfaces, not JpaRepository: deleteAllInBatch and bulk JPQL bypass entity callbacks, so the interface shape is what makes app...

Kamo·4w ago
Featurekamo-shared-library

Timezone-of-record resolver

Authority order work site -> member -> org -> UTC. The work site wins because wage-and-hour rules follow where the work is PERFORMED. A production census this ...

Kamo·4w ago
Featurekamo-shared-library

Shared WORM refusal guard

@Column(updatable=false) does NOT enforce immutability -- Hibernate silently omits the column from the UPDATE and the stale write looks like it succeeded. The o...

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