Nenda kwenye maudhui
KAMOUniverse

Mabadiliko

Nini kipya.

Kila kuboresha jukwaa, kama ni meli.

  1. · kamo-shared-library

    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 LeadService create+update. These are CLAIMED/ESTIMATED borrower facts (firewalled from the verified URLA), giving the loan officer a rich pre-1003 picture from the borrower portal.

  2. · SecurityService

    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 .webp. - ThemeBackgroundController: authorize all five endpoints by the new rights — MANAGE_OWN_BACKGROUND_IMAGES for your own member, **************** for another member (a superset; god-mode bypasses). Reads resolve the target member's user so admins can list/serve others' images; uploads store under the target member's user. - New GET /theme-backgrounds/active returns the session member's own slideshow image URLs (empty => org fallback) for the global background layer. Rights auto-seed on boot via RoleRightsSyncService (needs the new shared-lib, which the CI clones). No KamoInitializer run required.

  3. · kamo-internal

    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 member's profile. - Persist the org-vs-own choice via each background's isInSlideshow flag (org => none active, own => all active) — no schema change; the fetch heuristic now derives the toggle from active images to match what the slideshow serves. - OrgSlideshowLayer prefers the member's own active backgrounds (GET **************** fail-soft) and falls back to the org backgrounds. New thin /active proxy route.

  4. · kamo-shared-library

    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 STATE_LICENSING_*_OWN/ALL precedent). Gate the per-member background-images feature on My Profile. Append-only; version unchanged.

  5. · SecurityService

    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 the loan being fully collected, an assigned LO, and a resolvable email.

  6. · kamo-shared-library

    LOAN_DOCS_READY_LO canonical template — notify assigned LO when a loan's docs are all in

  7. · kamo-internal

    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 cha biashara (inasimamiwa na mikopo yote ya watoto). Kwa kufanya hivyo, tengeneza app hii Mradi wa kuishi mara moja unaonyesha jina la LO / NMLS / leseni ya serikali. Wakati mmoja baridi (kama ilivyopendekezwa). Hii inafanya mfumo wote wa uendeshaji wa mfumo - kabla ya Hii haikuwa njia ya kuweka kazi, kwa hivyo mashamba ya LO daima yalikuwa tupu. (Vifungu vipya vya UI vinasubiri kupitisha i18n, vinavyolingana na taarifa iliyopo ya sehemu.) Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ....................................................................

  8. · kamo-internal

    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 IMAP. - IceWarp: mail host, service mailbox password, transport security. - Exchange (on-prem BASIC/NTLM): mail host, service mailbox password, transport security.

  9. · EmailService

    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. .................................................................... IMAP/SMTP sifa kwa ajili yao, hivyo kila folder / ujumbe kusoma MailboxNotConfiguredException -> "Email si configured" screen (kwa mfano org). Bonyeza kwenye M365. KamoMail ilifanya kazi tu kwa sababu pekee ilipokea sifa (Sauti ya Dovecot). Sasa watoa huduma wote hutiririka kupitia njia moja ya IMAP /SMTP; Barua pepe haijabadilika. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... - ImapStoreFactory + EmailSmtp Service: SASL XOAUTH2 (native com.sun.mail) au msingi Kwa mfano, katika kesi ya mapema, safisha mikono yako vizuri, lakini usiwache. - MailProviderResolver: kwa mtoaji wa waya wa credential + mwanachama default mailbox + . . .. M365 / Exchange-Online matumizi ya programu-tu mteja-credentials ishara (Angalia: Office365.com) Kwa mfano, *** kutoka katika vyanzo vinavyotokana na uwanja wa sanduku la barua; Google hutumia ujumbe wa kikoa wa akaunti ya huduma; Simba inatumia Ishara ya OAuth iliyohifadhiwa; IceWarp / juu ya-prem Exchange hutumia auth msingi kutoka kwa usanidi wa mtoa huduma. EmailImap Service: kutatua Sent/Drafts kupitia RFC 6154 kipekee-USE hivyo kutumwa nakala ardhi Katika folda ya asili ya mtoa huduma (Gmail [Gmail]/Sent Mail, Exchange Sent Items). - MtoaController: Endelea config-form mashamba katika configJson encrypted (kabla ya kushuka); uwezo wa orodha bila kupunguza ishara. - Kuondoa kutupa viboko vya RealtimeNotifier kutoka kwa watoa wingu (ufunikaji wa polisi) Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... M365/Exchange-Online inahitaji Maombi IMAP.AccessAsApp + SMTP. SendAsApp kwa admin Kukubaliana na New-ServicePrincipal katika Exchange Online (scopable kwa mailbox).

  10. · kamo-internal

    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 report, bank statements) is bound to that deal and only satisfies its loans — while "Account-wide" keeps the timeless reuse for identity docs. Completes the transaction-scoped document model end-to-end. Verified: tsc --noEmit clean.

  11. · SecurityService

    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 bound to a specific transaction — the satisfaction guard then applies it only to that deal's loans. Omitted = account-timeless reuse (unchanged). Surfaced on MemberDocumentDTO. Verified: mvn compile clean.

  12. · kamo-internal

    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 (default, best performance) — the existing oklab-blob backdrop. - Org photo slideshow — reuses the same themed assets the login/register sites use: <themePath>/json/config.json's backgroundImageCount → <themePath>/img/bg/{n}.webp, preloaded with 404s dropped and crossfaded (respects prefers-reduced-motion; falls back to the plain field if no images resolve). The choice is saved PER DEVICE in localStorage (useBackgroundMode), not server-side, because it's a rendering/perf choice that should stay local. The shared Backdrop honours it (home + settings); the toggle lives on home. Each icon has a tooltip. New home.background.* strings shipped to the dictionary.

  13. · SecurityService

    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 disclosure set, MortgageDisclosureController freezes the as-originated LoanOriginator — captures the projected LO + org + state-license onto the WORM row and stamps frozenAt/ frozenState (idempotent; the @PreUpdate guard blocks any later change). After this an org/LO rename never alters who the borrower originated with. Verified: mvn compile clean.

  14. · kamo-internal

    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 a steward opens a specific loan directly. Parent columns: Transaction #, Deal Status, Borrower(s), Loans, Target Close; child rows: Loan #, Borrower, Property, Amount, Status, Open. Orphan loans render as single-loan rows. Keeps search, status filter, CSV export, New, and the Board/HMDA entry points. PrimeReact 10 (MIT). Also commits the refactor design spec. Verified: tsc --noEmit + next build both clean.

  15. · kamo-internal

    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 trial pill with its fill/text colours swapped (primary background, white text/icon) using the same **************** label; shown only for staff (TEAM_MEMBER) on a TRIAL entitlement.

  16. · kamo-internal

    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 option to the hovered option's slot (arrayMove), so the member sees exactly where it will land between the others. useHomeLayout.move advances its order ref synchronously so consecutive drag-over events compose correctly, and takes a save flag so the live preview skips writes; the final order persists once on drop via a new commit().

  17. · kamo-internal

    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 kupitia bomba. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. ....................................................................

  18. · kamo-shared-library

    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.

  19. · kamo-internal

    Kwa mfano, *** (Sauti ya Mwanamke)

    Mirrors the backend field for the pipeline Transaction # column. Verified: tsc --noEmit clean.

  20. · SecurityService

    Surface transactionNumber on TransactionSummaryDTO (pipeline Transaction #)

    The per-transaction pipeline row now carries the human transaction number. Verified: mvn compile clean.

  21. · SecurityService

    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 kifungu hiki, Tume itakuwa na mamlaka ya kuajiri mtaalamu yeyote kwa ajili ya shughuli maalumu au kwa muda mfupi.[/FONT] [FONT=&](3)[/FONT][FONT=&]Tume itawalipa mishahara na posho wafanyakazi wake kadri itakavyoamua mara kwa mara. [/FONT] Ilibadilishwa kwa ISO-3166-2, moja ya sasa-valid, originatorStateLicenseId. Picha zote na Wizara ya Mambo ya Ndani ya Nchi.

  22. · kamo-internal

    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 yao vifaa) kupitia sawa generic ui-preferences kuhifadhi nav mpangilio matumizi - mpya Home »Unlabelled » UCHAMBUZI WA KITABU » UCHAMBUZI WA KITABU » - TumiaHomeLayout (inapatikana Ids) hubeba agizo lililohifadhiwa, linaunganisha na Chaguzi zilizosimamiwa sasa (chaguo mpya zinakubali, kuondolewa kwa moja), na zinaendelea kuwa na matumaini makubwa na yenye matumaini ya Kwa mfano, *** dnd-kit DndContext juu ya uashi: MouseSensor (5px) + TouchSensor (250ms) Hivyo click haraka bado kufungua kadi / subitem yake wakati vyombo vya habari-drag Na kwa upande mwingine, kama mmea wa mapambo. Reactions juu ya kushuka Malengo ya chini. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... Hakuna haja ya kupambana na Dk.

  23. · kamo-internal

    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 lands on Materials.

  24. · SecurityService

    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/address from the Organization, and loan-officer name/NMLS/teamMemberId from the member ASSIGNED to the loan's transaction (legal name via User.EmbNameFull.formatFull(), NMLS via Member.nmlsId). Stale hand-entered identity is cleared — the section reflects only the source of truth. A frozen row (initial LE issued) is the WORM snapshot, left untouched. Remaining for the full projection: the per-state StewardLicense (needs the subject state on the app graph) and the freeze trigger at initial LE issuance.

  25. · kamo-internal

    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 the assigned loan officer + org before the initial Loan Estimate, then the frozen as-originated snapshot after (frozenAt/frozenState/source now on LoanOriginatorDTO). Removes the editable inputs + debounced patchOriginator autosave. Backend projection/freeze wiring lands next (SecurityService).

  26. · SecurityService

    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 the deal's assigned loan officer (a Member.id, inherited by all child loans) — the single source that will drive the system-managed LoanOriginator projection/snapshot (originator is never hand-entered). Operator- gated, org-scoped.

  27. · InitializerService

    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 + assigned_lo_*), loan_originators (frozen_at/frozen_state WORM markers), mlos_member_document (loan_transaction_id deal-binding). Idempotent.

  28. · kamo-shared-library

    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) + assignedLoanOfficerMemberId (+ audit) — the transaction-level LO assignment that drives the originator projection, inherited by all child loans. - LoanOriginator: frozenAt/frozenState + @PreUpdate WORM guard — the originator is a LIVE projection of the assigned member/org until the initial Loan Estimate issues (Reg Z/TRID), then an immutable as-originated snapshot. LoanOriginatorDTO exposes frozenAt/frozenState/source (LIVE|SNAPSHOT). - MemberDocument: loanTransactionId deal-binding — a time-sensitive vault doc (credit report, bank statement) is transaction-scoped; NULL = account-timeless. Time-validity stays governed by the existing FreshnessPolicy (NOT duplicated). Projection/freeze/assignment logic lives in SecurityService (which depends on both donotmodify and mlos), not here — the locked core stays mlos-decoupled.

  29. · kamo-internal

    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 selected, its options are the products belonging to the selected vendor, and it clears when the vendor changes. The client-side filter predicate and filter state already existed; this wires up the dropdown.

  30. · kamo-shared-library

    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 classification, and a fair-lending gate must not have two copies that can drift. Extract the three pure mappings into **************** (static, exhaustive switches = compile-forced completeness / §8.2 drift guard). Pricing's resolver now delegates to it; capital-markets' LockStageAusGate uses the same. Additive, no schema.

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