Changelog
Co nowego.
Każde ulepszenie platformy, jak to wysyła.
· kamo-internal
Enterprise Materials workspace (P0) — foldery, wyszukiwanie, masowy, prawdziwy podgląd, współdzielony kompozytor poczty elektronicznej
Zastępuje płaską 200-pozycę siatki pełną przestrzeni roboczej w celu uzyskania istniejącego obrazowania Zaplecze (który obsługuje już foldery, śmieci, udostępnianie, historię, masę dla MATERIALS): - Folder boczny (create/rename/delete, drag-to-folder) + Wszystkie / Widoki na śmieci - Szukaj, sortuj, grid->list toggle, pagowane 'load więcej' (usunięcie 200 cap) - Bulk select + pobierz zbiorczy (ZIP) / e-mail / move / usunąć - Prowaczna szuflada na szczegóły: prawdziwy podgląd, inline zmianyname + opis, move-to-folder, dzielenie się wewnętrznie (członkostwo, edycja, wygaśnięcie) i historia działalności - E-mail teraz ponownie wykorzystywać udostępnionego kompozytora MessageTool za pośrednictwem globalnego narzędzia:open event (Z/mailbox, CC/BCC, bogaty korpus, podpisy, szkice) zamiast formularza na zamówienie - Nowe trasy do obrazowania: folder create/[id] zmień nazwę + usunięcie/weve-doc, zmienić nazwę, Opis, przywracanie, dostęp na poziomie - Usuwa supersed MaterialsLibrary; wszystkie funkcje Canva (utwórz/import/autoufill/autofill/ Harmonogramy) przenoszone. imgIds obsługiwane jako precyzyjne ciągi przez cały czas.
· kamo-internal
Rekonsu /messages — rendering iframe, menu kontekstowe listy, wątków, rasy, a11y
Wdrożenie audytu strony /messages end-to-end. Zgłaszone kwestie: - przyciski odpowiedzi/Replika Wszystkie/Przedlep teraz wyświetlają etykiety tekstowe; usunięte z więcej akcji Rozciąganie (są to sąsiednie przyciski), podczas gdy nowe menu listy je utrzymuje. - wiersze listy wiadomości otwierają teraz menu akcji na kliknięcie prawym przyciskiem myszy i dotknij Długiepressy - rzędy zyskują Przędz ostrości (j / k), pole wyboru wyboru (x) i scroll-to-view. - E-mail renderuje teraz w piaskownicy z automatycznym ramem (srcdoc) zamiast inline NiebezpiecznieSetInnerHTML. To izoluje e-mail CSS/layout, który naprawia Czytanie-szybki "bounce" i środkowy fragment selekcjonerowy, zamyka aplikację w całym tekście Przeciek CSS i dodaje domyślną "zewnętrzną zablokowaną" bramkę śledzenia-pikseli. Poprawność / łyk: - Pełny odszkodowany Reply/Reply-All zestaw In-Reply-To/References (zjednoczony DraftMessage type) więc odpowiedzi pozostają wątkowe; wątpy szybkiego usuwania Odepisy + id nadrzędny, HTML- Ucieka z ciała i wysyła z aktywnej wspólnej / członkowej skrzynki pocztowej. - Forward przenosi oryginalne załączniki; odpowiedź/przewiń rozwiąż pełny komunikat (ocenianie ciała dla akcji wioślarz) zamiast cytować wszystko, co jest otwarte. - Ostrach wyścigowych (wygrane testowe) na loadMessages / komunikat select / obciążenie wątków / Załadunkowanie rozmowy; ankieta nie ruszy już użytkowników stronicowych na stronę 0; Przeładowanie wg filtra Do aktywnego folderu; searchPage resetuje zmianę zapytań. - ThreadDetail expand klucz stanu według folderu + uid (kolizja cross-foldera); markRead Tylko podczas odczytu; ponowne próba używa folderu rekwizyt. - Kompozyt: odbiorca typu napłyto-wydolnego w Send/Draft; załącznik dedupe + Nasadka zagregowana 40 MB + aktualizacje funkcjonalne; upuść zbędny klient OTK. - Proxy: zakres do przodu + walidatory buforowania do ładowania / transmisji w linii; Close Wieloczęściowy wydziela na strzeżonych ścieżkach zaopatrzenia. - Email WebSocket: prawdziwy przystanek po max retries, wykładniczy backoff, stable-connect Przetestuj reset; zanotowana wartość kontekstu w celu ograniczenia ponownego oddania konsumenta churn. Jakość: ujednolicona ’A11y (laboratoria, aria-pressed, keyboard-operable rzędy/przewoźniki); i18n (nazwy folderów, daty listy, pagery, liczba OIOM-ów); usunęła martwa kod i widma wpisy typu keyboard-shortcut.
· kamo-internal
Przeprojektowanie panelu przyrządu — rodziny akcentujących, masthead, nav nav na indeks segmentu, ujednolicona szklana karta
Przeprojektowuje dwa najczęściej odwiedzane lądowania na konsolę operatora w kształcie uprawnienia. Fundacja - Włącz już zagrano Geist Sans/Mono (zostały odrzucone przez upadek Arial); trasa MUI typografia przez Geist. - Dodaj białe etykiety -tony z modułu-rodzinnego, drabinę elewacyjną, topedge z podszernięciem szkła, operator-Label + .tabularne narzędzia i token do domu. Fix --gradiient-primary-priroparent (był z twardym niebieskim - teraz pochodzący od --color-primary). Shared FeatureCard (jeden komponent, klawiatura/poprawność) - Teraz prawdziwa kotwica (NextLink): Tab/Enter/miter/middle-click praca i pierścień widzialny ostrogę może w końcu strzelać. Dodaje useReducedMotion guard, podczas gdy wejście do domuWidok na łatwość domu, rodzinny oświetlony chip, liczba uwagi pip, poziomy ogrożne i przelot onClick. Ożywia intencję koloru per-modułu, która została odrzucona na render. Usuwa atramentową kartę domową. Dom - Masthead (kopacz mono + napojedynek czas/nazwisko + tabelaryczny) zastępuje baner tylko org; oklab Backdrop zastępuje znak wodny w skali szarości; dwupoziomowy wyrzutnik w kształcie pozwolenia (zamówiony na zamówienie na użytkowanie rudy + zgrupowany katalog) z paskiem uwagi "Poborze dzisiaj" i "Jump back in" (nowe użycie HomeRecent + global Ustawienia - Registry-driven render zastępuje 18 wklejonych klocków załamania: lepką kolej segmentową + IntersectionObserver scroll-spy + live counts, 4 super-grupy, progresywne ujawnienie (Osługa otwarta, ostatnia-świadoma, przywracanie ostatniej sekcji, rozszerzenie / załamanie się wszystkich), wiersze przyrządów SectionHeader i stały Szybki dostęp (korek MAX_RECENT slice + relative-time + start). Dokładnie zachowa każdą bramę z pozwolenia/produktu-flag. Przecinanie poprzeczne: szkielet + EmptyState, preferuje-redukowaną przejrzystość + ścieżki o ograniczonym ruchu, rezygnacja z nakładów Operator-Label na operatora-Label. Nowe struny interfejsu użytkownika lądują w kamo-translation-dykcyjnej (en) w zamieszaniu towarzyszącym.
· kamo-shared-library
- ukierunkowana aktualizacja
Konwersja Async (wirtualne wątki) i zaplanowane zamiatanie utrzymują oderwanego ImgDat; save()/merge() kaskady do zbioru obrazów osieroconychUmowalniaste i rzuty 'kolekcja z kaskadą-deletowe-deletowe-orpin nie była już odwoływana przez własne Instancja bytu. AKTUALIZ KALIZACJA tylko miniatury pozwala uniknąć wykresu jednostki Całkowicie i jest bezpieczny od każdego wątku.
· kamo-internal
Dodaj Odpowiedz wszystko do okienka odczytu wiadomości i widoku wątku
Reply All był reklamowany (klawiszowiec-krótkiej etykiety + i18n key), ale nie miał Zajmowanie się. Podłącz: nowy computeReplyAllciRecipents helper umieszcza nadawcę Do i do każdego innego pierwotnego odbiorcy w CC, z wyłączeniem samoczynnego i odkowanego Sprawa – niewrażliwa. Dodaje przycisk, skrót "a" i wpis kontekst-menu W MessageBrowser plus przycisk do przesyłania w ThreadDetailView.
· InitializerService
Częściowo-wyjątkowy indeks egzekwował jeden aktywny pakiet zamykający na pożyczkę (zamknij podwójnie bliższą alifkę)
CREATE UNIQUE INDEX uk_mlos_closing_pkg_active_loan ON mlos_closing_package (loan_file_uid) Gdzie jest status > 'CANCELLED'. Trwały backstop za Strażnik assembler w aplikacji: zduplikowany aktywny pakiet zamykający Zjedź własną rejestrację MERS + dofinansowanie (podwójne zamknięcie). Zamknięcie opakowania Żyje w dzielonym libie z tylko nieuniknionymi wpisami na temat Index i nie może wyrazić Częściowo-nieunikniona za pośrednictwem JPA, więc jest to ręcznie pisany DDL tutaj (KI posiada własne Schema). Idempotent; dotyczy następnego biegu KI.
· MediaService
Materiały generowane zaplanowano miniatury w procesie
Bezgłowe zamiatanie nie może napędzać rurociągu miniaturowego ConversionService OTK, więc wygenerowanie miniatury strony-0 PNG za pośrednictwem ImageIO zaraz po przechowaniu eksportu — Zaplanowane materiały renderowane teraz w sieci jak każdy inny, nie jest potrzebny na zasyp.
· kamo-internal
Recurring generowanie harmonogramów UI
ScheduleManager: tworzenie/lista/usuwanie harmonogramów (recypcja + codziennie/co tydzień/miesiąc + God/dzień + opcjonalne cele automatycznego postu + podpis); wystrzelony z Materiałów, ogrodzony Na Canva autofill (Enterprise) możliwości. + canvaApi + /api/canva/schedules proxies.
· MediaService
Zaplanowana generacja - zamiatanie przepisów na kadencję
- CanvaScheduleKontroler: CRUD for org harmonogramy (recja + kadencja + godzina/dzień + opcjonalne cele społeczne), obliczanie nextRAt - CanvaGenerationService: Bezgłowy - jako Materiał (w trakcie ImageService; miniatury-bez wypełnienia) - CanvaScheduleSweep: -Schedulowane zamiatanie, twierdzenie atomowe na schemat, generuje i Najlepszego wysiłku auto-postownie osiąga wynik docelowym połączeniom społecznym poprzez Podpisany szew public-URL
· kamo-shared-library
CanvaSchedule byt + repo (generowanie powtarzające się)
Org-scoped powtarzający się harmonogram (recypto + kadencja + opcjonalne cele społeczne) z Zapytanie o uznanie atomowe, więc MediaService zamiata raz.
· kamo-internal
Inline rozszerzalny transkrypcja Whisper na softphone poczta głosowa + rzędy call-history
Każdy nagrany wiersz (poczta głosowa i historia połączeń) otrzymuje przełączanie "Transcript", które Poczlub transkrypcję Whisper na żądanie i pokazuje to w linii, więc Członkowie mogą go czytać bez otwierania gracza. Kłamstwo na nagranie.
· kamo-internal
Zapisz + ponowne wykorzystanie automatycznych przepisów na autouzupełniania
TemplateAutofill: "Saved recipes" chipsy ładują szablon + wstępne mapowanie; "Zapisz jako przepis" utrzymuje bieżący szablon + wartości pola w całym całym. + lista canvaApi/zasypia/delete + /api/canva/recipes proxies.
· MediaService
Zapisane przepisy na autouzupełnianie CRUD (org-scoped)
CanvaRecipeController: GET/POST/api/media/canva/reciony + DELETE — Zapisywanie/lista/miękka-deletuj nazwę brand-template + mapowanie pola, zwiniek do - dzwoniąc do orgi.
· kamo-shared-library
CanvaAutofillRecipe byt + repo (uratowane przepisy na autouzupełniania)
Org-shared Nazwa wiązanie szablonu marki Canva do wartości pola (dosłowne Tekst lub obraz Materiałów), więc stewardzi mogą ponownie łączyć standardowe łączenie danych.
· kamo-internal
Dodaj pole ID materiału, aby utworzyć formularz, stronę szczegółów i import
Wątek znużalny materiałID (max 40) przez typ ołowiu, prowadziApi (create + update liga) i wspólny system-pole leadFields Lista — która napędza zarówno kreator importu ręcznego, jak i API/sprzedawcy Mapowanie wlotów UI (plus szablon CSV do pobrania). Dodaje dane wejściowe do /ołowia/nowy i wiersz widoku/eitowy wiersz na stronie szczegółów lead, podłączonych do Mapa pane-flash w czasie rzeczywistym. Etykiety via lead.new.fields / lead.view.fields / lead.view.rows (materialId).
· kamo-internal
Enterprise autofill UI — szablony marki scalania danych
TemplateAutofill: wybierz szablon marki Canva, wypełnij każde pole literalnym Tekst, org/Token zgodności (NMLS, Ujawnienie równego mieszkania, nazwę/telefon/ Strona internetowa/adres, nazwa użytkownika) lub obraz materiałów; wygeneruj wyekszona danymi Zaprojektuj i importuj go z powrotem do Materiałów. Gated on the Canva "autofill" (Enterprise) możliwości. + canvaApi metody i /api/canva/'brand-templates, - proxies.
· MediaService
Enterprise autofill — szablony marek scalania danych
- CanvaApiClient: szablony marki listy (dataset-non_empty), pobierz zestaw danych, Zadowolacz do ładowania aktywów, tworzenie / tworzenie / tworzenie automatycznych zadań - CanvaController: GET /brand-templates, GET /brand-templates/index, POST /autofill — rozwiązuje pola obrazów, przesyłając odnośny MATERIALS Materiał do Canvy jako zasób, a następnie data-merges; ankietuje nowy projekt. Canva 403 (bez możliwości autouzupełniania) jest jak autofill_not_available.
· SecurityService
Persist zmapowany Material ID na temat ręcznego importu + wlotu API
Obaj setDirectFieldOnCreateRequest przełączniki nie mają domyślnego przypadku, więc System odmapowany FieldPath zostaje po cichu upuszczony. Dodaj materiałId obudowa do Ręczny import (LeadImportController) i sprzedawca/API-intake (LeadIntakeController) Dyspozytorzy, więc zmapowana kolumna / pole materiale ID faktycznie utrzymuje się.
· kamo-shared-library
Dodaj pole ID od końca do końca w wspólnej lib
Dodaje zniwalaczalnego, max-40-charmaterial do jednostki ołowiowej (MATERIAL_ID VARCHAR(40)), rejestruje go w LeadHistoryFieldRegistry (kategoria profilu) Tak więc edycje są kontrolowane, wątków go za pomocą Create/Update/Read DTO i LeadService create/update (odbiór + cncate do 40, firma lustrzanaName), I zachowuje go w przebudowie bazowej->> hipotegolne.
· kamo-internal
Załącze społecznościowe + e-mail-a-material + linki publiczne
Dystrybucja materiałów marketingowych, zbudowana na nowym podpisanym szewom public-URL. - materiałyApi.publicLink(imgId) + /api/materiały/zapas proxy - Materiały: "Kopiuj link publiczny" i "Email ten materiał" (przyłączy się do pliku wysyłanie wychodzących za pośrednictwem istniejącego multipart /api/email/send, zamkniętego na org e-mailu org) - MaterialPickerDialog (siatka wielokrotnego użytku nad MATERIALS assoc) - SocialComposer: raz niepełnosprawny przycisk zdjęcia otwiera teraz zbieracz i mocuje materiał jako nośnik pocztowy za pośrednictwem publicznego adresu URL (sługa Meta/Telegram/Discord)
· MediaService
Krótkotrwałe podpisane publiczne adresy URL dla aktywów marketingowych
Pozwól dostawcom usług społecznych (Meta) i e-mailowi uzyskać konkretny materiał dla ograniczonego Okno bez wystawiania wiadra z prywatnymi materiałami obrazowymi. - MaterialUrlSigner: HMAC-SHA256 (platforma.enc-key) token ? imgId:orgId:exp, 1h TTL - MaterialsController: POST /api/media/materiały/link (aut ? mint URL dla a org-owned MATERIALS image) + GET (bezsensowne ? ? Służy bajtom dla ważnego tokena; org + assoc sprawdzony). Przejażdżka istniejącym Sesje bez sesji /api/media/- forward — nie jest konieczna zmiana APIService.
· kamo-shared-library
Przejście do samoprzesowaczy pierwszej klasy kredytobiorcy
DRAFT-APPLICATION_TAKEN dla pożyczkobiorcy (partner pożyczkowy, a nie operator, więc nie LOS_TAKE_APPLICATION). Trasy przez przejście() z orzeczonym zakresem, który Dotacje TYLKO w prawo do podjęcia i przypiętego toStatusId, więc pożyczkobiorca Skład staje się właściwą transformacją rurociągu – legalność maszyn-państwowych, Kamień milowy, ApplicationSubmission (INITIAL_DISCLOSURE) i Wydarzenie poCommit STATUS_CHANGE - zamiast cichego pliku kredytowego poszklenia. Członkostwo w partii pożyczkowej jest weryfikowane przez dzwonicę.
· kamo-internal
Usuń + podgląd + import-plik-to-Canva
- usunąć materiał (wygł. MANAGE_MATERIALS) z potwierdzeniem - kliknij miniaturę, aby wyświetlić podgląd w lightbox - "Import a file" zamienia plik PDF/PPTX/image w edytowalny projekt Canva (proxy odbudowuje ciało wieloczęściowe, takie jak nadawca do obrazowania)
· MediaService
Importowanie pliku do Canva jako edytowalny projekt
- (przywóz do konstrukcji binarny) - CanvaController POST /imports (multiparta) - create+poll import job - editor Głęboki link z korelą_state dla nawilowej powrotnej - import Base64 w CanvaOAuthController
· InitializerService
Migracja dodaje kolumna nagrywas.transcript TEXT
· VOIPService
Zwróć transkrypcję w nagrywaniu metadanych dla odtwarzacza softphone
· kamo-internal
Pokaż transkrypcję Whisper w odtwarzaczu multimedialnym softphone
· ConversionService
Shared TranscriptionService + ogólny punkt końcowy; transkrypcja nagrań VOIP
- Wyciąg transkrypcja wielokrotnego użytkuService (ffmpeg normalize -> whisper-asr) i a Ogólny punkt końcowy POST /api/konwersja/transcribe, zastępując specyficzny dla spotkania Kontroler. Poznaj + VOIP teraz dziel się jedną ścieżką transkrypcji. - RecordingProcessController: transceptura każda sfinalizowana VOIP nagrywa/respondumowa W procesie (nieznośny w sprawie awarii) i przechowywanie transkrypcji na nagraniu.
· kamo-shared-library
Kolumna transkrypcja na nagrywaniu + nagrywanie Metaetadata
Dodaje kolumnę TRANSCRIPT TEXT do jednostki nagrywającej i wątków transkrypcji via-a (z dośladowaniem wstecznym Konstruktorzy, więc istniejące 5- i 9-łowe osoby dzwonią nie są dotknięte). Po zaludnione przez Nagrywanie-finalizuj przepływ przez Whisper; stworzony przez migrację KI.
· MediaService
Sprawdź podpis nanawczy powrotnej JWT; schludne odświeżenie tokena
- CanvaJwtVerifier: zweryfikuj podpis etyp e-brzeńczy_jwt's Ed25519 przeciwko Canva's JWKS (/connect/keys), plus aud/exp; klucze podręczne przez dziecko. Nav Return teraz nie zamyka się na ręczny import, jeśli weryfikacja nie powiedzie się. - CanvaTokenService: upuść nieefektywne . Transakcyjne na samozwańczej Pomocnicy odświeżeniowy/markDown (Spring Data na call tx + zamek na członka Już teraz poprawia rotację tokena); wyjaśnij komentarzem.

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