Back arrow in header returns to /leads
Add an optional backHref/backTooltip to SettingsView that renders a white back arrow left of the title, and wire the CRM settings page to send the member back t...
Raise NavPri z-index above NavTop so the rail overlays the top bar when it expands/peeks
Bold 'CRM Settings:' prefix, pipe separators, hover-only underline on tab links
Preface the CRM settings tab links with a bold 'CRM Settings:' label (new **************** key), separate links with ' | ' instead of a bare space, and switch t...
Add CRM settings tab links above refresh, gated like settings menu
Render a right-aligned row of white, underlined, space-separated links to each /settings/features/crm tab above the Leads header refresh button. The links reuse...
Correct trial pill remaining-time (was 20644d)
When NavPri was rewritten the minute-tick was changed from Date.now() to a counter starting at 0, and that counter was passed as the `now` argument to formatTri...
Reset button in the title row (right) + full-width content
- "Reset to Standard" now sits on the same row as the "Navigation Layout" heading, right-aligned, with the heading left-aligned (moved out of the footer). - T...
Surface 'Needs review' (borrower-submitted docs awaiting staff) as a distinct, prioritized state
A borrower's uploaded document flips the requirement to RECEIVED (awaiting lender), but the Documents column only showed 'Awaiting borrower' or a neutral 'In re...
Responsive trial pill + tighten remaining oversized hero headers
- NavPri trial pill: when the rail is expanded it becomes a full-width pill with the fully-qualified label centered ("Trial — 4d 7h 9m left"); collapsed it st...
Tighten oversized vertical padding on page title headers
The gradient page-title headers had far more top/bottom padding than the horizontal inset where the title text starts, wasting vertical space. Bring the vertica...
Use the lightning-bolt icon for Leads to match the /leads UI
The Leads option used AccountTreeIcon; the /leads "Leads Available" actions use BoltIcon (@mui/icons-material/Bolt). Switch the registry's Leads icon to Bolt so...
Document-collection progress column
Per-loan doc progress (accepted/total + a colored bar, 'N from borrower' / in-review / complete) in the applications pipeline, fetched in one batch by loanFileU...
De-slop remaining Quick Tips content + make leads tips collapsible
- security, operations, account, and CRM settings help columns: removed all emoji (💡 🚫 ⏳ ✅ 🌍) and rainbow-coloured bullets; every list marker is now one ...
Remember Quick Tips open/closed per USER across all pages
The help column's visibility was stored in a single global localStorage key, so it wasn't scoped to the user. Introduce useQuickTipsVisible, keyed by user id (n...
Standardize Quick Tips help column + de-slop reference page
- Rename the help side-column title to "Quick Tips" everywhere (SettingsView reads **************** whose value is now "Quick Tips"). - Add a shared HelpConte...
Settings topics are expand-only, not links
Settings topics (Essential Setup, CRM, Security, …) are group headers with no page of their own — only their sub-topics are real destinations. Drop the topics' ...
Nested sub-options so deeper items (e.g. Settings sub-topics) are reachable
The sub-option menu only rendered one level, so a sub-option that itself has sub-options (Settings topics → sub-topics) was inaccessible. - NavToolButton now r...
Clean rail alignment, uniform top-bar tiles, and replace Settings slide-out with a sub-option menu
- NavPri logo: the 56px tile made the top of the rail wider than the 44/48px options below it, and collapsed options rendered left-aligned. The logo now sha...
Member-configurable navigation — drag options between rail & top bar, expandable rail, per-member layout
Turn the two hardcoded navs (NavPri/NavTop) into a data-driven, per-member system. - Single nav registry (navRegistry) + pure resolver (resolveNavLayout) enfor...
Document vault tab — parties, requirements, satisfy/accept/reject
- AccountDocumentsTab: per-borrower-party view of the account's document vault and per-loan requirements. Upload once, satisfy every loan (satisfy-across); st...
Convert account-merge + default-product inline strings to next-intl keys
White-label multitenant strings must be translatable. Moves the account-merge dialog/button and the Borrower Origination Web Portal default-product tooltips/sna...
Transaction drill-in drawer in the pipeline
Clicking a multi-loan deal opens a right drawer showing the group status + each member loan (borrower, property, loan status), each clickable through to the loa...
Vendors-products — white-label default-product terminology, dialog option, FFA header
- Rename 'KamoMLOS' → 'Borrower Origination Web Portal' everywhere in the vendors-products UI (star tooltip, snackbars) — this is a white-label multitenant pr...
Per-transaction pipeline — list per deal, not per loan (owner req)
ApplicationsPipelineConsole now lists ONE row per LoanTransaction (its representative loan + any not-yet-grouped legacy loans), with a pinned 'Deal / Status' co...
KamoMLOS portal default-product designation in vendors-products (#11)
A star toggle on each product designates the org's single KamoMLOS portal auto-assign product (single-active). Gated via GET /lead-vendors/mlos-readiness: shown...
Account-merge admin UI (MERGE_ACCOUNTS)
AccountManager gains a Merge Accounts action (gated by **************** select exactly two customer accounts, pick the survivor, optionally keep the duplicate's...
Borrower-journey column + intake filter in the loan pipeline
The sub=pipeline datagrid (ApplicationsPipelineConsole) now shows pre-app-taken borrower-journey progress so org employees can review an application's status as...
State Based Licensing section on member my-profile
New SectionCard (NMLS ID + per-state licensed table with actively- providing checkbox and renewal/expiry dates, renewal<=expiry validated). Gated by ***********...
Remove Vendor Product ID from mappable fields
The vendor product is selected once at the run/template level (Configure step) and applied to every row; the backend importer already ignores a mapped vendorPro...
Add Source to the mappable lead fields
Lead 'source' is shown on the lead detail page but was missing from the import field list; add it (path 'source') now that the backend importer + CreateLeadRequ...
Policies tab — effective-dated pricing/capital/servicing config
New MortgagePoliciesTab: current active version + publish-new-version form + version history for each of the three effective-dated policies; configTypes/configA...
Investor delivery + commitment rule sub-editors
The expanded investor row gains Delivery (funding behavior / execution path / remittance) and Commitment (type / min pull-through % / pair-off) editors alongsid...
Drop light gray text; use dark gray-800 for labels/secondary
Medium grays (gray-500/600/700, #6b7280/#9ca3af) read as disabled. Push all secondary text and labels to gray-800 / #374151 across the detail page, shared Field...
Investor credit-box overlay sub-editor
MortgageInvestorsTab's expanded investor row gains an OverlayEditor (FICO/LTV/DTI/ reserves/doc/geo tightening + comparator + optional program + effective windo...
Right-attached full-height sub-nav + higher-contrast text
- Move the section sub-nav from the left to a right-attached, full-height panel that scrolls independently; the header + form content take the remaining width...
Governance proxy PUT/DELETE + per-org governor overrides UI (D4)
- Governance proxy now forwards PUT/DELETE (the platform-default save + per-org delete were unreachable — GET/POST-only proxy). Adds mlosDelete http helper. -...
Stop loan-pipeline grid flicker loop; full-width detail
- Loan pipeline datagrid: the grid was wrapped in a SectionCard 'fill' body (overflow:auto) around a height:100% AG Grid, causing a ResizeObserver/height fe...
Loan pipeline as Mortgage sub-tab + light theme
- Add ApplicationsPipelineConsole: a /leads-style advanced AG-Grid datagrid of mortgage applications at a loan level (status filter tabs, filter row, quick ...
Platform AI-Governor calibration config panel (D4 §5.C)
**************** Advanced tab gains a governor panel: edit the platform- default calibration posture (governor gate / force-steward-until-calibrated / min sampl...
Fire the accept-lead popup on becoming Available; drop the fire animation
The popup now triggers on the rising edge of (a credit lead is acceptable) AND (nav-top status is Available) — so it fires both when a lead is already waiting a...
Design for mortgage applications pipeline redesign + commerce integration
Single Integrations tab replaces AUS-only tab (D40)
MortgageIntegrationsTab: all 15 vendor categories (credit, AUS, eSign, closing- docs, title, flood, …) in one tab, each an expandable section with add/remove co...
AUS connections tab (D37) + block 2nd mortgage market (D38)
- MortgageAusConnectionsTab: org-scoped DU/LP/GUS credential config (one per kind); secret is a write-only password field, row shows only whether a credential...
Investor delegation sub-editor — per-program authority (D39)
Drop the delegated Switch/column; each investor row expands to a per-program delegation editor (program UUID, blank = investor-wide default; DELEGATED/ NON_DELE...
[04] risk-overlay tab — credit-box/geo/exposure layers (D31)
New MORTGAGE market config tab for per-tenant risk overlays: category (credit box / geo concentration / property type / loan amount / fraud / exposure limit) + ...
MORTGAGE investors tab (list/add/remove) — [04] slice E2 (D31)
The 7th MORTGAGE config tab: per-investor **************** authority rows with an approval-status chip. Add via an inline row (code + status + optional ********...
Unified social timeline UI at /marketing/social
Live, animated cross-provider feed reusing the clubhouse feed style: virtualized timeline, provider filter chips, SocialPostCard (capability-gated reply/react/d...
MORTGAGE licensing tab (list/add/remove) — [04] slice E2 (D31)
The 6th MORTGAGE config tab: NMLS/state/agency/investor licensing entries with effective/expiry dates and a server-computed effective-today chip (status is neve...
Honest return type for updateStageOverride (raw row, not StageAutonomyView)
Review observation: the PUT returns the raw stored override entity, not a StageAutonomyView (the effective/floor recompute is GET-only). Typed Promise<unknown> ...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.