Direkt zum Inhalt
KAMOUniverse

Changelog

Was ist neu?

Jede Verbesserung an der Plattform, wie sie geliefert wird.

  1. · kamo-internal

    Erstellen Sie die Hypothek Steward Konsole kommen-soon Funktionen

    Ersetzt Stubs durch echte, endpoint-backed Panels + behebt einen Dead-Write-Bug: - Underwriting: Einkommensberechnungsfeld (Qualifikation: DTI/PITIA/Reserven/LTV + AUS Pille) und Betrug/4506-C Panel (Vertreibungsschiene: Ort/list/cancel/events für FRAUD + TAX_TRANSCRIPT). - Preisgestaltung: Szenario vergleichen (Seite-für-Seite-Preisläufe) und Best-Execution Erklärung (Basis-Adjustments-Final-Walk + Zweitplatzierte/unzufällige Gründe); den abgestandenen Reverse-LLLPA-Chip gelöscht (bereits in AdjustmentDrawer). - Dokumente: Live Clearability Roll-up (Fans Leihfreigabe über die Pipeline, Aggregate gelöscht/blockieren/auffällig); gelöschte abgestandene Workflow-Autorierung chip (bereits ausgeliefert). - Kapital: FIX die Kapitalmärkte Nächste Route - die POST-Genehmigungsliste nur ein Weg, so dass die ausgeliefert Loan Sale Desk / Lock-Lifecycle schreibt 404'd. Ersetzt das exakt-saitige Set mit verankerten RegExp-Mustern, die die 9 realen Aufzählung Routen (verifiziert 1:1 vs der Controller), immer noch nicht geschlossen auf alles andere. - Bulletin: eine rezensierte "Promote as bulletin"-Karte (docType=BULLETIN) mit editierbare AI-vorbereitete Produkt/Change-Typ/params, Posting an das neue Relais. Neue UI-Kopie ist schlichte Strings (i18n follow-up); tsc --noEmit clean.

  2. · SecurityService

    Gateway-Relais, um eine überprüfte Bulletin zu fördern

    MlosCatalogController/Client gewinnen Sie Promoll-Bulletin, Spiegel-Promotor-Leitlinie (God-eligible Gate, org server-stempelt). Baselined fördernBulletin in der unbewachte Endepunkte Test (Delegierte-Wache, wie seine 14 Geschwister).

  3. · SecurityService

    Persist SecurityService PHI Access Trail zu phi_access_log

    Der Weg mit dem Baustein für den Weg zu Slf4jPhiAccessLogWriter: 14-Tage-Plattform Beibehaltung gegen eine Verpflichtung von sechs Jahren, und nichts, was abgefragt werden kann. Die Lead liest und CSV/HMDA exportiert diese Service-Datensätze sind die Zugriffe ein Aus der Rechnungsführung ist 164.528 zusammengestellt, so dass der Weg in einer Tabelle überleben muss. Swaps in JpaPhiAccessLogWriter über eine Bohne PhiAccessRecorder nimmt durch ObjectProvider.getIfUnique - keine Call-Site in PhiAccessAuditor Änderungen. Die passend com.kamo.z.shared.phi.audit Eintrag in @EnableJpaRepositories Schiffe in Diese gleiche Übergabe: die Bohne kann nicht ohne das Projektarchiv gebaut werden, und Das eine ohne das andere zu erklären, ist das, was CrashLooped Login früher heute.

  4. · kamo-login

    Schließen Sie ein Login, das beim zweiten Faktor gestoppt

    SecurityService jetzt Gates login on a second factor (ca. 164.12(d)). Wenn man es ist verdankt es schafft die Sitzung, aber hält seine einmalige Schlüssel, Rückkehr ein kurzlebiges Challenge Token statt - eine Sitzung, für die niemand ein OTK hält, ist unerreichbar. Diese BFF erwartete eine oneTimeKey bedingungslos, so dass eine MFA Herausforderung fiel in die "No Session Key empfangen"-Zweig und wurde dem Benutzer als 500 angezeigt. Es jetzt erkennt die Herausforderung und gibt mfaRequired/mfaToken an den Kunden weiter. /api/login/mfa vervollständigt es. Von der OTK weiterverwendet es die vorhandene Login Route's Handoff wörtlich - lösen *** von Redis, klare abgestandene Cookies, stellen Sie die neu eins, weil zwei Session-Handoff-Implementierungen driften würden und die verwendete Weniger oft wäre derjenige, der verrottet. Ein falscher Code gibt 401 mit mfaRequired noch wahr und der gleiche mfaToken: SecurityService absichtlich nicht verbrauchen die Herausforderung auf Ausfall, so dass die Benutzer retut den Code anstelle des Passworts. Ein Re-Passwort über eins erzwingen Tippfehler ist, wie die Menschen am Ende Drehen MFA aus. Inert, bis sich jemand einschreibt; niemand hat es.

  5. · VOIPService

    Behalten Sie den VOIP PHI Trail zu phi_access_log

    Anrufaufzeichnungen, Voicemail-Audio und Transkripte wurden in das Log geprüft Stream, der 14 Tage gegen eine sechsjährige Verpflichtung von 164.528 hält und nicht von Ressource abgefragt werden - so "wer hat auf diesen Aufruf gehört" blieb unbeantwortbar auch während es aufgenommen wurde. Wiring JpaPhiAccessLogWriter als Autor Bohnen verdrängt den Slf4j Fallback, durch den sich PhiAccessRecorder auflöst ObjectProvider.getIfUnique, so CallRecordingAuditor bestehende Call-Sites sind unverändert. Die @EnableJpaRepositories Eintrag Schiffe in diesem gleichen Commit durch Notwendigkeit: die Bohne braucht PhiAccessLogRepository, und die explizite Scan-Liste ist das einzige, was das schafft es. Das eine ohne das andere zu erklären, scheitert beim Kontext Starten.

  6. · AIService

    Persist AI Konversation PHI Access Trail zu phi_access_log

    Gespeicherte Assistenten Gespräche sind die lies am wenigsten in der Lage, eine 14-Tage leisten, unabrufbarer Log-Stream: das Modul sitzt außerhalb der Compliance-Grenze, so Prompts über Kreditnehmer werden unbefristet fortbestehen und eine Rechnung von 164.528 Pfund aus genau dieser Spur muss sechs Jahre später zusammengesetzt werden. recordDisclosure bereits scheitert geschlossen auf einem schreiben kann es nicht machen, was nur etwas bedeutet sobald das Schreiben irgendwo dauerhaft landet. Erklärt die JpaPhiAccessLogWriter-Bohne und fügt com.kamo.z.shared.phi.audit hinzu zu @EnableJpaRepositories in der gleichen Commit. Die Bibliothek verlässt den Schriftsteller unannotated so 40 Dienstleistungen nicht alle konstruieren es, die die Bohne macht und der Scan-Eintrag eine einzige unteilbare Veränderung - die Bohne allein Blätter PhiAccessLogRepository ohne Bohnen-Definition und CrashLoops der Service.

  7. · MediaService

    Persist MediaService PHI Access Trail zu phi_access_log

    Chat-Nachricht liest wurden durch die Slf4j Standard-Schreiber, die setzt aufgezeichnet der Weg in einem 14-tägigen Log-Stream gegen eine sechsjährige Retention Verpflichtung - und lässt "wer dieses Gespräch lesen" unbeantwortbar, da ein Protokoll Stream kann nicht von einem Mitglied oder von der Ressource abgefragt werden. Die JpaPhiAccessLogWriter Bean und der com.kamo.z.shared.phi.audit Eintrag in @EnableJpaRepositories Schiff bewusst zusammen: @ComponentScan("com.kamo") nimmt die @Konfiguration auf, aber die Liste des Repositorys ist explizit, also die Bohne ohne den Scan-Eintrag bedeutet, dass PhiAccessLogRepository keine Bohne und den Kontext hat nicht zu starten. ChatMessageAccessAuditor braucht keine Änderung retiert seinen Autor über ObjectProvider.getIfUnique, so dass der JPA-Autor verdrängt der Slf4j Fallback an jedem bestehenden Call-Site.

  8. · SecurityService

    Die TOTP-Geheimverschlüsselungstaste injizieren

    KAMO_MFA_SECRET_KEY Karten zu kamo.mfa.secret-Taste durch Springs entspannte Bindung, und ist das, was MfaEnrollmentService verwendet, um gespeicherte TOTP-Geheimnisse in Ruhe zu verschlüsseln. Ohne sie beginnt der Dienst noch absichtlich, so dass der Einsatz des Codes und Die Konfiguration des Schlüssels sind nicht eine atomare Operation über die Plattform, sondern Einschreibung wirft, anstatt ein Second-Faktor-Geheimnis in der klaren zu schreiben. Das degradiert die Funktion, nie der Service. Schlüssel generiert on-cluster (32 zufällige Bytes, base64) als geheimer "mfa-enc-key"; der Wert existiert nur in Kubernetes und wurde nie gedruckt oder verpflichtet. Drehen ungültig bestehende Anmeldungen, weshalb es ist sein eigenes Geheimnis, anstatt in eine bestehende gefaltet.

  9. · DocsService

    Behalten Sie den PHI-Audit-Trail dieses Dienstes zur Datenbank

    DocsService dient Dokument Bytes, so ist seine Spur ist, was eine Abrechnung von Offenlegungen unter 164.528 werden tatsächlich zusammengesetzt. Es war das Schreiben zu einem 14-Tage Log-Stream gegen eine Sechs-Jahres-Pflicht, ohne Abfragefläche. Die Bohne und die @EnableJpaRepositories Eintrag Land in der gleichen Commit absichtlich. JpaPhiAccessLogWriter ist in der Bibliothek genau so nicht kommentiert Dienste opt in einer zu einer Zeit; Deklaration der Bohne ohne den passenden Scan ist was nahm jeden Login auf der Plattform heute früher, und trennen diese beiden Edits über Commits würden diesen Fehler genau reproduzieren.

  10. · kamo-shared-library

    Langlebiger Audit-Trail - bestehen PHI-Zugriff, an append-only

    Dreht eine Logzeile in eine Logzeile um. Die Erfassungsschicht wurde verdrahtet über sieben Dienste für eine Weile, aber es schrieb durch Slf4jPhiAccessLogWriter 14-tägige Vorbehaltung gegen eine sechsjährige Verpflichtung und unabrufbar. Die Kontrolle war architektonisch präsent und offensichtlich nutzlos. PhiAccessLog ist anhänglich: @PreUpdate und @PreRemove Müllmutation, weil Audit-Trail, den die Anwendung bearbeiten kann, ist kein Beweis. Die Datenbank-Hälfte (REVOKE UPDATE/DELETE) ist in der KamoInitializer Migration. Es trägt Bezeichner und nie Inhalt, und ein Test behauptet, das Unternehmen hat keine inhaltsförmiges Feld. Eine Spur, die reproduziert, was sie auditiert hat einfach verschoben das PHI in ein zweites Geschäft - eines, das von Design nie gelöscht wird. JpaPhiAccessLogWriter wird absichtlich NICHT als Bohne kommentiert. Jeder Service Komponenten-Scans com.kamo, so dass ein Stereotyp würde alle 40 Pfund konstruieren, und da es ein Repository benötigt, müsste jeder dieses Paket zu seinem eigenen hinzufügen explizite @EnableJpaRepositories Liste oder nicht zu starten. Dieser genaue Fehler nahm jedes Login auf der Plattform heute früher. Ein Service, der dauerhafte Audit will erklärt die Bohne und fügt den Scan hinzu; der Rest hält den Slf4j-Standard unbeeinflusst. SharedLibBeanSafetyTest setzt dies durch. Felder werden eher abgeschnitten als geworfen. Auf einem fehlgeschlagenen Zugang Art und Weise Ausnahme hier verweigert die Lektüre des Benutzers, so eine pathologische URL oder 4KB Benutzer-Agent Verlust der Zeile würde auch legitimen Zugang verweigern - die Prüfungsschicht darf nie die Sache, die das Produkt bricht. Tabelle existiert bereits im Cluster (KamoInitializer fb89b3d), also ist nichts bewaffnet.

  11. · InitializerService

    Erstellen Sie phi_access_log - der langlebige Audit-Trail

    Bisher wurde der PHI-Zugriff nur auf einen Logstream mit 14-tägiger Aufbewahrung aufgezeichnet gegen eine sechsjährige Verpflichtung, und ohne Abfragefläche. Eine Abrechnung von Offenlegungen unter dem Satz 164.528 ist eine Abfrage; stdout kann nicht abgefragt werden. Für die drei Fragen, die tatsächlich gestellt werden, werden Indizes ausgewählt: alles, was berührt ein Rekord, alles, was ein Mitarbeiter in einem Fenster berührt, und alles in ein Mieter in einem Fenster (die -164.308(a)(1)(ii)(D) Aktivität Überprüfung). REVOKE UPDATE/DELETE ist die Datenbankhälfte nur anhängen; @PreUpdate/@PreRemove on die Einheit ist die Anwendung Hälfte. Entweder allein ist schwach - die Entität Wache ist Bypassed by raw SQL, kann ein Grant neu hinzukommen - aber zusammen die laufende Anwendung kann eine Prüfungsreihe nicht stillschweigend umschreiben. Best-Anstühle: CockroachDB lässt einen Tischbesitzer Privilegien behalten, so dass ein Ausfall eher protokolliert als fatal. Tabelle geprüfte Darstellung mit allen 14 Spalten und allen drei Indizes vor der Entität wurde geschoben, so dass kein Dienst gegen eine Mapping ohne Tabelle bauen kann.

  12. · kamo-shared-library

    Mint die Universal Loan Identifier (ULI) + speichern Sie die org LEI

    Fügt den HMDA ULI zum LAR Export hinzu. UliMinter baut den ULI = oderg LEI(20) + Leihnummer + zwei ISO 7064 MOD 97-10 Prüfziffern (Mod97CheckDigit - die IBAN Algorithmus, transkribiert von Reg C 12 CFR 1003 Anhang C und gegen seine angeheftet bearbeitet Beispiel, NICHT die MERS Luhn-Variante). Neue annullierbare Organisation.lei-Kolleche (KI-bewarb) mit org-patch Schreibpfad; HmdaLarService sendet das ULI aus, wenn die org hat eine gültige LEI + eine Darlehensnummer, sonst DEGRADES auf die nackte Darlehensnummer so ein Die missgebildete ULI, die die CFPB-Plattform ablehnen würde, wird nie geschrieben. LoanIdentifierType gewinnt UNIVERSAL_LOAN_IDENTIFIER (derived: org LEI + LoanFile.loanNumber + check).

  13. · kamo-internal

    Setzen Sie die org LEI in Unternehmensinfo (aktiviert die HMDA ULI)

    Die Company Info Karte erhält ein Legal Entity Identifier Bereich (20-char, upper- cased), gesendet durch die bestehende org PUT - OrganisationController deserialisiert es auf Organization.lei und OrganizationService wendet es an. Mit einem LEI-Set, HmdaLarService prägt den Universal Loan Identifier des Kreditnehmers; ohne einen degradiert zur nackten Darlehensnummer, so ist es das, was das ULI per org einschaltet.

  14. · kamo-internal

    Fördern Sie eine aufgenommene Leitlinie-Version von der Konsole

    Für ein GUIDELINE-Quelldokument zeigt das Ingestion Panel ein "Promote as Guideline-Version"-Karte (Produktauswahl + Revisionseti). Die Tarif-Blatt-Karte ist jetzt auch für Guideline-Docs versteckt. ingestionApi.promoteGuideline Beiträge zu die neue Staffel.

  15. · SecurityService

    Gateway-Relais zur Förderung einer aufgenommenen Richtlinie in eine Version

    MlosCatalogController/Client gewinnen Sie Protektoren-Vortriebslinie, Spiegelung-Förderung- Förderfähigkeit: God-eligible gate, OrganisationId Server-Stempel über write().

  16. · kamo-register

    Auto-Login nach E-Mail-Nachprüfung über Einmalschlüssel

    Wenn /verify-email mit dem Additiv otk + autoLoginHost antwortet Felder (gemint von SecurityService bei erster Überprüfung), Deep-Link direkt auf https://<host?/validate?otk=... . derselbe Verbraucher die Enter-als Flow-Nutzung - Landung des frischen Mitglieds auf dem internen Haus (FirstOrgCta) statt sie auf das Anmeldeformular für eine Anmelde-Retyp und ein dritter ***. - PostCompletionScreen (Code-Pfad + geprüfte Karte): Auto-Session umleiten mit der Login-Seite Umleitung als Fallback gehalten, wann immer der OTK fehlt; feuert das bestehende E-Mail-verifizierte Ereignis zuerst, plus eine neue Auto-Session Analytics-Veranstaltung auf dem OTK-Pfad. - /verification (E-Mail-Link-Pfad): die Token-verify-Antwort ist die eine, die das OTK trägt, so dass es die gleiche Weise umleitet; das Register tab-Beobachten über SSE hält seine Login Fallback (die OTK ist Single verwenden und lebt in der Link-Tab). - registerApi: überprüfen Sie Anrufe, die jetzt als VerifyEmailResponse getippt werden.

  17. · kamo-marketing

    Phase 3+4 - den bereits ankommenden Verkehr umstellen

    - changelog (#2 Destination) bekommt einen Konvertierungsblock; Karrieren zeigen den ehrlichen No-Openings-Zustand - /Abonnieren Seite: Post-Registration Plan Absicht landet irgendwo real (war ein 404 bei Zahlungsabsicht) - Preisgestaltung: Live-Preis FindYourPlanQuiz, Mid-page CTA, Beruhigungsstreifen, extern/interne CTA-Split, Unternehmenskontakt verwendet ?topic=Verkauf (Subjekt wurde stillschweigend fallen gelassen) - Homepage: Kürzlich verschiffter Strip aus dem realen Changelog, Features/UseCases weiterlinks, JumpToBar passt sich den aktuellen Abschnitten an und bietet Anmeldung an - /partners design-partner Programmseite; etwa bekommt einen Gründer/eingebauter Abschnitt - SEO: alle canonicals - www + locale-prefixed 200-serving URLs; per-locale hreflang + x-default auf der 4 programmatische Vorlagen; unübersetzte Locales noindexed; Sitemap loc/alternates behoben (nur en+es); robots.txt lässt die JSON Sitemap + / Rechnerblock fallen; Blog-Metadaten lesen reale Übersetzungen (jeder Beitrag zuvor als 'Artikel nicht gefunden' indiziert) - llms.txt/llms-full.txt: reale Preise, UTM-geprägte URLs (AI-Referenzen werden zu einem gemessenen Kanal) - Eiswarp-Integrationsseite vertieft in eine echte Landing-Seite (die #2 organischen Eintrag)

  18. · SecurityService

    Mint Auto-Login OTK bei der ersten E-Mail-Verifikation

    Vervollständigen der E-Mail-Überprüfung des Register-Assistenten (6-stelliger Code oder E-Mail-Link) beweist bereits Posteingang Besitz, aber der neue Benutzer war geprallt auf die Login-Seite, um Anmeldeinformationen neu zu tippen und eine dritte zu lösen ***. Wiederverwenden Sie das enter-als primitive statt: auf der ERSTE erfolgreich Überprüfung, wenn der verifizierte Benutzer eine berechtigte Mitgliedschaft in ihre Register org, prägen Sie ein Login-Äquivalent *** über PostAuth***Service und wickeln Sie es in der gleichen Single-Use 180s OTK, dass kamo-interne /validate Seite verbraucht bereits. - EmailVerificationService: überprüfen Methoden jetzt zurück VerificationResult(userId, firstVerifikation) so Re-Verifikation ein bereits verifiziertes Konto (z.B. nach einem Resend) kann nie wiederminen; lösenRootDomain exponiziert Paket-static für Host-Auflösung. - **************** scheitert geschlossen an allen fehlenden oder nicht berechtigte Mitgliedschaft (registrieren /team PROSPECTs halten die Anmeldung Redirect), ungelöste Domain, unvollständige Custom-Domain SSL Setup, oder error - Verifikationserfolg selbst wird nie beeinträchtigt. - /verify-email Antwort gewinnt additive otk + autoLoginHost Felder; Form unverändert, wenn die Münzprägung übersprungen wird.

  19. · kamo-marketing

    Inhalte Module + Anmeldung CTA Retargeting auf programmatische Vorlagen

    Lösungen, Integrationen, Alternativen und Glossarvorlagen waren bio Sackgassen: keine internen Links und "Start free" CTAs zeigen auf /Preis statt Anmeldung. - Neuer gemeinsamer RelatedContent-Block (Karte/Pille-Varianten) mit dem i18n Link so locale erhalten bleibt; jeder verwandte Link feuert verwandt-klicken mit der target href als Ereigniselement. - Lösungen: 3-4 Geschwisterindustrien von INDUSTRY_CATEGORIES plus bis zu 2 Integrationen der Industrie kopieren Namenstropfen. - Integrationen: 3-4 Integrationen der gleichen Kategorie, aufgestockt für kleine Kategorien; Konvertierungs-Brorbstreifen über der Fußzeile CTA. - Alternativen: "Auch vergleichen" Chips für die anderen 8 Wettbewerber, bis zu 2 kuratierte /solutions Seiten, Migration-Winkel-Abend CTA (switchFrom-Taste) und ein Wandlungs-Blurbstreifen. - Glossar: verwandte Begriffe gefüllt bis 3-4 über gleiche Kategorie Fallback plus ein Vollglossary Link. - Alle primären Start-freien CTAs jetzt getroffen **************** mit cta-start-free / Location Instrumentation; /Preis bleibt als a sekundäre View-Preis-Link auf jeder Vorlage.

  20. · SecurityService

    Gate-Login auf den zweiten Faktor - 164,12(d)

    Vollendet MFA. Der Kern landete in Kamo-Shared-Bibliothek; das ist der Draht, der sich dreht die Konfiguration in ein tatsächliches Tor eingefügt. Das Gate ist klein, weil Login bereits die richtige Form hatte: Es erstellt die *** Sitzung und reicht es dem Client NUR als einmaliger Schlüssel in der Antwort-Körperin - nein Cookie wird bei der Anmeldung gesetzt. So ist der gesamte Mechanismus, die OTK bis zum Der zweite Faktor ist bewiesen. Eine Sitzung, für die niemand ein OTK hält, ist unerreichbar, was bedeutet, dass die Sitzungserstellung selbst überhaupt nicht operiert werden musste. MfaChallengeService hält die ***Id unter einem undurchsichtigen, einwegigen, 5-Minuten-Token. Der Kunde erhält nie die Session-ID, und das Token ist wertlos ohne Code. Kurz absichtlich: Ein halbauthentischer Staat überlebt einen Passwort-Kompromiss. POST /api/security/mfa/challenge vervollständigt die Anmeldung, die Freigabe der OTK so die Client nimmt genau den Flow wieder auf, den er ohne MFA gehabt hätte. Ein falscher Code veröffentlicht nichts und verbrennt nicht die Herausforderung, weil erzwingt ein Benutzer zurück durch das Passwort über einen Tippfehler ist, wie MFA wird ausgeschaltet. Die Die Aussperrung der Einschreibung zählt diese Ausfälle. Ein Erfolg verbraucht die Herausforderung so es kann nicht wiederholt werden. Recovery-Codes vervollständigen es zu, und werden nie auch als versucht ein TOTP. Einschreibungsendpunkte (/einschreiben, /confirm, /status) erfordern eine Sitzung Faktor ist eine authentifizierte Aktion auf eigene Rechnung. /challenge absichtlich tut nicht, weil sein Anrufer per Definition Mid-Login ist. INERT HEUTE: das Tor feuert nur auf hatConfirmedFactor, und niemand ist eingeschrieben, so der vorhandene Login-Pfad ist kabelidentisch. Das ist der Punkt, das kann sich einsetzen bevor ein Client es unterstützt. Die Endpunkt-Ratsche erwischte meine eigenen drei Einschreiber als unbewacht. Sie sind bewacht, durch einen UserIdFromSession Helfer kann der One-Methode-Deep-Scan nicht folgen, so war der Fix lehrt GUARD, dass Helfer eher als baselining sie. Ich auch dokumentiert die umgekehrte Begrenzung die gleiche Übung ausgesetzt: completeChallenge räumt den Scan nur, weil er kSessionService berührt.

  21. · kamo-marketing

    Phase 0+1 - Instrument der echte Trichter, entsperren erste Farbe

    - Daten-* Requisiten durch MagneticButton/RippleButton (Ereignisse haben nie das DOM erreicht) - Instrument SharedNavigation, Hero, PreviewBanner, Abschnitt CTAs; ?ref= auf jedem Registerlink - tot ************ löschen + 16 weitere verwaiste Komponenten - Homepage: kein Preloader-Gate, Abschnitte SSR'd, 16x10 Abschnitte, Live-Katalogpreise in Pricing - ehrliche Anmeldung: ein E-Mail-Feld Deep-Linking-Register mit Voraussetzung; reale Begriffe/Datenverkehr - töten 10MB favicon.svg + logo.svg, Drop-Repos-World-Flaggen (3.7MB) für Emoji-Flags, Drop drei.js deps - statische Erzeugung (keine Kraft-Dynamik), Long-Cache-Header für /img /logos /favicon - Analytics: Daten-Performance Vitals auf, DNT Drop entfernt; Chat-Widget faulOnload; preconnects - Held: lokale bgs sofort machen (Thementausch nicht blockieren), Watch Demo /demo, Gespräch mit uns CTA, ehrliche Statistiken

  22. · kamo-shared-library

    TOTP-Sez-Faktor - 164,312(d)

    Die Compliance-Bewertung bezeichnete das Fehlen eines zweiten Faktors als disqualifizierend allein, und nach der 2025 Security Rule NPRM MFA stoppt auf alle. Single-Faktor Benutzername+Passwort war der einzige interaktive Authentifizierungspfad auf der Plattform. TOTP wird gegen die RFC 6238 Prüfungsvektoren B verifiziert und nicht gegen legt Wert für diese Implementierung. Dieser Unterschied ist das ganze Ballspiel: ein home-grown TOTP, die nur mit sich selbst authentifiziert niemand Google Authenticator, und das Ausfall Oberflächen beim Rollout mit jedem Benutzer ausgesperrt. Schreiben dieser Tests sofort erwischt, dass ich unix Sekunden bestanden hatte, wo die HMAC will einen Zähler - aus um einen Faktor von dreißig - so generieren Jetzt tut die Division und kein Anrufer muss sich daran erinnern. Eigenschaften, die echte MFA vom Aussehen trennen, die jeweils von einem Test: - Codes sind Einweg-Nage. Ein TOTP bleibt für seinen gesamten 30-Sekunden-Schritt gültig, also ohne lastUsedTimeStep funktioniert wieder ein abgefangener oder schultergestützter Code in seinem eigenen Fenster. Ein früherer Schritt noch innerhalb der Toleranz wird abgelehnt Auch, einmal wurde ein späterer akzeptiert. - Unbestätigte Anmeldungen zählen nicht. Beginn der Einschreibung und Verzicht vor dem Begeweis des Besitzes darf eine MFA-Anforderung nicht erfüllen. - Lockout ist echt: ein korrekter Code wird verweigert, während gesperrt, sonst die Aussperrung ist dekorativ. - BeginnEnrollment weigert sich, einen bestätigten Faktor zu ersetzen. Leise überschreiben würde lassen, dass jeder, der den Endpunkt erreicht, den Authentifizierungsbeauftragten des Opfers tauschen ihre eigenen. - Das Geheimnis ist in Ruhe verschlüsselt und genau einmal zurückgegeben; Recovery-Codes sind hashed und Single-Use. Beides ist nicht für das Personal erstattungsfähig, so dass ein verlorenes Gerät bedeutet Re-enrollment - der richtige Handel für einen Anmeldeschein, der das Passwort umgeht. - Die Überprüfung vergleicht sich in der Zeit. String.equals kehrt auf der ersten unterschiedliche Ziffer, die Lecks, wie viele führende Ziffern richtig waren und bricht ein 10x6 Raum in etwa 60 Vermutungen. Recovery-Codes sind SHA-256 statt bcrypt absichtlich: 80 Bits von Maschine-generierte Entropie hat kein Wörterbuch zu dehnen gegen, und eine langsame hash es würde nur einen Denial-of-Service auf dem Login-Pfad kaufen. Im Cluster gibt es bereits Tafeln (KamoInitializer c65a233), also ist nichts bewaffnet durch diesen Vorstoß. Einschreibung und Herausforderung Endpunkte sind der nächste Schritt; nichts ruft dies noch.

  23. · kamo-login

    Analytics hinzufügen + ?registred=1 Willkommensbemerkung

    - Mount analyticsAnalytics Client-Komponente im Root-Layout: next/script Loader für analytics.kamocrm.com über Daten-Domains Nur login.kamocrm.com (Website ist weiß gekennzeichnet; Tenant org Domains müssen nie verfolgt werden), mit bewacht window.analytics?.Track-Typings. - Verfolgen Sie ein Login-Sucz-Erfolg direkt vor dem Post-Login-Redirect-Feuer. - Handle ?registred=1 von der Registerseite mit einer Erfolgsanzeige ("Ihr Konto wurde erstellt. Melden Sie sich an, um fortzufahren".), die Vorfüllung der E-Mail-Feld von ?email= - gleiches Muster wie email_verified/linked.

  24. · InitializerService

    Erstellen Sie die Zweit-Faktor-Tabellen

    Backs UserMfaEnrollment und MfaRecoveryCode in Kamo-shared-Bibliothek Person oder Entity Authentizierung, die Lücke die Compliance-Bewertung genannt disqualifizieren auf eigene Faust. Beide Tabellen verifiziert im Cluster mit der erwarteten Form vor der Entitäten wurden gedrängt, so dass kein Dienst gegen ein Mapping bauen kann, dessen Tabelle es tut nicht existieren. Drei Details, die es wert sind, nicht zu einer späteren Vereinfachung zu verlieren: - SECRET_CIPHERTEXT hält den Cipherotext. Der Dienst weigert sich, eine Anmeldung zu schreiben bei allen, wenn keine Taste konfiguriert ist, anstatt sich zu Klartext zu degradieren. - LAST_USED_TIME_STEP macht einen Code Single-Use. Ein TOTP gilt für seine ganze 30-Sekunden-Schritt, so dass ohne es ein abgefangener Code-Wiedergabe in seinem eigenen Fenster. - Recovery-Codes erhalten eine Zeile jeweils statt einer serialisierten Liste, so dass einlösen eine ist ein gezieltes Update anstelle eines read-modify-write über das Set, das unter concurrency ist genau, wie ein "Single-Use"-Code wird zweimal verwendet.

  25. · VOIPService

    VIEW_CALL_LOGS für die Rückrufwiedergabe in PHI-Handling orgs erfordern

    Aufnahme und Voicemail-Wiedergabe überprüft Mietverhältnisse und nichts anderes: jedes Mitglied der besitzende Org könnte jeden Anruf in ihm ziehen, Transkript enthalten, auf Erweiterungen, die waren nicht ihre. VIEW_CALL_LOGS zu verlangen, war keine Option. im Enum und wird niemandem gewährt, also schaltet es ein, für jeder nimmt es ein das Softphone weg von den Mitgliedern, die es heute benutzen. Die Durchsetzung ist daher auf die Einhaltung der Einhaltungsgrenze beschränkt, die sie notwendig macht. Für eine Org mit GriffenPhi-Set, Aufnahme Audio, Pro-Beine-Tracks, Voicemail-Audio und die Transkript-Reiten innerhalb der Aufzeichnung von Metadaten erfordern das Recht; die Ablehnung ist ein 403 und landet in der PHI-Audit-Trail durch die bestehenden Noden-Pfad-Rekorder, so Sondierung ist sichtbar. Für jede andere oder eine andere oder eine Reihe von heute - ändert sich nichts, welche ist das, was die ************-Fälle festnageln. Bekannte Konsequenz: die ?st= Stream-Token-Sitzung trägt nur (orgId, memberId), also unter einem PHI-Pächter verfehlt der Audio-Tag-Pfad, bis das Token den Zuschuss trägt. Aufgenommen in einem Test, anstatt links zu entdecken.

  26. · kamo-internal

    Automatischer Abmelden nach Inaktivität (HIPAA 164.312(a)(2)(iii))

    Eine Sitzung, die auf einem unbeaufsichtigten Arbeitsplatz offen gelassen wurde, blieb auf unbestimmte Zeit verwendbar. Dies beendet es nach 15 Minuten ohne Interaktion, mit einer 60-Sekunden-Warnung so wird niemand mitten in der Aufmachung entsorgt. Die Timing-Regeln leben in app/lib/idleTimeout.ts als reiner Controller (Einheit mit gefälschten Timern getestet); die Komponente ist nur eine Eingabeschicht. Drei Entscheidungen Wissenswertes über: - Nur Mauszeiger, Schlüssel, Rad, Scroll, Touch und Sichtbarkeitsereignisse zählen als Präsenz. Websocket Frames, Polling und Timer nicht erfrischen sich ständig, und behandeln, dass wie ein Mensch am Schreibtisch würde die Steuerung dekorativ machen. - Präsenz wird über den gesamten Ursprung gemessen, weil das Kontrollpersonen sind eine unbeaufsichtigte Maschine, kein unbeaufsichtigtes Tab. Arbeit in einem Tab hält seine Geschwister lebendig; wenn jede Registerkarte geht ruhig sie zusammen verfallen, so nein Anordnung der Tabs hinterlässt eine brauchbare Sitzung auf einem verlassenen Bildschirm. - Das Ende einer Sitzung wird über Tabs bekannt gegeben. Die *** id lebt in jedem tab's sessionStorage über eine gemeinsame Redis-Sitzung, also ein Geschwisterchen, das nie ist erzählt zeigt weiterhin einen authentifizierten Arbeitsbereich über eine Sitzung, die nicht mehr existiert. Sowohl das automatische Log-off als auch die gewöhnliche /Logout-Seite werden nun ausgestrahlt. Kündigung geht durch die bestehende /aushalteseite - SecurityService Logout, Redis Schlüssellöschung, Cookie Clearing, vorwärts zu kamo-login - weil Clearing Client-Zustand allein lässt die Server-Sitzung lebendig und ist kein Logoff. Kopie, die vor diesem in Kamo-Translation-dictionary (c39dfb9) ausgeliefert wurde.

  27. · DocsService

    Audit WOPI Content Endpunkte und schließen Sie die letzten sparunsbegnen

    WOPI dient ganzen Dokumenten zu Docs und hat nichts aufgezeichnet. GET /wopi/files/{id'/contents ist die gleiche Offenlegung wie /download, weitergeleitet gleiches Durch APIService, ohne Trail überhaupt - Öffnen eines Dokuments in Der Redakteur war nicht auffindbar. Identität kommt aus dem WOPI-Zugangs-Token, nicht aus einer *** Sitzung: DocumentController prägt es mit den org und den Mitgliedern des Mitglieds und Docs gibt es auf jeden Rückruf zurück, so dass diese Ansprüche die einzige Identität sind Diese Endpunkte haben, und die eine checkFileInfo bereits autorisiert. Der Auditor nimmt sie direkt, anstatt ein Mitglied auf einen zweiten Weg zu lösen die mit dem Token nicht einverstanden war der Antrag genehmigt wurde. Ein Token die keine Aufzeichnungen gegen den ungelösten-Org-Wechsel statt fallengelassen. PutFile-Datensätze als VIEW, nicht DOWNLOAD: a save sendet Bytes in anstatt out, so nennen es eine Offenlegung würde doppelt zählen die GetFile, die die geöffnet Sitzung, und VIEW scheitert offen, so dass eine kranke Audit sinken kann nicht zerstören Arbeit. CheckFileInfo und die Sperren bleiben unaufgezeichnet - kein Inhalt und Docs ruft beide wiederholt durch eine Sitzung, die die Zeile begraben würde das bedeutet, dass Bytes tatsächlich verschoben. Der Sweep für die verbleibenden Byte-Serving-Pfade fand zwei weitere: - /api/docs/binders/{id'/render verbindet jedes Dokument in einem Buchbinder zu einem PDF. Es ist Bulk-Download in einem anderen Wrapper und aufgezeichnet nichts; jetzt Ein Ereignis pro eingebettetes Dokument, Separatoren und generierte Seiten ausgeschlossen. - ************ hat nur eine ImgLogDownload-Reihe geschrieben. Das ist eine Imaging-Domain-Einspielung, die von der Download-History-Panel gelesen wird, nicht Cross-Surpur - so zeigte die Darstellung der Enthüllungen Ströme, exportiert und Vorlagen PDFs unter Auslassen des Dienstes am häufigsten verwendete ättige ättige Dienstleistungen Weg. Beide Aufzeichnungen sind nun geschrieben; sie beantworten unterschiedliche Fragen. Keine Einheit, @Column oder Shared-Bibliothek ändern.

  28. · kamo-internal

    Fördern Sie eine aufgenommene Berechtigungsmatrix von der Konsole

    Für ein ELIGIBILITY_MATRIX Quelldokument zeigt das Einnahme-Panel nun ein "Fördern Sie als Berechtigungsmatrix" Karte: wählen Sie das Produkt, Limit-Typ (MAX_LTV/CLTV/DTI), Belegung und Zweck, und jede zugelassene FICO-Limit-Reihe wird eine Förderzelle - das Tor, das das Produkt preislich sein lässt. Die Rate-sheet-Veröffentlichungskarte ist jetzt für LLPA und Berechtigung docs versteckt (je hat seine eigene fördernde Pfad). ingestionApi.promoteEligibility Beiträge zur neuen Relais.

  29. · SecurityService

    Gateway-Relais zur Förderung einer aufgenommenen Berechtigungsmatrix

    **************** Gewinn Förderung-Förderfähigkeit, Spiegelung Förderung-Anpassungen: Gott-förderbares Gate, OrganisationId Server-Stempel über write(), nachgeschaltete 4xx übermittelte wörtlich.

  30. · kamo-internal

    Authoring UI - Liste, Line-item-Editor, Share-Link-Management

    Erledigt das Angebot/Schätzungssystem: Mitarbeiter können jetzt ein Angebot erstellen, Preis es, Minze einen Share-Link und E-Mail, alles aus der Pipeline. app/lib/quotesApi.ts getippter Client für die SecurityService-Oberfläche ************ Proxy, Spiegelt den POS ein (X-***-Token Durchfahrt) PipelineQuotesTab Liste + Statusfilter, verdrahtet als RETAIL Sub-Tab App/commerce/quotes/[uid] Detailroute QuoteEditor PipelineRecordLayout mit Details/Sharing/Aktivität Tabs QuoteLineItemEditor wiederverwendbares Line-Item-Grid ZitatShareLinkPanel mint, kopieren, E-Mail, widerrufen, Ansicht zählt QuoteLineItemEditor ist bewusst eine eigene Komponente. Die Pipeline trägt bereits fünf separate handgerollte Line-Item-Editoren (Bestellungen/neu, OrderEditDialog, Abonnement-Bestellnetz, die Beschaffungstabelle, Arbeits-Bestellungsarbeit/Teile) mit nichts Auf beiden Seite sollten neue Arbeiten aufbauen, anstatt eine sechste hinzuzufügen. Die Gesamtsummen des Editors sind ein LOCAL PREVIEW und werden als solche gekennzeichnet, während sie verschmutzt sind. Sie Spiegel QuoteTotals genau - Linie Rabatte zuerst, dann die Angebotsebene Rabatt, dann Steuern und Versand - so dass die Vorschau nie mit dem gespeicherten Dokument nicht einverstanden ist, und Die Antwort des Servers ersetzt sie bei jedem Speicher. Nichts hier kann eine Summe setzen. Steuern bleibt auch in der Benutzeroberfläche ehrlich: ENGINE-Modus macht "Nicht konfiguriert" statt Herstellungsfigur, passend zu dem, was die API berichtet. Ein frisch geprägter Aktienlink wird einmal mit einer Copy-now-Warnung angezeigt, weil nur seine SHA-256 wird fortbestehen und die URL kann nicht wiederhergestellt werden. Die Liste kann zeigen, ein Token-Präfix und nichts mehr. Rechte-gated durch: MANAGE_QUOTES zu erstellen /edit, SEND_QUOTES zu mint oder widerrufen Links. Terminal Zitate ************ Schloss der Redaktion und bieten stattdessen eine Revision an. Von Anfang an live zur API kabelgebunden - keine generierenden Leuchten, im Gegensatz zu mehreren Geschwister-Pipeline-Tabs. Wenn die Anführungstabellen noch nicht existieren, ist der Fehler aufgetaucht ehrlich, anstatt von Platzhalter Reihen maskiert.

Euer Universum wartet.

Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.

Für immer kostenlos – keine Kreditkarte erforderlich