Przejdź do treści
KAMOUniverse

Changelog

Co nowego.

Każde ulepszenie platformy, jak to wysyła.

  1. · kamo-internal

    Odbuduj zjeżdżalnia jako jedną ciągłą powierzchnię

    Czątury członkowskie tworzą teraz bezpośrednio ciało departamentu - brak gniazdowania kart na kartach — a działy prowadzą pełne krwawienie z lepkimi opaskami, odzyskując szerokość rzędu 30px I wycinanie chromu przed pierwszym członkiem z 228px do 170px. Układ - Usuń stos kart w kartach: wiersze są płaskie, oddzielone od włosów, pełna szerokość. - Opona lepka działowa (atrament na 8% pierwotnym odcieniu, nigdy biało-pierwotnego) Przenoszenie szewronu ujawnienia, miernika obecności na żywo, online / łączne Ułamek i przełącznik Select. Upuszcza identyczną ikonę grupy per-departamentowej. - Jedno tło zamiast trzech ułożonych gradientów; jeden widm. - Status jest niesiony kropką na awatarze plus słowo tylko wtedy, gdy dodaje Informacje, zastępując pięć kodowań na rzuty o tej samej wartości. Zachowanie - Kliknięcie wiersza otwiera czat 1:1. Wcześniej nic nie zrobiło: MemberList nigdy Przeszedł onClick, więc w pełni stylizowany klikalny wiersz był bezwładny. - Przywróć filtr All/Online/Offline, który istniał tylko wewnątrz MemberList's Nagłówek — gałąź, której nigdy nie wyreżyserował panel na żywo (showHeader-false), odchodząc StatusFilter przypięty do "wszystkich". Podniesiony do NavTopPanel obok pola wyszukiwania. - Multi-select zyskuje realne przygotowania: wybierz przełączanie na pasek, kliknięcie ctrl / cmd, I dotknij długiej prasy; pasek wyboru wznosi się od pierwszej selekcji. - Jeden podniesiony MeetingDialog zamiast jednego zamontowanego na rzędzie, a ownMemId jest Nakręcony w dół zamiast każdego wiersza podaj /api/user-info. Ruch - MotionConfig reMotion"user", plus preferowane ostrzeżenia w ruchu na Klamki klawiszowe CSS, do których nie może dotrzeć. - Rozpiętość wejścia sekcji, zapadnięcie wysokości ramki z obrotowym szewronem, Przepływ wiersza w układzie-winący, liczba liczników, nieprzeczytany pop, slajdy zakładek kierunkowych. Dostępność - Prawdziwa semantyka ujawnienia, rzędy ul / li, jeden rozciągnięty przycisk wiersza z rodzeństwem (nie zagnieżdżone) akcje, pułapka ostrości z przywracaniem ostrości, nawigacja strzałek, Pożyczkliwy region na żywo do wyboru i cele > 24px. - Otwieracze panelowe w NavTop były nieobsłoniowymi pudełkami; są teraz przyciskami. - Czopki były tylko divami kliknięć bez ścieżki klawiatury; są to elementy listy Z prawdziwymi przyciskami i przystępnymi nazwami. Theming (ang.) - Nowy - nagłówkowy token tak biały tekst na lekkim dzierżawcy pierwotnym jest naprawialny. - Wspólna paleta dostępności kończy dryf odcienia NavTop/MemberItem, a także Fryzyle zatrzymają odwołanie --color-primary-rgb, zmienna nigdy nie zdefiniowana. - Wzbitalne znaczniki czasu przechodzą przez Intl na miejscu aplikacji zamiast emitować Zakodowane angielskie i ostatnie aktywne etykiety ponownie zaznaczają się za pomocą jednego wspólnego zegara z lat 30.

  2. · SecurityService

    Wykrywanie i ostrzeganie przed ścieżce audytu rekordowo dostępowego

    phi_access_log gromadzi dowody, na które nikt nie patrzy. To jest zgodne z 164,312(b) — szlak istnieje — i nie zadowala się niczym 164,3308 lit. a) ppkt (ii)(D), który wymaga przeglądu lub 164.400-414, u których zegar Nie można zacząć, dopóki ktoś nie zauważy. To jest to, co zauważa. Pięć detektorów w zamkniętej godzinie, na aktora: BULK_EXPORT 250 różnych rekordów wyeksportowanych/pokrytych/ujawnionych MASS_READ 200 różnych rekordów odczytu REPEATED_DENIALS 10 odrzuconych prób (wydarzenia – nazwy odmów nienotowane) OFF_HOURS_ACCESS 20 różnych rekordów poza tygodniem TENANT PLATFORM_STAFF_ACCESS 1 — podmiot objęty ubezpieczeniem jest informowany niezależnie od uzasadnienia Liczby są zapisami DISTINCT, a nie zdarzeniami: PhiAccessAuditor emituje jeden wiersz na wiersz siatki, więc członek przeładowujący tę samą stronę czterdzieści razy to 2000 zdarzeń I 50 osób - i "ile osób" jest liczbą naruszeń Dokonano oceny. Uzasadnienie dla każdej niewykonania zobowiązania jest na PhiDetectionSettings; Wszystkie z nich są konfigurowane-mapa nie do zniesienia, ponieważ detektor, który nieustannie strzela Robi się wyciszony, a wyciszony detektor nadal odczytuje jako zasięg. Off-hours jest oceniany w strefie najemcy za pośrednictwem istniejącego OFF_HOURS_ACCESS Reguła (godziny czasu pracy, które już zbiera ekran bezpieczeństwa) spadając z powrotem do Organization.timezone. miało miejsce_at to UTC, więc zakotwiczona w końcówce . Najemca z Sydney co rano pracuje i nigdy nie wystawia nowego roku. Dostawa ponownie wykorzystuje to, co istnieje: EmailTeplalServiceClient -> EmailService /api/email/templates/send z nowym kluczem kanonicznym PHI_ACCESS_ALERT, do Adres org już zarejestrowane w org_suspicious_detection_rules .notification_emails. Najemca, który nie skonfigurował żadnego, dostaje dziennik recenzji i Nic więcej – wysłanie zgadowanego adresu ujawni, że nazwana Podejrzewa się, że członek siły roboczej. Każde znalezisko jest rejestrowane w dedykowanym PHI-DETECTION logger; tylko powiadomienie jest przepustowe (6h na wykrywacz/najemca/ Aktor, w Redis, zasady logowania-anomaly już używają). Alerty noszą Identyfikatory i liczby, nigdy nie jest to rekord. Dwie rozmyślne wybory strukturalne: - Agregaty biegną przez podmiotManager, a nie Spring Data -Query. Wiosna Dane sprawdza deklarowane zapytanie, tworząc je na repozytorium bootstrap, więc a więc Błąd tam nie działa w przypadku tworzenia kontekstu - i SecurityService, który nie będzie Start zabiera ze sobą każdy login, jak w dniu 2026-08-03. Tutaj najgorszym przypadkiem jest Zamiataj te kłody i retries następną godzinę. Usuwa również ten pakiet z WpisJpaRepositories pytanie całkowicie: bez repozytorium fasoli, nic do Zapomnij. PhiDetectionQueryTest sprawdza każdą ścieżkę właściwości refleksyjnie od tego czasu Żaden test w tej usłudze nie może uruchomić kontekstu. - Każde zapytanie jest ograniczone przez id w pierwszej kolejności. phi_access_log's only Indeks użyteczny to (ORGANIZATION_ID, OCCURRED_AT); filtrowanie na czas Pełne skanowanie oznacza stół tylko do wyrostek, który tylko rośnie. Planowanie: to łączy zadanieScheduler (4 wątki, sched-), który siedem zamiateń Już się podzieli. Nie dotyka tłumaczeniaWykonawca — 3-wątkowa/500- kolejka Async basenie obserwował nasycone - i w ogóle nie poddaje się żadnemu wykonawcy. , (wspomniane,) Pięć grupowanych agregatów na partię najemcy, brak połączenia w sieci w skanie, i Znieważeni zatrzasnobieżność, więc powolny bieg pomija następny kleszcz, a nie układanie Za nim i głodzenie basenu, który dzieli. Żadna jednostka ani kolumna nie została dodana lub zmieniona.

  3. · EmailService

    Zmienne podglądu dla PHI_ACCESS_ALERT

    Bez przykładowej ramieniaWymazujące urządzenie administratora Email Szablony szablonów renderują wszystkie Zapasowy pusty, więc ktokolwiek zostanie poproszony o zatwierdzenie brzmienia bezpieczeństwa Alarm widzi pusty stół. Przykładowe modele i tylko liczą się – To sam kształt, który nosi prawdziwy alert, ponieważ prawdziwy alert nigdy nie niesie ze sobą Rekord.

  4. · kamo-shared-library

    Szablon kanoniczny PHI_ACCESS_ALERT

    Przegląd godzinowy SecurityService phi_access_log musi gdzieś wysłać To, co znajdzie. Zamiast wymyślać kanał, którego używa istniejącego. Kolej transakcyjny e-mail, co oznacza klucz kanoniczny: nieobecny CANONICAL_KEYS, którego szablonu nigdy nie może być rozstawiony, nigdy samouzdrowić, i każdy Wysyłaj zwroty stałe 404 - kontrola ostrzegawcza, która wygląda jak zasięg I nic nie dostarcza. Szablon zawiera identyfikatory, liczy się i tylko okno czasowe. Wykrycie Artefakt, który odwzorowuje to, co wykrył, przeniósł PHI do skrzynki odbiorczej Bez polityki retencji, więc celowo nie ma zastępstwa dla Rekord. PhiAccessAlertTelateTest pins, które i przypina dwie ciche niepowodzenia Tryby: symbol zastępczy, który nic zaopatrzenia nie renderuje jako pusty ciąg z tylko a OSTRZEŻENIE, a renderer nie ucieka z HTML, więc wszystko dociera do ciała Korzysta z zbiegłego bliźniaka. EmailService musi przełożyć się z tym wspólnym libem przed rozpoczęciem SecurityService Wysyłanie; do tego czasu wysyłanie zostaje złapane, a znalezienie pozostaje tylko na blogu przeglądowym.

  5. · kamo-internal

    Odzwierciedla minimalną minimalną masce na klienta (164,502 (b))

    SecurityService wstrzymuje teraz niestandardowe odpowiedzi od dzwoniący, który nie jest Odstępca cesarski (i, w uchwytachPhi lokator, nawet od posiadacza prawa 161). Ta maska jest egzekwowaniem prawa, to nie jest. Dwie ścieżki wciąż są go obmione: - LeadRealtimePublisher stawia w pełni, zdemaskowany LeadDTO Security.leads.rt.-orgId — jeden ładunek wycelowany dla każdego abonenta w Org, bez projekcji na żaden absolutorium. Dopóki to wydarzenie nie będzie się niesie Tylko identyfikatory i klient refetches, aplikacja/lib/leadFieldMask.ts is Jedyna rzecz między odpowiedziami na wlot kolegi a każdą otwartą szybą ołowiu W dzierżawcy. LeadViewClient teraz uruchamia przychodzące ładunki w czasie rzeczywistym Zanim którykolwiek z nich dotrze do stanu. - Rendering: wstrzymana forma i nigdy nie wypełniona w nim pojawia się w poszukiwaniu Tak samo, więc decyzja musi być ponownie sformułowana, a nie wywnioskowana. Wykonanie niestandardowe Pane upuszcza swoją Edytowanie afordancji, gdy odpowiedzi są ograniczone - oszczędzając puste Forma byłaby PUT - nad prawdziwymi odpowiedziami, które serwer teraz 403s i tak. Organizacja.handlesPhi jest dostarczany w istniejącej kolumnie -> DTO -> OrgContext Ścieżka (istot org już ją serializuje; schemat zod i Brakujące na liście bydła.ZJSON było brakującymi linkami), a nie drugim kanałem. Brak nowej kopii godna dla użytkownika: etykieta "zastrzeżona" wymaga klucza w Repo i tłumaczenie-pokcji i jest celowo pozostawiony do tej zmiany.

  6. · SecurityService

    Minimalne niepotrzebne maskowanie ołowiu na zamówienie (164,502 (b))

    Jedyna maska polowa platformy została zastosowana przez LeadController.getLeadById do dzwoniącego, który nie jest ani bogiem, ani cesjonariuszem i Brakuje VIEW_LEAD_CONTACT_INFO_OTHERS (161). Obejmuje on e-mail, telefony, datę Narodziny i uliczne części adresów pocztowych / własności – i nic więcej. customFormData przejechał prosto przez to, co jest jedynym miejscem na platformie a Najemca opieki zdrowotnej faktycznie zastosuje pytania dotyczące przyjmowania i objawów. LeadFieldMask jest teraz właścicielem decyzji i projekcji: - dowolny org: na zamówienie porusza się z maską kontaktową. Jeśli nie widzisz E-mail prowadzący możesz nie zobaczyć, na co on odpowiedział. - uchwyty lokatorówPhi: odpowiedzi są utajniane przed każdym, którego ołów nie jest przypisany Nawet z prawej 161. To prawo jest objęte własną nazwą, do kontaktu Informacje; odpowiedź na objawy nie jest danymi kontaktowymi. Forma tytuł idzie Również — "Diabetes Intake Questionnaire" ujawnia ten warunek na własną rękę. Wejście formularzowe przetrwa maskowanie tylko id, więc UI może powiedzieć "zastrzeżony", zamiast narysować pusty kwestionariusz. I orgia, która nie będzie ładować, to Traktowana jako PHI-handling, pasujące do postawy UNKNOWN-denies PhiTenantStatus. PUT / ołowia / aid zyskuje symetryczną bramę pisową. Formowy edytor PUT wszystko fieldVues mapa, więc bez niego członek pokazał pusty kwestionariusz, który naciskał Save zastąpiłby prawdziwe odpowiedzi - czytelna maska miałaby Stać się cichym usunięciem. Statyczne narzędzie, brak stereotypu i brak repozytorium: decyzja jest czysta i Dzwoniący już trzyma org.

  7. · kamo-internal

    Przeglądowy audytor dostępu do HI — przegląd org i księgowość na rekord

    Ścieżka była napisana i nic nie mogło go przeczytać. Oto połowa ekranu: Przegląd dostępu do org w obszarze Ustawienia - Bezpieczeństwo, oraz "kto miał do niego dostęp "Taminowanie dialogowe otwierane z samego prowadzenia, którym jest kształt 164,528 Prośba o księgowość faktycznie dopływa – osoba pytająca o swój plik, Nie ktoś z czasem filtrowania dziennika globalnego. Trzy rzeczy nie są kosmetyczne. Czastyty są absolutne i zawsze nazywają strefą, w której zostały renderowane, z Przełączanie jednym kliknięciem do UTC. Dowodem czytamy kilka miesięcy później, że ktoś, kto był Nie jest obecny; naga zegar ścienna czytana z innej strefy po cichu niesprawiwalnie Dostęp w godzinach, co jest różnicą między "podczas zmiany" i "o 3 nad ranem". Wzbuchy są wykluczone wprost - dryfują za każdym razem, gdy strona jest otwierana. Odrzucone próby i dostęp do personelu platformy są oznaczone w wierszu (przytłacz, lewa reguła, Wiodąca ikona), a nie pozostawiona w kolumnie, oko przeskakuje, ponieważ zgodność Oficer skanuje setki rzędów dla tego, którego nie powinno tam być. Zwykły Czytania są celowo proste: dekorowanie wszystkiego jest takie samo jak dekorowanie Nic. Oddeconds outranks platform-staff, gdy jest obydwoje rząd - personel Kamo Odmowa jest najciekawsza linia, jaką może pokazać ekran. Eksport jest ogrodzony na EXPORT_ACCESS_LOGS oddzielnie od prawej strony i 503 Z góry jest wyjściowy, gdy „nic nie zostało ujawnione”, a nie wygładzone. W błąd ogólny. EXPORT jest nieprawidłowo zamkniętym rodzajem audytu: odmowa oznacza Ujawnienie nie może być zarejestrowane, co jest poprawnym wynikiem, którego funkcjonariusz potrzebuje - Do zobaczenia. Budowa zapytań, formatowanie znaczników czasu i klasyfikacja wierszy na żywo w aplikacji / lib so Witest może do nich dotrzeć; komponenty są zgromadzone. 403 nigdy nie dotrą do Pusta siatka - "nikt nigdy nie dotknął tego rekordu" jest najbardziej niebezpiecznym błędem Odpowiedź na ten ekran może dać.

  8. · kamo-internal

    Strona członkini tytułu do Profilu, skracaj etykiety kart, dodawaj ikony kart

    Nagłówek ustawień użytkownika staje się "Mój profil "Mój "(lub) "Profil "memberLabel" dla innego członka) i łącze nav-top staje się Mój profil. Tab etykiety skracane — Mailbox, Telefon, Audio i wideo, Uprawy, Aktywność – podczas gdy telefon i role pomagająTips zachować swoje Nagłówki opisowe za pośrednictwem nowego : Kluczyki. Każda zakładka ma teraz ikonę na pasku kart; karta query-params I Niezmienione są tak głębokie, że łączą się z nimi.

  9. · kamo-internal

    Tone slider — wybielik do pełnego koloru, aby wymazować

    A na członka tłaTone ui-preference (0 biały / 50 pełny kolor / 100 Czarny) renderowany jako mycie nad czytelnością scrim w obu konsolach Warstwa pokazu slajdów i scena WYSIWYG edytora. Slider żyje w Scenie Media chrome z podglądem na żywo, zatrzask środkowym i upieraj się na uwalnianiu.

  10. · kamo-internal

    Karty Launcher i bohater używają koloru marki org zamiast akcentów per-modułowych

    Karty opcji domowego wyrzutni, przeciąganie nakładki i bohater pierwszegoorga Zbierz ich akcent z var(--color-primary) (dynamicznie ustawiony org). Kolor motywu), a nie stała wielokolorowa mapa rodziny -akcent-a.

  11. · kamo-internal

    Tryb kratowo-szklany bogowy — prompt, odliczanie, wskaźnik stojący

    Tryb Boży nie miał żadnego interfejsu użytkownika w kamo-internal: localStorage boolean, który jest wierzchnią Efekt odzwierciedlony w - , powtórny na każdą nową kartę na zawsze. To sprawiło, że Przeglądarka organ ds. tego, czy pracownicy platformy byli wzniesieni i dokonali elewacji Coś, w czym możesz być, nigdy nie decydując się być. - GodModeJustificationDialog skłania się z tego powodu przed podniesieniem. Powód Zgromadzone później jest powodem napisanym, aby pasować do tego, co już zostało zrobione. Kopia Nakreśla wyraźnie to, co operator zamierza zobaczyć i że jego nazwa idzie dalej. - GodModeIndicator to dolny pasek o pełnej szerokości plus czerwona ramka wokół całości viewport, z odliczeniem na żywo i "Koniec teraz". Kogoś, kto zapomina, że jest w Tryb Boga jest dokładnym scenariuszem, któremu istnieje kontrola, aby zapobiec, więc nie jest to Subtelna odznaka - ale to są pokazy - uwagi: no no outside the bar i siedzi na zewnątrz Przepływ układu, więc nigdy nie przechwytuje kliknięcia lub przepuszcza ekran. - Oba są montowane raz w układzie głównym, obok AutomaticLogoff, więc Wskaźnik jest obecny wszędzie tam, gdzie operator kończy, a nie na ekranach Ktoś pamiętał. Nic nie powtarza, chyba że sesja jest bogi-ELIGIBLE. - Serwer jest właścicielem stanu. aplikacja/lib/godMode posiada pojedynczy sklep z połączenia; Klient odczytuje tylko kartę bezpieczeństwa wygaśnięcia Service opieczętowaną i nigdy nie może się przedłużyć Otocz. setIsGodMode odszedł – podniesienie wymaga usprawiedliwienia, więc nie może być setter. - Sondaż statusowy podwaja się jako trwała przejrzysta: GET /session/god-mode jest tam, gdzie SecurityService pisze upływającą elewację z Redis dla usług, które Przeczytaj sesję bezpośrednio. usePlatformAdminGuard czeka teraz na status boga na sesje kwalifikujące się do Boga. Dostęp był czytelny synchronicznie z localStorage; bez czekania Operator z otwartym oknem zostanie odbity do /settingów w szczelinie. Stringi są w ? (napchnięty najpierw, Na zamówienie na klonowanie budowy). Uruchamienie npx vitest: 329 przepust (32 pliki), 17 z nich nowe. npx tsc --noEmit: czyste.

  12. · SecurityService

    Przeczytaj ścieżkę dostępu PHI — 164.528 księgowość i przegląd aktywności

    Szlak został napisany przez jakiś czas i nic nie mogło go przeczytać, co pozostawiło dwa Obowiązki niezasłużone: księgowość ujawnień dla jednego rejestru danej osoby (164,588) i okresowy przegląd działań systemu informacyjnego (? 164.308 lit. a) pkt 1 lit.) ppkt (D). Oba są pytaniami. To dodaje powierzchnię zapytania. Autoryzowanie jest cechą, a nie siecią. Organizacja została zabrana z Sesja i znikąd innego — celowo nie ma parametru orgId na żadnym serwisu i PhiAuditQueryService to pojedynczy punkt dławika, który dodaje lokator Predicate, zanim jeszcze skonsultuje się z filtrem. Cztery metody kwerendy rodzeństwa To były cztery szanse, aby o tym zapomnieć. Scoping jest klauzulą WHERE, a nie Post-filtr, ponieważ filtrowanie zwróconej strony pozostawiłoby sumęElementy Liczenie wierszy, których dzwoniący może nie widzieć. Strona czytana ma własny interfejs repozytorium. PhiAccessLopository Wyszukiwarki są celowo cross-tenant — poprawne dla narzędzia platformy, ujawnienie Jeśli jest przekazana na ekran klienta — więc ekran otrzymuje interfejs, którego jedynym wejściem Punkt przyjmuje specyfikację. Żyje pod adresem com.kamo.SecurityService, która Istniejące wejście do urządzeń .EnableJpaRepositories już obejmuje, więc nie jest konieczna zmiana skanowania I nikt nie może być zapomniany. Prawa to VIEW_ACCESS_LOGS (29) i EXPORT_ACCESS_LOGS (32) — para, która Już teraz zamyka dziennik uwierzytelniania, więc każdy, kto zarządza dziś bezpieczeństwem Można to wykorzystać pierwszego dnia. Nowy prawy identyfikator wysłałby martwy ekran: Potrzebny jest bieg KamoInitializer i dotacja, zanim którykolwiek z nich będzie posiadał. Czytanie trasy jest samo nagrane, jako RAPORT/Poszukiwanie dla lektury i RAPORT/SPORT dla kopii, w tym odrzucone próby. Kryteria wyszukiwania są Nie nagrany — filtr przenosi członkinię i rejestruje identyfikatory oraz szlak, który przechowuje To, co zostało poszukiwane, gromadzi identyfikatory, które istnieje, aby chronić. Wszystko jest ograniczone: zaciski rozmiaru strony do 200, limity eksportowe w 10 000 rzędów. Sześcioletni szlak to miliony rzędów, a warstwa przechwytywania pisze jeden rząd. Siadro siatki na obciążenie, więc niekścienny rozmiar jest osiągalny OOM, a nie Teoretyczna. Timestamps pozostawiają jako wyraźne momenty UTC. Kolumna jest bez strefy, I te dowody są odczytywane kilka miesięcy później przez kogoś, kogo tam nie było.

  13. · kamo-internal

    Ekran rejestrowania MFA i kontrola granic PHI w trybie bogu

    Dwie powierzchnie ustawień dla zaplecza, które nie miały żadnego. Zapisy do MFA (ustawienia - mój profil - Zabezpieczenie, tylko samo). Punkty końcowe SecurityService /api/security/mfa zostały kompletne i całkowicie Nieosiągalny, więc MFA istniało i nikt na platformie nie mógł go włączyć. W tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, Zakładka jest samodzielna, ponieważ te punkty końcowe rozwiązują użytkownika z własnego dzwonienia Sesja i nie bierz parametru użytkownika — administrator otwierający czyjś profil Na tym ekranie zapisze się na własny autoryzator. Kod QR używa qrcode.react, już jest uzależnieniem; nie dodano pakietu. W tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, w tym, Tajemnica jest wyświetlana obok niej niezależnie od tego, ponieważ aplikacja uwierzytelniająca jest na tym samym Urządzenie, ponieważ przeglądarka nie może zeskanować ekranu, który obejmuje. Dwie ścieżki awarii otrzymują obsługę pierwszej klasy, a nie ogólny błąd. 409 Oznacza to, że potwierdzony czynnik już istnieje i mówi tak, z lekarstwem (ang. Reset administratora) — powiedzenie użytkownikowi, aby ponownie próbował, wysłałoby go z powrotem do Działanie, które nie może się udać. Zły kod potwierdzający utrzymuje toczenie w oczekiwaniu Zapisanie: tajemnica jest wyświetlana raz, więc odrzucenie oznaczałoby usunięcie Wpis i rescanning uwierzytelniacza oraz rejestracji serwera Nadal tam będzie, więc próba wróci 409 i utkwiłaby ich. Kody odzyskiwania są wyświetlane raz i nie można ich ponownie wygasić. Dialog nie może być Odrzucone przez ucieczkę, tło lub bliski przycisk; Done unlocks only after the Kody zostały skopiowane lub pobrane oraz uznane ostrzeżenie. Obaj są Wymagane: samo pole wyboru jest klikane refleksyjnie, a sam schowk jest Nadpisana przez następną kopię - i nic nie wygląda źle aż do dnia, w którym użytkownik Tracą telefon. Zagraniowo PHI (ustawki – bezpieczeństwo – dane zdrowotne, tylko kwalifikujące się do Boga). Zakładka jest Widoczne dla prowizorycznych operatorów i sterowanie wewnątrz wymaga boskiego trybu W rzeczywistości włączone, które SecurityService ponownie sprawdza; samo prawo do kwalifikowalności nie jest Aktywacja. Nigdy nie przewraca się bez uprzedniej listy modułów, które przestają działać — lista ta pochodzi z serwera, pochodzącego z PhiModule przez PhiTenantGuard, więc nie może odejść od tego, co jest egzekwowane. A 503 jest wyłożony w następujący sposób "zmiana nie została zastosowana, ponieważ nie mogła być zapisana", ponieważ Co się stało. Logika decyzji żyje w aplikacji / lib / bezpieczeństwa, więc vitest może do niej dotrzeć; komponenty Tylko trzymaj renderowanie. Zweryfikowano: npx vitest run - 329 testów, 32 pliki, wszystkie z nich (43 z nich nowe). npx tsc --noEmit zgłasza tylko trzy błędy w kategorii . Nienamierzony plik z innej sesji w tym drzewie, w żadnym z plików tutaj.

  14. · SecurityService

    Endpoint do odczytu i przesunięcia granicy HIPAA organizacji

    Organization.handlesPhi istniał jako kolumna bez możliwości jej uporządkowania, więc PhiTenantGuard egzekwuje flagę, na którą nikt nie mógł się włączyć. To jest właśnie Brakujące połowy: GET/PUT /api/security/phi/tenant. Autorytet jest boską kwalifikacją i aktywnym bogiemModeActive, nigdy. Sama kwalifikowalność jest tym, co pozostawiło boskie bramy platformy do 2026-07-22; Tutaj pozwoliłby każdemu niekwalitującemu Bogu operatorowi wyłączyć moduły żywego najemcy. Z jednym niezauważalnym kliknięciem. Celem jest zawsze sesja dzwoniącego w org — nie ma parametru organiznaDD, więc żadne spreparowane żądanie nie może dotrzeć do Najemca dzwoniący nie ma już w środku. phiEffectiveDate jest stemplowany na pierwszym włączeniu i nigdy nie przepisywany, w tym na Później wyłącz / ponownie włączyć. Zakres stosowania okien naruszających i retencyjnych, Tak więc posuwanie się naprzód po cichu zmniejszyłoby okres objęty przeglądem, a także audyt Data, w której wniosek może się posunąć, nie jest dowodem. Rząd audytu jest pisany PRZED przesunięciem flagi, a CONFIGURE nie zawiedzie zamknięty, więc Ścieżka, której nie można zapisać, odrzuca zmianę i zwraca 503, a nie Opuszczenie granicy, która poruszała się bez zapisu, kiedy. Odrzucenie prób są Nagrał też. Każdy wiersz zawiera tylko identyfikatory i przejście, nigdy Zawartość. Batorbowane modery pochodzą z PhiModule przez PhiTenantGuard, a nie Wymienione, więc ostrzeżenie pokazuje UI nie może odpłynąć od tego, co egzekwował strażnik. Brak nowego pakietu repozytoryjnego: Organizacja Repozytorium jest już w tej służbie Lista termoinformatorów empa, więc nie ma nic do dodania obok tej fasoli. Zweryfikowano: 298 testów, 1 błąd — EntityManager NPE, który istnieje wcześniej (wynik na 7968a21: 281 testów, to samo 1 błąd). RepositoryScanCoverageTest i - oba Przejście.

  15. · kamo-internal

    Odbuduj formularz wyceny jako przepływ kierowany, dodaj podgląd wyjściowy

    Zakładka szczegółów była płaskim stosem zarysowanych pudełek, które dawały każdemu polu to samo Waga, więc nic nie sygnalizowało, które wejścia faktycznie zmieniają to, co widzi klient. To się stało. Teraz czyta się teraz, gdy cztery decyzje są podejmowane przez cytat – po co jest, co jest. Sprzedawany, jak jest korygowany, co czyta klient - każdy z jednym powodem Liczy się, a suma biegu znajduje się w lepkiej szynie, a nie zakopana na dnie. Ruch przenosi znaczenie zamiast dekoracji: sekcje przychodzą w kolejności, a Pole warunkowe rozszerza się od kontroli, która ją ujawniła, obszaru cenowego Rozpad krzyżowy, gdy jego kształt się zmienia, a całkowita liczy się do nowej wartości, więc mglista Cena jednostkowa jest zauważana zamiast po cichu wchłaniać. Wszystko to szanuje Preferuje redukowane ruchy. Nowa akcja Podglądu renderuje gotowy dokument — nagłówek, opcje lub tabela, Całkowite, terminy – i drukują je same. Projektuje w nim stan redaktora CURRENT, a nie Uratowany rekord, ponieważ moment, w którym musisz zobaczyć gotowy cytat, to decyzja To, czy go wysłać. Branding pochodzi z własnej rozdzielczości serwera, więc zapoznawca Nagłówek jest tym, który otrzymuje klient, a opcja arytmetyczna jest importowana z Redaktor zamiast ponownie wdrożony.

  16. · kamo-shared-library

    Audyt słownictwa dla zmiany samej granicy zgodności

    Dodaje PhisourceType.ORGANIZACJA i PhiAccessKind.CONFIGURE tak, aby się toczyć Organizacja.handlesPhi on lub off może być zapisana jako to, co jest. Każdy istniejący typ zasobów nazywa rekord danej osoby. Złożenie zmiany Pozycja najemcy pod jednym z nich położyłaby kłam. Oksięgowanie ujawnień, a „kiedy ten najemca stał się podmiotem objętym ubezpieczeniem. Współpracownik biznesowy" jest pytaniem, na którym reszta szlaku jest przeniesiena - Potrzebuje własnego kształtu wiersza, a nie pożyczonego. CONFIGURE nie zamyka się z innego powodu niż masowe rodzaje: nic nie jest Ujawnione, tak odmawiając kosztów operatorowi ponowne rozpatrzenie, podczas gdy granica, która się przesunęła Nie mając zapisów, kiedy państwo jest oceną 164,34,02 nie można odtworzyć. Brak sugestii schematu. phi_access_log.RESOURCE_TYPE i ACCESS_KIND są proste VARCHARs stworzone przez PhiAccessLogableMigration bez enum whitelist CHECK, więc Żadne stałe nie potrzebują kampotewidorskiego biegu, zanim będzie można go włożyć, i nie Podmiot lub kolumna jest dotykana. Nie zweryfikowano wyczerpującego przełącznika nad enum Istnieje w każdej służbie.

  17. · SecurityService

    Zasłużyć w widoku klienta dla personelu w celu podglądu

    GET /'uid'/preview zwraca ten sam publicznyQuoteWizja linku do udostępniania, z To samo rozwiązanie wyceny, więc zapowiedź zapowiedź nie może różnić się od przesłanego Po pierwsze. Celowo nie wybija żetonu, nie liczy widoku ani nie rejestruje zdarzenia – patrząc W swoim własnym szkicu nie jest zaangażowanie klienta i wpuszczenie go na ścieżkę aktywności Uczyniłoby kontrędania widoku bezużytecznym jako sygnał.

  18. · ConversionService

    Skanowanie przesyłanie do złośliwego oprogramowania za spożycie (- 164.308(a)(5)(ii)(B))

    Skarbiec dokumentów zaakceptował dowolne przesłane bez skanowania złośliwego oprogramowania W dowolnym miejscu na platformie i jest to wielodzietnik — plik jeden przesłany org jest Otwarte przez innych użytkowników org z widza, edytora WOPI i Rozwiązanie. ClamAV nad INSTREAM, rozmawiany bezpośrednio z małżem (bez biblioteki klienta; Protokół jest gniazdem i prefiksem długości). Brama biegnie w ImagingUploadController na /upload i /templates/upload, przed członkiem Odnośnik i zanim jakiekolwiek atle dotrą do MinIO — skanowanie po opuszczeniu magazynu Obiekt jest dostępny dla szerokości wyścigu. Zachowanie skanera nieosiągalne jest domyślnie FAIL OPEN, a to jest decyzja Zamiast wypadku. małże nie jest jeszcze wdrożony: to jest aplikacja Połowa, a wdrożenie jest oddzielną ustawą operacyjną (KlusterServices Auto-aplikuje na push i nie jest to zmiana w dotyku). Wysyłka awaryjna zamknięta Zabierze dokument przesłany dla każdego najemcy w momencie, gdy obraz się przewróci, Bez inscenizacji, w której zostałoby złapane. Fail-open tutaj nie jest "brak ochrony", jest status quo z ostatnich kilku lat, teraz zalogowany na Redukcja za każdym razem, gdy to się dzieje. Każde pokrętło – w tym nieokiełznane – żyje w Kamowsconversion-config, więc dokręcenie go po zaciśnięciu jest stabilne, jest konfiskatą Edycja i ponowne uruchomienie, a nie wydanie. Wyłącznik graniczy z kosztem nieobecnego skanera: po 3 kolejnych Awarie strażnika przestaje dzwonić przez 60., więc przesyłanie nie płaci Połącz timeout dla kontroli, która jest skutecznie wyłączona. Po wykryciu: 422 nazewnictwo podpisu (nie 5xx – próba nie pomoże), bajtów jest zachowany w dedykowanym wiadrze kwarantanny, a nie upuszczonym, Odrzucenie jest rejestrowane za pośrednictwem PhiAccessRecorder. Rząd audytu przenosi Tylko identyfikatory; przesłana nazwa pliku pozostaje poza nią, ponieważ nazwy plików tutaj Rutynowo zawierają nazwy kredytobiorców. PhiAccessKind nie ma członka UPLOAD i nie ma dodawania Jeden z nich zmieniłby ograniczenie kolumny o numerzeowanej (STRING) we wspólnym Biblioteka, więc POBIERZ + dozwolonych -fale jest używane, a przyczyna jest udokumentowana Strona połączenia. Przełącza również ścieżkę PHI tej usługi na trwały pisarz phi_access_log. Dopasowywać wpis com.kamo.z.shared.phi.audit jest w tym samym zatytułowaniu Lista doładowań doradztwen, a PhiAuditRepositoryScanTest zawiedzie na budowę, jeśli Dwa wszeleści - ta para jest tym, co usunięto każde logowanie na 2026-08-03. Retro-scan (POST - już zamiata dokumenty W skarbcu, dzierżawcy-rozmszony i paged. Raportuje i przechowuje, nigdy nie blokuje lub usuwa: Uniemożliwić przechowywany przedmiot nie do odzyskania potrzeba trwałej kwarantanny Flaga, tj. kolumna wspólna biblioteka stosowana przez inicjera, podczas gdy Usługa CI opiera się na głównej sytuacji, a usunięcie na fałszywym poziomie dodatnim zniszczyłoby Rekord najemcy bez powrotu do zdrowia. Testy: 36 nowych. Wstępnie istniejące ;) at_or_below_1080 wciąż zawodzi na czystym drzewie; nietknięty. Nieograniczona, celowo: RecordingIngestController (wewnętrznonierze asterisk Pchnięcie) i WOPI PutFile DocsService są drugą ścieżką, która chce tego samego Brama, ale skaner mieszka w tej usłudze, a WOPI nie ma topu. Przypisuje wiersz audytu. Obaj są kontynuacjami, a nie niedopatrzeniem.

  19. · SecurityService

    Tryb Break-glass God — uzasadnienie + 30-minutowa time-box

    Tryb boczny aktywował się cicho i trwał tak długo, jak sesja. To jest właśnie Kontrola kontroli bezpieczeństwa podmiotu objętego ubezpieczeniem najbardziej naciska, ponieważ "twoje Personel może odczytać nasze dane pacjentów" - zawsze jest pytany i nieuzasadniony, nieograniczony Wzniesienie nie ma na to odpowiedzi. - POST /api/security/session/orient-mode teraz wymaga takiego uzasadnienia, aby Krok w górę UP. Krok po DOWN nigdy nie robi - kontrola, która zamyka bezpieczne działanie, jest Kontrola, która utrzymuje operatorów wznoszenie. - Obie krawędzie są rejestrowane przez PhiAccessRecorder z uzasadnieniem i PlatformaStaff (true). Tylko identyfikatory; uzasadnieniem jest własny operator Słowa o tym, dlaczego, nigdy nie czytali niczego. - Okno jest 30 minut i NON-SLIDING. Wygaśnięcie jest absolutną chwilą w korpus sesji, a nie TTL, więc odświeżanie sesji przesuwnej nie może go przedłużyć, I ponowne powtórne oddanie z drugiej zakładki zwraca pierwotną datę wygaśnięcia, a nie Kupić kolejne okno. - KSessionService.getSesjonacja masuje utkniętą flagę, więc wszystkie 10 euro istnieją "session.get ("'godModeActive") bramki honorują skrzynkę czasu bez zmiany. GET /session/god-mode zapisuje przejrzyście do Redis (robiąc to w środku getSession powtórzy się) i jest tym, co UI ankietuje na odliczanie. Celowo zawodzi OPEN na akcję: Tryb godowy jest tym, jak poprawki wsparcia Produkcja i odmowa wysokości, ponieważ phi_access_log mrugał się gorzej W rzędzie rejestrator już głośno się zalogował. Nie zmieniono żadnego bytu ani kolumny. PhiResourceType również nie zyskuje na stałym stanie - jest Wyliczane (Wstęp) z białą listą o wartości TABLE, która ddl-auto:update Nigdy się nie rozszerza, więc nowa stała zawiodłaby każdą wstawkę, dopóki KamoInitializer Zostały przejechane ręcznie. Elewacja jest rejestrowana w stosunku do własnego MBERA operatora Zamiast tego z prefiksem.

  20. · kamo-internal

    Ponowne zaporządkowanie zakładek steward; składaj Identyfikatory do pomiernego pouczania rurociągu

    Zlecanie kart jest teraz rurociągiem, dokumentami, gwarantowaniem, cennictwem, kapitałem i ryzykiem, Zarządzanie, spożycie, katalog — Pipeline staje się domyślnym ekranem lądowania. Zakładka samodzielnych Identyfikatorów zniknęła; jej wygląd żyje w rurociągu Pasek narzędzi jako kompaktowy popover Find-loan: wyszukiwanie przez pożyczkę UID (domyślnie) lub rozwiązywanie wszelkich zewnętrznych identyfikatorów (MERS MIN, sprawa agencyjna, e-sygnatura koperta, itd.) do pożyczki, z bogatą kartą wyników, księgi identyfikatorowej pożyczki, Historia cyklu życia i kliknięcie jednym kliknięciem Otwórz / show-in-pipeline.

  21. · kamo-signer-monorepo

    Porównaj opcje na stronie publicznej wyceny

    Opcje renderują jako karty do wyboru, a nie wiersze, ponieważ są to opcje I nie dodatki. Całkowity okres jest nagłówkiem; miesięczny ekwiwalent znajduje się obok niego, ponieważ liczba, która sprawia, że różne terminy rozliczeniowe są porównywalne, Odznaka oszczędności pojawia się tylko wtedy, gdy różnica jest warta nazwania. Płaski stół i łączne blok sum są tłumione, gdy opcje Są obecne – wielka suma w różnych ekskluzywnych alternatywach to liczba ta Nikt nie może zapłacić. Drukuj reguły trzymaj karty obok siebie, więc drukowana wycena nadal się porównuje.

  22. · kamo-internal

    Autor wieloopytowych cytatów z redakcji

    Cytat jest albo płaskim arkuszem cenowym, albo zestawem alternatyw, więc redaktor Oferuje przełącznik trybu, zamiast pozwolić obu istnieć naraz - wysyłając oba Pokaże klientowi cenę, której nie może kupić. Przejście na opcje Istniejące linie do pierwszej opcji zamiast odrzucania pracy typu. Każda opcja otrzymuje własne pozycje liniowe, termin rozliczeniowy, długość zobowiązania, rabat i opłata za konfigurację, z podglądem na żywo całkowitego, miesięcznego ekwiwalentu, Wartość umowy i oszczędności w stosunku do wartości odniesienia. Podgląd lusterek QuoteOptionTotals; serwer recomputuje na oszczędzaniu, a jego liczby wygrywają. Liczmy na to, że mieszka na cytacie, więc 40 -> 60 za każdą opcję naraz.

  23. · SecurityService

    Zaakceptuj opcję na publicznym punkcie końcowym

    Cytaty wieloopcyjne nie mogą być akceptowane w ślepe – wniosek niesie teraz Wybrana opcjaUid i serwis odmawia akceptacji bez niej.

  24. · kamo-shared-library

    Cytaty wieloopcjonowe z sumą porównawczą do porównania per-opcjonowania

    Cytat może teraz przedstawiać kilka wzajemnie istniejących sposobów kupna - miesięcznie, Roczny, trzyletni – zamiast wymuszać trzy oddzielne dokumenty, które dryfują Oddzielić moment, w którym siedzenie liczy się zmiany. - CytatOption jest właścicielem własnych elementów linii i sum; rodzeństwo nigdy nie jest podsumowane. - QuoteOptionTotals normalizuje każdą opcję do miesięcznego równoważnego, który jest Jedyną podstawą, na której można porównać różne warunki rozliczeniowe, plus a Całkowita umowa i oszczędności w stosunku do oznaczonego poziomu bazowego. - Termin rozliczenia i długość zobowiązania pozostają oddzielnie: płacenie rocznie nie jest To samo zobowiązanie, co trzyletnia kadencja rozliczana corocznie. - Quote. Quoteantity jest współdzielonym kierowcą; linia wybierająca się z wykorzystaniemQuoteQuQuQuQuantity Zasyca w każdej opcji naraz. QuoteTotals honoruje go identycznie na Płaski arkusze, więc linia nie może wycenić opcji w środku i na zewnątrz. - Akceptacja oferty wieloopacji wymaga podania nazwy opcji; rodzeństwo zamyka się jako NOT_SELECTED i akceptopOptionUid rejestruje wybór. QuoteTotalsTest 15, QuoteOptionTotalsTest 11, QuoteShareTokenTest 9 — wszystkie przepustki.

  25. · kamo-internal

    pokrycie dostaw, podpisanie cen, panele wielkopołożonych

    Zastępuje ostatnie chipy Coming-soon (Hedge & coverage, Pricing sign-off, Duży depozyt) z panelami na żywo podłączonymi do nowych pełnomocników stewardów.

  26. · SecurityService

    Stewarde proxies dla pokrycia, podpisanie cen, duży depozyt

    Operator, sesję-stemperacki org+member, nie zamkniętą właścicielkę (bez lub u) Istnienie wydmu. Nowe punkty końcowe wyjściowe wyjściowe w nieuwierzytelnionych zastawce punktowych.

  27. · kamo-shared-library

    Podmiot rejestracji w zakresie ustalania cen w WORM (mlos_pricing_signoff)

    Wyrok AppPRO/REJECT Sędzia tylko dla stewarda na podstawie zamrożonego wyniku. Przepustki do aktualizacji (odwrócenie to nowy rząd). Tabela + 4 indeksy (org, run, Rezultat, pożyczka) stosowany do prod CockroachDB via KamoInitializer.

  28. · kamo-internal

    Konsola stewardowa runda 2 – kolejki wyjątkowe, zarządzanie, rekonesie MERS

    - Capital + Underwriting: StewardExceptionQueueum (wspólny panel) podłączony do rzeczywistego Punkt końcowy steward-tasks — wyjątki od blokady Wyjątki od wytycznych - uczciwe puste stany. - Zarządzanie: KalibracyjnośćNiezbędnośćPanel (przewidywane w porównaniu z obserwowanym na segment) i PullThroughFunnelPanel (realna dystrybucja sceniczna, oznaczona migawką, a nie kohortą Konwersja). Zastąpiono dwa chipsy. - Dokumenty: Panel pojednawczy MERS nad rzeczywistym odczytem rekonidu wewnętrznego. Rzeczywiste punkty końcowe przez cały czas; zwykła kopia strun (i18n follow-up); tsc --noEmit czyste.

  29. · SecurityService

    Karety bramowe do steward-zatasów, kalibracji / funelów, pojednanie MERS

    Niekwalifikujące się do Boga, org, oznaczone serwerem przekaźniki GET: - MlosDocOrchestration (MlosDocOrchration) (filtr z zamkniętym org, krople niebędące opakowaniem niebędącym własnością Rządy + re-deryktywuje bilans). Wszystkie cztery wyjściowe w punktach niestrzeżonych punktów końcowych (delegowana brama() straż, jak ich rodzeństwo).

  30. · kamo-internal

    Zbuduj funkcje konsoli stewarda hipotecznego coming-soon

    Zastępuje stubs prawdziwymi, końcowymi panelami + naprawia błąd z martwym napisem: - Ubezpieczenie: Panel obliczeniowy dochodowy (kwalifikacje: DTI/PITIA/rezerwy/LTV + Pigułka AUS) i panel Oszust/4506-C (skrzydła doryfikator-order: miejsce/lista/anulumenty/wydarzenia FRAUD + TAX_TRANSCRIPT). - Ceny: Scenariusz porównuj (pozastronami) i Best-execution explainer (bazgajne korekty – spacer końcowy + wicemistrzowie / niekwalifikowalne powody); Usunięto nieświeży układ Reverse-LLPA (już w AdjustmentDrawer). - Dokumenty: Live clearability roll-up (fani rozliczalności pożyczki nad Rurociąg, agregaty rozliczone/blokowanie/wypuszczanie); usunięte nieświeże Autoryzowania Workflow chip (już wysłane). - Kapitał: FIX rynki kapitałowe Następna trasa – jej lista dopuszczalna POST posiadana tylko Jeden ze ścieżek, więc dostarczona pożyczka do sprzedaży / cykl życia blokady napisuje 404'd. Zastąpiony Dokładny zestaw strunowy z zakotwiczonymi wzorami RegExp wylicza 9 rzeczywisty Trasy (wstemyfikowane 1:1 vs kontroler), nadal nie zamykają się na czymkolwiek innym. - Biuletyn: karta "Promote as bulletin" (docy-BULLETIN) z Edytowalne produkty/typ/paramy inspirowane AI, zamieszczane w nowym przekaźniku. Nowa kopia interfejsu jest zwykłymi ciągami (i18n follow-up); tsc --Emit czyste.

Twój wszechświat czeka.

Rozpocznij bezpłatnie w kilka minut.Dodaj produkty, kiedy tylko będziesz gotowy — bez migracji, bez nowych logowań.

Bezpłatne na zawsze — nie wymaga karty kredytowej