Read the pipeline's borrowers beside its rows, not after them
Each of the reader's two queries takes about a second for a large lender, and they ran back to back. The borrower read now runs on its own connection while the ...
Rke2-unwedge, a watchdog for the rke2 log-pipe deadlock
The 2026-09-28 and 2026-10-25 platform outages were the same deadlock: rke2 loses its lease, its ExecStopPost kills containerd, nobody reads the container log F...
Detach k1m1's NFS mount while k3m1 is not serving it
The worldchunks USB drive dropped off k3m1 on 2026-10-30 and has not come back, so nfs-server stopped. k1m1 kept its soft mount on the assumption the server ret...
Alert on node link drops and speed fallback, routed to sysadmin email
The LAN switch shared by k1m1 eno49 and k3m1 eno49 has been resetting since 2026-10-29 (hundreds of carrier drops, 66 of 70 drop minutes shared by both nodes, k...
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. ...
Let MANAGE_SAVED_TEXTS read and change saved texts
/api/voip/sms/text-templates accepts the narrow MANAGE_SAVED_TEXTS right beside MANAGE_VOIP_SETTINGS for its writes, and beside ACCESS_VOIP for its reads, so a ...
Let MANAGE_MLOS_AUTOMATION open the mortgage automation switches
GET and PUT **************** now accept the narrow MANAGE_MLOS_AUTOMATION right beside MANAGE_SUBSCRIPTION_SETTINGS. Every other mortgage config endpoint keeps ...
Add MANAGE_MLOS_AUTOMATION and MANAGE_SAVED_TEXTS narrow settings rights
Two standalone roots (688-689) so the mortgage Automation tab switches and the Phone Saved Texts tab can be granted without MANAGE_SUBSCRIPTION_SETTINGS or MANA...
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...
An updated invoice keeps its due date; an overdue one takes no new charges
Re-sending an updated invoice moved its due date forward, which quietly forgave what the customer already owed late. It now keeps its date and only restarts rem...
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...
Several leads' names in one read, on the lead page's own rule
GET /api/security/leads/names?ids=: one findAllById for up to 100 leads, each through LeadViewGate, VIEW_LEADS to ask. My Tasks read a full lead per task (200-6...
A task notification opens My Tasks, under Organizer
The old /notes?task= address still reaches it by a 307 in kamo-internal.
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...
An SI's personality on the AI members read, so its work can say who it is
Each /team-members/ai-members row carries personality: the archetype's title and description in force for that SI, or null. One resolve per SI, each in its own ...
Inbox tools say a draft is in the SI's own personality, or the owner's SI Assistant's voice
No more owner's voice profile: si_inbox_next carries the owner's name and placeholder, and their own SI Assistant's voice when they chose it. The parity snapsho...
A member's own SI Assistant voice, for email triage drafts
POST **************** answers the assistant's name and how it sounds, resolved from SI Assistant Settings through the same waterfall the chat reads. Email triag...
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 manager never sees the president through a reporting-line report
Pins ReportScopeResolver's reporting-line scope (the resolver change that precedes this commit): a president above a manager stays out of the manager's scope, p...
A report scoped by the reporting line gets the caller's line, whatever their rights
Owner, 2026-11-02: a generic right opens a report about people's activity and never widens its rows. For a definition marked scopedByReportingLine(), the resolv...
One org SI record, and drafts take their voice from an SI, never a typed profile
The org's SI is si_floor_settings.si_member_id alone: automation_outreach_settings no longer maps its own copy, so the Automation Streams page and SI settings c...
Floor Activity, each person's calls on their reporting line
A Report Studio report over the dial ledger, counted by DialTally so it can't disagree with the scoreboard: dials, conversations, confirmed conversations, conne...
The reporting line decides whose calls a screen shows
Owner, 2026-11-02: a generic right such as Manage the Call Floor opens a screen and never widens its rows. Adds the pieces both Report Studio and the floor pane...
A new role on a deal is a Sales Floor notice
The deal-role bell card goes out as SALES_FLOOR (kamo-shared-library 3ea204a5) instead of GENERAL, so a member who mutes the floor mutes it too, and one who mut...
Sales Floor notices are gated on the Leads right
SALES_FLOOR (kamo-shared-library 3ea204a5) is gated on VIEW_LEADS: every owner, floor worker and deal-role holder holds it today, where a floor right would sile...
The sales floor gets its own notification kind
SALES_FLOOR, appended last, so a member can silence the floor (review items, stopped runs, the send queue, a stream's Notify step, deal roles, briefings and cap...
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...
A stage move names itself, and a rate change can start a stream
A status set off a call wrote its contact attempt as a CALL, so a stage move into a Contacted stage read "Call · Conversation". The attempt now says STAGE_MOVE ...
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...
Stream emails print the sender's and the org's NMLS and the equal housing mark
Saved and written stream emails alike, above the address and unsubscribe. Only for an org with an NMLS number.
Select leads by view or import, state rules, and a stream sets a lead field
An import records the leads it made. A read gives the ids a saved view, source or import stands for, under the grid's own floor, capped and timed. Contact rules...
A line for bulk starts, stream settings, state rules and a list of people not to start
New tables for the line, per-stream settings, state contact rules and the people list, a record of the leads an import made, a current rate on the lead, and new...
View Loan Revenue & Cost hangs off own loans
Hanging off the whole pipeline made the own-loans rule unreachable: a holder without View Mortgage Pipeline lost the right at sign-in.
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...
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.
