Mabadiliko
Nini kipya.
Kila kuboresha jukwaa, kama ni meli.
· kamo-internal
MeridianLink kwa Soko la Configure dialog
New MeridianLinkConfigDialog, modeled on the platform OAuth EditDialog, scoped to a single LeadMarket's connection via losConnectionApi (Phase 3 backend). Edits **************** plus a write-only client secret (blank keeps the stored ciphertext), with a Test Connection action and load-on-open via losConnectionApi.get.
· kamo-shared-library
Active-filtered MarketLosConnection finder
Adds **************** so consumers can treat a soft-deleted (isActive=false) LOS connection as absent, mirroring SocialConnectionController's active-filtered read pattern. No schema change — is_active already exists via EmbRecordState.
· kamo-internal
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.tokenUrl and config.environment. No clientSecret at platform scope — the per-market secret is Phase 3. Provider cards are FE-declared (PROVIDERS array), not derived from the backend's GET list, so the entry is required for the card to render even though **************** was already appended server-side in Phase 2.
· kamo-internal
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 MarketLosConnectionController. - **************** GET/PUT/DELETE proxy to .../los-connection; POST proxies to the backend's dedicated .../los-connection/test endpoint (Test Connection action, no separate Next.js route). Uses forwardToApi, forwarding X-***-Token. - app/lib/los/types.ts: LosConnectionView (hasSecret only, never the ciphertext), LosConnectionUpsert (write-only secret; blank/omitted keeps the stored one), LosConnectionTestResult, MlosIntegrationValue. - app/lib/los/connectionApi.ts: **************** modeled on **************** npx tsc --noEmit passes.
· SecurityService
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. - MarketLosConnectionService: **************** over MarketLosConnection, mirroring MortgageProviderConfig's secret-at-rest convention (encrypt-on-write via PlatformSecretCipher, blank-keeps-existing secret, hasSecret-only view, fail-closed CipherNotConfiguredException when the cipher has no key). testConnection round-trips a MeridianLink auth ticket via the shared-lib adapter (MarketLosConnectionResolver + MeridianLinkAuthService) and never throws. - MarketLosConnectionController @ **************** los-connection (GET/PUT/DELETE + POST /test), gated on MANAGE_CRM_SETTINGS + org-ownership of the market (via LeadMarketService, same pattern as LeadMarketController). - SecurityServiceApplication: added **************** to @EnableJpaRepositories so MarketLosConnectionRepository injects. Focused tests (offline unit tests, no live SOAP/HTTP calls — MeridianLink onboarding is still pending): MarketLosConnectionServiceTest (10), **************** (11).
· kamo-shared-library
LO-XML field mapper
LoXmlFieldMapper translates Lead/LeadClaimMortgage <-> confirmed MeridianLink LO-XML ids (sLAmtCalc, sPurchPrice, sApprVal, sLPurposeT, aBFirstNm, aBLastNm) with a LoanPurposeType<->sLPurposeT translation table (0=Purchase,1=Refi, 2=Refi-Cashout), plus a stable order-independent SHA-256 contentHash over the tracked field set for echo suppression. LeadFieldPatch is the nullable partial lead update consumed by LeadService.applyLosPatch (Phase 6). Remaining ids **************** are parked in a single labeled FIELD_MAP block as explicit Phase-0 dependencies (LOXmlFormatDefinition.xml).
· kamo-shared-library
MeridianLink modified-loans + deep-link
Adds ListModifiedLoansByAppCode (parse ArrayOfString -> loan names), **************** and AppView.GetPmlLoanUrl (prefix the partial URL with the origination host derived from the connection instance, default **************** to MeridianLinkSoapClient. Documents the per-appCode drain-and-clear queue contract in the class Javadoc (recognized loans are cleared; unrecognized loans are left in the queue).
· kamo-shared-library
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; Loan.Save writes only the changed LO-XML fields (sorted for a deterministic payload) and throws on an Error status; Loan.Load parses returned <field id=..> elements back into a map (tolerating nested-element or escaped-string LO-XML). sTicket is supplied by the caller. All tests mock the transport via MockWebServiceServer; nothing is live-callable until Phase 0.
· kamo-shared-library
MeridianLink auth ticket cache
MeridianLinkAuthService mints and caches the sTicket per (instanceBaseUrl + sha256(clientSecret)) with an injected Supplier<Instant> clock and a configurable TTL **************** default 20 min). oauth mode frames the exchanged token as "Bearer {token}"; legacy mode (meridianlink.auth.mode) returns the GetPmlUserAuthTicket ticket verbatim. Token exchange is isolated behind MeridianLinkTokenExchanger (default OAuth client_credentials POST via **************** so the cache/TTL contract is testable with a fake.
· kamo-shared-library
MeridianLink creds resolver
Adds the Phase 2 SOAP-adapter package **************** with MeridianLinkCreds (secret-redacting record) + MarketLosConnectionResolver, which decrypts the per-market secret via PlatformSecretCipher and reads the platform vendor client_id via PlatformOAuthClientResolver. Pulls forward the Phase 5 **************** constant (append-only id 8) since the resolver depends on it. Adds **************** + spring-ws-test (test) for the SOAP transport used by later Phase 2 tasks.
· kamo-shared-library
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 Phase 6 (outbound push) and Phase 8 (inbound poll) use to suppress echo. Lead FK is pinned to columnDefinition="INT8" (no DEFAULT) for the same unique_rowid backfill-orphan reason as MarketLosConnection. Same repository-slice-harness substitution as **************** (see that class's Javadoc) — kamo-shared-library has no DB test harness, so this is a compile-level/unit test instead.
· kamo-shared-library
MarketLosConnection chombo + kuhifadhi
Per-market credential/config connection to an external LOS (MeridianLink / KamoMLS / Encompass), one row per (market, provider). Secret lives only as an AES-256-GCM ciphertext column (@JsonIgnore); org/market FK columns are pinned to plain INT8/UUID columnDefinitions so they don't inherit the referenced PK's DEFAULT **************** and silently backfill orphaned rows on a future KamoInitializer run. No DB-backed repository-slice harness exists in kamo-shared-library yet (no @DataJpaTest/H2/Testcontainers, verified by search), so the test substitutes compile-level/unit assertions (entity behavior + annotations + repository derived-query signatures via reflection) for the DB persist+lookup test the plan specifies.
· kamo-shared-library
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 value back to NO_MLOS whenever the resolved SaleType isn't RESIDENTIAL_MORTGAGE, so only Service/Residential-Mortgage markets can carry an LOS binding.
· kamo-internal
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 localStorage. Relabel the toggle "This device" -> "Console" and drop the "won't follow ... to other devices" caption. - On a 4xx upload rejection (server couldn't process the image, e.g. an unsupported format like HEIC), show "Couldn't process this image. Try a JPEG or PNG." instead of the generic "try again".
· kamo-internal
Flush 4-col layout (drop encasing card on mortgage tab); bare What-If sandbox; back button beside name, drop redundant header lead-ID
· kamo-internal
Weka Calculator ya Ufanisi juu ya safu ya pato la kushoto
· kamo-internal
What-If Studio as 3rd form sub-tab; sandbox stacked to fit form column
· kamo-internal
Outputs panel 2-col (Eligibility left, short menus right); drop KPIs/meters now in header
· kamo-internal
Mortgage KPI + LTV/DTI/Complete summary in page header (all tabs, residential-mortgage only)
· kamo-internal
Header actions move to tabs row; add KPI + meters slots to main row
· kamo-internal
Split fields into Mortgage Details / Property Address sub-tabs; drop card title
· kamo-internal
What-If overrides beside live comparison table; remove dead LeadScenarioWorkspace
· kamo-internal
Side-by-side fields|outputs layout; retire gradient hero band
· kamo-internal
MortgageOutputsPanel (clean outputs column, no gradient)
· kamo-internal
Fields show as labels in view mode, inputs in edit mode; flagged state dropdown
· kamo-internal
Mortgage Details tab wiring + Contact Info rename; remove inline mortgage block
· kamo-internal
Hifadhi ya Hifadhi ya Hifadhi ya Hifadhi (Live cockpit)
· kamo-internal
Kiwango cha ScenarioToolGrid
· kamo-internal
MortgageHeroBand kwa hesabu-up KPIs + mita
· kamo-internal
WhatIfStudio (full-width sandbox)

Ulimwengu wako unasubiri.
Kuanza bure katika dakika. Ongeza bidhaa wakati wowote wewe ni tayari - hakuna uhamiaji, hakuna logins mpya.
Bure milele - hakuna kadi ya mkopo inahitajika