Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· kamo-shared-library
În cazul în care nu se utilizează o metodă de evaluare a creditului, se utilizează o metodă de evaluare a creditului
Suprafețele existente *************** și adaugă patru coloane declarate LeadClaimMortgage; fire DTO (citire/actualizare/creare), registrul de teren de istorie și LeadService creare+actualizare. Acestea sunt fapte revendicate/ESTIMATE împrumutate (firewalled din URLA verificat), oferind Ofițerul de împrumut un bogat pre-1003 imagine de la portalul împrumutat.
· SecurityService
Membru proces uploads like org bg + gate by new rights
- New ImageResizeClient rulează upload-uri de fundal pentru membri prin intermediul SAME post-procesare ca fundaluri org (POST ************* și stochează rezultatul ca .webp. - TemaBackgroundController: autoriza toate cele cinci obiective de noile drepturi MANAGE OWN BACKGROUND IMAges pentru propriul membru, *************** pentru un alt membru (un superset; ocoliri în modul Dumnezeu). Citirile rezolvă ținta utilizator membru, astfel încât adminii pot lista / servi imaginile altora; încărcați magazinul sub utilizatorul membrului țintă. - New GET /theme-backgrounds/active returns the session's own slideshow URL-uri imagine (gol = > org toamna) pentru stratul de fond global. Rights Auto-seed on boot via RoleRightsSyncService (necesită noul shared-lib, care clonele CI). Nu este nevoie de kamoInitializator.
· kamo-internal
Porți fundaluri My-Profile de noi drepturi + slideshow membru/org
- Poartă secțiunea profilul meu "Background & Tema" de MANAGE OWN BACKGROUND IMAges (Self) / ***************** (altele); permiteți unui administrator de fond Deschide profilul altui membru. - Persist alegerea org-vs-proprietate prin fiecare fundal esteInSlideshow steag (org = > nici unul activ, all active = > all active) Acum derivă comutația de la imagini active pentru a se potrivi cu ceea ce slideshow servește. - OrgSlideshowLayer preferă propriile medii active ale membrului (GET *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** org fundaluri. Noua rută de proxy subţire /activă.
· kamo-shared-library
Adaugă Manage Own / Alții Drepturi de fundal Imagini (Grupul General)
Adds MANAGE OWN BACKGROUND IMAges (165) and *************** (166) la RoleRightType, serviceType nul astfel încât să aterizeze în setările generale grup (minors the State LICENSING * OWN/ALL precedent). Poartă fiecare membru Imaginea de fundal a profilului meu. Adaugă numai; versiune neschimbată.
· SecurityService
Anunță ofițerul de credit desemnat atunci când sunt primite toate documentele de împrumut
Fires LOAN DOCS READY LO la punctele de satisfacţie alături de împrumutat DOC COMPLETE. Rezolvă LO prin împrumutFile -> - Nu. -> Membru; auto-păzit pentru împrumutul fiind colectate integral, un LO atribuit, și un e-mail rezolvabil.
· kamo-shared-library
LOAN DOCS READY LO șablon canonic
· kamo-internal
Atribuirea unui ofițer de credit la un acord din secțiunea inițiator
Secţiunea "Read-only Loan Originator" are acum un împrumut-officer alegetor (org members) prin /membri/nume) + Assign, apel PUT ***************** la nivelul tranzacției (mostenit de toate împrumuturile pentru copii). La atribuirea se restabilește aplicația astfel încât proiecția live reflectă imediat numele LO/NMLS/licența de stat. Ascuns o dată congelate (așa-originate). Acest lucru face ca întregul inițiator gestionat de sistem să poată fi operat înainte de Acest lucru nu a fost nici o modalitate de a stabili atribuirea, astfel încât câmpurile LO proiectat întotdeauna gol. (Nou IU siruri de caractere inline în aşteptarea unui i18n pass, potrivire anunţului secţiunii existente.) Verificat: TSC --noEmit curat.
· kamo-internal
Furnizorul configurează câmpurile pentru accesul la cloud mail
Adăugați intrările de configurare pe care EmailService le citește pentru autentificarea cloud-ului Cutii poștale: - Google Workspace: service-cont cheie (JSON) pentru IMAP de delegare de domenii. - IceWarp: gazda postala, parola cutiei postale, securitatea transportului. - Exchange (on-prem BASIC/NTLM): poştă gazdă, poştă de serviciu parolă, transport Paza.
· EmailService
Traseu e-mail al tuturor furnizorilor de cloud prin IMAP/SMTP cu OAuth2 (XOAUTH2)
Furnizori de cloud (Microsoft 365, Exchange Online, Google Workspace, Zoho, IceWarp) Moştenire citită/trimite de la *************** dar rezolvatorul niciodată Acreditari IMAP/SMTP populate pentru ei, deci fiecare dosar/mesaj citit aruncat Casetă poștală Neconfigurată Excepție - > ecranul "email neconfigurat" (ex. org opțiunea 1 pe M365). KamoMail a lucrat doar pentru că singur a primit acreditări (Dovecot intern). Acum toți furnizorii curg prin calea IMAP/SMTP; KamoMail este neschimbat. - MailCredentials: spectaculozitate completă *************** - ImapStoreFactory + EmailSmtpservice: SASL XOAUTH2 (native com.sun.mail) sau basic aut per spec; STARTTLS necesar (inchis-inchis) astfel încât jetoanele nu tranzitează text clar. - MailProviderRezolvator: cablare credibilă per furnizor + căsuţă poştală implicită membru + OAuth token refresh. M365/Exchange-Online use app- only client-credentials tokens (Outlook.office365.com; - Nu. chiriaș derivat din domeniul căsuței poștale; Google utilizează delegarea de domenii a contului de servicii; Zoho foloseste OAuth token stocat; IceWarp/on-prem Exchange utilizează aut de bază de la furnizorul de configurare. - EmailImapService: solution Sent/Drafts via RFC 6154 SPECIAL-USE, astfel încât a trimis copii teren în dosarul nativ al furnizorului (Gmail [Gmail]/Sent Mail, Exchange Sent items). - FurnizorController: persistă câmpurile config-form în configurația criptată Json (anterior scăzut); listarea capacităților fără a menționa un jeton. - Eliminate de aruncat coturi RealtimeNotifier de la furnizorii de nori (polling coperts în timp real; nu împinge-webhook infra). M365/Exchange-Online necesită aplicarea IMAP.AccessApp + SMTP. SendAsApp cu admin consimtamant si New-ServicePrincipal in Exchange Online (scopable per posta).
· kamo-internal
Stencils
Dialogul de upload oferă acum un selector opţional "Deal" (al contului) tranzacţii); alegerea unui împrumut de timbreTransacţionareId astfel un doc sensibil la timp (credit raport, extrase de cont) este obligat la acest acord și satisface numai împrumuturile sale "La nivel de cont" păstrează reutilizarea atemporală pentru documente de identitate. Completează model de document de tranzacție-scop. Verificat: TSC --noEmit curat.
· SecurityService
Upload seif poate detail-scop un document (împrumutTransaction Id)
Seif upload acceptă acum un împrumut opţionalTransacţiune Id, ştampilat pe MemberDocument astfel încât un doc sensibil la timp (raport de credit / extras bancar) poate fi obligat la o anumită tranzacție împrumuturi. Omitet = reutilizarea fără timp a contului (neschimbată). A apărut pe Documentul MembruDTO. Verificat: mvn compila curat.
· kamo-internal
Stencils
Adaugă un comutator 2-icon de top-dreapta (sub pilula de studiu; se ridică în pilula lui locul odată ce încercarea se termină) pentru a alege fundalul consolei: - Declin simplu (default, cele mai bune performanțe) - Org foto diapozitivehow utilizare: <themePath>/json/config.json's backgroundImageCount → <themePath>/img/bg/{n}.webp; preîncărcat cu 404s scăzut și crossfaded (respecturile preferă-mișcare redusă; cade înapoi în câmpul simplu dacă nu se rezolvă nicio imagine). Alegerea este salvată dispozitiv PER în Storage local (folosiți Mod Background), nu server-side, pentru că este o alegere de redare / perf care ar trebui să rămână locale. ă Partajat Backdrop onorează (casă + setări); comuta trăiește pe acasă. Fiecare Pictograma are un vârf de instrument. Nou acasă.background.* siruri de caractere expediate la dicționar.
· SecurityService
Înghețați instantaneul inițiatorului la estimarea inițială a împrumutului (reg Z/TRID)
Completează ciclul de viață al inițiatorului: o rezoluție comunăProjecție() alimentează acum AMBELE Proiecție de citire live și îngheț (fără derivă). La emiterea unei comunicări INIȚIALE LE Set, IpotecarDisclossControl îngheață LoanOriginator de origine LO + org + licență de stat pe rândul WORM și timbre congelateAt/ Stat înghețat (idepotent; @PreUpdate blocks any later change). După aceasta org/LO redenumește niciodată persoana cu care provine împrumutatul. Verificat: mvn compila curat.
· kamo-internal
Tranzacție-primul conducta
Înlocuiește grila de împrumut plat cu un PrimeReact Datatable of TRANSACTIONS care începe prăbușit și extinde IN Place la creditele lor membre (fără sertar cu două clic), astfel încât administratorul deschide direct un împrumut specific. Coloane mamă: Tranzaction #, Deal Status, Împrumut (împrumuturi), Credite, Target Close; rânduri pentru copii: Împrumut #, Împrumut, Proprietate, Suma, Status, Open. Creditele orfane sunt acordate ca rânduri cu împrumut unic. Păstrează căutarea, filtrul de stare, CSV export, New, și punctele de intrare Board/HMDA. PrimeReact 10 (MIT). De asemenea, se angajează Spectacolul de proiectare a refactorului. Verificat: tsc --noEmit + următoarea clădire atât curat.
· kamo-internal
Re-adăugați pilula proces de top-dreapta (colorat NavPri pilula)
Păstrează linia de încercare în banda de stare masthead și re-adds o pastila proeminenta în dreapta sus, astfel modul de încercare al unui orga rămâne evident. Este NavPri extins pilula de studiu cu culorile sale de umplere / text schimbat ( fundal primar, alb text/icon) folosind aceeaşi etichetă *********************; afişată numai pentru personal (TEAM MEMBER) cu drept la proces.
· kamo-internal
Live "Inserați între" în timp ce trageți, nu doar picătură-la-swap
Din episoadele anterioare: Acum lista re-fluxuri live ca tine drag: dnd-kit onDragOver mută târât opțiune la slotul opțiunii hovered (arrayMove), astfel încât membrul vede exact unde va ateriza între ceilalţi. UtilizațiHomeLayout.Move avansează comanda ref sincron atât de consecutive evenimente drag-over compune corect, și ia o salvează steagul astfel încât previzualizarea live skips scrie; ordinul final persistă o dată pe picătură printr-o nouă comitere().
· kamo-internal
Switcher-ul de credit pentru vizualizarea aplicației
O tranzacție poate grupa mai multe împrumuturi; antetul aplicației arată acum un comutator pentru a sări între împrumuturile fraților de afaceri (ascunse pentru contracte cu un singur împrumut) în loc să fie doar Accesibil prin conducta. Verificat: TSC --noEmit curat.
· kamo-shared-library
ÎmprumutFileDTO.împrumutTransacţiuneId (app vizualizare cunoaşte afacere)
Suprafață a tranzacției de împrumut astfel încât vizualizarea / aplicații poate arăta / schimba fratele împrumuturi. Verificat: mvn instala curat.
· kamo-internal
Nu-ţi face griji. (tip FFE)
Oglindește câmpul de suport pentru coloana Tranzacție # conductă. Verificat: TSC --noEmit curat.
· SecurityService
Tranzacție la suprafață Număr pe TranzactionSummaryDTO (tranzacție teavă #)
Linia conductei per tranzacție poartă acum numărul tranzacției umane. Verificat: MVN compila curat.
· SecurityService
Proiecţia iniţiatorului rezolvă licenţa pe stat
Completează proiecția inițiatorului live: StewardLicense LO atribuit (NMLS MLO) pentru statul de proprietate al subiectului (din proprietate.adresă.subdiviziune; normalizat la ISO-3166-2), unul în curs de validare, populează iniţiatorul StateLicenseId. Verificat: mvn compila curat.
· kamo-internal
Trageți și fixați pentru a rearanja opțiunile de lansare, salvate pe membru
Membrii pot reordona acum opțiunile lor de acasă prin târâre, iar aranjamentul este server-side persistent per membru (supraviețuiește reîncărcare și le urmează peste dispozitive) prin intermediul aceluiași generic ui-preferences depozit nav layout folosește - utilizaţi HomeLayout (AvailableIds) încarcă comanda stocată, o uneşte cu opțiuni gated în prezent (noi opțiuni se anexează, cele eliminate scad) și persistă Recomandari cu un optimist, debounced PUT la Nu-ţi face griji. - dnd-kit DndContext peste zidărie: MouseSensor (5px) + TouchSensor (250ms) astfel încât un click rapid încă deschide o carte / sub-postul său în timp ce o presă-drag rearanjări (doar puncte, ca navs vii). Reordonarea se angajează la lansare Inelele țintă picătură. FeatureCard devine dragable=[fals} astfel încât nativ link-drag Nu se luptă cu dnd-kit.
· kamo-internal
Asigurați Materiale prima filă + aterizare implicită; eliminați Privire de ansamblu
Prezentare generală fila eliminate; Materialele este acum primul. Indexul /marketing redirecţionează către primul tab accesibil (Materiale implicit), astfel încât oricine deschide terenuri de marketing pe Materiale.
· SecurityService
Proiecţie iniţială live
GET / imortage- apps/ {uid} Acum acoperă o proiecție de inițiator în viață, gestionată de sistem (compusă pe citire, niciodată păstrată) cu excepția cazului în care rândul este congelat: numele org/NMLS/adresa de la Organizaţia şi numele funcţionarului/NMLS/membru al echipei din partea membrului ASSsigned to tranzacția împrumutului (denumirea juridică prin intermediul Utilizatorului.EmbNameFull.formatFull(), NMLS via Membru.nmlsId). Identitatea staţionară este curăţată. sursa adevărului. Un rând congelat (inițial LE emis) este instantaneu WORM, lăsat neatins. Rămâne pentru proiecția completă: StewardLicense per-stat (necesită subiectul se precizează pe graficul aplicației) și declanșatorul înghețării la emisiunea inițială LE.
· kamo-internal
Sectiunea Fondator de imprumuturi este administrata numai de citire / sistem
Cardul de origine a împrumutului nu mai conține date URLA §9 (duplicarea datelor *************** a fost re-capturarea). Redă doar citire: o proiecție LIVE a ofițerului de credit atribuit + org înainte de împrumutul inițial Estimarea, apoi instantaneul ca origine congelată după (înghețat în stare congelată/sursă acum pe LoanOriginatorDTO). Elimină intrările editabile + plasturele debouncedOriginator Autosalvare. Proiecţie backend/feze cablare terenuri următoare (SecurityService).
· SecurityService
Atribuirea de credite la nivel de tranzacție + numărul tranzacției
asiguraTransacţiunePentruApp acum ştampile un număr de tranzacţii org-unique (TXN-<uid>). Noul ***************** + Put / imortage- apps/ tranzactions/ {uid}/loan-officer stabilește ofițerul de împrumut atribuit acordului (un membru.id, moștenit de toate împrumuturile pentru copii) Proiecție/snapshot de împrumutor (originator nu este niciodată introdus manual). Operator... Poartă, telescopică.
· InitializerService
Se raportează valoarea absolută a obligațiilor care decurg din contractele de reasigurare și din vehiculele investiționale înainte de șoc
Articolul 4 alineatul (1) litera (a) din CRR Refactorul inițiator/tranzacție: mlos loan tranzaction (tranzacție număr + asignate lo *), împrumut originators (congelate at/congelate state WORM markers), mlos member document (împrumut tranzaction id acord-obligatoriu). Imposibil.
· kamo-shared-library
Inițiator/prima schemă de compensare
Backbone pentru conductorul de sistem + primul refactor al tranzacției (spec 2026-07-08): - LoanTransaction: tranzaction Number (org-unique) + asignedLoanOfficerMemberId (+ audit) proiecție, moștenit de toate împrumuturile pentru copii. - LoanOriginator: frozenAt/frozedState + @Preupdate WORM guard o proiecție LIVE a membrului/org desemnat până la estimarea inițială a împrumutului probleme (reg Z/TRID), apoi un instantaneu imuabil ca origine. LoanOriginatorDTO A se vedea nota de subsol 1. -MemberDocument: împrumutTransactionId afacere-obligatoriu (raportul de credit, extrasul bancar) este supravegheat prin tranzacţie; NULL = contul fără timp. Sejururile de valabilitate temporală guvernate de prospeţimea existentăPolitică (NOT duplicat). Logica proiectării/înghețării/asignării vieții în Serviciul de Securitate (care depinde de ambele numodificați și mlos), nu aici nucleul blocat rămâne mlos-decuplat.
· kamo-internal
Adaugă filtru de produs dependent de Vânzător
Adaugă un filtru de produs în bara de filtrare / plumb, imediat la dreapta Filtru Vânzător. Se comportă ca perechea Status/SubStatus: dezactivat până la a furnizor este selectat, opțiunile sale sunt produsele aparținând selectate Vânzătorul, şi e clar când vânzătorul se schimbă. Filtrul client-side predicate și starea de filtrare au existat deja; aceste fire sus picătură.
· kamo-shared-library
Shared AusEngineClassifier
Programul→motor, run→ motor, și de decizie→gate cartografiere au fost locale - Nu. Capital-piețele de blocare-stage AUS hard-stop are nevoie de clasificarea identică, iar o poartă de împrumut echitabil nu trebuie să aibă două copii care pot pluti. Extragerea celor trei cartografieri pure în Nu-ţi face griji. (comutatoare statice, exhaustive = compil-forced completeness / §8.2 drift guard). Soluţionarea preţurilor acum delegaţi la ea; LockStageAusGate de capital' folosește același lucru. Aditiv, fără schemă.

Universul tău te așteaptă.
Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.
Gratuit pentru totdeauna — nu este necesar un card de credit