Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· SecurityService
Keluarkan mark lender + daerah pengungkapan ke dalam konfigurasi per-org
Dua perubahan yang menyelesaikan kamo-los peminjam-menghadap branding pipeline: 1. Organisasi Controller memperoleh GET / api / keamanan publik / org / domain / {host} titik akhir. Selesaikan org dengan tepat Domain Organik cocok, lalu coba lagi setelah menjatuhkan nama host alias terdalam (apply.lender.com Barnalender.com) Jadi kamo-los SSR org mengambil rekor rentenir pada cat pertama. 404 ketika tidak ada org memiliki domain yang cocok. 2. * * * * * * * * * * * * * * * *; ditulis ulang ke emit: - Kunci asli (nama satelit, siteNameShort, backgroundlmageCount, logoFullExt, themeRevisi, deskripsi) - bentuk tidak berubah. - Palet warna penuh: warna Pri, warna PriLight, paling berwarna, Color Sec, colorSecurlight, colorSecurly. Sebelumnya warna hanya mendarat di per-org globals.css; kamo-los mengharapkan mereka masuk konfigurasi .json sehingga DynamicMetaLoader dapat menulis --org- * CSS vars sebelum mengambil setiap stylesheet. - Bidang Organisasi baru (tagline, nmlsId, foneSupport, Email Support, equalHousingDisclosure, onPrimaryText, GradientDirection, year Est). foneSupport falls back to org.phoneTolle.number ketika tidak secara eksplisit diset - kebanyakan orgs menggunakan baris yang sama untuk keduanya. Tanda tangan Old String- berbasis buildConfigJson (...) disimpan sebagai back- compat pembungkus sehingga tidak ada istirahat situs panggilan yang ada. JSON dibangun melalui kecil StringBuilder pembantu dengan melarikan diri yang tepat untuk\, "\ n,\ r,\ t dan chars kontrol; nilai masih berasal dari sumber terkontrol (kolom DB) tetapi surat escape berarti sebuah lendernya patted tagline dengan tanda kutip tidak akan merusak berkas. Kompiles bersih terhadap yang diperbarui shared- perpustakaan Organisasi entitas.
· 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
Membuat org branding keras - enimed splash, pita, glow, footer
Logo aksen 1px halus dan header logo tidak cukup untuk merayakan merek rentenir. Sekarang setiap permukaan pahlawan memberikan nyata saatnya kedatangan. - Konteks Organ Provider: hasil pengambilan SSR org kini telah lewat Atur konteks (lib / org / Organ Context.tsx) sehingga komponen klien dapat membaca judul, judul pendek, tahunan, etc. Tanpa mengambil kembali. - HeroBrandIntro: satu tembakan, sepenuhnya layar percikan merek yang kebakaran pada kunjungan pertama ke permukaan pahlawan dalam sesi yang diberikan. Gradien conic- halo dalam warna lintang primer org, cincin 16-partikel spiral di luar, logo rentenir (atau kata-kata fallback) berpusat dalam kaca kartu dengan --org-primary glow, "Welcome - mari kita pulang" subjudul, "tekan di mana saja untuk melewatkan" petunjuk. Auto- dismisses setelah 2.4. Hasil lebih memilih gerakan pengurangan (diabaikan sepenuhnya). - BorrowerHeader: pita sekarang 2px dan animasi - wajan gradien org- primary vigorg- seconder- primary pada loop 8s lambat (CSS keyframe @ kamo-org- ribbon). Logo mendapat pintu masuk framer- motion (memudar + slide), skala hover, tekan squeeze, dan --org-primary lembut bayangan tetesan cahaya yang mengikuti warna merek. - JurnayCrest progress bar: adalah b-aurora padat, sekarang menggunakan sama gradiasi panning sekunder-primer sebagai pita header dengan cahaya lembut. Setiap langkah peminjam melengkapi lampu di Warna lendernya. - LenderFooter: gigih atjects di bagian bawah pahlawan permukaan showing "powered by < Linder >" since < year > "with a small orgtinted Titik dan tanda Kesempatan Perumahan Equal. Fades in at 1.2s delay so mendarat setelah kelompok CTA telah menetap. Menganggap gerakan berkurang. Semua animations kehormatan lebih memilih -reduced- gerakan. Bangun rute 32 / 32, 140 tes lulus.
· kamolos
Port orgity-scheme dari kamo- internal sehingga peminjam permukaan mengambil branding lender
Mengimpor subdomain- drive sistem org- tema dari kamo- internal ke kamo-los, scoped down to what makes sense for an unauthenticated Peminjam-menghadap permukaan (tidak ada admin provisioning UI, tidak ada multi-penyewa switching, no force- light- mode override since kamo- los is dark-by- desain). Bagaimana cara kerjanya: - lib / org / theme.ts mirror kamo-internal 's Theme .tsx - getThemPath / building ThemeBaseForFqdn / orgFqdnHostname / KAMO _ THEME _ CONFIG _ LOADED. Menjatuhkan alias terdalam dari nama tuan rumah sehingga peminjam di apply.lender.com menjawab ke folder bucket org FQDN Lender.com Lender-com basis NINIO * * * * * * * * * * * * * * * * - lib / org / fetchOrganiation.ts melakukan pencarian oleh SSR org * * * * * * * * * * * * * melalui proksi yang ada, dengan proksi yang ada, dengan Pilihan KAMOLOS _ SERVICE _ ACCOUNT _ * * * untuk auth. Digunakan oleh akar layout 's generateMetadata () untuk benih judul HTML + deskripsi dari Lender mencatat org sebelum halaman bahkan hydrates. - * * * * * * * * * * * * * * runs on mount, fetches < tema > / json / config.json, lalu: 1. set document.title / apple-mobile -web-app-title / description 2. caches themeRevisi + logoFullExt untuk sesionStorage untuk cache - Busting and Theme Logo 3. menyuntikkan favicons (96px, svg, ico, apple- touch, manifest) 4. Petakan enam slot warna org ke --org- * CSS var namespace at: root (NOT --color- *, so the aurora chrome stays kanonikal di organ dan hanya titik aksen opt-in) 5. mengirimkan konsumen logo + aksen dapat menyegarkan Melewati kamo-internal mode gaya < gaya > injeksi - kamo-los adalah sengaja gelap. - Komponen / tema / Tema Logo.tsx membuat logo org dari MinIO dengan tampilan-rasio pelestarian, max-width / tinggi tutup, dan fallback Prop untuk ketika org belum ditetapkan (sehingga gambar rusak tidak pernah Kapal. - globals.css memperoleh --org-primary / -light / -lighter / --org-sekunder / -light / -slots, default ke aurora palet (# 7B61FF / # 21D4A6). - app / layout.tsx mount DynamicMetaLoader dan menggunakan generateMetadata untuk benih awal judul dari SSR org fetch. - BorrowerHeader: merek sisi kiri sekarang < Theme Logo varian = "logofull" / > dengan sebuah kata "Kamo" fallback. 1px --org-primary accent cros duduk di atas header bar sehingga lendernya warna muncul pada setiap posting-aplikasi permukaan tanpa mengganggu palet permukaan gelap. Bangun 32 / 32, 140 tes lulus.
· kamolos
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 / 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
Adegan berlapis dengan paralel, gerak ambien, suasana nyata
Potongan pertama dikirim kecil statis SVG balik vignette agresif, jadi LOT tampak seperti layar kosong. Ganti dengan adegan berlapis nyata yang sebenarnya memiliki sesuatu di setiap negara bagian. - New lib / journey / scene / module dengan lapisan paralel discrete: langit (gradien + sun- arc + berkelap-kelip bintang), awan hanyut dengan halus SVG-native animasi, siluet hills + jauh skyline dengan lit jendela setelah senja, rumah itu sendiri (negara - sadar dari surveyor tape ke lights-on), latar depan (kotak surat dengan bendera goyang, rumput, bergoyang bunga, pohon), dan lapisan burung opsional. - EMPTY _ LOT sekarang menunjukkan surveyor tape, tanda SITE, dan banyak kosong di konteks - tidak ada lagi layar kosong pada keadaan baku. - Matahari melengkung di langit sebagai kemajuan perjalanan kemajuan kemajuan; jendela pulsa hangat ketika menyala; asap cerobong asap naik ketika lampu menyala; bunga bergoyang; bendera kotak surat batu; jendela langit-langit jauh berkedip independen. - Pointer parallax on JourneyHero: 6 lapisan kedalaman diterjemahkan pada berbeda - Rex kembali sebagai sprite 56px pada pahlawan dengan bob lembut. - Pahlawan vignette sekarang adalah atas / bawah hanya memudar, tidak pernah gelap tengah layar di mana ilustrasi hidup. - Aksen person render di atas fasad selesai: bendera veteran Gelombang, kebun pensiunan memiliki bunga, duplex investor menunjukkan unit angka, dll. Setiap persona tetap visual berbeda di seluruh negara bagian. Membangun rute 28 / 28, pemeriksaan mesin tik bersih, 140 tes lulus.
· kamolos
Gantikan dunia 3D dengan perjalanan 2D diilustrasikan
Bunuh prosedur tiga e.js adegan berakhir dan bangun ulang peminjam perjalanan visual sebagai datar, diakses, mobil- modul ramah bahwa kapal dengan dukungan penuh SSR dan swap poin untuk seni tinggi-kesetiaan nanti. - lib / journey / take over: diilustrasikan pahlawan / puncak / thumbnail permukaan, sebuah manifest- didukung resolver aset, tiga pribadi-sadar trek perjalanan (Pembelian 8- state, refi 5 - state polish, konstruksi 8- state literal), dan seorang pemegang tempat SVG yang paramterized suka dengan persona + state. - New TaskHub pada / area kerja permukaan semua 14 waypoints dikelompokkan oleh fase dengan status selesai / kini / todo. Inline TaskStepper render di bagian atas dari setiap halaman titik jalan untuk gerakan in- flow. - Rex menjatuhkan prosedur box- dinosaurus tubuh dan menjadi SVG datar avatar dalam gelembung chat dan chip LO guide. - / apply / * kehilangan panel sisi 3D setengah layar; mendapat gambaran tipis puncak di atas sehingga formulir mengisi viewport pada mobile. - Drops @ reakt-three / fiber, @ reakt-three / drei, @ reakt-three / postprocessing, tiga, dan @ tipe / tiga dari bundel. KamovilleMinimap, dunia Toko Zustand, kamera rig, hujan cuaca partikel, antrian upacara, dan semua prosedur-adegan geometri dihapus. - Membangun praderender semua 28 rute, 24 test file / 140 tes lulus.
· kamolos
Tiers tanah tak terbatas + kedalaman cakrawala + tanda-tanda rumput yang tepat
Tanah - tidak ada lagi kubus - SkyDome: 420 m bola sisi berwarna ke cakrawala TOD aktif, duduk belakang drei < Sky > sehingga setiap jahitan di sudut kamera diisi - FarTerrainDisc: 360 m pesawat dengan 80 × 80 segmen, perpindahan vertex via campuran sin / cos kebisingan di jalan radial - dekat tanah tetap datar, jauh tanah mendapat lembut 2-3 m perbukitan - MidNeighborhood: 140 m rumput cincin dengan gangguan ringan, tints antara daerah dan medan jauh - Lingkungan Tetangga: 14 kotak prosedural + rumah atap ditempatkan dalam sebuah cincin di 6095 m, dengan warna deterministik / yaw variasi dan sesekali emissive jendela; dibaca sebagai pinggiran kota nyata - HorizonHills: 96- segmen bergelombang cincin pada radius 145 m, berwarna kabut sehingga itu memudar ke dalam band langit - memberikan penahanan vertikal dunia - Jalan + trotoar diperpanjang dari 40 m ke 240 m sehingga mereka bertemu menjadi kabut - Lane dashes auto- spread along the longer road (every 4 m) Kabut sekarang ramps [32, 160] (adalah [18, 90]), cocok dengan cakrawala TOD- didorong Warna sehingga rim disk, bukit-bukit, dan silhouettes tetangga semua larut ke langit tanpa batas terlihat. Tanda - lengkap menulis ulang dengan real-estate anatomi - Postingan kereta api ganda (dua 0.07 m pos di kedua sisi plak, dengan spike- into-ground bottoms dan topi bola final emas) - Frame trim membungkus sebuah plastik putih tubuh, kedua wajah terwujud - Warna header band per program; band memancarkan halus sehingga muncul - Mounting brackets where plaque meets posts - Palet per- program: CONV indigo, FHA hijau, VA merah, USDA ochre, JUMO Aurora, baja DSCR, HELOC TEAL, plum REVERSE, kuning CONSTRUCTION, RENOVATION amber, ITIN magenta, BRIDGE orange, plus a aurora default - Pemenang sekarang didramatisasi: - pos yang lebih tinggi, plakat yang lebih besar, teks yang lebih besar - bintik-bintik menempel di atas kepala dalam warna aksen program - rider topper plaque with "BEST FIT" text, gently bobbing - Accent- tinted cincin halo di tanah - Semua teks menggunakan drei < Billboard > sehingga tetap terbaca dari kamera manapun sudut, dengan garis luar lulus untuk kontras terhadap warna band apapun - Tata letak: pemenang maju dan pusat, pendukung dalam 1.4-rad penggemar belakang, tidak lebih berkerumun tumpang tindih dengan jalan masuk - CastShadow + receiveShadow pada setiap komponen tanda sehingga mereka terlihat ditanam
· 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 lembar waypoint tersisa + 8 adegan perayaan memohon
Phase C fondasi - setiap waypoint dan upacara siput dalam spesifikasi sekarang memiliki permukaan yang asli, secara statistik. Adaptor stub backthe connect-first Mengalir; URLA menulis akan swap dalam per- vendor sebagai mereka nyata adaptor lulus. Lembar Waypoint (12 baru): - properti - kartu (benar - data stub) - Brankas bank (potongan koneksi aset) - bank - status -upload (file picker, OCR jalur pipa tanah M3d) Buku kredit. - reo- karousel (daftar REO w / inline tambahkan) - deklarasi -stand (10 ya / tidak ada toggles) - hmda- paviliun (etnis / ras / seks w / decoder pilihan) - Lo- desk- militer (cabang veteran + tanggal + pembayaran VA) - Law-signs-details (katalog program + selected-program tulis) - reviewing -teras (per-section progress + submite via useSubApplication) - penutupan meja (esign stub amplop) - mailbox- econsent (4 persetujuan toggles) Adegan upacara (8 Upacara baru + primitif): - Komponen Upacara Bersama: gradien latar belakang + dialog timetime mengalahkan + framer-motion entry + Lanjutkan CTA (serviable, bukan Apple-keynote) - PersonaReveal, IdVerifyFrontDoor, CreditReturn, ProgramReveal, OtorizeandSubmit, AusFindsArrival, ClearToClose, Eclose - Registry sekarang kapal Impl ComponentType per upacara; / ceremonies / [id] membuat adegan nyata via CeremonyClient ('Lanjutkan' kembali ke /) Semua 14 waypoints + 8 upacara lulus tsc + vitest + berikutnya membangun.
· kamolos
Yayasan M3a - klien koneksi, kait, 2 lembar waypoint pahlawan
Didepan -end setengah dari M3a connect- pertama dasar bahwa shared -lib Koneksi + Verifikasi Backend fakta baru saja mendarat. - lib / los / connections-client.ts - mengetik klien untuk / koneksi + / verified-facts - lib / los / app-context.ts - useAppeid hook (URL? app = < uid > dengan store fallback) - 4 Tanda Query Reasi: Use StartConnection, Use GetConnections, useVerified Fakta, Use ReconcileFact - / waypoints / front-door - ID-verify lembar pahlawan menggunakan adaptor id- verify stub - / waypoints / paystunt- clipboard - menghubungkan lembar pahlawan menggunakan pendapatan adaptor stub - / waypoints / laylout.tsx sekarang frame waypoints didalam JurnayShell - / persona sekarang memanggil useSetPersona melalui API sebenarnya kapan? app = ada - SceneRoot membaca sebuah prop persona (flag / garden / build-crew accent) dari demos bersepeda; usePersona baca? persona = dari URL dan threaded melalui WorldShell, MobileCrest, JourneyShell - JurnayShell membungkus panel dunia dalam Suspense begitu useSearchParams membaca tidak lagi jaminan halaman statis (/ apply / done) dari prerendering Adaptor stub adalah standar di mana-mana - nyata Paid Income, ID Persona, ATTOM, dan CRA kabel tanah per- vendor di M3b +.
· SecurityService
MortgageController - koneksi + verified- fakta + mendamaikan titik akhir
Ekspose sambungan pertama menangkap permukaan di * * * * * * * * * * * * * * * * * * - GET / POST / connections + POST / connections / {id} / komplit - GET / POST / verified--facts + POST / verified- facts / conquit Borrower- menghadap - tidak ada gerbang hak per process-fitur aturan. Otorisasi cermin MortgageAppController via orgId () dari BaseLosController.
· kamo-shared-library
Koneksi + Verifikasi Pondasi fakta untuk sambungan-penangkapan pertama
Tambahkan fondasi backend M3a untuk koneksi vendor dan proventificated Mengverifikasi fakta. Stub-hanya end-to-end - real vendor kabel SDK (Plaid, Persona, ATTOM, Bureaus Kredit) Lulusan pervendor di M3b / M3c / M3d. - Vendor Koneksi / Status Konektor / Verifikasi Enums FactSource - Entitas koneksi (LOS _ CONNEKSI): satu baris per sesi vendor, dipegang externall Ref + Vault accectukenRef (PERNAH nilai mentah), referensi AppMortgage dan batas opsional oleh uid - VerifiedFactity (LOS _ VERIFIED _ FAKTS): satu baris per nilai panen dengan fieldPath, valueJson, sumber provenance, dan opsional connection / dokumen refs - Repositor Data Spring dengan @ Query active- hanya pencarian dengan app uid + vendor - DTOs serialisasi panjang uids sebagai String (Jackson JsonFormat) untuk menghindari JS MAX _ SAFE _ INTEGER overflow on CockroachDB unique _ rowid () - * * * * * * * * * * * * * * + VerifiedFactService.record + * * * * * * * * * * * * * * * (M3a scaffold; per- vendor bidang pemetaan kapal bersama adaptor nyata dalam M3b) Pengguna harus me-reboot Layanan Pembaruan KamoInializer. sehingga Hibernate ddl- auto = update creation LOS _ CONNECTIONS dan LOS _ VERIFIED _ FACE tabel sebelum SecurityService muncul.
· kamolos
Bingkai penyihir URI dalam Jurnalis Shell
Tahap A dari peminjam-perjalanan hand-: dunia 3D tetap terlihat sementara peminjam bekerja melalui setiap bagian. Pada viewport luas (lexl) dunia mengisi sebuah sticky 40% kanan panel; di bawah xl itu menyusut ke sebuah 28vh puncak di atas permukaan kerja. Rumah sekarang maju negara-negara dari EMPTY _ LOT melalui LIGHTS _ ON sebagai bagian penyihir selesai dan status loan-file bergerak. - New lib / world / JourneyShell wrap / apply / [section], / start, / persona - Baru deriveHomeState mengurangi kemajuan bagian aplikasi + ke HomeState Sekarang ambil homeState sebagai prop (default via useHomeState); demo siklus M1 hilang - WitzardShell kanan menyembunyikan rel di xl + so JourneyShell memiliki kolom yang tepat - IsSectionDiekstrak dari ComputeSectionStates sebagai ekspor murni
· kamolos
Dunia menjadi homepage - / melayani adegan 3D, / start adalah teras percakapan, / jalan perjalanan diratakan ke / persona / waypoints / [id] / upacara / [id]
Peminjam mendarat langsung dalam pengalaman baru pada URL publik bukannya pendaratan percakapan warisan. Halaman telepon CTA membalik antara 'Mulai aplikasi Anda' (pengunjung baru / mulai) dan 'Lanjutkan aplikasi Anda' (kembali pengunjung dengan apPUid / apply / properti).
· kamolos
Komponen R3f Lawnsigns + SignorSheet + PartieMode + demo sign kabel ke SceneRoot
· kamolos
Seleksi pribadi mengalir di / journey / persona (8 personas grid)
· kamolos
Programs - klien + kait (use Programcatalog, useSetPersona, useSetSetSelecteProgram, Use LiveProgramScores)
· kamolos
Nilai murni mesin + tes meliputi * * * * * * * * * * * * * * * * * * * batas
· kamolos
17 aplikasi ruleset (Zod-validated) + indeks diketemukan oleh LoanProgramCode
· SecurityService
Tambahkan MortgageProgramController - daftar program, set persona, set program yang dipilih
· kamo-shared-library
Tambah setPersona + setel Yang Dipilih Metode programCode
· InitializerService
ProgramSeederRunner - benih 17 baseline Program LoanProgramcode (idempoten)
· kamo-shared-library
Repositor, DTOs, ProgramService (katalog baca-saja dengan gabungan overlay naif)
· kamo-shared-library
Tambahkan kolom lenderModel (aditif; null = BROKER baku di lapis aplikasi)
· kamo-shared-library
Tambahkan kolom Persona + selektedProgramCode (additive)
· kamo-shared-library
Tambahkan Entiti Program + Organ Programride (katalog + per-org overlay)

Alam semestamu menunggu.
Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.
Gratis selamanya — tidak diperlukan kartu kredit