Pass the SI Status translator to duration() as the plain function it takes
next-intl's Translator is not assignable to (k, v) => string (TS2345), failing the kamo-internal image build. No behavior change.
Websites and social profiles on a lead
The Contact card and the New Lead form take any number of websites (a + adds another) and a field each for LinkedIn, Facebook, Instagram, X, TikTok, YouTube, Wh...
Configurable tracking links, member links and a tracking script for other sites
- Marketing → Tracking Codes → Link settings (new page, MANAGE_REFERRAL_CODES): switch standard pages off, add the org's own links, and name the marketing sit...
Searching 'workforce' found nothing - add SI Workforce and Workforce Controls cards
Both tabs existed on /settings/ai but had no landing card, and the settings search only filters landing cards.
SI Status tab sets textTransform once, so the build type-checks again
SIE1's tab style named textTransform twice (TS1117), failing every kamo-internal image build since 7557af90a. No behavior change.
Version History, Test Before Saving and Role Templates for job descriptions (SIE6)
- Version History drawer on every job description editor (SI, organization, role, department, job title, team, persona): timeline with who/when/how, per-secti...
The SI Command Center and the one searchable Activity Trail
SIE4. The Workforce hub opens on the Command Center: four live figures (working now, waiting on people, problems today, spend this week) and a card per SI with ...
Transcripts as timed turns that say who spoke and play from that moment
Owner report 2026-11-06. One shared view, CallTranscriptTurns, for every place that reads a recording's transcript: the Call Log's transcript panel, the Media P...
SI Status — every SI path's health, incidents with Acknowledge, and who is on call (SIE1)
/settings/ai?tab=si-status: a hero that answers "is everything working?" in the status's colour (animated, reduced motion honoured), a card per SI path (phone c...
My Profile email signature card (UPDATE_OWN_SIGNATURE)
A member chooses which details their own signature prints, or returns to the company default. Read-only without the right; the server (EmailService /api/email/m...
Back-to-home button on Email, Analytics, Support, Reports, Meetings, Changelog, Shared Devices, Supervised Chats
The reading-pane subject no longer collapses to one letter per line
The action buttons were flex-shrink-0 beside a min-w-0 title, so in a narrow pane they took the whole row and the subject got zero width. The header now wraps a...
The Live Changes pane shows the newest ten
Still loads thirty, so the Features and Fixes tabs have ten of their own to show; a live arrival pushes the oldest off the pane. Everything older is on /changel...
Live Changes — the launchpad widget and the /changelog page
Every change the platform ships, live: new entries slide in the second they are sent, each badge fills as CI reports the build and the deploy, and a push lands ...
The Activity shows each person's own avatar and a plain device name, never a raw user agent
Allow This Site on an SI's refused fill, in the vault's Activity (TPVAULT phase 2)
Call Log recordings play in the shared Media Player window
The Listen button opens the existing media-player tool window instead of a second inline player. The tool gains a callLogId source for recordings the phone prov...
Password Vault under Organizer (TPVAULT phase 1, with phase 3 screens)
/vault: your own vault and the vaults of SIs you supervise; items by type (sign-ins, API and SSH keys, recovery codes, authenticator keys, Wi-Fi, computer sign-...
The Call Log shows each member's photo and their profile card on hover
Rows wrap the member in the shared MemberHoverCard and warm the member-card cache, so faces are photos rather than initials; the team-member picker warms the sa...
Send the message catalogue by reference, not inside every document
The root layout handed the whole catalogue to the client provider as a prop, so React inlined it into the RSC payload of every document: on /leads/calling 2.96 ...
A Call Log page under Call / Text
Every call the member made or took and the calls of everyone below them on the reporting line (VOIPService GET /api/voip/calls/log decides the rows). Rows show ...
View Floor Reports opens the scoreboard and the manager panes
Mirrors VIEW_FLOOR_REPORTS (675) and lets it open the Leads > Scoreboard row and page and the Floor Pulse, Speed-to-Lead Report, Funnel by Lead Source and Coach...
Never link to an article kept out of the help center on purpose
Ten articles were in the manifest but not in the live knowledge base. One, SI Goals, Watches and Signals, had simply never been imported; it is now published. T...
Keep idle connections open longer than Traefik, so a POST is never sent down a closing one
Node closed an idle keep-alive connection after 5 s; Traefik keeps its idle connections to a pod for 90 s and reuses them. A request sent as Node closed the soc...
Paint the next lead first, read ahead during a call, and save the outcome behind the next lead
First paint: the list is asked for at once, beside the member's rights, and its top (limit=6) comes first so the next lead paints before the rest of the list; a...
Every loan has a column on the board, and the list streams through
Sold / Boarded sat on neither lane of the board, so those loans never showed. It now follows Funded, and any status neither lane names gets a column of its own ...
Narrow rights for Saved Texts and the mortgage automation switches
MANAGE_SAVED_TEXTS opens Phone settings at the Saved Texts tab alone, and MANAGE_MLOS_AUTOMATION opens a Mortgage Automation Switches tab on Commerce settings. ...
Profile hero: let the name keep its width on tablets
The row stayed nowrap from lg up, so the fixed-width action column squeezed the name to one letter per line. It now wraps, the name column has a 320px basis, an...
My Tasks shows each source as it lands, and asks for far less
Lead names come from one batch read (/leads/names) instead of a full lead read per task. Deals are read only when the Deal filter is opened, four leads at a tim...
The context column scrolls its cards instead of squeezing them
On a desktop the context column of MasterDetail has a fixed height and scrolls, but its grid rows were plain auto, which a fixed-height grid shrinks to the free...
A lead task reads the lead's name from the rows beside it, and the filters scroll on a phone
My Tasks fills wide screens, says once what failed, and has its tests
The fourth column at 1800px sat inside a breakpoint object, where MUI ignores a media query. Tests for the Organizer rows, their gates, the palette's finds and ...
Organizer in the nav, and My Tasks shows every task assigned to me
Organizer is a new primary nav option holding My Tasks, Calendar, Contacts and Notes & Checklists, each row on the gate it had as an option, with the calendar's...
The org's SI by face and personality on every floor page, and no typed voice
- Email Triage: the typed Your Voice box is gone. Who Writes Your Drafts chooses your organization's SI (its own personality) or your own SI Assistant (the vo...
A Sales Floor kind members can mute on its own
SALES_FLOOR mirrors the Java kind (kamo-shared-library 3ea204a5): gated on VIEW_LEADS like EmailService, listed just before the lead callback, drawn with a head...
The System User reaches the SI floor's setup, as automation-service now allows
automation-service (5a6a287) lets god mode and the System User read and change SI settings and briefings, recorded each time. God mode already reaches the tab t...
A refusal reads as the service's own sentence, with no retry
The floor screens treated a 403 as a failed load. They now show what the service said, and offer no retry because none can help. The TV board fits every column ...
Closeout: pages keep the nav's rights, the canvas tells the truth, and quieter sessions
Floor pages a typed address could reach now answer as the nav does, with a plain message, and a person a bell sent there still reaches what is theirs. The canva...
Start leads in a stream, stream settings, state rules and people not to start
Start In Stream on the lead grid and on an import, stream settings on the canvas, the new step fields, State Rules and People Not To Start in Contact Rules, the...
What the live retest found
Pane titles wrap to two lines on a phone. The Media socket waits a moment before closing, so a page load doesn't open several in turn. The links to the lender's...
Spoken words and notes for the caller look nothing alike, on every surface
ScriptBlockView is the one rendering: Say This is large in a solid frame, For You Only is small and set in, in a dashed tinted panel, with its own icon and word...
The socket's close callback is in the local stomp types
The fix pass's shared Media socket uses onWebSocketClose, which types/@stomp__stompjs.d.ts didn't declare, so 552adae26 failed its build at useMediaTopic.ts. No...
The duplicate route reaches the service, and a saved text's key fits its column
Completes fe182924f. The contract in the brief follows the scripts work.
The fix pass, one Media socket, and help that matches
A card drags by touch and lands under the pointer. Every MediaService hook shares one socket. A cockpit org starts each member on a short set for their role. A ...
Kamo Help lives in the article browser, and articles open in the page
The separate help shelf is gone. Kamo's articles sit at the bottom of the left tree on a tinted panel, drawn by the same rows and read only. The console and an ...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
