Email-preview links open in a new tab again
The sanitizer already sets target="_blank" on every link, but the document-level click handler in NavigationInterceptor was firing for every link click — includ...
Initial personal-loan origination + servicing service
New Spring Boot 3.1.5 / Java 21 microservice modeled on BillingService. Owns personal-loan domain end-to-end: - LoanProduct / LoanOffer / Loan CRUD with REST +...
Add PERSONAL_LOANS commerce type + entity package
- CommerceType.PERSONAL_LOANS + parallel EngagementType + vocabulary - BuiltinVendorCategories entries for personal-loan vendors - 15 personal_loans JPA entitie...
Photo-album uploads use the same WS pipeline as the Uploads tab
Extracts the doc-manager upload pipeline (hashing → dedup check → register-or-upload → WebSocket-driven conversion) into a reusable useImagingUploads hook. The ...
Add /api/security/mortgage-apps catch-all proxy — 404 root cause
The kamo-internal app proxies every Java backend path through an explicit Next.js route handler (one per top-level segment: /commerce-markets, /pos, /leads, …)....
Hide isActive=false programs from borrowers in real time
useProgramCatalog now filters out programs with isActive=false before returning them to the loan wizard. The flag is computed server-side as (base.isActive AND ...
/pipeline/{vertical}/{x} 404s — namespace was renamed to /commerce/
The /pipeline namespace has no routes in this app — every link going to /pipeline/applications/{x}, /pipeline/orders/{x}, /pipeline/engagements/{x}, /pipeline/s...
Backfill program offerings for existing mortgage markets on boot
DataLoader now calls **************** after the AppMortgage-engagement backfill. Sweeps every existing MORTGAGE CommerceMarket and ensures its program Offerings...
Bootstrap mortgage program offerings on market create + boot backfill
When the user creates a CommerceMarket with commerceType=MORTGAGE — via the Markets & Fields settings tab — the market needs program Offerings under it for down...
Detach before replacing features collection in /org/domain
The previous fix wired the applied-model projection into **************** but called org.setFeatures(projected) on the still-managed entity. The Organization.fe...
Remove standalone Applications icon — LOS lives under Commerce
The mortgage application pipeline is one vertical of the commerce system, not a top-level nav. Loan officers, processors, and underwriters reach it via Commerce...
Resolve ambiguous /org/domain handler — Commerce nav was disappearing
SecurityController had a second **************** that collided with **************** Spring rejected the request with "Ambiguous handler methods mapped" → 500 →...
Duplicate binders so users can fork without affecting the original
Adds a "Duplicate" action accessible from the binder list's context menu and from a new button in the editor header. The duplicate starts from the source binder...
Add POST ****************
Deep-copies a binder the requester can see (owned, shared, or template) into a fresh binder owned by the requester. Copies every item (DOC, SEPARATOR, GENERATED...
Mortgage Programs toggle + MORTGAGE engagement deep-link
- MortgageProgramsPanel now ships a real Switch on each program card with optimistic update + rollback on failure. Toggling a program calls PUT ************...
PUT /programs/{code}/active + deprecate legacy mortgage POS endpoints
- MortgageProgramController gains PUT **************** with body {"isActive": bool}, gated on LOS_TAKE_APPLICATION. Delegates to **************** which upse...
Per-org enable/disable + deprecate legacy commerce-only mortgage path
- **************** upserts an OrgProgramOverride row with recordState.isActive=desired; listForOrg now AND's the base program's active flag with the overrid...
Show Engaged / Committed badge on application cards
Each mortgage card in /applications now renders a tiny chip next to the pair count: green "Committed" when the loan has a Commitment (funded), indigo "Engaged" ...
Backfill mortgage engagements on boot
DataLoader now invokes **************** after rights sync and System User backfill. Idempotent — once an app is attached to its engagement+intent, subsequent bo...
Polish — backfill, delete cleanup, amount sync, appUid links
- **************** heals AppMortgages predating the wiring; called from SecurityService DataLoader. - AppMortgageService.delete cancels the engagement+intent ...
Flatten add-item menu so Generated Docs are reachable
The "Add Generated Doc" submenu approach didn't work: clicking the menu item closed the parent menu, which unmounted the MenuItem before the nested Menu could a...
Drive journey sky from SkyToggle, unstack from personality chip
- Move SkyToggle to its own top-right row at top-14 so the slider stops overlapping LoGuideChip, which is positioned at right-14 assuming it only needs to c...
Scrubbable day↔night theme with sun-moon SkyToggle
- Continuous t ∈ [0,1] scene position drives ~25 CSS custom properties on :root via linear RGB interpolation between warm-paper day and aurora night anchors...
Expose engagement/intent/commitment UIDs
AppMortgageDTO now carries the commerce-lifecycle identifiers that the SecurityService backend populates on every mortgage application. KamoLOS doesn't actively...
Show Commerce context + Programs settings tab
- /applications hero now reads "Commerce > Residential Mortgages · URLA 2021" so staff see mortgage as one vertical of the commerce module, not a standalone...
Enforce LOS rights + /commerce/engagements endpoint
- MortgageAppController: every endpoint now gates on RoleRightType. Reads require LOS_VIEW_PIPELINE; creating a new application requires LOS_TAKE_APPLICATIO...
Wire URLA mortgage into Engagement/Intent/Commitment
Mortgage is one vertical of the commerce system — alongside retail, rental, service, subscription, and procurement. This wires the URLA-fidelity mortgage stack ...
Stop double-appending render query string; add share + meta dialogs
Render fix: - **************** was manually appending ?inline=true to apiPath, but forwardToApi already preserves the incoming query string. The duplicated quer...
Include com.kamo.z.shared.binder in @EnableJpaRepositories
DocsService boots with an explicit basePackages list, not classpath scanning, so BinderRepository wasn't being discovered — startup failed with "No qualifying b...
Add Organizer tab with binders, separators, generated docs
Adds the Organizer to the doc manager: - New "Organizer" tab (position 4) with a binder list + editor split view; existing tabs shift right - "Add to Organizer"...
Add Organizer backend — CRUD, render, generated docs
New REST surface under /api/docs/binders for the Organizer feature: - BinderController: CRUD, item add/update/remove/reorder, share, render - BinderService: org...
Add Binder/BinderItem/BinderShare entities and repositories
Adds the persistence layer for the new doc-manager Organizer feature: - Binder (Long id, owner member, org-scoped, isTemplate, binder-wide modifierJson) - Binde...
Lift home CTA cluster above the LenderFooter
Buttons at bottom-12/sm:bottom-14 were clipped by the lender attribution footer (~76px tall on desktop). Bumped offsets so the cluster clears it.
Glimmer the test banner, fit the viewport, add cookie consent
- TestModeBanner publishes its height to --kamolos-banner-h and globals.css subtracts it from min-h-screen so the home view no longer overflows the viewport...
Surface SAFE Act NMLS IDs for lender + assigned LO
Adds LoContactCard with avatar, presence pulse, verified NMLS link, and call/email/message actions in the top-left of hero and apply surfaces, so the borrower's...
Stop personality chip overlapping the SoundToggle
LoGuideChip was absolutely positioned at top-3/right-3 in JourneyHero and JourneyApplyLayout, the same spot as the global SoundToggle in app/layout.tsx. Shifted...
Stop racing hydration with a 404 — render the logo URL that actually exists
The tenant MinIO bucket holds logo-full.svg / logo.svg as canonical names; nobody uploads the -on-dark variants. We were trying the dark-mode URL first, 404'ing...
Unwrap SecurityService's nested color wire-format so tenant brand vars actually populate
SecurityService returns Organization with colors nested inside an EmbColorPalettePair ({ colors: { colorPri: { colorPri, colorLight, ... } } }) and stores hex w...
Render the logo img on the SSR pass — no more wordmark-only flash
ThemeLogo's empty-string initial logoSrc + useEffect-to-fill pattern meant the SSR render returned the wordmark fallback, then hydration populated the src. If a...
Kill fake-tenant defaults, render the actual org's branding only
Removes the Apex Mortgage demo I should never have added and the Kamo "default" fallback I replaced it with. Both were just papering over a missing-tenant condi...
Demo lender auto-loads when no real tenant resolves
The reason "still not branded" — no real tenant org existed for the hostname being tested, so the SSR fetch returned null and every lender-facing surface fell t...
Ship default logos so unbranded hosts render a real lockup
Ported ThemeLogo dropped the local-file fallback the kamo-internal original had, so any host whose tenant MinIO bucket hadn't been provisioned (or doesn't exist...
Make the lender the primary brand, not an accent
Reframes the borrower-facing app from "Kamo product with lender accents" to "lender's product, Kamo as the engine." Every surface now leads with the lender's id...
Migration for borrower-facing brand + disclosure columns
Adds the seven nullable columns the kamo-shared-library Organization entity now declares (TAGLINE / NMLS_ID / PHONE_SUPPORT / EMAIL_SUPPORT / EQUAL_HOUSING_DISC...
Emit lender brand + disclosure fields into per-org config.json
Two changes that finish the kamo-los borrower-facing branding pipeline: 1. OrganizationController gains a public GET /api/security/org/domain/{host} endpoin...
Add borrower-facing brand + disclosure fields to Organization
Seven new nullable columns powering the lender-branded surfaces in kamo-los's borrower app: - TAGLINE — marketing line shown on the brand-intro spl...
Deep org-theming integration across every borrower surface
Executes the full plan from the org-theming analysis: every CTA, glow, progress bar, focus ring, ambient orb, chat surface, header logo, and attribution line no...
Make org branding loud — animated splash, ribbon, glow, footer
The subtle 1px accent ribbon and header logo weren't doing enough to celebrate the lender's brand. Now every hero surface delivers a real brand arrival moment. ...
Port org-scheme theming from kamo-internal so borrower surfaces pick up lender branding
Ports the subdomain-driven org-theme system from kamo-internal into kamo-los, scoped down to what makes sense for an unauthenticated borrower-facing surface (no...
Port public chat support from kamo-marketing, restyled for aurora theme
Brings the AI + live-support chat widget from kamo-marketing into the borrower-facing app, recoloured to the kamo-los aurora palette (surface-base / ink / auror...
Je, unaona nini kuhusu usafiri?
Kila kitu kinaingia kwenye tovuti yako mwenyewe. Anza kwenye mpango wa bure na usome ukurasa huu tena katika mwezi mmoja.
