Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· SecurityService
Emit Lender marca + campos de divulgação em per-org config.json
Duas mudanças que terminam o oleoduto kamo-los voltado para o mutuário: 1. OrganizationController ganha um público GET /api/security/org/domínio/{host} endpoint. Resolve a org pela correspondência exacta do OrgDomain, e depois volta a tentar deixando cair o apelido mais profundo do hostname (apply.lender.com → lender.com) Então a org SSR da Kamo-los vai buscar o registo do credor na primeira pintura. 404 quando nenhuma org possui qualquer domínio correspondente. * **************** é reescrito para emitir: - As chaves originais (siteName, siteNameShort, backgroundImageCount, logoFullExt, temaRevisão, descrição) — forma inalterada. - A paleta de cores completas: colorPri, colorPriLight, colorPriLightest, corSec, corSecLight, corSecLightest. Anteriormente, as cores apenas pousou no per-org globals.css; kamo-los espera-los em config.json para que o DynamicMetaLoader possa escrever --org-* CSS vars antes a obter qualquer folha de estilo. - Os novos campos da Organização (tagline, nmlsld, telefoneSuporte, emailSupport, equalHousingDisclosure, onPrimaryText, gradienteDirecção, anoEst). telefoneSuporte cai de volta para org.phoneTollFree.number quando não explicitamente definido — a maioria das orgs usam a mesma linha para ambos. Antiga compilação baseada em StringConfigJson(...) assinatura mantida como um back-compat wrapper para que não haja quebras no local de chamada. JSON é construído através de um pequeno ajudante StringBuilder com fuga adequada para \, ", \n, \r, \t e caracteres de controle; os valores ainda vêm de uma fonte controlada (colunasDB) mas o passe de fuga significa O tagline colado com aspas não corromperá o arquivo. Compila limpo contra a entidade de organização de bibliotecas compartilhadas atualizada.
· 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
Fazer org branding alto — salpico animado, fita, brilho, rodapé
A sutil fita de sotaque 1px e o logotipo do cabeçalho não estavam fazendo o suficiente para celebrar a marca do credor. Agora cada superfície de herói entrega um real momento de chegada da marca. - Contexto OrgProvider: o resultado de busca do SSR org é agora passado através Reagir ao contexto (lib/org/OrgContext.tsx) para que os componentes do cliente possam ler título, titleShort, yearEst, etc. sem re-fetching. - HeroBrandIntro: um tiro, marca de tela cheia respingo que dispara no primeira visita a uma superfície de herói em uma determinada sessão. halo cónico-gradiente nas cores primárias do org→secundário, um anel de 16 partículas em espiral para fora, o logotipo do credor (ou wordmark fallback) centrado em um copo cartão com um --org-primary brilho, "Bem-vindo - vamos levá-lo para casa" legenda, "tap anywhere to skip" dica. Auto-dispensas após 2.4s. Respeites prefere-reduzido-moção (escorregado inteiramente). - EmprestadorHeader: a fita é agora 2px e animada - panelas gradiente org-primário → org-secundário → org-primário em um loop 8s lento (CSS keyframe @ kamo-org-ribbon). Logo começa uma entrada do framer-motion (fade + slide), escala hover, aperto de toque e um --org-primary macio brilho de gota-sombra que segue a cor da marca. - JourneyCrest barra de progresso: era sólido bg-aurora, agora usa o mesmo org-primary → org-secundário gradiente de panning como a fita do cabeçalho com um brilho suave. Cada passo que o mutuário completa acende-se em As cores do credor. - LenderFooter: atribuição persistente na parte inferior das superfícies do herói mostrando "Powered by <Lender> · since <year>" com uma pequena org-tinted ponto e uma Oportunidade de Habitação Igual. Desvanece-se a 1,2s de atraso. Aterra depois de o grupo CTA se ter instalado. Respeitos reduzidos. Todas as animações honra prefere menos movimento. Construir 32/32 rotas, 140 Os testes passam.
· kamolos
Port org-scheme theming from kamo-internal so mutuário superficies pick up lender branding
Porta o sistema de org- theme orientado por subdomínios a partir do kamo- interno para kamo-los, analisado até ao que faz sentido para um superfície face ao mutuário (sem provisionamento administrativo UI, sem multi-dotação Comutação, sem sobreposição do modo força-luz desde kamo-los é escuro-por-- Desenho). Como funciona: - lib/org/theme.ts mirrors kamo-internal's Theme.tsx — getThemePath / builtThemeBaseForFqdn / orgFqdnFromHostname / KAMO THEME CONFIG LOADED. Retira o pseudônimo mais profundo do nome da máquina para que o mutuário apply.lender.com resolve para org FQDN lender.com → pasta balde credor-com → MinIO base **************** - lib/org/fetchOrganização.ts faz a pesquisa do org SSR contra ************* através do proxy existente, com o opcional KAMOLOS SERVICE ACCOUNT *** para autenticação. Usado pela raiz layout geraMetadata() para semear o título HTML + descrição de O registro de org do credor antes da página até hidrata. - Está bem. roda na montagem, buscas <tema>/json/config.json, então: 1. define document.title / apple-mobile-web-app-title / description 2. caches temaRevisão + logotipoFullExt to sessionStorage for cache- busting e TemaLogo 3. injeta os favicons (96px, svg, ico, maçã-touch, manifesto) 4. mapeia os seis slots de cores da org para o var --org-* CSS namespace em :root (NOT --color-*, então o cromo aurora permanece canônico através de orgs e apenas pontos de acento opt-in) 5. despachos KAMO THEME CONFIG LOADED assim logotipo + acento consumidores pode atualizar Salta o modo de força-luz-interno <estilo> de kamo-los é intencionalmente escuro. - componentes/tema/temaLogo.tsx transforma o logótipo org da MinIO com preservação da razão de aspecto, tampas de largura máxima/altura, e um retrocesso aderente para quando a org ainda não está provida (então uma imagem quebrada nunca navios). - globals.css ganha o --org-primary / -light / -lighter / --org-secundário / -light / -light slots, predefinidos para a aurora paleta (# 7B61FF / # 21D4A6). - app/layout.tsx monta DynamicMetaLoader e usa gerarMetadata para semear o título inicial do SSR org buscar. - BusterHeader: a marca do lado esquerdo é agora <ThemeLogo variante="logoFull" /> com um wordmark "Kamo". A 1px ---org-primary fita de sotaque fica acima da barra de cabeçalho para que o emprestador a cor aparece em cada superfície pós-aplicação sem perturbar a paleta de superfície escura. Construir 32/32, 140 testes passar.
· 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
Cena em camadas com paralaxe, movimento ambiente, atmosfera real
O primeiro corte enviou um pequeno SVG estático atrás de uma vinheta agressiva, então EMPTY LOT parecia uma tela em branco. Substitui- o por uma cena real em camadas que tem algo em todos os estados. - Novo módulo lib/journey/cena/ com camadas de paralaxe discretas: céu (gradiente + arco-sol + estrelas cintilantes), nuvens à deriva com suave Animação SVG-native, colinas de silhueta + horizonte distante com iluminado janelas após o crepúsculo, a própria casa (estado-consciente de fita de agrimensor para lights-on), primeiro plano (caixa de correio com bandeira de balanço, grama, balanço flores, árvores), e uma camada de pássaros opcional. - EMPTY LOT agora mostra fita do agrimensor, um sinal SITE, e o lote vazio em contexto — não há mais tela em branco no estado padrão. - O sol atravessa o céu à medida que avança a viagem; o pulso das janelas quente quando acesa; fumaça da chaminé sobe quando as luzes estão acesas; flores balançam; a bandeira da caixa de correio rochas; janelas skyline distantes piscam independentemente. - Pointer parallax em JourneyHero: 6 camadas de profundidade traduzem em diferentes - Rex retorna como um 56px canto sprite no herói com um bob suave. - Hero vinheta é agora um top / fundo desbotar apenas, nunca escurecendo o no meio da tela onde vive a ilustração. - Acentos Persona renderizar em cima da fachada finalizada: bandeira de veterano ondas, jardim de aposentados tem flores, investidor duplex mostra unidade números, etc. Cada persona permanece visualmente distinta entre estados. Construir 28/28 rotas, typecheck limpo, 140 testes passar.
· kamolos
Substituir o mundo 3D por uma viagem ilustrada em 2D
Matar o procedimento três.js cena de ponta a ponta e reconstruir o mutuário viajem visual como um módulo plano, acessível e mobile Com suporte completo à RSE e um ponto de troca para arte de alta fidelidade mais tarde. - lib/journey/ assume: herói ilustrado / crista / superfícies de miniaturas, um resolvedor de ativos com apoio manifesto, três trilhas de viagem persona-consciente (compra 8 estado, refi 5 estado polonês, construção 8 estado literal), e um renderizador SVG parametrizado chaveado por persona + estado. - Novo TarefaHub em /superfícies de espaço de trabalho todos os 14 points agrupados por fase com o estado feito/atual/todo. Inline TaskStepper renderiza no topo de cada página de pointpoint para movimento de entrada. - Rex deixa cair o corpo da caixa procedimental e torna-se um SVG plano avatar em bolhas de bate-papo e o chip guia LO. - /apply/* perde o painel lateral 3D de meia tela; recebe um slim ilustrado crista no topo para que o formulário preencha o viewport no mobile. - Drops @react-três/fibra, @react-três/drei, @react-três/pós-processamento, três, e @types/três do pacote. KamovilleMinimap, o mundo Loja Zustand, plataforma de câmera, partículas de chuva meteorológica, fila de cerimônias, e Todas as geometrias de cena processual suprimidas. - Construir pré-renderes todas as 28 rotas, 24 arquivos de teste / 140 testes passar.
· kamolos
Camadas de terra infinitas + profundidade do horizonte + sinais de gramado adequados
Terreno — não mais cubo - SkyDome: esfera traseira de 420 m colorida ao horizonte de TOD ativo, senta-se atrás drei <Sky> para que qualquer costura nos cantos da câmera seja preenchida - FarTerrainDisc: 360 m plano com 80×80 segmentos, deslocamento de vértice através de ruído sin/cos misturado numa rampa radial – o solo próximo permanece plano, terreno distante fica suave 2-3 m colinas - Meio Vizinhança: 140 m anel de grama com ondulação suave, tons entre o lote e o terreno distante - DistanteVizinhos: 14 caixas processuais + telhados colocados em um anel em 60-95 m, com variação determinística de cor/ia e emissiva ocasional windows; lê como um subúrbio real - HorizonHills: 96-segmento anel acidentado no raio 145 m, colorido a nevoeiro assim desvanece-se na faixa do céu — dá ao mundo contenção vertical - Estrada + calçada estendida de 40 m para 240 m para que eles convergem em nevoeiro - Travesseiros auto-difusão ao longo da estrada mais longa (a cada 4 m) Fog agora rampas [32, 160] (era [18, 90]), combinou com o horizonte orientado para TOD cor para que a borda do disco, colinas e silhuetas vizinhas se dissolvem para o céu sem um limite visível. Sinais — reescrita completa com anatomia imobiliária - Postes de carril duplo (dois 0,07 m de cada lado da placa, com fundo espeto-em-terra e tampas de bola fina de ouro) - Corte de moldura que envolve um corpo de placa branca, ambas as faces materializadas - Banda de cabeçalho colorida por programa; banda emite sutilmente para que ele pops - Suportes de montagem onde a placa encontra postes - Paleta por programa: CONV indigo, FHA verde, VA vermelho, USDA ocre, JUMBO aurora, aço DSCR, telha HELOC, ameixa VERSE, amarelo CONSTRUÇÃO, RENOVAÇÃO âmbar, ITIN magenta, laranja BRIDGE, mais um padrão de aurora O vencedor agora dramatizou significativamente: - postes mais altos, placa maior, texto maior - spotLight sobreposto na cor do acento do programa - placa de topo do motociclista com texto "BEST FIT", balançando suavemente - halo anel acento no chão - Todo o texto usa drei <Billboard> para que permaneça legível de qualquer câmera ângulo, com contorno passe para contraste contra qualquer cor da banda - Layout: vencedor para a frente e centro, apoiadores de um ventilador de 1,4-rad atrás, não mais sobreposição agrupada com a entrada - castShadow + receiveShadow em cada componente de sinal para que eles pareçam plantados
· 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
Ambiente 3D real + cenário de bairro + casa mais ousada CTAs
Cena 3D eram caixas de procedimentos genéricos em um plano plano plano. Trouxe-o para um Vizinhança credível: - WorldScene: adicionar drei <Environment preset="sunset"> para iluminação baseada em imagens então os materiais PBR realmente parecem iluminados, drei <Sky> para atmosfera processual com posição solar adequada + espalhamento Rayleigh, drei <ContactShadows> para suave contato terrestre sob a casa, drei <Clouds> com 3 camadas volumétricas. - Novo equipamento de 4 luz: sol brilhante chave + enchimento fresco do lado oposto + hemisfério Para salto céu/terra + ambiente. Adiciona nevoeiro para profundidade atmosférica. Lote reescrito: - Erva distante + camadas de grama lote - A passarela a correr pela frente - Asfalto estrada com pistas pintadas - Estrada de casa para a estrada - Cerca em torno do perímetro com trilhos horizontais + uma lacuna na frente - 5 árvores com canos multi-esfera Página inicial (/) feita obviamente diferente da versão pré-mudança: - Título herói sobreposto em cima-esquerda ("Bem-vindo a casa. Vamos construí-lo.") com gradiente aurora-clipe + comprimido de sobrancelha Kamoville - CTA cluster bottom-center é agora um pano de fundo-blurred levantar painel de detenção tanto "Inicie a sua aplicação" (com seta) como "Escolha o seu guia" anel de sotaque do guia selecionado - Top-centro chip guia com avatar do guia ativo, acento brilho, nome, e tagline — links para /personalidade LoAvatarChip agora abre /personalidade e mostra o avatar do guia selecionado + primeiro nome + sotaque brilho, em vez da pílula morta "seu agente de empréstimo".
· 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 folhas restantes + 8 cenas de cerimônia impls
Fundação da fase C — cada passagem e lesma de cerimónia na especificação tem agora um superfície real, estaticamente pré-renderizada. Adaptadores Stub para trás o connect-first fluxos; URLA writes irá trocar em por-vendor como seus verdadeiros adaptadores graduados. Folhas de pontos de acesso (12 novas): - cartões de propriedade (esboço de dados de propriedade) - banco- vault (activo ligar stub) - banco-declaração-carga (arquivador, OCR pipeline pousa M3d) - credit-ledger (soft credit pull stub) - Reo- carrossel (lista REO w/ inline add) - stand de declarações (10 sim/não alternações) - hmda-pavilion (étnica/raça/sexo w/ descodificador) - lo-desk-militar (secção veterinária + datas + pagamento VA) - gramado-sinais-detalhes (catálogo do programa + escrita do programa selecionado) - revisão-porca (progresso por secção + envio via usoEnviarAplicação) - armário de fecho (envelope de canto) - econsentimento da caixa de correio (4 opções de consentimento) Cenas de cerimônia (8 novas + primitivas de cerimônia): - Componente de Cerimónia Partilhada: contexto gradiente + batidas de diálogo cronometradas + entrada quadro-moção + Continuar CTA (servível, não Apple-keynote) - PersonaReveal, IdVerifyFrontDoor, CreditReturn, ProgramReveal, Autorizar e Enviar, AusFindingsArrival, LimparParaFechar, Fechar - Registro agora envia um Impl ComponentType por cerimônia; /cerimônias/[id] mostra a cena real via CeremoniClient ('Continuar' retorna para /) Todos os 14 Coordenadas + 8 cerimónias passam tsc + vitest + próxima compilação.
· kamolos
Fundação M3a — cliente de conexões, ganchos, 2 folhas de coordenadas herói
Parte dianteira da fundação M3a connect-first que a compartilhamento-lib Ligação + Verificada A infra-estrutura dos factos acabou de aterrar. - lib/los/connections-client.ts — cliente digitado para /connections + /verified-facts - lib/los/app-context.ts — useAppUid hook (URL ?app=<uid> com backback de armazenamento) - 4 ganchos React Consulta: useStartConnection, useGetConnections, useVerified Factos, useReconcileFacts - /waypoints/front-door - ID-verify hero sheet usando o adaptador id-verify stub - /waypoints/paystub-clipboard - receita conectar folha herói usando o rendimento adaptador de fita - /waypoints/layout.tsx now frames Coordenadas dentro JourneyShell - /persona agora chama useSetPersona através da API real quando ?app= está presente - CenaRoot lê uma persona prop (flag / jardim / acentos de construção-crew) em vez demos de ciclismo; usePersona lê ?persona= a partir de URL e é threaded através de WorldShell, MobileCrest, JourneyShell - JourneyShell envolve seus painéis mundiais em Suspense para usarSearchParams reads não mais salvar páginas estáticas (/aplicar/feito) fora de pré-renderização Adaptadores de Stub são o padrão em todos os lugares — Rendimento xadrez real, Persona ID, ATTOM, e CRA fiação terra porvendor em M3b+.
· SecurityService
HipotecaConnectController — conexões + fatos verificados + parâmetros de conciliação
Expo a superfície de primeira captura de ligação em... - GET/POST/connections + POST/connections/{id}/complete - GET/POST/factos verificados + POST/factos verificados/reconcilo Emprestador - nenhum portão de direitos por regra de recursos internos. Autorização espelhos HipotecaAppController via orgId() da BaseLosController.
· kamo-shared-library
Ligação + Verificada Base de fatos para a primeira captura
Adiciona a base de infraestrutura M3a para conexões de fornecedores e rastreamento de origem factos verificados. Fiação SDK do fornecedor real (Plaid, Persona, ATTOM, agências de crédito) graduados por pessoa em M3b/M3c/M3d. - ConnectionVendor / ConnectionStatus / Verificado FactSource enums - entidade de conexão (LOS CONNECTIONS): uma linha por sessão de fornecedor, detém acesso externoRef + VaultTokenRef (valores brutos NEVER), referências AppMortgage e opcional Emprestador por UID - Entidade VerificadaFact (LOS VERIFIED FACTS): uma linha por valor colhido com fieldPath, valueJson, procedência de origem e referências de conexão/documento opcionais - Repositórios de dados de primavera com @Query busca somente ativa por uid aplicativo + fornecedor - DTOs serializar uids longos como String (Jackson JsonFormat) para evitar JS MAX SAFE INTEGER overflow no BarataDB unique rowid() - Está bem. + VerificadoFactService.record + **************************** (M3a andaime; porvendor Navios de mapeamento de campo ao lado de adaptadores reais em M3b) O usuário deve reiniciar KamoInitializerService para Hibernate ddl-auto=update cria LOS CONNECTIONS e LOS VERIFIED FACTS tabelas antes de SecurityService surge.
· kamolos
Molde o assistente URLA legado dentro da JourneyShell
Fase A da entrega do mutuário-viagem: o mundo 3D permanece em vista enquanto o mutuário trabalha através de cada seção. Em grandes viewports (≥xl) o mundo preenche um painel direito de 40% pegajoso; abaixo de xl encolhe para uma crista de 28vh acima a superfície de trabalho. A casa agora avança de EMPTY LOT até LIGHTS ON como as seções do assistente estão concluídas e o status do arquivo de empréstimo se move. - Nova lib/world/JourneyShell envolve /aplica/[section], /start, /persona - Nova derivaHomeState reduz o progresso do aplicativo + seção para um HomeState - Agora aceita o Estado como adereço. (por omissão via useHomeState); o ciclo demo M1 desapareceu - WizardShell's right rail esconde-se em xl+ então JourneyShell possui a coluna direita - isSectionOne extraído do computadorSectionStates como uma exportação pura
· kamolos
O mundo torna-se homepage — / serve a cena 3D, /start é o pórtico conversacional, /caminhos de viagem achatados para /persona /waypoints/[id] /cerimônias/[id]
O emprestador chega diretamente na nova experiência na URL pública em vez do legado de pouso conversacional. Página inicial do CTA gira entre 'Iniciar sua aplicação' (visitante fresco → /start) e 'Continuar sua aplicação' (retorno do visitante com appUid → /aplicação/propriedade).
· kamolos
Sinais de grama componente r3f + SignSheet + CompareMode + sinais de demonstração conectados ao SceneRoot
· kamolos
Fluxo de seleção persona em /journey/persona (8 grade personas)
· kamolos
Programa-cliente + ganchos (useProgramCatalog, useSetPersona, useSetSelectedProgram, useLiveProgramScores)
· kamolos
Puro motor de pontuação + testes cobrindo ********** limites
· kamolos
17 conjuntos de regras do programa (period-validated) + índice chaveado pelo LoanProgramCode
· SecurityService
Adicionar MortgageProgramController — list programs, set persona, set selected program
· kamo-shared-library
Adicionar setPersona + setSelecionado Métodos do ProgramCode
· InitializerService
ProgramSeederRunner - Seed 17 programas de empréstimo de base (idempotente)
· kamo-shared-library
Repositórios, DTOs, ProgramService (catálogo somente para leitura com mesclagem de sobreposição ingênua)
· kamo-shared-library
Adicionar a coluna do modelo do emprestador (aditivo; null = BROKER padrão na camada do aplicativo)
· kamo-shared-library
Adicionar colunas persona + selectedProgramCode (aditivo)
· kamo-shared-library
Adicionar Programa + OrgProgramOverride entities (catalog + per-org overlay)

Seu universo está esperando.
Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.
Gratuito para sempre — não é necessário cartão de crédito