Platform configuration tabs (General / VOIP & SMS / System User / Advanced)
Wraps **************** in SettingsView with four tabs: - General: read-only platform overview — total orgs, active phone-server instance count, active SMS-pr...
Add attachment download button and decouple mark-as-read
- Add a Download icon button to each attachment row so users can force a file download instead of only opening in a new tab - Decouple markConversationRead fr...
Parse formData before forwarding to prevent binary corruption
request.text() on multipart/form-data corrupts binary file bytes; pass parsed FormData as init.body so forwardToApi skips request.text() and lets fetch regenera...
Remove minHeight:100vh causing double scrollbars
The outer box's minHeight:100vh exceeded the layout's calc(100vh - 56px) container, which caused both the browser-level scroll and the inner overflow:auto to be...
Drop editor page header, rename General sub-tab
- Removes the back-arrow IconButton + shield icon + title + subtitle from the top of the security-model / master-model editor. The Cancel button in the stic...
Drop stale Pay column header from security-models table
When the Employee Self-Pay Kamo Fees field was removed, the matching TableCell in the row body was deleted but the header row still had the '<TeamMember> Pay' c...
Censorship sub-tab now renders ATF first per spec
Reorders the Censorship sub-tab cards to match the requested order: 1. Alcohol, tobacco & firearms 2. Allowed Member Age Ranges 3. Allowed Employee (Team ...
Platform-admin view, pagination, live search, filters, org logos
Platform admins (top-level org owner) now see every org in the system via the new /api/security/org/all-networks endpoint instead of just their own memberships....
Sub-tabs in security-model editor + cleanup
- Security-model editor on **************** is now split into four sub-tabs: General (Basic Info, Visibility, Who Can Create, Platform Settings, Domain Conf...
Remove duplicate ?type= from apiPath
forwardToApi already appends incomingSearch (?type=...) from the original request URL. Embedding ?type= a second time in the apiPath produced ?type=full?type=fu...
Restore mailbox switcher for int64 member IDs
Use getMemberIdString for mailboxes/member fetch, normalize id/mailboxId from EmailService, and drive the switcher from accessible personal mailboxes when avail...
Alias visibility UI + Subdomain Branches button on branch-types page
SubdomainBranchesDialog: - Alias editor replaced chip list with a table-style row list showing Members and Team Members checkboxes per alias — admins control ...
Cache-bust logo URLs using themeRevision from config.json
DynamicMetaLoader now stores themeRevision in sessionStorage and fires KAMO_THEME_CONFIG_LOADED after fetching config.json. ThemeLogo listens for that event and...
Settings dialog, web-alias wizard path, and DNS provisioning panel
Adds the Subdomain Branches UI across three surfaces: - **************** new "Subdomain Branches" button opens a dialog for the org-level enable toggle + ...
Mailbox checkbox reads org_domains, not provider domains
The previous wiring read /api/email/domains (email_provider_domains table). That table is only populated when a third-party email provider integration is set up...
Prefix/suffix dropdowns, mailbox domain gate, explicit status
- Name prefix and suffix are now dropdowns populated from the NamePrefixType / NameSuffixType catalogs delivered by the org-config endpoint. Displays abbrev...
Unwrap {markets:[...]} envelope in Attach dialog
GET /api/security/commerce-markets returns { markets: [...], message: "..." }, not a bare array. The Attach Commerce Market dialog was treating the whole respon...
Full-width, three-pane Add Member form layout
Reworks the create form to use the entire content area instead of a 1100px-wide centered column. - 3-column responsive layout: sticky left section nav (md+), f...
Merge OTK-redirect into proxy.ts, delete duplicate middleware.ts
Next.js 15 refuses to build when both middleware.ts and proxy.ts exist. The OTK hand-off redirect that lived in middleware.ts — sending any request with ?otk=… ...
Read new *** from Redis master and dedupe OTK POST
Replica reads missed freshly written sessions after OTK exchange, causing false failure and login redirect. Skip intro delay when otk is present; share in-fligh...
Guard against non-array responses on /platform/orgs
A non-array response (empty body, error envelope, or {data: [...]} wrapper) was landing in the orgs state and blowing up the render with 'e.map is not a functio...
Open /validate for enter-as OTK so target org session applies
ENTER linked to /?otk= which never called /api/validate; shared-domain *** cookies kept the source org. Redirect ?otk= to /validate via middleware for any stray...
Add BFF route for POST /api/security/enter-as
The /network Enter action called a non-existent Next route, yielding 404. Forward the request to APIService like other security proxies.
Proxy system-user config API routes to APIService
Configuration page called /api/security/system-user/* but no Next handlers existed, so the app returned 404. Add BFF routes matching SecurityService endpoints (...
System User Configuration page + network ENTER AS SYSTEM MEMBER
Adds Platform Administration → Configuration, a parent-org-owner-only page that grants or revokes permission to impersonate the platform System User by departme...
Remove phone + security-questions pages
These were added to kamo-internal by mistake — collection of the phone number and security questions belongs in the registration flow in kamo-register, and has ...
Add Member / Add Team Member pages
- /account: replace single ambiguous button with tab-scoped buttons Add <Member> on the Members tab, Add <Team Member> on the Team Members tab. Each button ...
Rebuild member Plans & Billing around Billing Groups
- Member page Plans & Billing tab is now right-aligned with a pulsing glow and a StarRate icon on the tab bar. Visible when the viewed member is the signed-...
Stop duplicating query string in KB media/articles API proxy
forwardToApi already appends the browser request search params; embedding ?query in the path produced a second ? and broke upstream URL parsing, causing GET /ap...
Align Interaction Center with team members only
NavTop greeting falls back to username when the user is not in the team-only list. Interaction Center copy uses team member wording.
Allow org admins to open other members account pages
Expand client redirect guard beyond **************** to include CONFIGURE_SYSTEM, EDIT_MEMBER_ACCESS_LEVEL, ALLOW_PROMOTING_MEMBERS, organization owner, and pla...
Document Interaction Center title line prop
Clarify that the role field from by-department is the job title line.
Official job title field for team members on my-profile Position card
Show subscription context on Allowed Apps in branch types
Load billing subscription and plan metadata like the Apps tab; gray out rows and show an info alert when a default-on policy would not activate without an eligi...
Treat any COMP subscription as full access on Apps tab
Gate on paymentMethod COMP for all orgs, not only top-level platform owner, so child orgs with complimentary grants see unlockable toggles.
Run GrantDialog plan useMemo before conditional return (React hooks order)
Preserve int64 org id on create-org redirect to DNS setup
POST /api/security/org: pass through upstream JSON instead of re-parsing, so response bytes keep full id digits. createOrganization reads raw body and extracts ...
Stop duplicating query string in access-logs API proxy
forwardToApi already appends the incoming request search string. Embedding ?params in the path produced malformed URLs and Spring failed to parse page/size (Num...
Align required subdomain list without mail
Match SecurityService KnownAliases for DNS setup UI and manual guide.
Gate behavior labeling on applied-model ready; avoid permissive defaults on fetch error.
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.