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
Sehemu ya Mwanzo wa Mikopo ya kusoma tu sasa ina picker ya ofisi ya mkopo (wanachama wa shirika) kupitia / wanachama / majina) + Assign, wito PUT ***** Kiwango...
Weka background nyuma ya nyumba + mazingira ya kutua
Akizungumzia hatua ya kimataifa-mwanachama alipendelea background juu ya (i) Kuingiza (s) badala ya kila ukurasa. Kwa mara nyingine tena, kwa mara nyingine tena...
Kuacha serialed xoauth2 getter kwamba kuvunja 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)
Wasambazaji wa wingu (Microsoft 365, Exchange Online, Kazi ya Google, Zoho, IceWarp) Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ..............................
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...
Upakiaji wa Vault unaweza kufikia hati (loanTransaction) ya ya)
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...
Bomba la kwanza la biashara - safu za kupanua
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 jaribio kidonge juu-kulia (rangi-swapped NavPri kidonge)
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...
Kuishi "kuingiza kati" wakati draging, si tu kuacha-to-swap
Previously the order only changed on drop, so it read as swapping into a slot. Now the list re-flows live as you drag: dnd-kit onDragOver moves the dragged opti...
Sibling-loan switcher juu ya mtazamo wa maombi
Shughuli inaweza kundi mikopo mbalimbali; header programu sasa inaonyesha switcher kuruka Fedha hizo ni kwa ajili ya mikopo badala ya mikopo. Inawezekana kupiti...
CreditFileDTO.loanTransactionId (mtazamo wa programu unajua mpango wake)
Inazunguka shughuli ya mkopo ili maoni / majibu yanaweza kuonyesha / kupiga sibling mikopo. Picha zote na Wizara ya Mambo ya Ndani ya Nchi.
Kwa mfano, *** (Sauti ya Mwanamke)
Mirrors the backend field for the pipeline Transaction # column. Verified: tsc --noEmit clean.
Surface transactionNumber on TransactionSummaryDTO (pipeline Transaction #)
The per-transaction pipeline row now carries the human transaction number. Verified: mvn compile clean.
Kuacha bendera ya nje ya picha flashing juu ya ujumbe tayari
Kusoma pane hutoa ujumbe kutoka kwa cache yake indexedDB kabla ya mtandao Kurudisha, na nakala ya cached inakosa picha za mbali za seva Bendera ya Uhuru Jiwe li...
Originator projection resolves the per-state license
Inakamilisha mradi wa chanzo cha kuishi: StewardLicense ya LO [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1) cha kifun...
Drag-na-drop chaguzi za uzinduzi wa upya, kuokolewa kwa kila mwanachama
Wanachama sasa wanaweza kurekebisha chaguzi zao za nyumbani kwa kuvuta, na mpango ni Kushikilia upande wa seva kwa kila mwanachama (kupitia upya upya na kufuata...
Make Materials the first tab + default landing; remove Overview
Overview tab removed; Materials is now first. The /marketing index redirects to the first accessible tab (Materials by default), so anyone opening Marketing lan...
Folder create/rename 500 on root folders (Map.of null value)
createFolder/renameFolder built the response with Map.of(..."parentId", parentId), which throws NullPointerException when parentId is null (a root folder) — the...
Live originator projection — org + assigned LO, on read
GET /mortgage-apps/{uid} now overlays a LIVE, system-managed originator projection (computed on read, never stored) unless the row is frozen: org name/NMLS/addr...
Loan Originator section is read-only / system-managed
The Loan Originator card no longer hand-edits URLA §9 data (the duplication of **************** it was re-capturing). It renders read-only: a LIVE projection of...
Transaction-level loan-officer assignment + transaction number
ensureTransactionForApp now stamps an org-unique transactionNumber (TXN-<uid>). New **************** + PUT /mortgage-apps/transactions/ {uid}/loan-officer sets ...
Masonry layout so mixed-height option cards pack without ragged gaps
Leaf cards are short and parent cards vary with their sub-item count (Calculator has 9 modes, VoIP 2), so a uniform grid left big gaps under the short cards in ...
Originator/transaction-first columns (@Order 90)
Additive nullable columns + org-unique transaction-number index for the MLOS originator/transaction refactor: mlos_loan_transaction (transaction_number + assign...
Originator/transaction-first schema — LO assignment, WORM freeze, deal-scoped docs
Backbone for the system-managed-originator + transaction-first refactor (spec 2026-07-08): - LoanTransaction: transactionNumber (org-unique) + assignedLoanOffic...
Add missing account-assign proxy route
The lead-account assign/unassign UI called POST/DELETE **************** but the Next.js proxy route was never created — so requests 404'd and surfaced as "Unkno...
Add Product filter dependent on Vendor
Adds a Product filter to the /leads filter bar, immediately right of the Vendor filter. It behaves like the Status/SubStatus pair: disabled until a vendor is se...
Shared AusEngineClassifier — one source of truth for the §8.2 agency mapping
The program→engine, run→engine, and decision→gate mappings were local to **************** The capital-markets lock-stage AUS hard-stop needs the identical class...
Robust vision provider/model selection across vendors
Two-pass selectVisionProvider: prefer any org provider that has an active vision-capable model adapter already emits image_url content and reports supportsVisio...
AI auto-tag + caption UI; provider cost-tier/vision settings (P3)
Settings → AI → Providers: each provider gains a Cost tier (Light/Medium/Heavy) select and a Supports vision toggle (+ list chips). Materials drawer: 'Suggest t...
Provider cost-tier/vision passthrough + internal one-shot vision endpoint
AiProviderController reads/echoes costTier + supportsVision. ProviderRoutingService gains selectVisionProvider(orgId, tier). **************** runs a one-shot vi...
AI auto-tag + caption via org's providers (P3)
MaterialAiController POST **************** verifies ownership, mints a short-lived signed material URL, and calls AIService's internal vision endpoint (org's ow...
AiProvider gharama tier + maono bendera (mbili orthogonal uwezo axes)
Adds costTier (LIGHT/MEDIUM/HEAVY via new AiProviderTier enum) and supportsVision boolean to AiProvider, so integrations can pick how expensive a provider to us...
Persist "display external images" server-side instead of localStorage
The choice now comes from the message's server-recorded remoteImagesAllowed flag and is saved via POST **************** so it's durable and consistent across de...
Server-side "display external images" consent
Replaces the client-local (localStorage) remembering of the external-image choice with a durable per-member record. New RemoteImageConsentService (fail-soft rea...
EmailRemoteImageConsent entity + repository
Member-scoped record that a member has chosen to display external (remote) images for a specific message, keyed by member_id + normalized RFC Message-ID (unique...
Add INVESTOR_PRICE column to rate_locks + loan_pricing_snapshots
@Order(80) idempotent ADD COLUMN IF NOT EXISTS (DECIMAL(9,4), matching the price-to-100 grids) so the MLOS RCE can record the true non-par investor execution pr...
Record the true non-par investor price on RateLock + LoanPricingSnapshot
The binding rate-lock-of-record and its bound quote carried only rate + lockDays; discount/origination points were left null, so the core entities read PAR whil...
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.