Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· kamo-shared-library
DecisionGate.appliced Prag expune bara de încredere reală
Poarta internă se aplică max (durata maximă de suprascriere, podea de siguranță, etaj) dar Apelantii au avut doar peretele pre-gate chirias. aplicat Prag returnează adevărul bară astfel încât o decizie de înregistrare poate persista pragul-IN-EFECT (examinator- Reproducere) în loc de o valoare poarta ridică în tăcere. Aditiv; evaluare() neschimbat. DecisionGateTest 14/14 pass.
· kamo-internal
Spatiu de lucru pentru materiale Enterprise (P0)
Înlocuiește grila plată de 200 de puncte cu un spațiu de lucru document complet peste imagistica existentă backend (care suportă deja dosare, gunoi, partajare, istorie, vrac pentru materiale): - Bara laterală a dosarului (creare/renume/ștergere, drag-to-folder) + Toate / Vederi gunoi - Search, sort, grid<->list toggle, pagined 'load more' (se îndepărtează capacul 200) - Selectați vrac + descărcare în vrac (ZIP) / e-mail / muta / șterge - sertarul cu detalii din dreapta: previzualizare reala, redenumire inline + descriere, mutare-la-folder, partajarea internă (membru, permis-edit, expirare) și istoricul activității - E-mail reutilizează acum compozitorul partajat MessageTool prin intermediul instrumentului global: eveniment deschis (De la/cutia poștală, CC/BCC, corp bogat, semnături, schițe) în loc de o formă deschisă - Noi rute proxy imagistice: folder create/[id] rename+delete/mute-doc, redenumește, descriere, restaurare, nivel de acces - Elimină materialul înlocuitLibrary; toate caracteristicile Canva (create/import/autofill/ programe) efectuate. ImgIds manipulate ca siruri de caractere precise în întreaga.
· kamo-internal
Overhaul /mesaj
Implementează auditul paginii/mesaje de la un capăt la altul. Aspecte raportate: - Răspunde/replică Toate butoanele/Forward arată acum etichete text; eliminate din mai multe acţiuni dropdown (sunt butoane adiacente) în timp ce noul meniu lista le păstrează. - Rânduri-listă de mesaje deschide acum meniul de acțiune comun pe dreapta-clic și atingere Presă lungă Nu-ţi face griji. rândurile câștiga a Inel de focalizare (j/k), caseta de selectare (x) și sull-in-view. - Email acum redă într-un iframe auto-înălțime cu nisip (srcdoc) în loc de linie periculos SetInnerHTML. Acest lucru izolează e-mail CSS/layout, care stabilește citire-pane "bunce" și mijlocul de pierdere text-selecție, închide aplicația la nivel de aplicație CSS-Leak, și adaugă o implicită "imagini externe blocate" de urmărire-pixel poarta. Corectitudine/buburuze: - Complet compose Reply/Reply-All set now In-Reply-To/References (unified DraftMessage tip) deci raspunsurile raman filetate; quick-reply fire Referinte + parinte id, HTML- scapă corpului și trimite din cutia poștală activă comună/membru. - Înainte poartă atașamentele originale; răspunde/rezolva mesajul complet În loc să citezi ce e deschis. - Race guards (ultimul câştigător) on loadMessages / message select / fir de încărcare / Conversaţie de încărcare; sondaj nu mai yankes pagina de utilizatori pagina 0; WS reîncărcaţi filtrat la dosarul activ; resetează pagina de căutare la schimbarea interogării. - ThreadDetail expansion stat keyed by folder+uid (cross-folder coliziune); markRead numai atunci când nu se citește; rejudecata folosește suportul dosarului. - Compozitie: recipient de culoare tastata-dar-neangajat pe Send/Draft; dedupa de atasament + 40MB plafon agregat + actualizări funcționale; picătură clientul redundant OTK. - Proxy: înainte Range + validatoare de cache pentru atașare / streaming online; închide Multipart sculptate pe căi de aprovizionare păzite. - Email WebSocket: oprire reala dupa max retries, exponential backoff, stabil-conectare Reîncercați resetarea; notați valoarea contextului pentru a reduce churn re-referă consumatorului. Calitate: unificat ***************** a11y (etichete aria, aria-presate, tastatură-operabile rânduri / comutatoare); i18n (nume de dosare, date de listă; pagere, ICU plural); eliminat cod mort și intrări fantoma tastatură-scurt.
· kamo-internal
Instrument Panel de reproiectare
Reproiectează cele două aterizări cele mai vizitate într-o consolă a operatorului în formă de permisiune. Fundaţie - Porniţi deja încărcat Geist Sans/Mono (au fost aruncate printr-un Arial Fallback); ruta MUI tipografie prin Geist. - Adăugați alb-etichetă-sigur --accent-* jetoane modul-familie, o scară de elevație, un aprins-sticlă de top-Edge, Operator-Label + .utilități tabulare, și un --ease-house token. Fix --gradient-primar-transparent (a fost hardcoded albastru → acum derivat din --color-primar). Caracteristici partajateCard (o componentă, tastatură corectă) - Acum, o ancoră reală (UrmătorulLink): Tab/Enter/Middle-Click de lucru și inelul focal-vizibil poate trage în cele din urmă. Adăugați utilizareRedusPaza de mișcare, în timp ce intrarea InView pe ușa casei, cip luminat de familie-accent, numărul de pip atenție, niveluri de greutate, și peClick passthrough. Revizuiește intenția de culoare permodul care a fost aruncată pe red. Şterge cardul de acasă. Acasã - Masthead (mono kicker + time/name heating + tabular status strip) înlocuieşte banner-ul exclusiv pentru org; oklab Backdrop înlocuieşte filigranul gri-multiplicat; permisiune în formă de două-tiri (rute comandate primar + director grupat) cu o bandă de atenţie "necesită astăzi" şi "Sari înapoi în" (nouă utilizareHomeRecent + global recentRouteTracker); adaptive rare/stări goale; real <h1> + repere. Configurări - Reductor condus de regie înlocuiește 18 copy-pasted Collapse blocuri: lipicioase secțiune-index șină + IntersecțieObserver defilare-spion + numărătoare vii, 4 super-grupuri, dezvăluire progresivă (Personal open, recent-aware, ultima secțiune restaura, extinde/collapse toate), SectionHeader rânduri instrument, și un acces rapid fix (corectă felie MAX RECENT + relativ-time + Start here). Păstrează fiecare permisiune / produs-flag poarta exact. Încrucișare: schelet + EmptyState, preferă să reducă-transparența + căi de mișcare redusă, pe capsele locale de operator-Label opt-out. Noile coarde de IU aterizează în dictionarul kamo-translation (en) într-un companion.
· kamo-shared-library
haide
Conversia async (fire virtuale) și matura programate dețin un ImgDat detașat; salvează() / vârtej () cascade în orfanRemoval=colectare și aruncă imagini adevărate 'o colecţie cu cascadă=all-selete-orfan nu a mai fost menţionată prin deţinere instanţa entităţii." Un UPDATE în vrac de doar coloane miniaturale evită graficul entității în întregime și este în siguranță de la orice fir.
· kamo-internal
Adaugă răspuns Toate la mesajele de lectură vedere vedere și fir
Răspunde Totul a fost promovat (tastatura-tastatura scurta + i18n cheie) dar nu a avut handler. Wire it up: nou calculReplyAllRecipients helper pune expeditorul în Pentru și pentru orice alt destinatar original din Cc, cu excepția auto-dezamorsării Insensibil. Adaugă un buton, scurtătură, și o intrare context-meniu în mesajBrowser, plus un buton per-mesaj în ThreadDetailView.
· InitializerService
Index parţial unic care aplică un pachet activ de închidere pentru fiecare împrumut (închide dublu-închide backstop)
CREATE UNIQUE INDEX uk mlos closing pkg active loan ON mlos closing package (împrumut file uid) Where status <> "CANCELLED." Durabilă oprire înapoi în spatele Garda de idempotență a asamblorului în aplicație: un pachet de închidere activ duplicat ar unitate propria înregistrare MERS + finanțare (o dublă închidere). Închidere pachet trăiește în comun-lib cu numai non-unique @Index intrări și nu se poate exprima o constrângere parţială unică prin intermediul JPA, deci aici este DDL scris manual (KI deţine schema). Ipotent; se aplică pe următoarea cursă KI.
· MediaService
Materialele generate în timpul procesului
O matura fără cap nu poate conduce conducta OTK a serviciului miniatură, așa genereaza o pagina-0 PNG miniatura prin ImageIO imediat dupa stocarea exportului Materialele programate redă acum în reţea ca oricare alta, nu sunt necesare.
· kamo-internal
Programe de generare recurente UI
ProgramManager: creare/listă/eliminare (rețetă + zilnic/săptămână/lună + ora/zi + obiectivele facultative post-post + titlu); lansate din materiale, cu poarta pe capacitatea de autofillare Canva (Enterprise). + canvaApi + /api/canva/programe proxy.
· MediaService
Generație programată
- CanvaScheduleController: CRUD pentru programe org (rețetă + cadență + oră/zi + obiective sociale opţionale), calculează următorulRunAt - CanvaGeneration Serviciu: fără cap Nu-i aşa? Material (in process ImageService; miniatură fără deget până la umplere) - CanvaScheduleSweep: @Scheduled maturation, atomic per-schele pretention, genereaza si Cel mai bun efort auto postează rezultatul conexiunilor sociale prin intermediul semnat public-URL cusătură
· kamo-shared-library
Entitatea CanvaSchedule + repo (generare recurentă)
Org-scoped program recurent (rețetă + cadență + obiective sociale opționale) cu o cerere de revendicare atomică astfel încât o matura MediaService ruleaza fiecare program datorat o dată.
· kamo-internal
Inline extensibil Whisper transcript on softphone voicemail + call-history rinds
Fiecare rând înregistrat (poștă vocală și istoricul apelurilor) primește un "Transcript" pentru a comuta asta Aduce transcrierea Whisper de înregistrare la cerere și arată în linie, așa membrii o pot citi fără să deschidă jucătorul. Cached per înregistrare.
· kamo-internal
Salvare + rețete de refolosire automată
ModelAutofill: "Rețete salvate" chips-uri încarcă un șablon + cartografiere preumplută; "Salvați ca rețetă" persistă șablonul curent + valorile câmpului org-la nivelul întregului. + canvaApi list/save/delete + /api/canva/recipies proxys.
· MediaService
Retete de autofillare salvate CRUD (org-scoped)
CanvaRecipieController: GET/POST /api/media/canva/rețete + DELETE / {id} salva/lista/soft-șterge un nume de marcă-templu + cartografiere câmp, domeniu de aplicare la Org apelantului.
· kamo-shared-library
CanvaAutofillentitateRețetă + repo (rețete de umplere automată salvată)
Org-shared nume de legare a unui șablon marca Canva la valorile de câmp (literal text sau imagine Materiale), astfel încât stewards pot re-rula un standard de date-merge.
· kamo-internal
Adaugă câmp ID material pentru a crea forma, pagina detalii și importuri
Fire cu material nevalabil (maximum 40) prin tipul de plumb, leadsApi (creează + cereri de fir de actualizare) și câmpul de bază comunFields lista cartografiere de admisie UI (plus șablonul CSV descărcabil). Adaugă intrare la /conduce/nou și un rând de vizualizare/edit pe pagina de detalii de plumb, cu fir la harta în timp real panel-flash. Etichete prin leads.new.fields / leads.view.fields / leads.view.rows (materialId).
· kamo-internal
Enterprise autofill UI
ȘablonAutofill: alege un șablon de marcă Canva, umple fiecare câmp cu literal text, un semn de conformitate / org (NMLS #, dezvăluirea de locuințe egale, numele org/telefon/ Site/adresă, nume de membru) sau imagine de materiale; generați o sursă de date proiectarea și importa-l înapoi în materiale. Gated on the Canva Capacitatea. + metode canvaApi și /api/canva/{marcă-templați; Nu-ţi face griji. Proxies.
· MediaService
Enterprise autofill
- CanvaApiClient: listează șabloane de marcă (set de date=non gol), obține seturi de date; locuri de muncă active-încărcare, crearea/obținerea de locuri de muncă autofill - CanvaController: GET /brand-templies, GET /brand-templels/{id}/dataset, POST / Autofill material pentru Canva ca un activ, apoi date-merges; sondaje la noul design. Canva 403 (fără capacitate de autofillare) suprafeţe ca autofill not disponibile.
· SecurityService
Cod de identificare al materialului cartografiat privind importul manual + aportul API
Ambele seturi DirectFieldOnCreateRequest comutatoare nu au un caz implicit, deci o Sistemul necartografiatFieldPath este scăzut în tăcere. Adăugați un caz material Import manual (LeadImportController) și vânzător/achiziție API (LeadIntakeController) dispeceratul astfel încât o coloană/câmp de identificare a materialului cartografiat să persevereze.
· kamo-shared-library
Adăugați câmpul de identificare al materialului final-la-sfârșit în comun-lib
Adaugă la entitatea-pilot un material de tip max-40-char (MATERIAL ID). VARCHAR (40)), îl înregistrează în LeadHistoryFieldRegistry (categoria Profil) deci editatile sunt auditate, fire prin Create/Update/Citeste DTO si LeadService create/actualizeaza (trim + trunchiate la 40, oglindind numele companiei); și păstrează-l peste bază <-> conversia plumb de amortizare.
· kamo-internal
Ataşament social + e-mail-a-material + linkuri publice
Distributie pentru materiale de marketing, construite pe noua cusatura semnat public-URL. - materialeApi.publicLink (imgId) + /api/materials/link proxy - Materiale: "Copy public link" și "Email this material" (attaches the file to un mesaj de ieșire prin intermediul mai multor părți/api/email/trimitere, cu poarta pe org e-mail) - MaterialPickerDialog (rețea reutilizabilă peste assoc materiale) - SocialComposer: butonul foto o dată dezactivat deschide acum culegatorul și atașează un material ca suport postal prin intermediul URL-ului public (lucrari pentru Meta/telegram/Discord)
· MediaService
URL-uri publice semnate de scurtă durată pentru active de marketing
Permite furnizorilor sociali (Meta) și e-mailului să aducă un material specific pentru o limitare fereastra fără a expune găleata privată de materiale imagistice. - MaterialUrlSigner: HMAC-SHA256 (platform.enc-key) token = imgId:orgId:exp, 1h TTL - MaterialsController: Post /api/media/materials/link (aut → ment URL pentru o Imaginea materialelor deţinute de org) + GET *************** (nauth → să servească bytes pentru un jeton valabil; org + assoc verificat). Călătorește pe cele existente fără sesiune /api/media/** forward .
· kamo-shared-library
Împrumutul de primă clasă se supune tranziţiei *****************
PROIECT→APPLICATION TAKEN pentru un împrumutat (o parte împrumut, nu un operator, deci nu LOS TAKE APPLICATION). Trasee prin tranziție () cu o predilecție a domeniului de aplicare care Grants DOAR dreptul de a lua-cerere și un fixat la StatusId, astfel încât împrumutat depunerea devine o tranziție de conducte corespunzătoare Etapele hash-chained, Application Submission (INITIAL DISCLOSURE) și afterCommit STATUS CHANGE event Membrul părţilor de împrumut este verificat de către apelant.
· kamo-internal
Șterge + previzualizare + import-file-to-Canva
- şterge un material (gatat pe MANAGE MATERIALS) cu confirmare - faceți clic pe o miniatură pentru a o previzualizare într-o cutie de lumină - "Import un fișier" transformă un PDF/PPTX/imagine într-un design Canva editabil (proxy reconstruiește corpul multipart ca uploader imagistic)
· MediaService
Importă un fișier în Canva ca un design editabil
- *************** (import de design binar) - CanvaController POST / Importuri (multipart) → Creare+poll import job → editor link adânc cu corelation state for return-nav - drop acum-neutilizat Base64 import în CanvaOAuthController
· InitializerService
Migrația adaugă înregistrări.Transcriere coloană TEXT
· VOIPService
Returnare transcriere în înregistrare metadate pentru softphone player
· kamo-internal
Arată transcriere Whisper în softphone player media
· ConversionService
TranscriptionService + final generic; transcrie înregistrări VOIP
- Extrageţi un TransscriptionService reutilizabil (ffmpeg normalize -> whisper- ars) şi a Obiectivul generic POST/api/conversie/transcriere, înlocuind obiectivul specific de realizare Controler. Meet + VOIP împărtășește acum o cale de transcriere. - ÎnregistrareProcessController: transcrie fiecare înregistrare VOIP finalizată/vocemail în proces (nefatală în caz de eșec) și păstrează transcrierea pe înregistrare.
· kamo-shared-library
Traducerea şi adaptarea:
Adaugă o coloană de TEXT TRANSCRIPT la entitatea de înregistrare și fire o transcriere prin *************** (cu compat invers) constructorii, astfel încât apelanții existenți 5- și 9-arg sunt neafectați). Populate de debit de înregistrare-finalizare prin Whisper; creat de migrare KI.

Universul tău te așteaptă.
Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.
Gratuit pentru totdeauna — nu este necesar un card de credit