Background watermark on available/history/credits, centered on content card
Adds <BackgroundWatermark> to the shared LeadsCreditLayout content card (behind the table/list, above it via z-index) so /leads/available, /leads/history, and /...
Stop duplicating the memberId query in the GET proxy
The GET list proxy hand-appended ?memberId= to the apiPath, but forwardToApi already re-appends the browser's query string — producing ?memberId=X?memberId=X, w...
Add 6 persisted mortgage fields (debts, taxes, insurance, HOA, current payment, borrower age)
Center calendar watermark to container; move selector under logos
- BackgroundWatermark: make ThemeLogo a direct flex child of the container-filling box so sizePercent (e.g. /calendar 60%) is relative to the positioned con...
Rebuild to pick up shared-lib Organization.bgWatermark
No source change. Triggers CI to re-clone kamo-shared-library main (now carrying the bg_watermark org column added in bc45b97) so the org GET/PUT serialize and ...
Org Background Watermark setting (None/Full/Simple)
Adds a "Background Watermark" radio field to Settings > Essential > behavior-labeling > Branding that controls which logo (or none) renders as the faint backgro...
Add bgWatermark branding field to Organization
Nullable String column (NONE|FULL|SIMPLE) driving the per-org background logo watermark preference; null resolves to FULL on the client. Merged in patchOrganiza...
Drop the Background & Theme section from My Account
Completes the consolidation onto the dedicated wallpaper page: removes the org-vs-own switch, its handler, the "My Wallpapers" link and the now-unused backgroun...
Closing-forecast read passthrough (operator-gated, org from session)
Add "My Wallpapers" shortcut next to the background switch
The dedicated wallpaper editor was reachable from My Account but not from the home page. Adds a frosted "My Wallpapers" pill to the left of the top-right Backgr...
Recompute P(fund) action on the Capital & Risk console
Steward button rebuilds the pipeline-funding projections from the live pipeline (POST passthrough, org from session) then reloads the fan/KPIs. Gives the flagsh...
Steward passthrough to recompute pipeline-funding P(fund) projections
POST **************** → MlosCapitalMarketsClient (X-Internal-Auth, org stamped from session) → MLOSCapitalMarketsService recompute. Operator-gated like the othe...
Dedicated full-width wallpaper editor page
Adds **************** — a full-bleed, inline (no-popup) wallpaper editor, and moves all upload/gallery curation off the My Account tab. - New "cinematic Stage"...
On-demand LIGHT-tier AI summary on the Scenario Workspace Insights card
'AI summary' button posts the factual scenario to **************** → the org's configured provider. Graceful: no provider → deterministic rule-based insights st...
Scenario-insights endpoint — LIGHT-tier AI narrative via the org's provider
POST **************** takes a factual (estimated) scenario summary, calls MlosAiClient.text(orgId, prompt, LIGHT) through the org's configured AI provider, retu...
Spec for Background Watermark org setting
Design for a None/Full Logo/Simple Logo branding setting under Settings > Essential > behavior-labeling > Branding that governs the background logo watermark ac...
Lead Scenario Workspace — LO pre-qualification workbench on the mortgage lead
Right-side panel on /leads/view for mortgage leads: 14 modular tools (Summary, Eligibility, Payment, DTI, Affordability, Down-Payment/Rate comparison, Cash-to-C...
Tier-aware internal text completion (POST /api/ai/internal/text)
Mirrors the vision path: selectTextProvider picks the org's active provider tagged with the requested cost tier (LIGHT/MEDIUM/HEAVY), falling back by priority; ...
MlosAiClient — the sanctioned tiered AI entrypoint for MLOS
Best-effort text()/vision() at a cost tier through the org's configured provider (AIService internal endpoints). Returns Optional.empty on no-provider/error so ...
Keep manager open on upload/select; uploads join the slideshow
Members reported the background manager closing after every upload and every select, only one image appearing on the home slideshow, and the "use own" choice re...
Surface borrower-stated financials on the lead mortgage panel
Adds a 'Borrower-stated financials' subsection (estimated income/credit, purchase price, down payment, refi balance/cash-out) to /leads/view mortgage details, l...
Persist borrower-stated financials + phone onto the mortgage lead
ClaimedFactsDTO gains purchasePrice, downPayment, currentLoanBalance, cashOutAmount and phone; PortalLeadService.applyFacts maps them onto LeadClaimMortgage / t...
Mortgage lead carries borrower-stated financials (income, credit, purchase price, down payment, refi balance/cash-out)
Surfaces the existing **************** and adds four stated columns to LeadClaimMortgage; wires DTOs (read/update/create), the history field registry, and LeadS...
Repair per-tab *** migration gaps in directory + timeout popup
The *** session moved from a shared cookie to a per-tab sessionStorage carrier (X-***-Token). A few consumers were never updated to match. - Interaction Center...
Show the "Manage Background Images" button so members can upload
The Background & Theme section used BackgroundManager under external open-control but nothing ever opened it, so the upload/select dialog was unreachable — you ...
Process member uploads like org bg + gate by new rights
- New ImageResizeClient runs member background uploads through the SAME post-processing as org backgrounds (POST **************** and stores the result as ....
Gate My-Profile backgrounds by the new rights + member/org slideshow
- Gate the My Profile "Background & Theme" section by MANAGE_OWN_BACKGROUND_IMAGES (self) / **************** (others); let a background-admin open another m...
Add Manage Own / Others Background Images rights (General group)
Adds MANAGE_OWN_BACKGROUND_IMAGES (165) and **************** (166) to RoleRightType, serviceType null so they land in the General settings group (mirrors the ST...
Notify the assigned loan officer when a loan's borrower docs are all received
Fires LOAN_DOCS_READY_LO at the satisfy points alongside the borrower DOC_COMPLETE. Resolves the LO via loanFile -> **************** -> Member; self-guarded to ...
LOAN_DOCS_READY_LO canonical template — notify assigned LO when a loan's docs are all in
Assign a loan officer to a deal from the originator section
The read-only Loan Originator section now has a loan-officer picker (org members via /members/names) + Assign, calling PUT **************** at the transaction l...
Scope the background back to the home + settings landings
Reverses the global-layout move — the member preferred the background on the landing(s) rather than behind every page. Backdrop is once again rendered per page ...
Stop serializing computed xoauth2 getter that broke MailCredentials Redis cache
MailCredentials is cached in Redis (GenericJackson2Json). The added `isXoauth2()` boolean getter was serialized as a "xoauth2" property but has no field to read...
Scope by org server-side (empty assocObjectId) — folders/list no longer empty
Keying materials on the org-id string was fragile: the id loses precision through a JS number on the write path and resolves inconsistently across proxy→APIServ...
Provider config fields for cloud mail access
Add the config inputs the EmailService resolver reads to authenticate cloud mailboxes: - Google Workspace: service-account key (JSON) for domain-wide-delegation...
Route all cloud providers' mail through IMAP/SMTP with OAuth2 (XOAUTH2)
Cloud providers (Microsoft 365, Exchange Online, Google Workspace, Zoho, IceWarp) inherited read/send from **************** but the resolver never populated IMA...
Lock the system-managed originator (projection, freeze, assignment)
8 tests over LoanTransactionService: live projection fills name/NMLS/subject-state license + org and marks LIVE; stale hand-entry is cleared when no LO is assig...
Render the console background globally in the layout, not per page
The background switch stays on the home page, but the chosen background (plain gradient or org slideshow) should be behind EVERY page, not just the two landings...
Deal-scope a vault upload from the account documents tab
The upload dialog now offers an optional "Deal" selector (the account's transactions); choosing one stamps loanTransactionId so a time-sensitive doc (credit rep...
Vault upload can deal-scope a document (loanTransactionId)
The vault upload now accepts an optional loanTransactionId, stamped onto the MemberDocument so a time-sensitive doc (credit report / bank statement) can be boun...
Per-device background switch — plain gradient or org photo slideshow
Adds a two-icon switch top-right (under the trial pill; it rises into the pill's place once the trial ends) to choose the console background: - Plain gradient (...
Freeze the originator snapshot at initial Loan Estimate (Reg Z/TRID)
Completes the originator lifecycle: a shared resolveProjection() now feeds BOTH the live read projection and the freeze (no drift). On issuing an INITIAL_LE dis...
Folders/list empty (org-id precision) + default visibility Team-Members-Only + custom labels
Root cause: materials store assocObjectId as the org id, which round-trips through a JS number on the write path (precision loss >2^53), so reads with the preci...
Transaction-first pipeline — PrimeReact expandable rows
Replaces the flat loan grid with a PrimeReact DataTable of TRANSACTIONS that start collapsed and expand IN PLACE to their member loans (no two-click drawer), so...
Re-add the trial pill top-right (color-swapped NavPri pill)
Keeps the trial line in the masthead status strip and re-adds a prominent pill in the top-right so an org's trial mode stays obvious. It's the NavPri expanded t...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.