Changelog
Was ist neu?
Jede Verbesserung an der Plattform, wie sie geliefert wird.
· kamo-shared-library
Hypotheken-Bedien trägt Kreditnehmer-ausgeschätzt Finanzen (Einkommen, Kredit, Kaufpreis, Anzahlung, refi balance/Cash-out)
Oberflächen die bestehenden ************ und fügt vier angegebene Spalten hinzu LeadClaimMortgage; wires DTOs (read/update/create), die History Field Registry und LeadService erstellen+Update. Dies sind CLAIMED/ESTIMATED Kreditnehmer Fakten (befeuert von der verifizierten URLA), geben der Darlehensoffizier ein reiches Bild vor-1003 vom Kreditnehmerportal.
· SecurityService
Prozessmitglied Uploads wie org bg + gate durch neue Rechte
- Neuer ImageResizeClient führt Hintergrund-Uploads durch den SAME aus Nachbearbeitung als org Hintergründe (POST **************** und speichert das Ergebnis als .webp. - ThemeBackgroundController: autorisieren Sie alle fünf Endpunkte durch die neuen Rechte MANAGE_OWN_BACKGROUND_IMAGES für das eigene Mitglied, **************** für ein anderes Mitglied (ein Superset; God-Moy Bypasses). Reads lösen das Ziel Benutzer des Mitglieds, so dass Admins können Listen /servieren Sie die Bilder anderer; Uploads speichern unter der Benutzer von target Mitglied. - New GET /theme-backgrounds/active liefert die eigene Diashow des Session-Mitglieds Bild-URLs (leer =- oder org Fallback) für die globale Hintergrundschicht. Rechte am Boot über RoleRightsSyncService (braucht die neue Shared-lib, die die CI-Klone). Kein KamoInitializer Run erforderlich.
· kamo-internal
Gate My-Profil Hintergründe von den neuen Rechten + member/org slideshow
- Abtrete der Sektion Mein Profil "Hintergrund & Thema" von MANAGE_OWN_BACKGROUND_IMAGES (Selbst) / **************** (andere); lassen Sie einen Hintergrund-Admin Öffnen Sie das Profil eines anderen Mitglieds. - Besteht die org-vs-eigene Wahl über die isInSlideshow-Flagge jedes Hintergrunds (org =- keine aktive, eigene =- alle Aktiven) - keine Schemaänderung; die fetch heuristische Jetzt leitet das Toggle von aktiven Bildern zu entsprechen, was die Diashow dient. - OrgSlideshowLayer bevorzugt eigene aktive Hintergründe (GET ************ fail-soft) und fällt zurück auf die org Hintergrund. Neue dünne /aktive Proxy Route.
· kamo-shared-library
Verwalten / Andere Hintergrundbilder hinzufügen (Allgemeine Gruppe)
MANAGE_OWN_BACKGROUND_IMAGES (165) und ************ (166) zu RoleRightType, serviceType null, damit sie in den Allgemeinen Einstellungen landen Gruppe (spiegelt den STATE_LICENSING_*__OWN/ALL Präzedenzfall). Gate the pro-Mitglied Hintergrund-Bilder sind auf Mein Profil zu sehen. Anhängen-only; Version unverändert.
· SecurityService
Benachrichtigen Sie den zugewiesenen Darlehensoffizier, wenn die Kreditnehmer-Dokumente eines Darlehens alle erhalten werden
Fires LOAN_DOCS_READY_LO an den Befriedigungspunkten neben dem Kreditnehmer DOC_COMPLETE. Löst das LO über liehFile -- ************ -- Mitglied; selbst gewärter Schutz des Darlehens, das vollständig eingezogen wird, ein zugewiesenes LO und eine lösbare E-Mail.
· kamo-shared-library
LOAN_DOCS_READY_LO kanonische Vorlage - benachrichtigt LO, wenn die Docs eines Darlehens alle in
· kamo-internal
Zuweisen Sie einen Darlehen Offizier zu einem Deal aus der Original-Abteilung
Die Nur-Lese-Darbeer-Sektion hat jetzt einen Leih-Officer-Picker (org Mitglieder via /members/names) + Assign, Aufruf PUT ************ bei der Transaktionsniveau (ererblich von allen Kinderdarlehen). Auf zugeordnet es re-fegt die App so die Live-Projektion spiegelt sofort den Namen des LO/NMLS/state-Lizenz wider. Einmal versteckt gefroren (wie-erzeugt). Das macht den ganzen systemverhandletzten Urheber bedienbar - vor dass es keine Möglichkeit gab, die Zuordnung einzustellen, so dass die LO-Felder immer leer ausgerechnet wurden. (Neue UI Strings inline bis zu einem i18n-Pass, passend zur vorhandenen Mitteilung des Abschnitts.) Verifiziert: tsc --noEmit sauber.
· kamo-internal
Provider config Felder für Cloud-Mail-Zugriff
Fügen Sie die Konfigurationseingaben hinzu, die der E-MailService-Rechensentser liest, um Cloud zu authentifizieren Briefkästen: - Google Workspace: Service-Acount-Key (JSON) für Domain-wide-Delegation IMAP. - IceWarp: Mailhost, Service mailbox Passwort, Transportsicherheit. - Austausch (on-prem BASIC/NTLM): Mail Host, Service Mailbox Passwort, Transport Sicherheit.
· EmailService
Routen Sie die Post aller Cloud-Anbieter über IMAP/SMTP mit OAuth2 (XOAUTH2)
Cloud-Anbieter (Microsoft 365, Exchange Online, Google Workspace, Zoho, IceWarp) hereinerte Lesen/Senden von ************ aber der Resolver nie Bevölkerte IMAP/SMTP-Anmeldeinformationen für sie, so dass jeder Ordner/Nachricht gelesen warf MailboxNotConfiguredException -" der "email nicht konfiguriert"-Bildschirm (z.B. org Optionone auf M365). KamoMail funktionierte nur, weil es allein Zugangsdaten erhielt (interne Dovecot). Jetzt fließen alle Anbieter durch den einen IMAP/SMTP-Pfad; KamoMail ist unverändert. - MailCredentials: vollständige Verbindungs-Spezifikation ************ - ImapStoreFactory + EmailSmtpService: SASL XOAUTH2 (native com.sun.mail) oder Basic auth per spec; STARTTLS erforderlich (fail-closed) so Tokens nie Transit-Sklartext. - MailProviderResolver: pro Anbieter Anmeldeinformationen per Provider + Mitglied Standard Mailbox + OAuth Token aktualisieren. M365/Exchange-Online nutzen App-only Client-Credentials Tokens (aussichts.office365.com; ************ Mieter abgeleitet von der mailbox-Domain; Google nutzt Service-Account-Domain-weite Delegation; Zoho verwendet die gespeichertes OAuth Token; IceWarp/on-prem Exchange verwenden grundlegende auth von Provider-Konfiguration. - EmailImapService: Behebe Sent/Drafts via RFC 6154 SPECIAL-USE, also gesendete Kopien landen im nativen Ordner des Anbieters (Gmail [Gmail]/Sent Mail, Exchange Sent Items). - ProviderController: persist config-form Felder in die verschlüsselte KonfigurationJson (vorher fallen gelassen); Listenfähigkeiten ohne Präge ein Token. - Entfernte die Wurf RealtimeNotifier Stubs von Cloud-Anbietern (Polling-Abdeckungen realtime; kein Push-Webhook infra). M365/Exchange-Online erfordern Anwendung IMAP.AccessAsApp + SMTP.SendAsApp mit Admin Zustimmung und New-ServicePrincipal in Exchange Online (skopierbar per Mailbox).
· kamo-internal
Deal-scope ein Tresor-Upload von der Registerkarte Kontodokumente
Der Upload-Dialog bietet nun einen optionalen "Deal"-Wunser (der Account Transaktionen); Wahl eines BriefmarkendarlehenTransactionId so eine zeitsensible doc (Kredit Bericht, Kontoauszüge) ist an diesen Deal gebunden und nur befriedigt seine Kredite - während "Account-wide" hält die zeitlose Wiederverwendung für Identitätsdokumente. Vervollständigt die transaktionsskopiertes Dokumentenmodell Ende-zu-Ende. Verifiziert: tsc --noEmit clean.
· SecurityService
Vault Upload kann Deal-scope ein Dokument (LoanTransactionId)
Der Tresor-Upload akzeptiert nun ein optionales DarlehenTransactionId, gestempelt auf der MemberDocument, so dass eine zeitsensible doc (Kreditbericht / Kontoauszug) gebunden werden kann zu einer bestimmten Transaktion - die Zufriedenheit Wache dann gilt es nur für dieses Geschäft Darlehen. Ausgelassen = kontolose Wiederverwendung (unverändert). Ergängt auf MemberDocumentDTO. Verified: mvn kompilieren sauber.
· kamo-internal
Pro-Gerät Hintergrund-Schalter - schlichte Gradienten oder org Foto-Diashow
Fügt eine Zwei-Symbol-Schalter oben rechts (unter der Testpille; es steigt in die Pille Platz, sobald die Studie endet) um die Konsole Hintergrund wählen: - Einfacher Gradient (Standard, beste Performance) - die vorhandene oklab-blob-Kulisse. - Org Foto-Diashow - verwendet die gleichen Themen-Assets die Login-/Register-Websites verwenden: <themePath]/json/config.json's backgroundImageCount . <themePath]/img/bg/{n>webp, Vorbelastet mit 404s fallengelassen und überfaded (Respekte bevorzugt-reduziert-Bewegung; fällt zurück ins Klarefeld, wenn sich keine Bilder auflösen). Die Wahl wird PER DEVICE in localStorage (useBackgroundMode) gespeichert, nicht Server-Seite, weil es eine Rendering/Perf-Wahl ist, die lokal bleiben sollte. Die geteilt Backdrop ehrt es (home + Einstellungen); der Knick lebt zu Hause. Jeder Icon hat einen Tooltip. Neue home.background.* Strings, die ins Wörterbuch geliefert werden.
· SecurityService
Der Urheber-Schnappschuss bei der Initial Loan Estimate (Reg Z/TRID)
Vervollständigt den Ursprungs-Lebenszyklus: eine gemeinsame resolveProjection() füttert nun BEIDE Live-Leseprojektion und der Freeze (keine Drift). Über die Erteilung einer INITIAL_LE-Enthüllung gesetzt, MortgageDisclosureController friert die as-orginated LoanOriginator die projizierte LO + org + State-Lizenz auf die WORM-Reihe und Stempel gefroren frozenState (idempotent; die @PreUpdate Wache blockiert jede spätere Änderung). Nach diesem org/LO umbenennen ändert nie, mit wem der Kreditnehmer stammt. Verified: mvn kompilieren sauber.
· kamo-internal
Transaktions-erste Pipeline - PrimeReact ausbaubare Reihen
Ersetzt das Pauschal-Kreditnetz durch einen PrimeReact DataTable von TRANSACTIONS, der beginnt zusammengebrochen und erweitern IN PLACE zu ihren Mitgliedsdarlehen (keine Zwei-Klick-Schrauflage), so ein Steward eröffnet ein bestimmtes Darlehen direkt. Elternspalten: Transaktion #, Deal Status, Leihgabe(s), Darlehen, Target Close; Kinderreihen: Darlehen #, Leihgabe, Immobilien, Betrag, Status, Offen. Verwaiste Kredite machen sich als Single-Darlehen-Reihen. Hält Suche, Statusfilter, CSV Export, Neue, und Board/HMDA Einstiegspunkte. PrimeReact 10 (MIT). Auch verpflichtet sich die refactor Design-Spezifikation. Verifiziert: tsc --noEmit + nächstes Build beide sauber.
· kamo-internal
Die Studie Pille oben rechts (Farbe-geschwunde NavPri Pille)
Hält die Testreihe im Masthead-Statusstreifen und fügt eine prominente Pille wieder ein in der oben rechts so ein Org-Testmodus bleibt offensichtlich. Es ist der NavPri erweitert Versuchspille mit ihren Füll-/Textfarben getauscht (Primärhh, weiß text/icon) mit dem gleichen ************ Etikett; angezeigt nur für Mitarbeiter (TEAM_MEMBER) auf einen TRIAL-Anteil.
· kamo-internal
Live "einfügen zwischen" beim Ziehen, nicht nur Drop-to-Swap
Früher änderte sich die Reihenfolge nur auf Tropfen, so dass es sich wie das Tauschen in einen Schlitz ausliest. Jetzt die Liste re-Flows live, wie Sie ziehen: dnd-kit onDragOver bewegt die gezogen Option zum Slot der schwebenden Option (arrayMove), so sieht das Mitglied genau wo es zwischen den anderen landen. useHomeLayout.move Fortschritte seine Bestellung ref synchron so aufeinanderfolgenden Drag-over-Ereignisse zusammenzukompensieren, und nimmt eine speichern Sie Flagge, so dass die Live-Vorschau überspringt schreibt; die endgültige Reihenfolge besteht einmal auf Drop über eine neue Commit().
· kamo-internal
Geschwister-Darlehen-Switcher auf der Anwendungsansicht
Eine Transaktion kann mehrere Darlehen gruppieren; die App-Header zeigt jetzt einen Switcher zu springen zwischen den Geschwisterkrediten des Deals (versteckt für Single-Darlehen-Deals) statt nur über die Pipeline erreichbar. Verifiziert: tsc --noEmit sauber.
· kamo-shared-library
LoanFileDTO.loanTransactionId (App Ansicht kennt seinen Deal)
Oberflächen die Transaktion des Darlehens, so dass die /applikationen Ansicht zeigen kann / schalten Geschwister Darlehen. Verifiziert: mvn install clean.
· kamo-internal
**************** (FE Typ)
Spiegelt das Backend-Feld für die Pipeline-Transaktion #-Spalte. Geprüft: tsc --noEmit sauber.
· SecurityService
Surface transactionNumber auf TransactionSummaryDTO (pipeline Transaction #)
Die Pipeline-Reihe pro Transaktion trägt nun die menschliche Transaktionsnummer. Geprüft: mvn kompilieren sauber.
· SecurityService
Originator Projektion löst die pro-State-Lizenz
Vervollständigt die Live-Ursprungsprojektion: die zugewiesene LO's StewardLicense (NMLS_MLO) für den Zustand der SUBJECT PROPERTY (von property.address.subdivision, normalisiert nach ISO-3166-2), ein aktueller Valid, besiedelt den UrsprungsortStateLicenseId. Verifiziert: mvn kompilieren sauber.
· kamo-internal
Drag-and-Drop zur Neuordnung von Launchpad-Optionen, gespeichert pro Mitglied
Mitglieder können nun ihre Heimoptionen neu ordnen, indem sie ziehen, und die Anordnung ist beharrte Server-Seite pro Mitglied (überlebt Reloads und folgt ihnen über Geräte) über die gleichen generischen ui-Präferenzen speichern das nivell Layout verwendet - eine neue "homeLayout"-Taste mit den bestellten Options-IDs. - verwendenHomeLayout(verfügbarIds) lädt die gespeicherte Bestellung, verbindet sie mit der derzeit gated options (neue Optionen anhängen, entfernte fallen), und beharrt neu ordnet mit einem optimistischen, debounced PUT zu **************** - dnd-kit DndContext über das Mauerwerk: MouseSensor (5px) + TouchSensor (250ms) so ein schneller Klick noch öffnet eine Karte / deren Unter-Punkt, während ein Press-Drag Neuordnungen (nur Punkter, wie die Live-Neriffs). Reorder begeht auf Tropfen die Tropfen Ziel Ringe. FeatureCard wird Draggable={false' so native link-drag kämpft nicht dnd-kit.
· kamo-internal
Machen Sie Materialien die erste Registerkarte + Standardlandung; entfernen Sie Übersicht
Übersicht Registerkarte entfernt; Materialien ist jetzt zuerst. Der /marketing-Index lenkt zum ersten zugängliche Registerkarte (Standardmaterialien), so dass jeder, der Marketing öffnet, auf Materialien landet.
· SecurityService
Live-Ursprungsgeber Projektion - org + zugewiesen LO, auf gelesen
GET /mortgage-apps/{uid' überlagert jetzt eine LIVE, systemverwaltete Urheberprojektion (bezeichnet auf gelesen, nie gespeichert) es sei denn, die Zeile ist eingefroren: org name/NMLS/Adresse von die Organisation und Darlehensbüro Name/NMLS/teamMitgliedId vom Mitglied ASSIGNED zu die Transaktion des Darlehens (Rechtsname über User.EmbNameFull.formatFull.formatFull(), NMLS via Member.nmlsId). Stale handeingegebene Identität ist geklärt - der Abschnitt spiegelt nur die Quelle der Wahrheit. Eine gefrorene Reihe (erste LE ausgestellt) ist der WORM Schnappschuss, der unberührt gelassen wird. Bleiben für die vollständige Projektion: die pro-staatliche StewardLicense (braucht das Thema Zustand auf dem App-Grafik) und der Freeze-Trigger bei der ersten Ausgabe von LE.
· kamo-internal
Loan Originator Abschnitt ist read-only / system-managed
Die Loan Originator-Karte nicht mehr hand-edits URLA 9 Daten (die Vervielfältigung von **************** es war wiedererobern). Es macht Nur lesen: eine LIVE Projektion des zugewiesenen Kreditbeauftragten + org vor dem ersten Darlehen Schätzen, dann der gefrorene as-yginated snapshot after (frozenAt/frozenState/source jetzt auf LoanOriginatorDTO). Entfernt die editierbaren Eingaben + debounced patchOriginator autosave. Backend Projektion/Freeze Verdrahtung landet nächstes (SecurityService).
· SecurityService
Transaktionsniveau Darlehen-Officer-Auftrag + Transaktionsnummer
sicherstellenTransactionForApp stempelt jetzt eine org-unique transactionNumber (TXN-<uid&). Neu ************ + PUT / Hypothek-Apps/Transaktionen/ {uid]/Darlehen-Offizier setzt den zugewiesenen Kreditbeauftragten des Deals (ein Mitglied.id, geerbt von alle Kinderdarlehen) - die einzige Quelle, die das System-Managed fahren wird LoanOriginator Projektion/snapshot (Ursprung ist nie von Hand eingelegt). Betreiber- gated, org-scoped.
· InitializerService
Originator/Transaktion-erste Spalten (@Bestellen 90)
Additive zunichte Spalten + org-unique Transaktionsnummernindex für den MLOS originator/transaktion refactor: mlos_loan_transaction (transaction_number + geordnet_lo_*), loan_originators (frozen_at/frozen_state WORM Marker), mlos_member_document (loan_transaction_id deal-binding). Idempotent.
· kamo-shared-library
Originator/Transaktion-erstes Schema - LO-Zuordnung, WORM-Freeze, Deal-scoped docs
Rückgrat für den systemmanaged-orginator + transaktionserneuer Refaktor (spec 2026-07-08): - LoanTransaction: transaktionNummer (Org-unique) + beauftragtLoanOfficerMitgliedId (+ Audit) - die Transaktions-Level LO-Zuweisung, die den Urheber antreibt Projektion, geerbt von allen Kinderdarlehen. - LoanOriginator: frozenAt/frozenState + @PreUpdate WORM Wache - der Urheber ist eine LIVE Projektion des zugewiesenen Mitglieds/Origs bis zur anfänglichen Loan Estimate Probleme (Reg Z/TRID), dann eine unveränderliche as-herorated snapshot. LoanOriginatorDTO lichtet frozenAt/frozenState/source (LIVE|SNAPSHOT). - MemberDocument: loanTransactionId deal-binding - eine zeitsensible Tresor-Doku (Kreditbericht, Kontoauszug) ist transaktionsskopiert; NULL = Kontozeit-los. Zeit-Gigalität bleibt von der bestehenden FrischePolicy (nicht dupliziert) geregelt. Projektion/Einfrieren/Einstellenlogik lebt in SecurityService (der von beiden abhängt donotmodify und mlos), nicht hier - der gesperrte Kern bleibt mlos-entkoppelt.
· kamo-internal
Produktfilter hinzufügen, abhängig von Vendor
Fügt einen Produktfilter in die /leads Filterleiste, sofort rechts von der Vendor-Filter. Es verhält sich wie das Status/SubStatus-Paar: deaktiviert bis ein Der Verkäufer ist ausgewählt, seine Optionen sind die Produkte, die zu den ausgewählten Verkäufer, und es klärt, wenn der Anbieter ändert. Der Client-seitige Filter Prädikat und Filterzustand existierten bereits; dieser verdrahtet den Dropdown.
· kamo-shared-library
Shared AusEngineClassifier - eine Quelle der Wahrheit für die Agentur-Mapping von 8,2
Die Programm-Engine, Run-Engine und Entscheidungs-Gate-Mappings waren lokal zu ************ Die Kapitalmärkte Lock-Bühne AUS Hard-Stop benötigt die identische Klassifizierung, und ein Fair-Lending-Gate darf nicht zwei haben Kopien, die driften können. Die drei reinen Mappings extrahieren ************ (statische, erschöpfende Schalter = kompilierte Vollständigkeit / 8,2 Drift Guard). Preislöser delegiert jetzt Dazu; das LockStageAusGate der Kapitalmärkte verwendet dasselbe. Additive, kein Schema.

Euer Universum wartet.
Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.
Für immer kostenlos – keine Kreditkarte erforderlich