Phase 2 review polish — drop dead prop, dedupe LTV/equity warn, guard 0-value mismatch checks
Split form into Loan / Borrower / Subject Property tabs
Splits the mortgage sub-form's mega-grid into four sub-tabs (Loan, Borrower, Subject Property, What-If Studio) and renames "Property Address" to "Subject Proper...
Org-scope inbound LOS loan lookup + after-commit outbound push + inbound history audit
Honest DTI/payment labels for missing inputs (partial PITI, no-debts back-end, conventional-PMI MI)
Use dictionary t() keys for MLOS integration UI strings
Replaces the `// i18n: dictionary key TODO` placeholder literals in LeadMarketManager (MLOS Integration select), MeridianLinkConfigDialog (field labels, Test Co...
Purpose-gate Eligibility Snapshot; hide unevaluable programs; merge HomeReady/Home Possible; sort UNKNOWN last
Drop poller link write so server-owned contentHash isn't clobbered; collision-safe poll-unit key
ApplyLosPatch owns lastPulledAt (stamp on no-op too); single link writer
Internal LOS apply endpoint for inbound sync
POST **************** {leadUid, provider, loXmlFields} — server-to-server (no session/rights). Constant-time X-Internal-Auth check against the cluster internal-...
MeridianLink 60s inbound poll job
Drain the per-appCode modified-loans queue (collapsed to distinct (instanceBaseUrl, appCode) poll-units) and forward recognized field changes to SecurityService...
Lead Create/Open Application button + LOS proxy routes + leadsApi
Phase 7 of the MeridianLink external-LOS integration: adds the header button that creates or opens a lead's linked MeridianLink loan file, the Next.js proxy rou...
Lead create/open LOS application endpoints + market-config MLOS fields
Checkbox selection no longer reloads the grid
Selecting a row checkbox called setSelectedIds(new Set(...)), which was listed in loadLeads' useCallback deps. That gave loadLeads a new identity on every click...
Use the full logo in the masthead (top-left)
Was the icon logo (64x64 square). Switch to variant="logoFull" (logo-full), sized 56px tall with auto width (capped 320px) so the wordmark isn't squished.
MLOS integration dropdown on market modal
Add a MLOS Integration dropdown **************** to the market Add/Edit modal, shown only for Service > Residential Mortgage markets, plus a Configure button be...
MeridianLink per-market Configure dialog
New MeridianLinkConfigDialog, modeled on the platform OAuth EditDialog, scoped to a single LeadMarket's connection via losConnectionApi (Phase 3 backend). Edits...
Center the watermark logo in the page area
Was pinned bottom-right (backgroundPosition "right -4% bottom -8%"). Center it in the content region — inset past the nav rail + top bar via --nav-pri-width / -...
Align losConnectionApi.remove return type
The DELETE endpoint returns {deleted:true, marketId}, not just {deleted:boolean} — align the client type to match the backend shape.
Real soft-delete + reactivate-on-upsert for LOS connection; safe test-connection message
I1: view()/testConnection() now read via the shared-lib's active-filtered finder so a soft-deleted (market,provider) connection reads as "not configured" instea...
Active-filtered MarketLosConnection finder
Adds **************** so consumers can treat a soft-deleted (isActive=false) LOS connection as absent, mirroring SocialConnectionController's active-filtered re...
Drop the collapsible box around upload + gallery
The "Your wallpapers" section was a collapsible SectionHeader + Collapse — no reason to hide the upload and gallery behind an expand toggle. Replace with a stat...
MeridianLink vendor client-id card on platform OAuth registry
Adds a MeridianLink Mortgage ProviderDef to the platform OAuth2 client registry **************** vendor client_id ("Vendor Client ID") + non-secret config.token...
PlatformOAuthProviderType append-order guard
Regression-locks the Phase 5 pull-forward: MERIDIANLINK(8,"meridianlink", "MeridianLink Mortgage") must stay the LAST constant so no existing provider's persist...
Market LOS connection proxy + client
Phase 3 (Task 3.2) kamo-internal half: the Next.js proxy + typed client for a market's MeridianLink connection, backed by SecurityService's MarketLosConnectionC...
Market LOS connection service/controller
Phase 3 (Tasks 3.1-3.2) of the MeridianLink external-LOS integration: CRUD + Test-Connection for a market's MeridianLink connection. - MarketLosConnectionServi...
Fail closed on blank MeridianLink Save status + OKWithWarning test
LO-XML field mapper
LoXmlFieldMapper translates Lead/LeadClaimMortgage <-> confirmed MeridianLink LO-XML ids (sLAmtCalc, sPurchPrice, sApprVal, sLPurposeT, aBFirstNm, aBLastNm) wit...
MeridianLink modified-loans + deep-link
Adds ListModifiedLoansByAppCode (parse ArrayOfString -> loan names), **************** and AppView.GetPmlLoanUrl (prefix the partial URL with the origination hos...
MeridianLink SOAP client create/save/load
MeridianLinkSoapClient wraps the Loan.asmx ops over a Spring-WS WebServiceTemplate (namespace **************** per-op SOAPAction): Loan.Create -> loan name; Loa...
MeridianLink auth ticket cache
MeridianLinkAuthService mints and caches the sTicket per (instanceBaseUrl + sha256(clientSecret)) with an injected Supplier<Instant> clock and a configurable TT...
MeridianLink creds resolver
Adds the Phase 2 SOAP-adapter package **************** with MeridianLinkCreds (secret-redacting record) + MarketLosConnectionResolver, which decrypts the per-ma...
LeadLosLink entity + repository
Tracks a lead's link into an external LOS loan file, one row per (lead, provider). Carries the sync bookkeeping (contentHash, lastPushedAt, lastPulledAt) that P...
MarketLosConnection entity + repository
Per-market credential/config connection to an external LOS (MeridianLink / KamoMLS / Encompass), one row per (market, provider). Secret lives only as an AES-256...
Send X-***-Token on the upload XHR (fixes all uploads failing)
The session moved from a cookie to per-tab sessionStorage (896ea516); window.fetch is monkey-patched to attach X-***-Token to /api/* calls, but the raw XMLHttpR...
LeadMarket.mlosIntegration column + DTO round-trip
Adds the MLOS_INTEGRATION column (STRING-stored, defaults NO_MLOS, null-guarded getter) plus DTO/create/update-request plumbing. LeadMarketService collapses the...
Console-background pref per-member in DB; clearer upload error
- useBackgroundMode now persists the plain/slideshow choice in the member's DB ui-preferences (follows the member across devices) instead of per-device loca...
Promote base mortgage-market leads to LeadClaimMortgage on save so mortgage fields persist
A lead whose market sub-type is (residential/commercial) mortgage was stored as a base Lead unless the backend salesType itself equaled the mortgage type, so up...
What-If Studio as 3rd form sub-tab; sandbox stacked to fit form column
Header KPIs show reliably (relax gate + wrap header row); swap output columns, **************** on left
Cap concurrent uploads (queue, max 3)
Multi-file upload fired every selected file at once, and the burst of concurrent server-side resizes OOM'd the image service. Queue the uploads and run at most ...
Outputs panel 2-col (Eligibility left, short menus right); drop KPIs/meters now in header
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.
