Per-stage autonomy override table on the ai-autonomy tab (D28)
The doc-04 §4.2/§4.5 per-stage map under the AiAutonomy singleton: every lifecycle stage with its platform wall classification (legal-wall chip / non-tunable fl...
Type TrialStatus ids as string to match Long-as-string serialization
BillingService now serializes Long as a JSON string (org/member ids are CockroachDB unique_rowid() > JS MAX_SAFE_INTEGER). Align TrialStatus.organizationId and ...
Marketing Tools module + nav rework
- /marketing module with account-style hero header + rights-gated route tabs: Overview, Social Media (/social), Materials (/materials), Referral Codes (/dis...
Hot Reassign — always post the required call note; keep current assignee selectable
Review follow-ups: (1) drop the comment-dedup ref that could silently skip the required note on a later attempt (or an edited retry) after a failed mark — alway...
Hot Reassign — front-desk live call-transfer flow
Adds a Hot Reassign action to the lead-view Assignment card (front-desk staff on live calls): an explainer + required call-note dialog, then release the lead in...
Provider brand icons in the connection provider dropdown + datagrid (shared with the chat popup via getProviderMeta)
Add X (Twitter) + Discord to connection providers + provider logos; X card in platform OAuth registrations
Doc-04 MORTGAGE config tabs — 5 domain singletons
business-model / authority / capital-markets / servicing / ai-autonomy GET+PUT via /api/security/mlos/config; mlosPut + parseWriteError surface the §4b.1 cross-...
Apply adversarial-review findings on the steward write composers
- a11y: WAI-ARIA arrow-key radio pattern (shared onRadioKey helper) for the verdict + run-purpose segmented controls (they were keyboard traps); focus retur...
Steward WRITE composers — record verdict, publish pull-through policy, run pricing
The three write paths the consoles surfaced as coming-soon, live end-to-end: - StewardFeedbackComposer in the decision-trail drawer: CONFIRM/MODIFY/OVERRIDE s...
FFA quick-toggle on /leads/available + live sync; hide available count
- /leads/available: manager-only icon button (Public/PublicOff) next to Inject Test Lead to toggle a vendor/product's free-for-all mode, with a lightweight co...
Meta OAuth Connect button + 24h window composer state + fix double-Tooltip
- SocialConnectionsManager: wire the Connect button (creates OAuth draft, hands off to MediaService Meta OAuth start), surface the OAuth redirect result, hide...
Governance console — steward-feedback flywheel + pull-through policy
Fifth and final MORTGAGE steward screen, read-path B. Signature Steward-Feedback Flywheel (AI decides → steward corrects → becomes truth → model recalibrates), ...
Steward section tone constants + section simplification
(Uncommitted MLOS steward work present on the shared dev mount, committed to keep the tree clean; compiles cleanly. Not part of the lead-alert change.)
Don't fire the new-lead popup on refresh / when not Available
myStatus from AvailabilityContext defaults to 'AVAILABLE' until two async fetches (/user-info then /members/me/availability) resolve, so on a browser refresh th...
Single-market orgs adopt the market's title/description in nav + pipeline header
When an org has exactly one configured commerce market, the Commerce nav item uses that market's TITLE and the /commerce pipeline header uses the market's TITLE...
Documents steward screen — condition clearance matrix + eClose drive-loop
Third MORTGAGE steward screen, read-path B. Signature Condition Clearance Matrix renders the doc-system 1-obligation/N-satisfier model: each locked LoanConditio...
Pricing Review steward screen (rate ladder + LLPA waterfall), live
Third steward tab, on the shipped MLOSPricingService reads via the new SecurityService proxy (+ the new org-scoped runs read). Org run inventory with a run sele...
Archive-not-delete markets, market-only pipeline, drag reorder
Settings › Engagement Types: - Archive markets (type "ARCHIVE" to confirm) instead of deleting; Active/Archived sub-tabs; restore from Archived. Market detail...
Underwriting review polish (i18n, a11y, contrast, enum humanize)
Apply review findings: localize frozen/yes/no + humanized aria-labels, humanize enum pills, phase title-case parity (shared titleCase), null-safe ausKindId, WCA...
Underwriting Review steward screen (agency AUS + non-QM), live
Second steward tab, on the shipped MLOSUnderwritingService reads via the new SecurityService proxy. Agency AUS runs inventory (DU/LP/GUS + decision) with a deta...
Wire Capital & Risk Command Center to the live read-path
Replace the fixture layer with the real end-to-end read-path: browser -> **************** route handler -> APIService -> SecurityService MlosCapitalMarketsContr...
MLOS Capital & Risk Command Center steward console
Add the AI-native mortgage steward console under /commerce (MORTGAGE market tab), replacing the placeholder intents/commitments sub-tabs with MortgageStewardSec...
System Wide toggle + credit-balance editor + cascade filter; history member filter/links/pagination; inject icon+INJECT confirm
- /leads/credits: right-aligned 'System Wide:' Active/Suspended dropdown; Credit Balance uses the ∞-capable InfinityCell (lowering invalidates, ∞ leaves as-is...
Drop redundant in-view titles on Templates/Past-Imports tabs
The sub-tab labels already name the view, so remove the h4 title + subtitle from LeadImportTemplateManager and LeadImportHistoryManager; keep the refresh action...
Add missing /api/security/lead-imports proxy route; default to Import Templates
- The base GET/POST /api/security/lead-imports had NO Next proxy route.ts (only sub-paths did), so Past Imports fetch (and the import POST) 500'd at the Next ...
Split Lead Credits into Available/History/Manage Credits actions
Reorders the /leads top-right actions to: Add New Lead, Leads Available (→/leads/available, Bolt icon + live availability indicator, shown with Spend/Receive), ...
Drop the Import Leads tab; two sub-tabs + header button
- Remove the 'Import Leads' sub-tab; the import wizard now opens from an always-visible 'Import Leads' button in the page header. Only two sub-tabs remain: Im...
Send leadId as string when creating a comment
parseInt() rounded lead ids past JS MAX_SAFE_INTEGER, so the backend looked up a nonexistent lead and returned 404, surfacing as 'Failed to create post' on the ...
Resolve member names on /leads/credits + link to their account
The member column and filter showed raw ids because the name map was built from /api/security/members, whose CockroachDB Long ids serialize as JSON numbers and ...
Rebuild to pull new i18n keys from translation dictionary
The manual-import feature keys were added to kamo-translation-dictionary (en) which CI copies into messages/ at build time; this forces a rebuild so the deploye...
Inject Test Lead action on /leads/available (managers only)
Adds an 'Inject Test Lead' button beside Accept for each vendor/product, shown only to members with MANAGE_CREDITS. Opens a confirmation dialog, then POSTs to t...
Archive & download the original imported file
On Start Import the raw file is uploaded (best-effort) and its key passed to the import POST; Past Imports shows a Download button for runs with an archived fil...
Import Templates + Past Imports sub-tabs, auto-detect, re-import
- Sub-tab bar in LeadManualImportManager: Import Leads | Import Templates | Past Imports - LeadImportTemplateManager: template list/create/edit/delete + upload-...
Live availability indicator on the Lead Credits button
Mirror the NavPri Leads indicator on the /leads 'Lead Credits' action: a green/red status dot (green = a lead is acceptable now via FFA or credit, red = none) a...
Make EditableCard onEdit optional so reassignment gating type-checks
The assignment card passes `canReassignManually ? startEditAssignment : undefined` to EditableCard.onEdit, but onEdit was typed `() => void` (required), failing...
Live NavPri lead alert — green/red dot, blink, fire popup, edge trim
- LeadAlertProvider (global, mounted at NavPri level): WS-driven /available-summary; drives all state - NavPri Leads icon: green dot (can accept) / red (cannot)...
Busy state on Start Import + drop debug logs
- disable Start Import / Back and show a spinner + 'Importing…' while the import POST is in flight, preventing duplicate submissions on large files - remove [...
/account-style header+tabs, /leads Card containers, right gating
- LeadsCreditLayout: gradient hero header + underline tabs (matches /account); filters+grid in rounded /leads-style Card; Available tab gated by SPEND_RECEIVE...
Credit-based lead assignment UI (available/history/credits)
- /leads/available: real-time vendor/product grid, atomic Accept (routes to the lead), comment-gate blocked state, rows animate the moment a lead is claimable...
Market lifecycle + market-scoped vendors/products
- Markets & Fields: Active/Archived sub-tabs; row action is Archive/Reactivate (PATCH .../active), never delete - Vendors & Products: one sub-tab per active m...
Stop refresh icon blinking via infinite check loop
Once a domain was SSL-confirmed, checkDns unconditionally built a new domain object even when sslConfirmed was already true. The new object reference re-trigger...
Add media subdomain to the required records list
media.<domain> backs the realtime websockets (chat, calls, SMS, theme provisioning) and media streaming, but it was missing from the DNS setup catalog, so custo...
Don't fetch org with a precision-truncated id
LabelManager derived orgIdStr from getOrgIdString() (precision-safe) with a fallback to String(organization.id). organization.id is a JS number and silently tru...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.