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
Bump memory to 2Gi (headroom for concurrent ffmpeg)
With the resize semaphore in place, give the pod room for the JVM plus up to 2 concurrent ffmpeg image decodes so multi-file wallpaper uploads no longer OOMKill...
Mortgage KPI + LTV/DTI/Complete summary in page header (all tabs, residential-mortgage only)
Bound concurrent ffmpeg to prevent OOM under upload bursts
A multi-file upload fires all files at once; each ffmpeg decode allocates the full uncompressed frame, so N concurrent large images blew past the pod's memory l...
Split fields into Mortgage Details / Property Address sub-tabs; drop card title
What-If overrides beside live comparison table; remove dead LeadScenarioWorkspace
Fields show as labels in view mode, inputs in edit mode; flagged state dropdown
Rebuild to pick up shared-lib mortgage fields (LeadClaimMortgage +6)
Downscale-only (never upscale small images)
**************** scaled small images UP to fill the box (800x600 -> 1440x1080). Compute a concrete downscale factor capped at 1.0 from the probed dimensions ins...
Harden ffmpeg resize (probe safety, dim caps, bomb guard)
Adversarial-review follow-ups on the ffmpeg rewrite: - probeDimensions redirects ffprobe output to a file and calls waitFor() FIRST (destroyForcibly on timeou...
Fail the upload if resize fails (no full-size fallback)
Reverts the store-original fallback: if ConversionService cannot resize the image, return 422 instead of storing the full-size original (a huge image would then...
Resize backgrounds via ffmpeg subprocess (crash-isolated)
ImageIO + webp-imageio could native-crash the JVM (SIGSEGV in libwebp-imageio, UpsampleBgraLinePair_SSE2) on certain WebP inputs, taking the whole ConversionSer...
Mortgage Details tab wiring + Contact Info rename; remove inline mortgage block
Preview org photos in "Organization" mode; 24MB uploads
- Stage now previews the org's theme photos (config.json backgroundImageCount -> img/bg, like OrgSlideshowLayer) when Source = Organization; the filmstrip (...
Fall back to the original image when resize fails
ConversionService can native-crash (libwebp-imageio SIGSEGV) or be unavailable, which made every member wallpaper upload fail ("Failed to process image" -> 500)...
Coerce deriveRelevance purpose to LoanPurpose | null
scenarioFromLeadFields' loanPurpose is LoanPurpose | null | undefined, but Relevance.purpose is LoanPurpose | null — the possible undefined failed the prod type...
Stage preview scrolls in-flow + half height
Per feedback: the preview header no longer sticks/floats over the form as you scroll (removed the sticky pin, plus its now-unused prop + media query) and its he...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.