Mergi la conținut
KAMOUniverse

Jurnal de schimbări

Ce e nou.

Fiecare îmbunătățire a platformei, pe măsură ce se livrează.

  1. · 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.

  2. · 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.

  3. · 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.

  4. · 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.

  5. · 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.

  6. · 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.

  7. · 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.

  8. · 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.

  9. · 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.

  10. · 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ă

  11. · 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ă.

  12. · 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.

  13. · 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.

  14. · 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.

  15. · 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.

  16. · 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).

  17. · 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.

  18. · 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.

  19. · 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.

  20. · 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.

  21. · 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)

  22. · 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 .

  23. · 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.

  24. · 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)

  25. · 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

  26. · InitializerService

    Migrația adaugă înregistrări.Transcriere coloană TEXT

  27. · VOIPService

    Returnare transcriere în înregistrare metadate pentru softphone player

  28. · kamo-internal

    Arată transcriere Whisper în softphone player media

  29. · 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.

  30. · 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