Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· AIService
Punct la YugabyteDB și utilizați PostgreSQLDialect
CockroachDB a fost înlocuit de YugabyteDB. Conexiunea se mișcă din gandac-public:26257 to yb-tserver-service:5433, and the Hibernate dialect De la *************** la PostgreSQLDIAlect.
· KlusterServices
Unique rowid() shim and non-public schemas in YugabyteDB
Shim este o secvenţă însămânţată la producţia maximă plus o marjă. ă sămânţa are două cerinţe, nu una: trebuie să depăşească fiecare id existent sau prima inserție după ciocniri cutover, și trebuie să depășească 2^53 deoarece id-uri Deasupra faptului că în serie ca siruri de caractere și contractele API deja presupune. Verificat: întoarce > 2^53 și > producția max, 1000 de apeluri toate distincte și punctul, deoarece permite toate 520 coloanaSfârșiturile de definiție în donotmodify Biblioteca comună rămâne neschimbată. De asemenea, pre-creează cele cinci scheme non-publice. Hibernatul nu creează scheme cu excepția cazului în hbm2ddl.create namespaces=true, care KamoInitializerService nu setează, aşa că fără aceste 34 de mese ar dispărea din nou.
· KlusterServices
Unique rowid() shim and non-public schemas in YugabyteDB
Shim este o secvenţă însămânţată la producţia maximă plus o marjă. ă sămânţa are două cerinţe, nu una: trebuie să depăşească fiecare id existent sau prima inserție după ciocniri cutover, și trebuie să depășească 2^53 deoarece id-uri Deasupra faptului că în serie ca siruri de caractere și contractele API deja presupune. Verificat: întoarce > 2^53 și > producția max, 1000 de apeluri toate distincte și punctul, deoarece permite toate 520 coloanaSfârșiturile de definiție în donotmodify Biblioteca comună rămâne neschimbată. De asemenea, pre-creează cele cinci scheme non-publice. Hibernatul nu creează scheme cu excepția cazului în hbm2ddl.create namespaces=true, care KamoInitializerService nu setează, aşa că fără aceste 34 de mese ar dispărea din nou.
· KlusterServices
Desfăşuraţi YugabyteDB 2026.1.0.1 într-un singur nod alături de CockroachDB
Ambele motoare rulează acum cot la cot pe k1m1; CockroachDB este neatins și rămâne calea de întoarcere. Trei lucruri care nu erau evidente: - Versiunea diagramă Helm nu este eticheta Docker. Graficul 2026.1.0 hărți la aplicație Versiunea 2026.1.0.0-b118, așa că "Imagine: yugabytedb/yugabyte:2026.o. ImagePullBackOff. Pinned to 2026.1.0.1-b1, newest patch of stabil 2026.1. - HosteNetwork pune capsulele pe interfețe reale k1m1, în cazul în care două Yugabyte 9000 de către MinIO și 9100 de către nomed exporter. ă tserver se mută la 9010 și RPC la 9110. Ambele servicii gazdă verificat neafectat după aceea. - TLS nu e opţional. Toate cele 31 de siruri de caractere de conectare pentru consumatori sslmode=necesitate, astfel încât YSQL fără criptare ar refuza fiecare client la Cutover. Certs sunt create din trupa, cu pseudonimul public de gândaci numele din lista SAN, deoarece consumatorii continuă să-l folosească prin tăiere. Deliberat nu cu fir în CI: adăugarea unei etape de implementare editează .forgejo /, care Declanşează o împăcare completă care revine în derivă vie.
· KlusterServices
Desfăşuraţi YugabyteDB 2026.1.0.1 într-un singur nod alături de CockroachDB
Ambele motoare rulează acum cot la cot pe k1m1; CockroachDB este neatins și rămâne calea de întoarcere. Trei lucruri care nu erau evidente: - Versiunea diagramă Helm nu este eticheta Docker. Graficul 2026.1.0 hărți la aplicație Versiunea 2026.1.0.0-b118, așa că "Imagine: yugabytedb/yugabyte:2026.o. ImagePullBackOff. Pinned to 2026.1.0.1-b1, newest patch of stabil 2026.1. - HosteNetwork pune capsulele pe interfețe reale k1m1, în cazul în care două Yugabyte 9000 de către MinIO și 9100 de către nomed exporter. ă tserver se mută la 9010 și RPC la 9110. Ambele servicii gazdă verificat neafectat după aceea. - TLS nu e opţional. Toate cele 31 de siruri de caractere de conectare pentru consumatori sslmode=necesitate, astfel încât YSQL fără criptare ar refuza fiecare client la Cutover. Certs sunt create din trupa, cu pseudonimul public de gândaci numele din lista SAN, deoarece consumatorii continuă să-l folosească prin tăiere. Deliberat nu cu fir în CI: adăugarea unei etape de implementare editează .forgejo /, care Declanşează o împăcare completă care revine în derivă vie.
· kamo-internal
Împărțiți jurnalul de acces și normele sale de detectare în sub-tabe
Regulile care decid ce se semnalizează au fost un acordeon sub grila de S-a prăbuşit implicit, deci configuraţia era ceva ce trebuia să ştii. Acolo, și extinderea sa luptat grila pentru același panou. Acestea sunt două opinii de un singur subiect, și fiecare vrea întreaga înălțime. Sub-tabele comuta acum între ele, potrivind modelul Tabs fila OAuth2 următor Uşa se foloseşte deja. Fila de reguli există numai pentru o exploatație membru MANAGE DETECTION RULES, iar vederea activă este derivată mai degrabă decât corectată prin un efect: verificați răspunsurile corecte false până la utilizareaUserInfo stabilește, care ar În caz contrar, lăsați un membru în picioare pe o filă care apoi dispare. Regulile sunt Adus la intrarea în fila, așa cum au fost pe extinderea acordeon, și Panoul nu are nici un titlu propriu acum că fila îl numește. De asemenea, swap-uri pictograma butonului de editare: a fost un Plus, sub un tip de instrument "Edit regula.".
· kamo-internal
Săgeată înapoi-la-casă pe antetele principale de spațiu de lucru
Transportă săgeata de setări-pagină peste restul aplicației: Conturi, Leads, Comerț, Marketing (toate cele patru file, prin dispunerea comună), Knowledge Base, HR, Network, Document Manager, Calendar, Contacte şi note. Butonul se mută din componente/setări către componente/ÎnapoiLa domiciliuButton acum că este cromat la nivel de aplicație mai degrabă decât setări cromate. Marketing și HR dețin un erou gradient pentru fiecare filă sub ele, astfel încât săgeata aterizează în lor Layout şi fiecare filă o moşteneşte. Comerțul și notele fac antetul lor dintr-o singură utilizare componentă (PipelineView, NotesHeader), care este în cazul în care săgeata merge pentru cei doi.
· kamo-internal
Panouri explicative pe fiecare link de bară de administrator
Cineva care şi-a creat organizaţia acum zece minute întâlneşte nouă legături. Nu am cum să citesc. Zburând sau concentrându-se pe unul acum desface un panou care răspunde, în ordine: ce este acest ecran, trei lucruri pe care le puteți face acolo, și în cazul în care pentru a găsi din nou prin Setări odată ce bara nu mai este nouă. Panoul se extinde din banda mai degrabă decât plutind în apropierea ei. in jos de la marginea benzii cu o ingrijire sudat la intrarea sa, si intrarea Rămâne aprins în timp ce este afară, astfel încât cele două citit ca un singur obiect. Conţinutul se stabileşte în scurt clatina in spatele ei. Mișcare redusă păstrează crossfade și picături călătorii; transparenţa redusă scade neclaritatea. Două detalii îşi câştigă locul. Blocuri și jurnale rula scurt pe bara, dar panoul le cap cu numele lor reale, Blocuri de acces și jurnale de acces de sistem, pentru că Asta este ceea ce cineva va fi de vânătoare pentru în Setări mai târziu. Şi fiecare panou inchide cu traseul inapoi la ecran, astfel invatandu-l o data face scurtatura opțional, mai degrabă decât purtător de sarcină. Se deschide pe hover după o bataie, imediat ce orice panou este deja afară, și instantaneu pe tastatura focus; Evadare se închide. Un pointer tactil nu deschide niciodată unul. un robinet este doar legătura, cu nici un panou lăsat blocat în spatele ei.
· kamo-internal
Strângeți eticheta administratorului barului
Trei schimbări în modul în care bara citește la nouă link-uri: Echipa-membri de intrare poartă acum propria etichetă plural a org de la Comportament & Etichetare, astfel încât o org care le numește Ofițerii de împrumut devine ofițeri de împrumut aici. Este singura intrare cu nici o tasta eticheta Blocuri de acces și jurnale de acces de sistem scurtează la blocuri și jurnale sub propria lor Cheile mai degrabă decât meniul de setări. Renaming cheile comune ar trebui să aibă a redenumit aceste file oriunde apar; în acest grup, lângă acele icoane, "access" jumătate din fiecare nume a fost de a face nici o lucrare. Spaţiul dintre intrări dispare, astfel încât fiecare legătură este separarea. și câmpurile hover întâlni margine la margine .
· kamo-internal
Înapoi la domiciliu săgeată stânga din fiecare setări pagina titlu
Paginile de setări nu au avut nici o cale de întoarcere la tabla de lansare scurt de cale ferată Nav. Configurări Vizualizare opțională înapoiHref acum implicit la domiciliu și redă necondiționat, astfel încât cele 20 de pagini construite pe ea alege săgeată până gratuit; cele șase pagini care desenează propriul antet obține aceeași linie de control. Editori de cuișoare (piețe, produse, planuri, furnizor de e-mail, site-uri web, șabloane de stare, agentul studio) transporta deja un fir de pâine înapoi la părinții lor și sunt lăsate în pace, așa cum este setările Leads, a cărui săgeată se întoarce deliberat la / conduce.
· kamo-internal
Restul de configurare esențială pe bara de administrator
Roluri de securitate, Departamente și titluri de locuri de muncă se alăture grupului de configurare, stânga din perechea de audit. Acestea sunt cele trei file de configurare esenţiale barul lipsea Comportament & Etichetare a fost transporta acest subiect singur, astfel încât un ecran o Administratorul ajunge de aici a fost cel care se întâmplă să fie prima sa filă. Fiecare reutilizează tasta pictogramă și etichetă setările o oferă deja și Toate cele trei sunt acoperite de poarta existentă CONFIGURE SISTEM.
· kamo-internal
Blocuri de acces în bara de administrare, link-uri de audit la marginea de traseu
Blocuri de acces și jurnale de acces sistem sunt cele două ecrane de pe bara care răspunde "care au intrat şi care nu" mai degrabă decât configurarea nimic, astfel încât acestea grup împreună și plimbare marginea traseu a benzii, departe de configurare link-uri. O marjă de pornire de linie automată nu-l face nici un element distanțier, și perechea pur și simplu urmează restul odată ce rândul se încheie pe un viewport îngust. Ambele sunt deja acoperite de poarta barului MANage ACCESS RULES, și Access Blocurile reutilizează tasta pictogramă și etichetă setările de aterizare o oferă deja.
· kamo-internal
Nume și editare cărți de adrese, și reconstrui pagina din jurul lor
Adăugând o carte Posted un nume hard-codate locholder cu nici un prompt, și nimic undeva ar putea redenumi unul astfel încât fiecare carte o org a fost numit același lucru, permanent. Cărți și grupuri sunt acum create și editate printr-un dialog cu o numele, descrierea și accentul, redenumibile și detașabile dintr-un meniu rând. Grupurile nu au fost niciodată adunate: bara laterală făcută dintr-o listă care a crescut doar Când ai creat unul, un grup a dispărut la reîncărcare. Contactele au fost prinse pe carte și fuzionat în browser, așa că "Toate Contactele" a arătat doar cărțile pe care le-ați avut vizita și sortarea a luptat cache. Ambele provin acum de la serviciu, cu domeniu de aplicare (carte, grup, interogare, ordine) de conducere unul comandat, a numărat cererea. Restul paginii urmează idiomul consolei pe care restul aplicației îl folosește: - Sidebar: cărţi cu numerele lor de contact, grupuri cu numărătoare de membri, acțiuni rând pentru redenumire / adăugare grup / export / ștergere - Listă: căutare şi comandă server-side, selecţionare şi selecţie change-range, defilare infinită, schelete, o șină A "fără contacte" şi "nimic nu se potriveşte" - Bara de selecție: mutați, adăugați în grup, exportați, ștergeți. Cutiile de verificare per rând au Fost acolo tot timpul împreună cu nimic de a apela - Panou de detaliu: totul la dosar, fiecare fapt copiabil și actionabil, și unul editor partajat cu dialogul de creare astfel încât cele două nu pot deriva - Importul raportează ce a sărit, astfel încât un import parțial nu arata ca pierderea Procurorul de contacte a transformat fiecare 204 într-un 500 esec pentru că parsed un corp gol ca JSON. Nicio opțiune de nivel org pe o nouă carte: listaCărți returnează fiecare carte din org indiferent de proprietar, astfel oferind alegerea ar promite intimitate calea de citire nu pune în aplicare.
· EmailService
Persistă și să servească întregul contact, nu doar numele său
Stratul REST a serializat direct entitățile JPA. Un contact nu are cartografiere la e-mailuri, telefoane, adrese, organizații, URL-uri, IM-uri sau relații ale acestora Sunt mese separate, deci nimic nu a fost vreodată într-un răspuns, și Jackson tăcut Am scăpat totul pe drum. Dialog de creare colectate șapte secțiuni și nu a persistat. Cărţi şi grupuri s-au întors cu asociaţiile lor leneşe. nul, motiv pentru care bara laterală nu a putut atribui un grup unei cărți. În acest sens, crearea unui contact nu ar putea avea succes deloc: CONTACT.OWNER ID este NU NULL și nimic setați-l, de la UI, de la un import vCard, sau de la un CardDAV Pune. Importul a fost stocat numai pe cardul brut și pe cel format NAME nul, care coloana respinge; export citit că aceeași carte primă înapoi, astfel încât orice creat în IU exportat gol. - *************** formele de sârmă, cu conta nevoile bara laterală și totalul de care are nevoie un pager - ContactDetailStore: lot-load-uri și înlocuiește cele șapte tabele satelit și membru al grupului; eliminarea unui contact care nu mai este orfan - ContactQueryStore: contesa, o listare ordonata/filtrata/paginata a org-wide, si a căutare care se potrivește, de asemenea, piese de nume, numere de telefon și organizații - ContactVCardMapper: import și export trece printr-o cartografiere câmp, astfel încât Contactul supravieţuieşte unei călătorii. ZIUA este scrisă ca o ParţialDate într-un moment schimbat ziua pentru cititori într-un alt fus orar - updateBook aplica doar campurile trimise: redenumirea unei carti folosite pentru stergerea ei descriere și culoare, și arunca pe NULL este vizibil - eliminarea cascadelor de carte; org implicit este refuzat mai degrabă decât ruperea control constrângere fiecare carte de nivel de org depinde de - ştergere în vrac/mişcă/grup de criterii finale Crearea de carte stabilește întotdeauna un proprietar și ignoră un client-supplied isOrgDefault: o carte fără proprietar este doar legal ca org implicit, și un al doilea implicit ar Lasă-l pe OrgDefault să aleagă arbitrar.
· kamo-internal
Bara de administrare deasupra cardurilor de lansare
Cinci ecrane un administrator org deschide în mod constant membrii echipei, comportament & etichetare, statistici și costuri, aplicații și caracteristici, jurnale de acces la sistem clicuri adânci prin meniul de setări astăzi. Ei primesc un rând peste partea de sus a Launchpad, sub catarg și deasupra cărților. Fiecare intrare reutilizează pictograma și tasta etichetă destinația sa deja transportă în Setările de aterizare, astfel încât același ecran citește același oriunde este oferit. Banda este gradient NavTop/NavPri org cu linkuri albe, care este ceea ce face Acesta a citit mai degrabă ca crom decât o a șasea carte. Vizibilitatea este rolul administratorului (accesul complet), exprimat singura cale sesiunea îl expune: cele trei drepturi care au un rol și niciun rol de stoc sub acesta Da. Toate trei sunt necesare, și acestea sunt exact ceea ce cinci destinații Poarta pe, astfel încât bara nu oferă un link care ar refuza membrul.
· BillingService
Citiți utilizarea imaginii dintr-o trecere deduplicată
Urmează modificarea în comun-bibliotecă la o taxă per fișier distinct per organizaţie. Atât rezumatul cât şi scriitorul de fotografii de zi cu zi iau un singur imagini trec și citesc fiecare domeniu din ea, mai degrabă decât re-running același grupare o dată pe domeniu pentru o singură pagină.
· kamo-shared-library
Numără fiecare fișier o dată pe organizație, nu o dată pe încărcare
Billing a fost pe imgs record, astfel încât o organizație care încărcat același fișier cinci ori a fost încărcat de cinci ori. Regula proprietarului este o taxă pe un fișier distinct pe organizație: Kamo păstrează încă fișierul odată la nivelul întregului sistem, fiecare organizație Ţinerea ei este încă luată în considerare, şi reîncărcarea a ceva ce ai deja nu este o nouă acuzaţie. Imagini cifre acum provin de la o trecere pe organizație care prăbușește înregistrări la fișiere distincte. Măsurat în ceea ce privește producția pentru KamoCRM: 52 de înregistrări live devin 28 Fişiere exigibile, 6,886,309,250 octeţi devin 5,441,174,177. Un fişier deţinut în două asociaţii este luat în considerare în exact una asociere se pare în conformitate cu Două fișiere de producție sunt în această poziție, și cu această regulă categoriile partiție fișierele organizației și suma exact la total. Timp cifre cheie pe atunci când organizația PRIMUL a deținut un fișier, așa că re-încărcare Ceva ce a avut deja nu este o nouă sarcină într-o perioadă ulterioară. Generat previzualizările sunt tastate de fișier din același motiv, și gunoi o copie a unui fișier A avut loc de cinci ori gratuit nimic. ImagisticaUtilizare() servește curent, durata de viață și adăugat dintr-o singură trecere, deoarece fiecare domeniu de imagistică are nevoie de același grup și de calcul pe domeniu a fugit interogare de zeci de ori pentru un rezumat.
· kamo-internal
Sari peste încărcare atunci când platforma are deja fișierul
Trimiterea aceluiaşi videoclip la trei persoane a însemnat trei uploaduri complete. Dedup le-a prăbuşit. într-un singur obiect stocat, dar doar o dată fiecare transfer a terminat depozitare, niciodată timpul sau lățimea de bandă a membrului. Compozitorul întreabă acum înainte de a trimite. O sondă de mărime mai întâi, deoarece conţinut identic trebuie să aibă un număr de byte identic: exclude un meci pentru aproape fiecare cu adevărat nou fișier la costul unei cereri mici, astfel încât hashing este plătit doar atunci când poate plăti Off. Numai atunci sunt BLAKE3 și SHA3-256 calculate și oferite serverului, care ataşează conţinutul stocat direct. O ratare cade la o încărcare normală. Fluxuri hashing. Helpers existente apel fișier.arrayBuffer() o dată pe hash, astfel încât un fișier este rezident în memorie de două ori peste ă unul nou merge fișierul în 4 MiB felii hrănire ambii hashers, astfel încât memoria de vârf este una bucată la orice dimensiune, și randamentele între bucăți, deoarece SHA3-256 este JavaScript pur și altfel ar îngheţa compozitorul câteva minute. Deddup este o optimizare și niciodată o poartă: orice eșec în sondă, hashing sau link-ul cade înapoi la încărcare, care este întotdeauna corectă. Panoul denumeste pauza ca să nu fie citită ca un stand.
· MediaService
Atașează un fișier deja stocat fără a-l încărca din nou
Transmiterea unui videoclip de 2 GB la trei colegi costa trei upload-uri complete. Depozitare le-a deduplicat într-un singur obiect, dar numai după fiecare transfer a fost finalizat și a fost a aruncat platforma a avut deja. Două criterii finale rezolva înainte de orice mișcare octeți. /attachments/sonda raspunde daca a fișier de această dimensiune ar putea exista la toate, care este ieftin și permite unui client să sară peste hashing pentru aproape fiecare dosar cu adevărat nou. /ataşamente/link ia haşiş clientului Calculat în sine și, atunci când se rezolvă la conținutul stocat, creează atașamentul pur și simplu; un 404 înseamnă "niciodată văzut, încărcați-l" și este un răspuns obișnuit mai degrabă decât un eşec. Hashes sunt o cerere, nu o autorizație: ei rezolva doar vreodată împotriva conținutului deja stocate în domeniul de aplicare al apelantului propriu, și ambele obiective necesită sesiune membru ca orice altă rută de atașament. Încarcă și leagă un rând de construcție Traseu în scop Tărâmurile conversaţiei trebuie să fie imposibil de distins.
· kamo-internal
Afișează stocarea previzualizare generată ca linie proprie
Unghiile degetului mare și imaginile previzualizare acum conta spre total organizației, astfel încât Clientul ar trebui să poată vedea cât costă, în loc să-i găsească împăturiţi. Un alt număr. Un tip de instrument spune ce sunt și că un document multi-pagina produce o previzualizare pe pagină, astfel încât cifra este explicabil mai degrabă decât Misterioasă.
· SecurityService
Măsurați unghiile și urmele generate din fiecare fișier
Cheile de obiect sunt adresate continutului ca *************** segmentul înainte de primul accent identifică fișierul a venit un derivat De la. Dimensiuni sunt rezumate pe ImgDat facturarea le atribuie prin fiecare imgs înregistrare care indică la ea. Aceasta este singura modalitate de a răspunde la întrebare. img dats.THUMB FILE SIZE deține o o singură valoare pentru ceea ce pot fi zeci de miniaturi pagină, a fost populat pentru 5 de 84 rânduri în producție, și nu a acoperit obiecte de cale, la toate împreună subestimând stocarea reală a instrumentelor derivate cu aproximativ 37%. Obiecte de moștenire tastat de un ID numeric adresa de conținut predate, meci nici un fișier, şi nu sunt socotiţi pentru nimeni; numărul este înregistrat mai degrabă decât trecut peste Linişte.
· InitializerService
Schema de stocare măsurată a unghiilor și a liniilor
img dat records, per fișier stocat, dimensiunea octet reală a tot ce Kamo generat din ea. Înlocuieşte img dats. THUMB FILE SIZE ca sursă pentru această cifră: această coloană deține o valoare pentru ceea ce poate fi zeci de pagini Unghiile degetelor și a fost populat pentru 5 din 84 de rânduri în producție. Rulați împotriva producției 2026-08-09; tabelul și indicele verificate.
· kamo-shared-library
Bill a generat miniaturi organizaţiei
Unghiile şi urmele per-canalului depozitează cauza de încărcare a unei organizaţii. Deci, pe instructiunile proprietarului ei acum conta spre ca total organizatiei În loc să fie absorbit de Kamo. GENERAT PREVIEWS este un domeniu facturat. Măsurat de la magazinul de obiecte, nu de la img dats. THUMB FILE SIZE. Acea coloană deține o valoare unică pentru ceea ce poate fi zeci de miniaturi pagină ( {imgDatId} thumb p0..pN) şi în producţie a fost populat pentru 5 din 84 rânduri subestimarea stocării reale a instrumentelor financiare derivate cu aproximativ 37% și omiterea obiectelor de cale În întregime. Img dat records înregistrează ceea ce o matura de fapt citește înapoi. Atribuirea este pe înregistrare exploatație, aceeași regulă ca fișierul în sine: facturare se alătură imgs la img dat derivate, astfel încât două organizații care dețin un fișier sunt fiecare facturat pentru previzualizările sale și deduplicarea rămâne Kamo de economisire mai degrabă decât A clientului. Cifrele perioadei data previzualizări de încărcare care le-a cauzat, așa o previzualizare se încadrează în aceeași perioadă ca fișierul său mai degrabă decât ori de câte ori matura a fugit. Derivatele raportului platformeiBytes acum citesc aceeași sursă măsurată, așa că nu mai subestima costurile de procesare a imaginii. Schema verificată în producție înainte de această debarcare: img dat derivate există după o cursă KI.
· kamo-internal
Lasă un membru să păstreze un atașament video sau audio, nu doar să-l joace
Jucătorul răspunde unei intenţii. Dorind fișierul de pe disc este unul diferit, și video și audio au fost cele două tipuri de atașament cu nici un fel de a face acest lucru a avut un buton de descărcare tot timpul, și o imagine are unul în caseta de lumină. Îngroape cu crom o descărcare în meniul supraîncărcat al elementului video; Firefox și Safari nu oferă unul Aşa că trebuie să fim de încredere. Ambele poartă acum o linie de subtitrare numind fișierul cu dimensiunea sa și un buton de descărcare, utilizarea aceluiași href de origine + atributul de descărcare al cipului de document deja folosește. De asemenea, scade dimensiunea întotdeauna-KB pe cipul document. Asta a încetat să mai crească. atașamentele ar putea fi gigabytes: un fișier 2 GB citește "21130125 KB." Acum foloseşte acelaşi lucru. formatBytes, compozitorul arată pentru acel fișier înainte de a fi trimis.
· kamo-internal
Arată brandingul și stocarea documentelor Docstive
Ambele sunt scrise direct la magazinul de obiecte cu nici o dimensiune înregistrată în Baza de date, deci au citit ca zero până când o matura le măsoară. Ei au acum lor propriile linii.
· SecurityService
Măsurarea marcării și stocarea documentelor Docstive
Astea sunt singurele două lucruri pe care o organizaţie le face fără mărime. oriunde în baza de date sub prefixul domeniului organizației, docs workspace sub id-ul său Atât citit ca zero până când ceva citește magazinul obiect înapoi. Atribuţia merge înapoi, prefixul organizaţiei. Derivarea fiecărei organizații Prefixele şi scanarea ar duce la pierderea în tăcere a oricărui lucru stocat sub un prefix. nimeni nu s-a gândit să-şi dea seama; în schimb fiecare prefix de nivel superior este cartografiat înapoi prin widget, parts, implicit, plus orice liber la rădăcina găleată) terenuri în nu Clientul e total. Membrii/subarborele este exclus în mod deliberat. Avatarele trăiesc sub un fix, prefix independent de organizare prin design, și de numărare moștenirea per-domeniu copii ar percepe o organizație pentru un fișier de utilizator altă organizație Deţine. Obiectivul de declanșare urmează Los International ApplicyController: comparație constantă în timp împotriva secretului clusterului, care nu se închide când este neconfigurat.
· InitializerService
Schema de măsurare a stocării numai pentru obiecte
obiect depozit zile înregistrează ceea ce o matura citește înapoi de la MinIO pentru cele două lucruri care nu au dimensiuni în baza de date: branding active și documente spaţiu de lucru. Găleată de ultima zi modificată aşa că o fereastră de facturare se rezumă exact. Rulați împotriva producției 2026-08-08; tabelul și indexurile verificate.
· kamo-shared-library
Conte branding and Docstive document storage
Aproape tot ceea ce o organizaţie stochează înregistrează propria dimensiune undeva o imgs rând, un rând kb media, o măsurare cutie poștală. Două lucruri nu. Marcare active (logos, favicons, imagini de fundal, temă CSS și configurare) sunt scrise direct în găleată publică sub prefixul domeniului organizației, și Docs workspace este scris sub ID-ul său. Nici nu lasă nimic în baza de date. Spunând cât de mare este, astfel încât ambele citit ca zero. Obiect depozitare zile deține ceea ce o matura citește înapoi de la magazinul de obiecte, găleată de ultima zi modificată, astfel încât o fereastră de facturare arbitrară se rezumă exact decât rotunjire la luni întregi. **************========================================================================================================================================================================================================================================================= cu cheia peste noduri. Replicarea site-ului pune același obiect pe mai multe noduri, și Numărând-o o dată pe nod s-ar multiplica factura unei organizații de dimensiunea grupul. BRANDING exclude în mod deliberat membrii/ subarborele. Avatarurile membre trăiesc sub un prefix fix, independent de organizare prin design organizaţii, astfel încât un avatar nu este proprietatea nici unul dintre ele şi copii per-domeniu sunt moștenire. Numărarea lor ar taxa o organizație pentru o Deține utilizatorul altei organizații. Schema verificata in productie inainte de aceasta aterizare: obiect depozit zile exista cu constrângerea sa unică după o cursă KI.
· kamo-internal
Afișează stocarea atașamentului mesajului text
Ataşamente MMS în direct în baza de date ca date: URI mai degrabă decât ca fişiere; Aşa că nu aveau nici o înregistrare şi nu au fost număraţi niciodată. Acum au propria linie.
· kamo-shared-library
Numără atașamente mesaje text
Ataşamente MMS sunt stocate şi nu au fost numărate. Nici ei nu sunt ceea ce sunt. arata ca: VoipMessageService codifică atașamentul ca date: URI și scrie În linie în VOIP Mesages.ATCHMENT URL, astfel încât acestea să nu devină niciodată obiecte Minio şi nu există nici un fişier care să stateze prin intermediul conversaţiei. Base64 ruleaza aproximativ o treime mai mare decât octeți se codifică, și că umflat forma este cu adevărat ceea ce ocupă baza de date, astfel încât este ceea ce se numără.

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