Değişiklik Günlüğü
Yeni ne var?
Gemideki her iyileştirme.
· SecurityService
Emit kredi veren marka + açıklama alanları per-org configure.json
Camo-los borçlanma hattını bitiren iki değişiklik: 1. Organizasyon Kontroller bir kamu GET /api/güvenlik/org/domain/{host} kazanır. endpoint. Tam OrgDomain maç tarafından org geri alın, sonra yeniden rezervasyonlar En derin hostname alias (apply.lender.com → kredi veren.com) Bu yüzden kamo-los'un SSR veyag, kredi verenin ilk boyadaki rekorunu topraklar. 404, hiçbir org herhangi bir eşleşen alana sahip değildir. 2. **************** yayılmak için yeniden yazılır: - The original keys (siteName, siteNameShort, backgroundImageCount, LogoFullExt, temaRevision, Description) - değişmemiş şekli. - Tam renkli palet: renkPri, colorPriLight, colorPriLightest, colorSec, colorSecLight, colorSecLightest. Önce renkler Sadece per-org globals.css'e indi; kamo-los onları bekliyor Form.json o kadar dinamikMetaLoader yazabiliyor -org-* CSS daha önce var Herhangi bir stil sayfası getirmek. - Yeni Organizasyon alanları (bölge, nmlsId, telefon Destek, e-postaDesclosure, onPrimaryText, gradientDirection, yearEst). telefon Support geri döndü org.phoneTollFree. Number when not not not Açıkça set - çoğu orgs her ikisi için aynı çizgiyi kullanıyor. Old String-based buildConfigJson (...) imza geri dönüş olarak tuttu sarmak böylece mevcut arama sitesi molaları yok. JSON küçük bir StringBuilder yardımcı ile inşa edilir \, ", \n, \r, \t and control chars; değerler hala bir şeyden geliyor kontrollü kaynak (DB sütunları) ancak kaçış geçişi bir kredileyicinin anlamına gelir Alıntılarla geçmiş etiket, dosyayı bozmayacak. Güncellenen paylaşılan-library Organizasyon varlığına karşı temiz.
· 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).
· kamolos
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 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.
· kamolos
Yüksek sesle veya markalı olun – animasyon, kurdele, parlayan, ayaker
İnce 1px aksaklık ve başlık logo yeterince yapmıyordu Kredileyicinin markasını kutlayın. Şimdi her kahraman yüzeyi gerçek bir gerçek sunuyor Marka varış anı. - OrgProvider bağlamı: SSR ya dag yakalama sonucu şimdi geçti Reaksiyon bağlamı (lib/org/OrgContext.tsx) böylece müşteri bileşenleri okunabilir Başlık, başlıkShort, yılEst, vs. yeniden değerlendirmeden. KahramanBrandIntro: bir atış, tam ekranlı marka yangınları bu yangınları havaya uçuruyor Bir seansta bir kahraman yüzeyine ilk ziyaret. Conic-gradient Yarısı org'un birincil →saniye renklerde, 16-partikül bir yüzük spiral Dışarıda, kredi kartının logosu (veya kelime işareti geri çekildi) bir camda Bir -org-primary parlama ile kart, " hoş geldiniz - seni eve getirelim" Subtitle, "tap her yere atlamak" ipucu. Auto-dismisses 2.4'den sonra. Saygılar, ortaya çıkan duygusallığı tercih eder (Tamamlanan tamamen). - BorrowerHeader: kurdelik şimdi 2px ve animasyon - gradient pans org-primary → org-sanary → org-primary on a slow 8s ring (CSS) @kamo-org-ribbon. Logo bir çerçeveli giriş alır (fade + kaydır), hover ölçek, musluk sıkıştırması ve yumuşak -org-primary marka rengini takip eden gölge parlaması. - JourneyCrest ilerleme barı: sağlam bg-aurora, şimdi aynı şeyi kullanıyor org-primary → org-sanary panning gradient as the head kurde Yumuşak bir ışıkla. Her adım ödünç veren ışıkları her adımda tamamlıyor Kredi rengi. LenderFooter: Kahraman yüzeylerinin alt kısmında kalıcı bir alıntı "<Lender> · <year>" ile küçük veyag-tintedted ile Dot ve eşit Konut Fırsat işareti. 1.2'lerde Fades bunu geciktiriyor CTA kümesinin kurulmasından sonra topraklar yerleşti. Saygılar hareketi azaltır. Tüm animasyonlar onurlandırılır-redük-motion. 32/32 yol oluşturun, 140 Testler geçer.
· 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.
· kamolos
Port public chat support from kamo-marketing, restyled for aurora tema
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 / aurora / ring-white) so it sits cleanly on the dark navy surfaces instead of the marketing site's forest-green. - lib/chat/proxyConfig.ts centralises PUBLIC_CHAT_API_BASE + PUBLIC_CHAT_API_KEY resolution. Env vars (PUBLIC_CHAT_API_KEY, API_SERVICE_URL, NEXT_PUBLIC_DOMAIN) wired through lib/env.ts. - 6 thin Next.js proxy routes under app/api/chat/* forward to APIService /api/public-chat/* with the standard X-Public-Chat-Key header and X-Session-Token where the route requires it. Translate endpoint preserved for incoming-agent-message translation. - **************** dynamically (ssr:false) loads PublicChatWidget. Mounted globally in app/layout.tsx so the launcher follows the borrower across every surface (landing, apply, waypoints, workspace, ceremonies). - PublicChatWidget pre-fills the visitor name from **************** when there's no saved localStorage value, so borrowers who typed their name in the conversational flow don't re-enter it in the chat header. - AiChatPanel and LiveSupportPanel keep the marketing site's mode separation (AI = HTTP request-reply, support = STOMP WebSocket with presence heartbeat + per-message translation queue) but use kamo-los tokens for surfaces, bubbles, inputs, and accents. - ***Provider keeps the Capcha PoW widget but recolours via CSS vars to the aurora purple. Falls back to capcha.<NEXT_PUBLIC_DOMAIN> when the host is localhost or an IP. - JourneyHero Rex sprite moved to bottom-LEFT on all breakpoints (was bottom-right on mobile) so the chat launcher in the bottom-right corner doesn't sit on top of him. - vendor/kamo-capcha-widget copied from the marketing site as a local file: dep. .gitignore updated to skip the transient vendor/**/node_modules npm creates during install. Build 32/32 routes (6 new chat endpoints), 140 tests pass.
· kamolos
Parallax, ortam hareketi, gerçek atmosfer
İlk kesme agresif bir vignette arkasında küçük bir statik SVG gönderdi, bu yüzden EMPTY LOT boş bir ekran gibi görünüyordu. Gerçek bir tabakalı bir sahne ile değiştirin Aslında her eyalette bir şey var. - Yeni lib/journey/scene/ modülü ayrı parallax katmanları ile: Gökyüzü (gradient + güneş-arc + ikiz yıldızlar), pürüzsüz bulutlara pürüzsüz SVG-native animasyon, silhouette Tepeleri + uzak gökyüzüle Pencereler dusk'dan sonra, evin kendisi (görüntü kasetten devlet haberdarlığı) Işıklar-on), foreground (bağış bayrağı, çim, swaying Çiçekler, ağaçlar ve opsiyonel bir kuş katmanı. - EMPTY LOT şimdi anketor kaset, bir işaret, ve boş çok şey gösteriyor bağlam - varsayılan durumda daha boş ekran yok. - Gökyüzündeki güneş yayları yolculuk ilerledikçe; pencereler pulsu Sıcak bir şekilde, chimney duman ışıklar olduğunda yükselir; çiçekler sway; Posta kutusu bayrak kayaları; uzak gök pencereleri bağımsız olarak. - Pointer parallax on JourneyHero: 6 derinlik tabakaları farklı çeviriler - Rex, nazik bir bob ile kahramanın üzerinde 56px köşe sprite olarak geri döner. Kahraman vignette şimdi bir üst / alt sadece soluyor, asla karanlıklaştırma Görüntünün yaşadığı ekranın ortası. - Persona aksanları son cephenin üst kısmında ortaya koyar: Gaz bayrağı Dalgalar, emeklinin bahçesinin çiçekleri vardır, yatırımcının duplex şov ünitesi Sayılar, vs. Her kişi devletlerde görsel olarak ayrı kalır. 28/28 rota inşa edin, tip kontrol temiz, 140 test geçiyor.
· kamolos
2D ile 3D dünyayı Değiştirin
Procedural üç.js sahne son-to-end öldürmek ve borçlunun yeniden inşa etmek Görsel yolculuk, o gemilere ait düz, erişilebilir, mobil dostu bir modül olarak Tam SSR desteği ve daha sonra daha yüksek sadakat sanatı için bir değişim noktası ile. - lib/journey / devralın: gösterilen kahraman / crest / baş yüzeyleri, Açıklanan bir varlık çözümleyicisi, üç kişia-aware yolculuğu parçaları (purchase 8-state, refi 5-state par, inşaat 8-state literal), Ve bir parametreli SVG yer sahibi kişi + devlet tarafından anahtarlandı. - Yeni GörevHub on /workspace yüzeylerde her 14 yol noktası fazlar tarafından gruplandı Made/current/todo statüsü ile. Inline TaskStepper en üsttekiler In-flow hareketi için her yol noktası sayfası. - Rex procedural kutu-dinosaur gövdesini düşürür ve düz bir SVG olur Sohbet balonlarında ve LO kılavuz çipleri. - / Uygulamalı / * yarı ekran 3D yan paneli kaybeder; ince bir örnek alır Üstte crest, bu nedenle form mobildeki görüntüyü doldurur. - Drops @react- three/fiber, @react- three/drei, @react- three/post processinging, Üç ve @types / üçü paketten. KamovilleMinimap, dünya Zustand store, kamera rig, hava yağmur parçacıkları, tören kuyruğu ve Tüm procedural-scene geometrisi silindi. - Tüm 28 rotayı önceden inşa edin, 24 test dosyaları / 140 test geçiyor.
· kamolos
Sonsuz zemin tiers + ufuk derinliği + doğru yasa işaretleri
Yer - daha fazla küp yok - SkyDome: 420 m arka yana alanı aktif TOD ufukta renkli, oturur drei <Sky> Bu yüzden kamera köşelerinde herhangi bir deniz dolu - FarTerrateDisc: 80×80 segmenti olan 360 m uçağı, vertex yerinden edilme Bir radial rampadaki sin/koz gürültü ile karıştırılmış - yakın zemin düz kalır, Uzak zemin nazik 2-3 m tepeler - MidNeighbourhood: 140 m Çim hafif veülasyonla çalıyor, arasındaki tenekeler Çok ve uzak arazi - DistantNeighbours: 14 procedural kutu+roof evler bir ringde bir halka koydu 60-95 m, deterministic color/yaw varyasyon ve zamansal emissive Pencereler; gerçek bir banliyö olarak okur - HorizonHills: 96-segment bumpy ring atça 145 m, o kadar çok renkli, Gökyüzü bandında kaybolur - dünyaya dikey kondu verir - Road + sidewalk 40 m'den 240 m'ye kadar uzatıldı, böylece fog ile bir araya geldiler - Lane, daha uzun yol boyunca otomatik hazır (her 4 m) Fog şimdi [32, 160] rampalar (18, 90]), TOD tabanlı ufkuna eşleşti Renk böylece ayrımı, tepeler ve komşular tüm çözülüyor Gökyüzüne görünür bir sınır olmadan. İşaretler - gerçek devlet anatomisi ile dolu yeniden yaz - Double-rail mesajları (iki 0.07 m etiketinin iki tarafında, Hızlı zemin altları ve altın finial top kapakları ile) - Frame beyaz bir plak gövdesini kırıyor, her ikisi de materyalize ediliyor - Program başına renkli başlık grubu; grup alt yayıyor, böylece pops - plakların mesajların buluştuğu paraları Dağı - Per-program paleti: CONV indigo, FHA yeşil, VA kırmızı, USDA ochre, JUMBO Aurora, DSCR çelik, HELOC teal, REVERSE tesisatı, CONSTRUCTION sarı, INOVATION amber, ITIN magenta, BRIDGE portakal, artı aurora varsayılan bir varsayılan - Kazanan şimdi anlamlı dramatized: Daha uzun mesajlar, daha büyük plak, daha büyük metin - spotLight programdaki aksan renginde kapalı - "BEST FIT" metni ile sürücü topper plak, nazikçe bobbing - Yerde aksanmış ring Halfo Tüm metin drei <Billboard> kullanır, böylece herhangi bir kameradan bacaksız kalır. açısı, herhangi bir grup rengine karşı kontrast için geçiş ile - Layout: kazanan ileriye ve merkez, arkadaki 1.4-rad hayranına destek Sürücü ile daha fazla kümelenmedi - dökümShadow + her işaret bileşeni üzerindeShadow alın, böylece eklenmiş görünüyorlar
· 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
· 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.
· 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.
· kamolos
12 geri kalan yol noktası çarşafları + 8 tören sahnesi lanet
Aşama C temeli - her yol noktası ve tören şu anda spektrumda bir düşüşe sahiptir Gerçek, statik-prerendered yüzey. Stub adaptörleri bağlantıya geri döndü akışlar; URLA, gerçek adaptörleri mezun olarak per-vendor'da değişecektir. Waypoint çarşafları (12 yeni): - mülk kartları (property-data stub) - banka-vault (set connect stub) - banka-statement-, (file picker, OCR boru hatları M3d) - kredi-ledger (yumuş kredi çekme) - reo-carousel (REO listesi w / inline add) - Açıklamalar-standart (10 evet / hayır toggles) - hmda-pavilion (etity/race/seks w / decoder seçeneği) - lo-desk-asker (veteran şube + tarih + VA ödeme) - lawn-signs-detail (program katalog + seçilmiş-program yazısı) - revizyon-porch (per-bölüm ilerleme + kullanım yoluyla gönderinSubmitApp) - kapanış-desk (esign stub zarf) - posta kutusu-econsent (4 Check toggles) Tören sahneleri (8 yeni + Töreni ilkel): - Ortak tören bileşeni: gradient backdrop + zamanlanmış diyaloğu yendi + Framer-motion entry + Continue CTA (serviceable, not Apple-keynote) - PersonaReveal, IdVerifyFrontDoor, CreditReturn, ProgramReveal, AuthorizeAndSubmit, Aus FindingsArrival, ClearTo Close, Eclose - Kayıt gemileri tören başına bir Impl Bitirme: /ceremonies /[id] TörenClient aracılığıyla gerçek sahneyi verir ('Continue'ye geri döner) Tüm 14 yol noktası + 8 törenleri tsc + Arkansast + bir sonraki inşa.
· kamolos
M3a temeli – müşteri, kancalar, 2 kahraman yol noktası
M3a'nın yarı sonu, paylaşılan-lib Bağlantı + Doğrulanmış Gerçek geri dönüş sadece indi. - lib/los/bağlantılar-client.ts - tiplenmiş müşteri / bağlantılar + / Doğrulanmış-gerçekler - lib/los/app-context.ts – useAppUid kanca (URL?app=<uid> with store fallback) - 4 Reaksiyon Sorgulama kancaları:StartConnection, useGetConnections, useTY Gerçekler, useReconcileFacts - /waypoints/front-door – ID-verify stub adaptörünü kullanarak kahraman levhasını - /waypoints /paystub-clipboard - gelir gelir gelir gelir geliri geliri kullanarak kahraman sayfası bağlar stub adaptörü - /waypoints /layout.tsx şimdi Yolculuğun içindeki yol noktaları - / persona şimdi gerçek API aracılığıyla SetPersona'yı kullanıyor mu?app= mevcut - SahneRoot bir insana teklifi okur (flag / bahçe / inşa edilmiş aksaklar) bunun yerine Bisiklet demoları;Persona okur mu? persona= URL'den ve threaded WorldShell, MobileCrest, JourneyShell - JourneyShell, Suspense'deki dünya panellerini bu yüzden kullanmaya devam ediyor Artık statik sayfaları kurtarma (/apply/done) prerendering dışında Stub adaptörleri her yerde varsayılandır - gerçek Plaid Income, Persona ID, ATTOM ve CRA, M3b+'da bulunan araziyi kablolayın.
· SecurityService
MortgageConnectController - bağlantılar + doğrulanmış-gerçekler + uzlaşma uç noktaları
Bağlantı ilk yakalama yüzeyi ************ - GET/POST / bağlantı + POST / bağlantı / bağlantı / {id} / tamamen - GET /POST / Doğrulanmış - + POST / Doğrulanmış-facts /reconcile Borrower-face – içsel başarı kuralı için haklar kapısı yok. Authorization Aynalar MortgageAppController via orgId() from BaseLosController.
· kamo-shared-library
Bağlantı + Doğrulanmış Bağ-ilk yakalama için gerçek temel
M3a arka uç temeli satıcılar bağlantıları ve kanıtlanmışlık için ekleyin Doğrulanmış gerçekler. Stub- only end-to-end - gerçek satıcı SDK kablo (Plaid, Persona, ATTOM, kredi büroları) M3b/M3c / M3d'te per-vendor mezunları. BağlantıVendor / ConnectionStatus / Gerçekleştirilmiş Gerçek Kaynak Enums Bağlantı varlığı (LOS CONNECTIONS): Bir satır satıcı seansı, tutar DışRef + Vault erişimTokenRef (NEVER ham değerler), referanslar AppMortgage ve Seçmeli Borrower Tarafından uid - Doğrulanmış bir varlık (LOS VERIFIED FACTS): Bir satır hasat edilen değerle hasat edilen değerle bir sıra AlanPath, değerJson, kaynak kanıtlanmışlığı ve opsiyonel bağlantı / finansman refs - Spring Data havuzuories with @Query aktif-sadece app uid + satıcılar tarafından görünür - DTOs, Bow (Jackson JsonFormat) JS'den kaçınmak için uzun uidleri seriliyor MAX SAFE INTEGER overflow on CockroachDB unique rowid() - ******************** + Doğrulanmış Hizmet.record + **************** (M3a scaffold; per-vendor M3b'deki gerçek adaptörlerin yanı sıra alan haritaları) Kullanıcı KamoInitializerService'ı yeniden başlatmalı, böylece Hibernate ddl-auto=update yaratır LOS CONNECTIONS and LOS VERIFIED FACTS table before SecurityService comes up.
· kamolos
Yolculuğun içindeki miras URLA sihirbazı
Aşama Borçlu-journey el-off: 3D dünya görüşte kalırken Borçlu her bölümde çalışır. Geniş görüş bölgelerinde (≥xl) dünya Bir yapışkan% 40 sağ paneli doldurur; xl'in altında yukarıdaki 28vh crest'e küçülüyor. İş yüzeyi. Ev şimdi EMPTY LOT'tan devletlere ulaştı LIGHTS ON sihirbaz bölümleri tamamlandı ve kredi kartı statüsü hareket ediyor. - Yeni kütüphane / dünya / JourneyShell cans /apply/[bölüm), / başlangıç, / kişi - Yeni türüHomeState, bir EvState'a uygulama + bölüm ilerlemesini azaltır - **************** Şimdi bir prop olarak ev devleti ele alalım (EvState aracılığıyla giriş yapın); M1 demo bisiklet döngüsü gitti - SihirbazShell'in doğru demiryolu xl+'da gizlenecek, böylece Yolculuğun sağ sütununa sahip olacak -SectionDone, tam bir ihracat olarak HesapStates'tan çıkarılıyor
· kamolos
Dünya ana sayfa haline gelir - / 3D sahneye hizmet eder, / başlangıç konuşma porch, /journey yolları / kişi / yol noktaları /[id] /ceremonies /[id]
Borrower doğrudan halk URL'sinde, geleneksel konuşma iniş yerine yeni deneyimde bulunur. Anasayfa CTA, "Uygulamanızı Başlayın" (fresh ziyaretçisi → / başlangıç) ve "Uygulamanızı kapat" (kullanıcınızı uygulama ile döndürür).
· kamolos
LawnSigns r3f component + SignSheet + KarşılaştırmaMode + demo işaretleri SahneRoot'a tellendi
· kamolos
Persona seçim akışı /journey/kişia (8 kişi ızgara)
· kamolos
Programlar-client + kancalar (ProgramKatalog,SetPersona kullanın,LiveProgramScores kullanın)
· kamolos
Saf puanlama motoru + testleri ************ sınırları kapsayan testler
· kamolos
17 program kuralları (Zod-validated) + Promosyonlar tarafından anahtarlandı
· SecurityService
MortgageProgramController ekleyin - liste programları, set persona, set seçilmiş program
· kamo-shared-library
Add setPersona + setSeçilmiş Program Kod Yöntemleri
· InitializerService
ProgramSeederRunner - 17 temel KrediProgram Kodu programları (idempotent)
· kamo-shared-library
Repositories, DTOs, ProgramService (yalnızca naive overlay birleşmesi ile katalog)
· kamo-shared-library
Kredileyici Model sütunu (additive; null = BROKER varsayılan uygulama katmanında)
· kamo-shared-library
Persona + seçilmişProgramKom sütunları (additive)
· kamo-shared-library
Program ekleyin + OrgProgramOverride entities (catalog + per-org overlay)

Evreniniz sizi bekliyor.
Birkaç dakika içinde ücretsiz olarak başlatın. Hazır olduğunuzda ürünleri ekleyin - göç yok, yeni girişler yok.
Sonsuza kadar ücretsiz — kredi kartı gerekmiyor