Mabadiliko ya Tabianchi

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

17,888
Mabadiliko ya Jumla
4,594
Features ya
4,520
Wa
32
Miradi ya Miradi
Filter ya Mradi
Miradi yote17,888AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService364InitializerService299KBService74KlusterServices542MCPGatewayService43MediaService460RAGService61SecurityService1,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,594Fix4,520Other6,781Performance136Refactor274Revert23Style48Test69Upgrade1
August 14, 2026
FeatureEmailService

Publish every change of state, not only arrivals

A member has this open in more than one tab about as often as not, and often on a phone as well. Each of those holds its own socket and draws its own bell, and ...

Kamo·4w ago
Featurekamo-internal

The bell tells the truth in every tab, not just the one you clicked in

The nav-top bell was live for arrivals and nothing else. Reads, dismissals, snoozes and deletions were applied to whichever tab the member clicked in and announ...

kamo·4w ago
Refactorkamo-internal

The player is a module singleton, not a React value

Firing a sound read a context, which made every call site's POSITION IN THE TREE part of its correctness. A component rendered above SoundProvider got a no-op a...

kamo·4w ago
Featurekamo-internal

Drop the three chat-channel rights from the frontend

Mirrors the shared-lib deletion: the enum mirror, its registry array, both hierarchy edges (ACCESS_CHAT -> CREATE_CHANNELS -> MANAGE_CHANNELS and ACCESS_CHAT ->...

kamo·4w ago
FeatureInitializerService

Purge stored rows for the deleted chat-channel rights

Ids 74/75/76 no longer resolve. RoleRightsSyncService would sweep them on some future SecurityService boot anyway — silently, at an unpredictable moment, with n...

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

A note is owned by a member, not by an account

Mirrors the API: NoteDTO now carries memberId in place of userId. A member is the signed-in account inside ONE organisation, so opening a different org shows a ...

kamo·4w ago
FixKBService

Read and write notes as a member, never as an account

Every endpoint now requires memberID on the session — reads included — and refuses the request without one. The reads used to need only a userID, which is globa...

Kamo·4w ago
FeatureInitializerService

Move notes from account ownership onto membership

Adds notes.member_id and attaches each note to its owner's earliest membership — the organisation the account has belonged to longest, which in practice is wher...

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

One event-sound system, three layers, wired to what actually fires

There were two sound systems and neither knew about the other: four mp3s behind useChatSounds, and four synthesised tones behind notificationSound with a five-o...

kamo·4w ago
FeatureSecurityService

Read and write the three layers of the event-sound stack

GET returns all three layers in one round trip plus what the caller may edit — every settings page needs the whole stack, because an org administrator editing t...

Kamo·4w ago
Docskamo-internal

First cluster triaged — chat channels are vestigial

Implementing gates for the 57 started with chat and the cluster came back empty. CREATE_CHANNELS, MANAGE_CHANNELS and MODERATE_CHAT have no feature: chat is rea...

kamo·4w ago
Testkamo-internal

Make 'do not hand-edit the unenforced list' enforceable

The list has been wrong four times (58 -> 52 -> 47 -> 57) and every single time because it was edited by reasoning instead of regenerated. The file already said...

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

Re-derive the audit structurally — 57 decorative

The count moved 58 -> 52 -> 47 -> 57 because every version hard-coded a list of gate-helper names and the codebase has more than anyone can recall. Six were mis...

kamo·4w ago
Fixkamo-internal

Dock popup windows beside the page scrollbar, not on top of it

Tool windows are fixed to the viewport and dock right-to-left from its edge, and the layout was told about exactly one thing occupying that edge: the interactio...

kamo·4w ago
Docskamo-internal

The SHARE_DOCS_* client-side-only gap is closed

resolve-alias in DocsService and the two member-search endpoints in SecurityService now enforce these four server-side, mirroring the dialog's isTeamMember-or-r...

kamo·4w ago
FixSecurityService

Enforce the doc-share search rights server-side

/members-subscribers and /team-members-contractors enumerate the organisation's people — names and ids — to fill the document-share autocomplete, and required o...

Kamo·4w ago
FixDocsService

Enforce the doc-share alias rights server-side

GET /shares/resolve-alias turns a guessable alias into a real person's NAME and required only a valid session. The rule lived solely in ShareDocumentDialog, and...

Kamo·4w ago
Featurekamo-internal

Give the deck its slide back, without the lurch

Dropping `layout` to stop the card lurching onto the edge of the screen also took the sibling slide with it: dismissing a card left the rest snapping into its p...

kamo·4w ago
Fixkamo-internal

Stop the reminder lurching to the screen edge when an option opens

The card kept framer's `layout` after it grew a fold-out options panel. `layout` animates size and position by transform, so that one height change was being an...

kamo·4w ago
Fixkamo-internal

47 unenforced — five more were falsely reported

CREATE_ORG_CALENDAR_EVENTS is enforced: MemberCalendarService throws OrgCalendarForbiddenException when a member without it writes to the org calendar. The chec...

kamo·4w ago
Fixkamo-internal

52 unenforced, not 58 — six were falsely reported

The audit's gate detection recognised hasRight and checkRight but not denyUnless, hasAnyRight, sessionHasRight or forbidden. Six rights that ARE enforced were t...

kamo·4w ago
Featurekamo-internal

Stagger the cascade, add branch bulk actions, explain the rule

The cascade highlight now travels the chain instead of flashing every affected row at once. enabledAncestors already arrives nearest-first, so the index IS the ...

kamo·4w ago
Fixkamo-internal

Make the emoji picker's search actually filter

The picker's search matched the query against the translated category name only, and fell back to pushing every emoji into the results when nothing matched — so...

kamo·4w ago
Featurekamo-internal

Show and enforce the permission hierarchy in all five editors

Five editors granted 199 rights as five flat lists of checkboxes, and none of them showed that one right can be a prerequisite for another. Granting a child wit...

kamo·4w ago
Fixkamo-internal

Sticky scrollbars, a toolbar that never scrolls, and a dialog that clears the note

Three things, all in the floating sticky. The scrollbar was still grey. The rules were written as **************** which styles only the element CARRYING the c...

kamo·4w ago
FeatureSecurityService

Normalise member overrides against the hierarchy

Member direct rights now go through RightsHierarchy.normalizeLevel before they are persisted: a granted child pulls its ancestors up to GRANTED at the member le...

Kamo·4w ago
FeatureInitializerService

Backfill ancestors so closure cannot remove access

MemberRightsAppliedService now denies any right whose parent chain is not granted. Every row written before the hierarchy existed knows nothing about ancestors,...

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

Stop the launchpad backdrop painting over the page scrollbar

The launchpad is the only page that renders the full-bleed Backdrop, and it was the only page whose scrollbar stayed invisible after the -webkit-/standard confl...

kamo·4w ago
Featurekamo-internal

Repaint the reminder in the org's colour, open its options in place

The card is the organisation's primary colour now, with every mark on it drawn in --on-primary rather than a literal white — a white-label org that picks a pale...

kamo·4w ago
Fixkamo-internal

The sticky's watermark is centred from the moment it opens

It only landed correctly after the note was resized. The measurement used getBoundingClientRect, which reports the PAINTED box — and a sticky opens by animating...

kamo·4w ago
Fixkamo-internal

Centre the sticky's watermark on the writing surface

It was centred on the whole note, so it sat high — pulled up behind the title bar — and in rich mode it drifted further every time the toolbar wrapped to a seco...

kamo·4w ago
Featurekamo-internal

Legal & Compliance settings tab with the org default legal text

A new tab on /settings/features/hrs holding Default Legal Text, linked from the settings menu and the settings launchpad. Creating a package on /hr/legal-compli...

kamo·4w ago
Featurekamo-internal

Rich text in the sticky and the previews, and a mode you can switch

A note now says whether it is rich text or plain text, and both the editor and the floating sticky can switch it. The floating note in rich mode embeds the ver...

kamo·4w ago
FeatureKBService

Carry a note's rich-text / plain-text mode through the API

Create honours the requested mode and defaults to rich, matching the editor a note is created in. Update is null-guarded like every other field on that endpoint...

Kamo·4w ago
FeatureInitializerService

Add the is_rich_text column, defaulted and backfilled to rich

Whether a note is edited as rich text or plain text cannot be read back out of its content: a rich note nobody has formatted yet is byte-for-byte a plain one. W...

Kamo·4w ago
FixDocsService

Writing the org legal settings needs BOTH HR rights

The Legal & Compliance settings tab is the only writer and is now offered only to a member holding MANAGE_HRS_SETTINGS *and* MANAGE_LEGAL_AND_COMPLIANCE, so the...

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

One page for the notifications and the controls over them

The notifications page wore a header of its own — an eyebrow, a title and three pill buttons inside a bordered card — while every neighbouring page (the account...

kamo·4w ago
FeatureDocsService

GET/PATCH the org's default legal text

/api/docs/legal/settings, behind the same guarded() funnel as every other mapping on this controller. The read NEVER creates a row: it resolves to LegalDefault...

Kamo·4w ago
FeatureInitializerService

Seed every organization a default legal text

One hr_legal_settings row per org, unique on org_id, carrying **************** INSERT-ONLY, never an UPDATE. An org that has edited its own wording owns it; a ...

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

The history becomes a page, and the bell rings

The bell opened a popover, which is the right shape for "what just happened" and the wrong one for "what did that reminder say on Tuesday". A panel hanging off ...

kamo·4w ago
FeatureEmailService

A paged, filterable history

The centre could answer one question: the most recent hundred, unread or not, with no way to ask for what had already been read. So anything a member had seen w...

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

The floating sticky's pin is the same pin /notes draws

The sticky was drawing a hand-rolled bookmark path while the notes wall, the editor, the rail and the bulk bar had all moved to MUI's PushPin — outlined when lo...

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