Mabadiliko ya Tabianchi

Kuona nini sisi ni kujenga katika muda halisi. Kila kipengele, kurekebisha, na kuboresha kusafirishwa kwenye jukwaa.

17,876
Mabadiliko ya Jumla
4,587
Features ya
4,517
Wa
32
Miradi ya Miradi
Filter ya Mradi
Miradi yote17,876AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService352InitializerService299KBService74KlusterServices542MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,557kamo-login318kamo-marketing584kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter ya aina
Aina zoteBuild24CI522Chore670Docs226Feature4,587Fix4,517Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
August 14, 2026
Fixkamo-internal

A read clears the indicators immediately, not on the next reload

Reading a conversation updated the server and then waited for the news to come back: PUT /read commits, MediaService broadcasts a fresh count over core NATS, th...

kamo·4w ago
PerformanceEmailService

Stop opening every folder, and stop refetching every message

Two round-trip problems on the /messages critical path, both invisible in the code that caused them. listFolders opened each folder read-only to read two integ...

Kamo·4w ago
Fixkamo-analytics

Stop listing every visitor twice

Performance (web vitals) events were saved with no hostname — the collector's performance branch never passed one, unlike the pageview branch. All 803 stored pe...

Kamo·4w ago
FixESigService

Resolve a native PDF's source bytes instead of demanding a rendition

**************** required dat.convertedDat to be non-null. ConversionService only mints a second ImgDat when it actually converts something -- a document that a...

Kamo·4w ago
FixMediaService

The ticket list survives a broken indicator

The unread read threw and took the whole ticket list with it — the page came back empty, which is a far worse outcome than a page with no markers on it. It is g...

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
Featurekamo-internal

Clock-out indicator wears the same pulse as legal & compliance

The punch clock breathed a red radial glow while the obligations badge three pixels to its left pulsed two expanding rings. Both controls are asking the member ...

kamo·4w ago
FixDocsService

Connect DocsService to NATS so the badge lights without a refresh

LegalPendingCountPublisher takes its NATS Connection as required=false and returns quietly when it is null. The shared NatsConfig is **************** and this C...

Kamo·4w ago
Stylekamo-internal

Tint the mailbox loading sweep with the org's own colour

The /messages placeholders drew their travelling band of light from --accent-comms, the comms family accent (#6366f1), so every tenant watched an indigo shimmer...

kamo·4w ago
Fixkamo-internal

Remove the payroll registration fields nothing reads

Six fields on the payroll cards were never consumed by anything. A registration field nobody loads is worse than a missing one: an operator fills it in, believe...

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-internal

On screen is not the same as read

A support conversation was marked read the instant its window loaded, so the one kind of window that must NOT count as read — the kind that raises itself, from ...

kamo·4w ago
FeatureMediaService

Unread means the requestor spoke, or the ticket just became yours

The badge counted "live tickets nobody has picked up, plus the ones I hold" — message-blind, and it only ever fell when a ticket reached a terminal status. So i...

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
Stylekamo-internal

Widen the expanded rail's scrollbar to 20px

At 10px it was slimmer than it needed to be — the rail has the width to spare, and a wider bar is a wider grab target. The thumb's transparent inset doubles wit...

kamo·4w ago
Featurekamo-internal

Give the expanded rail a scrollbar instead of end arrows

The up/down arrows exist because a collapsed rail is 80px of tile with no room to spend on anything else. Expanded, the rail is 248px and the options read as a ...

kamo·4w ago
Featurekamo-internal

Use the real payroll vendor logos on the provider cards

Adds the ten vendor assets and renders them in place of the lettermark placeholders. These are WORDMARKS, not square icons like the email provider set, and the...

kamo·4w ago
Fixkamo-internal

The needs-attention mark stops lying when you open a ticket

Clicking a row cleared its amber dot while the badge beside it stayed put, and a refresh brought the dot back. The badge was right and the dot was wrong. A tic...

kamo·4w ago
Fixkamo-internal

Mark the items the navtop badge is actually counting

The badge read "5 support items need attention" and the list marked none of them. Both numbers were right about their own question and neither was the question ...

kamo·4w ago
FixMediaService

The ticket list marks the same items the badge counts

countForMember sized a set it built privately, so the list had no way to ask which tickets were in it and approximated instead — it flagged unread chat messages...

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-internal

Payroll Provider Setup, and map people to payroll on enrollment

Replaces the placeholder HRS Overview tab with the real thing. The tab is now "Provider Setup" and the screen is "Payroll Provider Setup", following the email p...

kamo·4w ago
FeatureInitializerService

Index and REVOKE the payroll-provider tables

What Hibernate cannot express for the new hr_timecard_payroll_* tables. Two REVOKEs. PayrollDispatch and PayrollSyncIssue refuse updates and deletes in Java th...

Kamo·4w ago
Featurekamo-internal

Size an attachment by what the provider's API actually carries

The composer held every social DM to a flat 10 MB, which is Telegram's photo limit applied to four providers that do not share it. Each now gets its own ceiling...

kamo·4w ago
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·4w ago
FeatureSecurityService

The authorization boundary for payroll provider setup

Relays the new **************** surface and enforces who may reach it. TimecardService holds the engine and no session; this holds the session and decides. Secu...

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
Fixkamo-internal

Side a message by which side sent it, not by who is reading

A support conversation has exactly two sides, and they are not "me" and "everyone else". One side is the person who asked for help — always exactly one member. ...

kamo·4w ago
FixMediaService

A ticket can never be answered by the member who raised it

A support conversation has two sides — someone asking and someone answering — and nothing enforced that they were different people. A member holding ACCEPT_SUPP...

Kamo·4w ago
Featurekamo-internal

A wall at "now", and a card that explains a cancelled punch

Nobody can record time they have not worked yet. Dragging an edge, sliding a whole span, nudging with the arrow keys, the magnet, the right-click block and the ...

kamo·4w ago
Refactorkamo-internal

Drop the speed dial heading

The tab is reached by its own icon and the rows say what they are, so a title and a sentence of explanation above them only cost vertical space in a panel that ...

kamo·4w ago
Featurekamo-internal

Give the support and social windows the member chat's composer

A support ticket and a social DM are the same thing as a member chat — a media session with messages on it — but they were answered through a bare text field. A...

kamo·4w ago
FixMediaService

Send an outbound attachment to the endpoint its type belongs to

Every social attachment went out through the adapter's sendImage, which on Telegram is /sendPhoto. A PDF or a zip posted there is rejected by the provider, and ...

Kamo·4w ago
Fixkamo-internal

Department speed dial hung on Loading forever

The loader effect listed departmentsState in its deps and set it to 'loading' on entry, so React tore that effect instance down immediately, the cleanup flipped...

kamo·4w ago
Fixkamo-internal

Make Delete actually delete, and select exactly one pill

Delete did nothing. The handler was hung off the pill's focus, and the pill never had focus: preventDefault() in the pointerdown handler — which is there to sto...

kamo·4w ago
Featurekamo-internal

Speed dial lists the org's department extensions

The tab shipped six invented entries — Sales Team on 1001, a Conference Room permanently ringing — so dialling one reached whatever happened to answer that exte...

kamo·4w ago
Featurekamo-internal

Widen chat, social, ai-chat and compose windows to the support size

The support ticket window opens at 460px while member chat, social chat, AI chat and the email composer all sat at 360-420. Same dock, same kind of content — th...

kamo·4w ago
Featurekamo-internal

Show unseen messages on every queue row, not just joined ones

The badge and the row tint were already here — they were simply never populated for most of the list. getUnreadFor read only the live per-session unread map, wh...

kamo·4w ago
FeatureMediaService

Stamp unseen counts on the ticket list, and keep the queue live

getTickets now bulk-loads an unseen-message count per row for the caller, beside the visitor rows it already loads that way, and getTicketDetail computes its ow...

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

Delete, magnets, a right-click menu, and a clock that asks which

Six additions to the period graph and the nav clock. DELETE removes the focused pill. Backspace too, because on a Mac the key labelled "delete" IS Backspace an...

kamo·4w ago
FeatureSecurityService

Relay the punch void

Passthrough for POST /punches/{id}/void, the editor's delete key and the machinery behind merging two adjacent spans. Same authority as /correct, and for the s...

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
FeatureInitializerService

The void columns on hr_timecard_punch

Mirrors four new nullable columns on the TimecardPunch entity. A void is neither a delete nor a correction: it says the punch should never have existed — a doub...

Kamo·4w ago
Fixkamo-meet

Size the org logo to 80% of the join column

The join screen capped the branding logo at 40px tall with objectFit contain, so it rendered letterboxed inside the 300px column and looked undersized no matter...

Kamo·4w ago
FixKlusterServices

Repair the kamouniverse backup, broken since the Yugabyte cutover

Renaming the dead CockroachBackupMissing alert in the previous commit made it fire immediately: no universe backup had succeeded since the 2026-08-09 migration....

Kamo·4w ago
ChoreKlusterServices

Retire CockroachDB now that YugabyteDB owns the data

CockroachDB v24.2.4 was pinned to the last release under the old free BSL terms and was replaced by YugabyteDB on 2026-08-09. Nothing has connected to it since;...

Kamo·4w ago
Refactorkamo-internal

One Plans & Billing screen instead of two that each answered half

The platform had two billing screens. /settings/account?tab=billing answered what the organization pays; Plans & Billing on the member profile answered what a p...

kamo·4w ago
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

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei