Mergi la conținut
KAMOUniverse

Jurnal de schimbări

Ce e nou.

Fiecare îmbunătățire a platformei, pe măsură ce se livrează.

  1. · SecurityService

    Emit creditor brand + câmpurile de dezvăluire în per-org config.json

    Două schimbări care termină conducta de branding kamo-los: 1. OrganizationController câștigă un GET public /api/security/org/domeniu/{host} obiectivul final. Rezolvă org prin meci exact OrgDomain, apoi retries după cădere cel mai profund nume gazdă alias (applicly.lender.com → creditor.com) Asa ca kamo-los lui SSR org aduce terenuri recordul creditorului pe prima vopsea. 404 atunci când nici o org deține orice domeniu de potrivire. 2. *************** este rescris pentru a emite: - Cheile originale (siteName, siteNameShort, backgroundImageCount, logoFullExt, temaRevision, description) - Paleta completa de culori: culoarePri, culoarePriLight, culoarePriLightest, colorSec, colorSecLight, colorSecLightest. Anterior culorile numai aterizat în globals.css per-org; kamo-los le așteaptă în config.json astfel DynamicMetaLoader poate scrie --org-* CSS vars înainte Aduc orice foaie de stil. - Noile domenii de organizare (tagline, nmlsId, telefonSupport, e-mailSupport, egalHousingDiscloss, onPrimaryText, gradientDirection, yearEst). TelefonSupport cade înapoi la org.phoneTollFree.număr atunci când nu set în mod explicit Old String-based buildConfigJson (...) keep as a back-compat Ambalaj astfel încât nu există pauze site-ul de apel existente. JSON este construit prin intermediul unui mic ajutor StringBuilder cu evadare corespunzătoare pentru \, ", \n, \r, \t și chars de control; valori încă provin de la o sursă controlată ( coloanele DB), dar permisul de evacuare înseamnă un creditor Tagline pasted cu citate nu va corupe fișierul. Compilează curat împotriva entității actualizate de organizare a bibliotecilor comune.

  2. · kamo-shared-library

    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 splash + footer - NMLS_ID — NMLS Consumer Access identifier - PHONE_SUPPORT — borrower-facing support phone (falls back to phone_toll_free) - EMAIL_SUPPORT — borrower-facing support email - EQUAL_HOUSING_DISCLOSURE — 'EHO' | 'EHL' | 'BOTH' (NULL = EHO default) - ON_PRIMARY_TEXT — explicit foreground hex over primary brand fill (overrides kamo-los's luminance auto-pick) - GRADIENT_DIRECTION — 'linear-135' | 'linear-90' | 'radial' | 'conic' All seven are read by SecurityService's OrgThemeProvisionService into the per-org MinIO config.json, then consumed by kamo-los's DynamicMetaLoader, LenderFooter, HelpSheet, and HeroBrandIntro. Unbranded orgs fall back to neutral kamo-los defaults at the UI layer. Matching DDL goes in KamoInitializerService (OrgBrandingFieldsMigration).

  3. · kamolos

    Integrare profundă a org-theming pe fiecare suprafață împrumutat

    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 now picks up the lender's brand colours when an org record is provisioned, while status colours, Kamo brand assets, and borrower-personal colours stay product-canonical. Foundations: - Server-rendered <style> tag **************** bakes the org's --org-* CSS vars into :root before first paint, killing the default-aurora → tenant-colour flash. - WCAG luminance helper (lib/org/luminance.ts) computes --org-on-primary from the brand colour so text on the primary fill stays AA-readable even with pale or busy lender brands. Lenders can override via the new onPrimaryText field on Organization. - New --org-* vars: --org-on-primary, --org-gradient, --org-primary-rgb, --org-secondary-rgb. Tailwind v4 @theme block adds bg-org-primary / text-org-primary / ring-org-primary / border-org-primary / text-org-on-primary / bg-org-gradient utilities that resolve to those vars at render-time. Opacity modifiers work via color-mix. - DynamicMetaLoader recomputes the same values on mount and supports a ?themeOverride.* query-string escape hatch for QA / support previews. - <link rel="preload" as="image"> for the lender logo in the SSR head. Organization DTO expansion: - tagline, nmlsId, phoneSupport, emailSupport, equalHousingDisclosure ('EHO' | 'EHL' | 'BOTH'), onPrimaryText, gradientDirection. - LenderFooter renders NMLS Consumer Access link + EHO/EHL mark. - HelpSheet uses lender phone/email when set, falls back to Kamo defaults otherwise. - HeroBrandIntro shows the lender tagline. - /apply/done timeline + "Call us instead" CTA use lender contact. Surface swap (35 files): - Every bg-aurora CTA across landing / start / personality / resume / apply/done / ceremonies / 15 waypoint pages / workspace widgets / conversation flows / chat send buttons → bg-org-gradient text-org-on-primary. - bg-aurora/N opacity variants → bg-org-primary/N. - text-aurora → text-org-primary, border-aurora → border-org-primary, ring-aurora/N → ring-org-primary/N. - Hardcoded #7B61FF and #21D4A6 hex literals in chat / TRex bubbles / ChoiceGrid / MoneyDial / EstimateReveal / CelebrationStage / ProgressArc / DocumentUploadZone / ConversationTextField swapped to rgba(var(--org-primary-rgb), N) / rgba(var(--org-secondary-rgb), N). - PulseGlow defaults to rgba(var(--org-primary-rgb), 0.55) so every pulse on the app picks up tenant brand without per-call-site work. Explicit color overrides at the 3 prior call sites removed so the default flows through. - AmbientField orbs: first two pulled from --org-primary / --org-secondary via color-mix; third stays a dusky violet for chromatic contrast. - TaskHub current-task pill + TaskStepper progress bar already on the org gradient via the swap pass. - Form focus rings (focus:ring-aurora/40) flipped to focus:ring-org-primary/40. Logo + ThemeLogo: - Walks a fallback chain: logo-full-on-dark.{ext} → logo-full.{ext} → logo-on-dark.svg → logo.svg → wordmark fallback prop. On each 404 the next candidate loads; only when the chain is exhausted does the fallback render. Tenant simulator: - /styleguide gains a TenantSimulator component with six representative presets (corporate navy, warm orange, conservative grey, electric green, rose, midnight). Clicking a preset writes ?themeOverride.* params and reloads so the whole app re-skins live — lets designers and engineers verify any surface under any lender brand without standing up real bucket configs. Surfaces deliberately NOT themed (stay product-canonical): - StatusBanner success/warn (universal status signals) - TestModeBanner (safety signal) - AutosaveBadge teal/amber - Persona picker accent colours (borrower's choice, not lender's) - Rex avatar (Kamo mascot) - Time-of-day sky tints (journey narrative) - Personality accent colours (chat voice = borrower's pick) - Confetti palette (intentionally multi-colour for celebration) - Skip-to-content focus link (brand-neutral by design) Build 32/32, 140 tests pass.

  4. · kamolos

    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. - OrgProvider context: the SSR org fetch result is now passed through React context (lib/org/OrgContext.tsx) so client components can read title, titleShort, yearEst, etc. without re-fetching. - HeroBrandIntro: one-shot, full-screen brand splash that fires on the first visit to a hero surface in a given session. Conic-gradient halo in the org's primary→secondary colours, a 16-particle ring spiralling outward, the lender's logo (or wordmark fallback) centred in a glass card with an --org-primary glow, "Welcome — let's get you home" subtitle, "tap anywhere to skip" hint. Auto-dismisses after 2.4s. Respects prefers-reduced-motion (skipped entirely). - BorrowerHeader: ribbon is now 2px and animated — gradient pans org-primary → org-secondary → org-primary on a slow 8s loop (CSS keyframe @kamo-org-ribbon). Logo gets a framer-motion entrance (fade + slide), hover scale, tap squeeze, and a soft --org-primary drop-shadow glow that follows the brand colour. - JourneyCrest progress bar: was solid bg-aurora, now uses the same org-primary → org-secondary panning gradient as the header ribbon with a soft glow. Every step the borrower completes lights up in the lender's colours. - LenderFooter: persistent attribution at the bottom of hero surfaces showing "Powered by <Lender> · since <year>" with a small org-tinted dot and an Equal Housing Opportunity mark. Fades in at 1.2s delay so it lands after the CTA cluster has settled. Respects reduced motion. All animations honour prefers-reduced-motion. Build 32/32 routes, 140 tests pass.

  5. · kamolos

    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 admin provisioning UI, no multi-tenant switching, no force-light-mode override since kamo-los is dark-by- design). How it works: - lib/org/theme.ts mirrors kamo-internal's Theme.tsx — getThemePath / buildThemeBaseForFqdn / orgFqdnFromHostname / KAMO_THEME_CONFIG_LOADED. Drops the deepest alias from the hostname so the borrower at apply.lender.com resolves to org FQDN lender.com → bucket folder lender-com → MinIO base **************** - lib/org/fetchOrganization.ts does the SSR org lookup against **************** via the existing proxy, with the optional KAMOLOS_SERVICE_ACCOUNT_*** for auth. Used by the root layout's generateMetadata() to seed the HTML title + description from the lender's org record before the page even hydrates. - **************** runs on mount, fetches <theme>/json/config.json, then: 1. sets document.title / apple-mobile-web-app-title / description 2. caches themeRevision + logoFullExt to sessionStorage for cache- busting and ThemeLogo 3. injects the favicons (96px, svg, ico, apple-touch, manifest) 4. maps the org's six colour slots onto the --org-* CSS var namespace at :root (NOT --color-*, so the aurora chrome stays canonical across orgs and only accent points opt-in) 5. dispatches KAMO_THEME_CONFIG_LOADED so logo + accent consumers can refresh Skips kamo-internal's force-light-mode <style> injection — kamo-los is intentionally dark. - components/theme/ThemeLogo.tsx renders the org logo from MinIO with aspect-ratio preservation, max-width/height caps, and a fallback prop for when the org isn't provisioned yet (so a broken image never ships). - globals.css gains the --org-primary / -light / -lighter / --org-secondary / -light / -lighter slots, defaulted to the aurora palette (#7B61FF / #21D4A6). - app/layout.tsx mounts DynamicMetaLoader and uses generateMetadata to seed initial title from the SSR org fetch. - BorrowerHeader: the left-side brand mark is now <ThemeLogo variant="logoFull" /> with a "Kamo" wordmark fallback. A 1px --org-primary accent ribbon sits above the header bar so the lender's colour shows up on every post-application surface without disturbing the dark surface palette. Build 32/32, 140 tests pass.

  6. · kamolos

    Port chat suport public de la kamo-marketing, restilat pentru tema aurora

    Aduce AI + suport live chat widget de la kamo-marketing în aplicația cu care se confruntă împrumutatul, recolorată la paleta kamo-los aurora (suprafață-baza / cerneala / aurora / inel-alb) astfel încât acesta stă curat pe Suprafeţe întunecate ale marinei în loc de verdele pădurii. - lib/chat/proxyConfig.ts centralises PUBLIC CHAT API BASE + Rezoluţia publică. Env vars (PUBLIC CHAT API KEY, API SERVICE URL, NEXT PUBLIC DOMAIN) cu fir prin lib/env.ts. - 6 trasee proxy Next.js sub app/api/chat/* forward to APIservice /api/public-chat/* cu standardul X-Public-Chat-Key antet și X-Sesiune-Token în cazul în care ruta o cere. Tradu criteriile finale păstrate pentru traducerea de mesaje de intrare-agent. - ************* din punct de vedere dinamic PublicChatWidget. Montat la nivel global în aplicație/layout.tsx astfel lansatorul urmează debitorul pe fiecare suprafață (aterizare, aplicare, puncte de trecere; spaţiu de lucru, ceremonii). - PublicChatWidget pre-umple numele de vizitator de la Dacă nu e nici un Storaj local salvat valoare, astfel de debitori care tastat numele lor în fluxul conversațional Nu-l re-intra în antetul de chat. - AiChatPanel și LiveSupportPanel păstrează modul site-ului de marketing separare (AI = HTTP cerere-răspuns, suport = STOMP WebSocket cu prezența bătăilor inimii + coada de traducere permesaj) dar utilizați kamo-los jetoane pentru suprafeţe, bule, intrări şi accente. - ***Provider păstrează widget-ul Capcha PoW dar recolorează prin CSS Vars la aurora violet. Se întoarce la capcha. atunci când gazda este gazdă locală sau IP. - Journey Hero Rex Sprite mutat la partea de jos stânga pe toate punctele de oprire (a fost jos-dreapta pe mobil) astfel încât lansatorul de chat în partea de jos-dreapta Colţul nu stă deasupra lui. - vanzator / kamo-capcha-widget copiat de pe site-ul de marketing ca un local fișier: dep. .gitignore actualizat pentru a sări peste tranzitorie vînzător/**/node module npm creează în timpul instalării. Construiţi trasee 32/32 (6 noi obiective de discuţie), 140 teste trec.

  7. · kamolos

    Scenă stratificată cu paralaxă, mișcare ambientală, atmosferă reală

    Prima tăietură a trimis un SVG mic static în spatele unei viniete agresive, așa că Empty LOT arata ca un ecran gol. Înlocuieşte-l cu o scenă cu straturi reale. care are de fapt ceva pe fiecare stat. - Lib/journey/scene/modul cu straturi de paralaxare discrete: cer (gradient + soare-arc + stele sclipitoare), nori în derivă cu netede Animatie SVG-nativa, dealuri silueta + orizont indepartat cu luminat Ferestre după lăsarea întunericului, casa însăşi (conştient de la banda topografică la lumini-on), prim-plan (cutie poștală cu steag balansoar, iarbă, balansare flori, copaci) şi un strat opţional de păsări. - EMPTY LOT arată acum banda topograf, un semn SITE, și lotul gol în Context - Arcuri solare pe cer pe măsură ce progresul călătoriei avansează; pulsul ferestrelor cald atunci când este aprins; fumul de horn se ridică atunci când luminile sunt aprinse; flori leagănă; steagul cutiei poştale roci; ferestre de orizont îndepărtate pâlpâie independent. - Pointer parallax pe JourneyHero: 6 straturi de adâncime traduce la diferite - Rex se întoarce ca un Sprite 56px colț pe eroul cu un bob blând. - Hero vinnette este acum un top / fundul se estompeze numai, niciodată în întuneric în mijlocul ecranului unde trăiește ilustrația. - Accentele Persona redă deasupra fațadei finite: steagul veteranului valuri, gradina pensionarului are flori, duplex investitorului prezinta unitate numere etc. Fiecare persoană rămâne distinctă vizual în toate statele. Construiți 28/28 rute, verificare de tip curat, 140 teste trece.

  8. · kamolos

    Înlocuiește lumea 3D cu călătorie ilustrată 2D

    Kill the procedural three.js scene end-to-end și reconstrui împrumutatului călătorie vizuală ca un modul plat, accesibil, prietenos mobil pe care navele cu suport SSR complet și un punct de schimb pentru arta de înaltă fidelitate mai târziu. - lib/journey/ preia: suprafete ilustrate de erou / creasta / miniatura, un generator de active cu suport manifest, trei trasee de călătorie persona-aware (achiziționare 8-stat, refi 5-stat polish, construcție 8-stat literal); și un render SVG parametrizat cu locașul tastat de persona + stat. - TaskHub nou pe suprafeţe / spaţiu de lucru toate 14 puncte de drum grupate pe fază cu starea de funcționare/curentă/todo. Inline TaskStepper redă în partea de sus din fiecare pagină pentru mișcarea în flux. - Rex scade corpul de box-dinozaur procedural și devine un SVG plat avatar în bule de chat și cipul ghid LO. - /aplică/* pierde semi-screen panoul lateral 3D; devine un subțire ilustrat creasta deasupra, astfel încât formularul umple viewport pe mobil. - picături @react-trei/fibră, @react-trei/drei, @react-trei/postprocessing, trei, și @types/trei din pachet. Kamoville Minimap, lumea Zustand magazin, aparat de fotografiat, particule de ploaie vreme, coada ceremonie, și toate geometriile scenei procedurale eliminate. - Construiește prerenders toate 28 rute, 24 fișiere de testare / 140 teste trece.

  9. · kamolos

    Niveluri de sol infinit + adâncime orizont + semne de gazon adecvate

    Terenul nu mai este cub - Skydome: 420 m back-side sferă colorată la orizontul activ TOD, stă în spatele drei <Sky> astfel încât orice cusătură la colțurile camerei este umplut - FarTerrainDisc: 360 m plan cu 80×80 segmente, deplasare vertex prin amestecul de zgomote de păcat/cos pe o rampă radială la sol departe devine blând 2-3 m dealuri - MidNeighbouthhood: 140 m inel de iarbă cu ușoară ondulatie, nuante între lotul și terenul îndepărtat - La distanta Vecinii: 14 case de lucru + acoperis plasate intr-un inel la 60-95 m, cu culoare deterministă/modificaţie de girație și emisiv ocazional ferestre; citește ca o suburbie reală - HorizonHills: 96-segment inel accidentat pe raza 145 m, colorate la ceață astfel se estompează în banda de cer - Drum + trotuar extins de la 40 m la 240 m astfel încât acestea converg în ceață - Lane dashes auto-împrăștiate de-a lungul drumului mai lung (la fiecare 4 m) Ceață acum rampe [32, 160] (a fost [18, 90]), corespunzătoare orizontului condus de TOD culoare astfel încât marginea discului, dealuri, și siluete vecine toate dizolva pe cer fără limite vizibile. Semne - Posturi duble (două posturi de 0,07 m pe fiecare parte a plăcii, cu funduri în pământ și capace cu bile finite aurii) - Frame tapițerie ambalaj un corp alb placă, ambele fețe materializate - Banda de antet colorata pe program; banda emite subtil asa ca apare - Montarea parantezelor în cazul în care placa întâlnește posturi - Per-program paleta: CONV indigo, FHA verde, VA rosu, USDA ocru, JUMBO aurora, oțel DSCR, teal HELOC, prună REVERSE, galben de construcție, Renovation chihlimbar, ITIN magenta, BRIDGE portocaliu, plus o aurora implicit - Câștigătorul acum dramatizat semnificativ: - posturi mai inalte, placa mai mare, text mai mare - spotLight fixat deasupra capului în culoarea accentului programului - placa de topper rider cu textul "BEST FIT," usor bobing - aura inelară cu accent pe pământ - Toate textele folosesc drei <Billboard> astfel încât rămâne lizibil de la orice cameră unghiul, cu contur de trecere pentru contrast față de orice culoare bandă - Layout: câştigător înainte şi centru, suporteri într-un ventilator 1.4-rad în spate, nu se mai suprapune cu aleea - castShadow + primi Shadow pe fiecare componentă semn astfel încât acestea să arate plantate

  10. · kamolos

    Cinematic 3D pass — postprocessing, materials, geometry, motion, weather

    The 7-day analysis from the chat, executed: Day 1 — Foundations: - @react-three/postprocessing added: EffectComposer with SMAA, N8AO (ambient occlusion), Bloom (window glow), ACES Filmic ToneMapping, Vignette - gl tone mapping = ACESFilmic, output color space = sRGB, exposure 1.05 - AdaptiveDpr + AdaptiveEvents — drops resolution while interacting - New useTimeOfDay hook drives Environment preset, Sky inclination/rayleigh, Stars (at night), background, fog, ambient/hemi/sun/fill color, cloud color from useWorldStore.dayNightProgress - AccumulativeShadows + RandomizedLight replace the flat ContactShadows Day 2 — Procedural PBR-style materials (zero asset files, generated at runtime via canvas): - grass: mottled green base + 1200 grass-blade strokes - asphalt: dark gray with pepper aggregate - concrete: light gray with expansion joints + grain - vinyl siding: tinted base + lap lines + faux bevels + grain - shingles: staggered rectangle pattern with per-row colour variance + bevels - wood: planks with vertical grooves + grain + knots - bark: vertical stroke pattern - brick: staggered rows with per-brick colour variance and mortar gaps Applied to walls (siding or brick per persona), roof, ground, road, sidewalk, fence, tree trunks. Day 3 — Geometry refinement in Home: - Stepped foundation (two layers, slightly recessed top slab) - Gable roof (two slanted shingle planes + triangular gable end walls, custom bufferGeometry) replacing flat cones for most personas - Hipped roof variant for RETIREE / EXISTING - Eave overhang of 0.45 m on all roofs - Window assemblies: 4 trim sides + mullion cross + emissive pane - Door assembly: trim, recessed backing, hinged panel with 3 raised recess insets, escutcheon plate, golden knob, doormat - Two-story personas (DUPLEX, EXISTING) get a trim band + a second-floor window row - Garage with panelled door + own hipped roof - Home-office wing for SELF_EMPLOYED - Construction scaffolding for BUILDING - Porch deck + step + posts + slim roof on tall houses - Chimney smoke replaced with 6 alpha-card billboards drifting up and fading - Wreath + passport-stamp door details Day 4 — Motion: - CameraRig: settle-timer + Ken-Burns idle orbit + triggerCameraShake() impulse function (used on closing stamp + submit ceremony) - Trees: wind sway on canopy (per-instance phase, gentle elliptical rotation + subtle bob) - Birds (new component): 3 stylised birds orbiting on lazy ellipses with flapping wing planes (Z-axis rotation) and body pitch sway Day 5 — Interactivity: drei Html label floating above with accent glow, hover sound tick, click sound + haptic + router.push to the linked waypoint - Wired to: front door (-> /waypoints/front-door), mailbox (-> /waypoints/mailbox-econsent), workshop crate (-> /waypoints/bank-vault), lawn signs (-> /waypoints/lawn-signs-detail) Day 6 — Per-persona depth (new PersonaProps component): - 6 distinct car models in the driveway: starter sedan (FIRST_TIME), white work van (SELF_EMPLOYED), forest pickup (VETERAN + BUILDING), black luxury (INVESTOR + ALREADY_OWN), red sedan (NEWCOMER), gray classic (RETIREE) — all with bodies, windows, wheels, head/tail lights - RETIREE_EQUITY: birdbath, rocking chair, garden gnome - NEWCOMER_ITIN: paired lanterns flanking the door with emissive flames + point lights - ALREADY_OWN_CASH: ivy planters, "paid in full" sign in window - BUILDING: rotating crane (cabin yaws slowly), lumber stack, port-a-john - VETERAN: 4 trimmed hedges across the front + brass service plaque - INVESTOR: second mailbox in blue + "For Rent" yard sign - FIRST_TIME: emissive teal "SOLD!" sign in the front lawn - SELF_EMPLOYED: a small coffee cup on the porch Day 7 — Weather: - New Weather3D component bound to useWorldStore.weather - RAIN: 1200-point GPU rain particle field falling at 28 m/s, additive blending, plus a slick metallic overlay on the road for wet reflection - LightningFlash: directional flash bursts every 12-25s during RAIN - OVERCAST / RAIN modes ramp turbidity in <Sky> and add 2 extra darker Cloud volumes Bonus perf: - Fence posts + road lane dashes are now Instances (one geometry instead of 50+ meshes) - Birds reuse a small mesh, body materials kept under the bloom threshold

  11. · kamolos

    Real 3D environment + neighbourhood scenery + bolder home CTAs

    3D scene was generic procedural boxes on a flat plane. Brought it up to a believable neighbourhood: - WorldScene: add drei <Environment preset="sunset"> for image-based lighting so PBR materials actually look lit, drei <Sky> for procedural atmosphere with proper sun position + Rayleigh scatter, drei <ContactShadows> for soft ground contact under the house, drei <Clouds> with 3 volumetric layers. - New 4-light rig: bright key sun + cool fill from opposite side + hemisphere for sky/ground bounce + ambient. Adds fog for atmospheric depth. Lot rewritten: - Far grass + lot grass tiers - Sidewalk strip running across the front - Asphalt road with painted lane dashes - Driveway from house to the road - Picket fence around the perimeter with horizontal rails + a gap at the front - 5 trees with multi-sphere canopies Home page (/) made obviously different from the pre-change version: - Hero headline overlay top-left ("Welcome home. Let's build it.") with aurora-clip gradient + Kamoville eyebrow pill - CTA cluster bottom-centre is now a backdrop-blurred raised panel holding both "Start your application" (with arrow) and "Pick your guide" with the selected guide's accent ring - Top-centre guide chip with the active guide's avatar, accent glow, name, and tagline — links to /personality LoAvatarChip now opens /personality and shows the selected guide's avatar + first name + accent glow, instead of the dead "your loan officer" pill.

  12. · kamolos

    3D cinematic journey + 10 personalities + persona homes

    Major UI overhaul to lean into the existing 3D world rather than overlaying 2D chrome on top of it. - Rewrite Home with animated wall lerps, swinging front door, lit-window cascade, chimney sparkles, per-state spark bursts. - Add 8 persona-specific home styles (duplex with two doors, home-office wing + garage, flagpole, welcome wreath + passport stamp, mature garden trim, always-built EXISTING, scaffolded BARE_LOT_ACTIVE_BUILD). - Add Rex3D character that walks alongside the active camera target with a walk-cycle bob and yaw toward the destination. - Add 3D Mailbox with a flag that flips when the camera dollies to it; add WorkshopCrate that grows with HomeState; add TenantPassby for INVESTOR. - Add RouteCameraDriver that maps each waypoint route to a CameraTarget and drives pointCamera() on navigation. - Add SubmitPapers ceremony: 7 paper meshes fly in parabolic arcs from porch to mailbox when ReviewingPorch submits, with camera dolly to MAILBOX and Sparkles burst on landing. - Add door override in worldState so ClosingDesk swings the 3D door open on signing, with key/chime sounds. New animation primitives (components/motion): - SoundChannel + SoundToggle: Web Audio synthesized voices (tick, chime, drumroll, whoosh, clack, stamp, lock, sparkle, jingle, door, error) with persisted mute, prefers-reduced-motion respected. - ConfettiBurst: canvas particle system with imperative fire() handle. - NumberTicker: reusable count-up for currency/rate/integer/score. - ScoreDial: banded gauge with sweeping needle for credit/DTI/LTV. - ProgressArc + JourneyProgress + JourneyProgressLive: 14-stop journey ring pinned top-left, syncs to backend section completion. - KamovilleMinimap: persistent top-down SVG map with a pulsing borrower dot that springs to the active camera target. - PulseGlow, SuccessCheck, SignatureCanvas (stroke-replayed signing), CelebrationStage (orchestrates confetti + sound + haptics), haptics helper. Hero moments rebuilt: - EstimateReveal: cinematic with embedded 3D EstimateCrest (camera dollies OVERVIEW -> DRIVEWAY -> FRONT_DOOR, home advances to LIGHTS_ON, drei Sparkles fire on reveal). NumberTicker for payment + rate. Lock-in clack. - CreditLedger: drumroll on pull, ScoreDial sweep on result, NumberTicker for trade lines + negative items, medium CelebrationStage. - ClosingDesk: SignatureCanvas with stroke replay, notary stamp slam, 3D door swing via doorOverride, epic CelebrationStage on complete. - ReviewingPorch: paper-liftoff overlay + 3D SubmitPapers ceremony + camera dolly to mailbox + epic celebration on success. WaypointSheet themed per location (vault doors split, mailbox flag flip, lawn-sign stakes rise, porch glow), with entrance sound per theme. Wired to all 14 waypoint pages. ChoiceGrid: spring scale, hover tick, selected gradient wash. MoneyDial: spring-tracked aurora-gradient fill, per-step ticks + haptics, number scales with value, glow halo intensifies with position. ConversationTextField: focus glow, shake-on-error, SuccessCheck on submit. DocumentUploadZone: drag-zone bob, success checkmark, filing-cabinet stack of completed uploads. Personality system rebuilt with 10 distinct guides: - Thomas "T-Rex" Rex (warm-pragmatic), Maya Park (crisp-professional), Sunny Halverson (playful-bright), Walter Hayes (dry-mentor), Carmen Ortiz (gentle-coach), Devon Chase (sharp-strategist), Eleanor Whitfield (concierge-formal), Theo Banks (optimist-enthusiast), Sgt. Kowalski (veteran-direct), Bea Calhoun (storyteller-folksy). - Each has gradient-initial SVG avatar, accent color, tagline, and 16-intent copy bank rewritten in voice. - New /personality picker page with sample dialogue and accent glow. - Resolver supports selection + localStorage persistence. TRexBubble: mood prop **************** with bobbing animation and mood-tinted glow ring. Home page (/): new "Pick your guide" CTA + top-centre current-guide chip linking to /personality; minimap + HomeStateChimes pulled into WorldShell.

  13. · kamolos

    12 foi de cale rămase + 8 impls scene ceremoniale

    Faza C fundație real, static-prendered suprafață. Adaptoarele de siguranţă înapoiază conexiunea întâi fluxuri; URLA scrie va schimba în per-vendor ca adaptoarele lor reale absolvent. Fișe punct de referință (12 noi): - carduri de proprietate (cabana de date de proprietate) - banca-vault (set conecte stub) - incarcatura bancilor (culegator de fise, conducta OCR pamanturi M3d) - credit-pensor (cotor de credite moale) - reo- carusel (lista REO w/ inline add) - declaraţii-stand (10 da/nu se schimbă) - hmda-pavilion (etnicitate/rasă/sex w/ decodor opţiune) - lo-desk-militar (ramură veterană + date + plată VA) - peluză-semne-detalii (program catalog + program selectat-program de scriere) - revizie-porcă (progres pe secţiune + depunere prin utilizareAplicare) - close-desk (semnează plicul) - econţinutul căsuţei poştale (4 comutaţii de consimţământ) Scene de ceremonie (8 noi + Ceremonie primitivă): - Componenta comună a ceremoniei: fundal gradient + ritmuri de dialog temporizate + Intrarea în cadru + Continuați CTA (servabil, nu Apple-keynote) - PersonaReveal, IdVerifyFrontDoor, CreditReturn, ProgramRevel, Authorize and Submit, AusFindingsSosire, Clear To Close, Close - Registry ships a Impl ComponentType per ceremonie; /ceremonies/[id] redă scena reală prin CeremonieClient ('Continuă' întoarce la /) Toate cele 14 puncte de trecere + 8 ceremonii trec tsc + vitest + următoarea clădire.

  14. · kamolos

    M3a fundație

    Jumatate din M3a conecteaza prima fundatie pe care shared-lib Conexiune + verificat Tocmai am aterizat. - lib/los/conections-client.ts - lib/los/app-context.ts - 4 Cârlige de interogare reactive: utilizare StartConnection, utilizare GetConnections, useVerified Fapte, utilizaţiDate deReconcile -/waypoints/front-door - /waypoints/paystub-clipboard adaptor pentru coapse - /waypoints/layout.tsx rames waypoints inside JourneyShell - /persona calls useSetPersona via the real API when ?app= is present - SceneRoot citeste o persona prop (flag / gradina / build-crew accente) în schimb demo-uri de ciclism; usePersona citește ?persona= din URL și este filetat prin World Shell, Mobile Crest, Journey Shell - JourneyShell împachetează panourile sale mondiale în Suspense astfel încât să utilizeze SearchParams citește nu mai abandonez paginile statice (/applică/făcute) din preredare Adaptoarele de cabluri sunt implicit peste tot ATTOM, și CRA cabluri teren per-vendor în M3b +.

  15. · SecurityService

    NumerarConnectController

    Expune prima suprafaţă de capturare la *************** - GET/POST / Connections + POST / Connections/{id}/complete - GET/ POST/verified-facts + POST /verified-facts/reconcile Împrumutătorul nu are nicio poartă a drepturilor în conformitate cu regula proprietăţii interne. Autorizare Oglinzi ipoteca AppController via orgId() from BaseLosController.

  16. · kamo-shared-library

    Conexiune + verificat Fundament de fapt pentru conect-prima captura

    Adaugă fundația de suport M3a pentru conexiunile vânzătorilor și de proveniență fapte verificate. Cabluri SDK reale (Plaid, Persona); ATTOM, birouri de credit) absolvenți per-vendor în M3b/M3c/M3d. - ConnectionVendor / ConnectionStatus / Verified FactSource enums - Entitatea de conexiune (LOS CONNECTIONS): un rând pe sesiunea vânzătorului, deține externRef + Acces la vaultTokenRef (Niciodată valori brute), referințe AppMortgage și împrumutător opțional de uid - Entitatea de date verificate (LOS VERIFICATE FACTS): un rând per valoare recoltată cu CâmpPath, valoare Json, proveniență sursă și conexiune opțională/refs documente - Spring Data backgrounds with @Query active- only lookups by app uid + seller - DTOs serialize Uids lungi ca String (Jackson JsonFormat) pentru a evita JS MAX SAFE INTEGER se revarsă pe CockroachDB unic rowid() - *************** + Informații verificateservice.record + - Nu. (Schela M3a; per vendor nave de cartografiere a câmpului alături de adaptoare reale în M3b) Utilizatorul trebuie să repornească KamoInitializerService so Hibernate ddl-auto=update creates LOS CONECTIONS și LOS VERIFICATE FAPTS tabele înainte de Serviciul de Securitate vine.

  17. · kamolos

    Frame the moștenire URLA witch inside JourneyShell

    Faza A a predarea împrumutării: lumea 3D rămâne în vedere în timp ce împrumutatul lucrează prin fiecare secțiune. Pe puncte de vedere largi (≥xl) lume umple un panou dreapta lipicios 40%; sub xl se micșorează la o creastă 28vh deasupra suprafața de lucru. Casa avansează acum state de la EPTY LOT prin LIGHTS ON ca secțiuni vrăjitor sunt finalizate și statutul de fișier de împrumut se mișcă. - New lib/world/JourneyShell wraps /aply/[section], /start, /persona - New deriveHomeState reduce progresul aplicaţiei + secţiunii către un HomeState - ************* acum luaţi statul natal ca recuzită (defaulting via useHomeState); bucla de ciclism M1 a dispărut - Fereastra dreapta a Vrăjitorului ascunde la xl+ astfel JourneyShell deține coloana dreapta - IsSectionDone extras din CalculeStates ca un export pur

  18. · kamolos

    Lumea devine homepage / servește scena 3D, /start este veranda conversațională, /căi de călătorie aplatizate la /persona /waypoints/[id] /ceremonii /[id]

    Borrower aterizează direct în noua experiență pe URL-ul public în loc de moștenirea aterizare conversațională. Homepage CTA flips între "Începeţi aplicaţia" (vizitator nou → /start) şi "Continuaţi aplicaţia" (vizitator returning with appUid → /application/property).

  19. · kamolos

    LawnSigns r3f component + SignSheet + CompareMode + semne demo cu fir în SceneRoot

  20. · kamolos

    Fluxul de selecție persona la /jurney/persona (8 personas grid)

  21. · kamolos

    Programe-client + cârlige (foloseșteProgramCatalog, utilizează SetPersona, utilizează SetSelectedProgram, foloseșteLiveProgramScores)

  22. · kamolos

    Motorul de notare pur + încercările acoperă *** *** *** **** limite

  23. · kamolos

    17 reguli de program (Zod-validate) + index tastat de LoanProgramCode

  24. · SecurityService

    Adăugaţi programul de NarcoticeController

  25. · kamo-shared-library

    Adaugă setPersona + setSelected Metode cod program

  26. · InitializerService

    ProgramSeederRunner - semințe 17 programe de bază LoanProgramCode (idepotent)

  27. · kamo-shared-library

    Repositoare, DTO-uri, ProgramService (un catalog numai pentru citire cu unificare de straturi naive)

  28. · kamo-shared-library

    Adaugă coloana de creditareModel (additive; nul = implicit BROKER la nivelul aplicației)

  29. · kamo-shared-library

    Adaugă persona + coloane de ProgramCode selectate (additive)

  30. · kamo-shared-library

    Adaugă program + entități OrgProgramOverride (catalog + suprataxă per-org)

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