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

    Script de montare pentru KAMOTEAM

    NFSv4 peste NodePort, montat moale cu un automatount sistemat astfel încât un inaccesibil clusterul returnează o eroare în loc să atârne fiecare proces care atinge Dosarul, și astfel laptopul încă cizme în mod normal, atunci când off LAN.

  2. · kamo-marketing

    Unitate poloneză de erou video cu animații moderne și optimizari

    - Adăugare imagine poster pentru feedback vizual instant în timpul sarcinii video - Implementaţi scheletul de încărcare cu animaţie pulsantă - Start video muted (browser autoplay policy conformare) - Adaugă preload="metadata" pentru încărcarea video eficientă - Îmbunătățește stilarea butonului: mai mare (h-12 w-12), raza de frontieră mai bună (rotunjită-xl) - Îmbunătățește umbra cu efect dublu-strat (24px + 8px) - Punerea în aplicare a unui recipient neted se estompează în animaţie (0, 8s easyOut) - Adăugaţi AnimatePresenţa pentru tranziţii mut/nemut - Îmbunătățește efectele hover cu scară, umbră, și tranziții de fundal - Adăugaţi animaţie la robinet pentru feedback tactil (scala 0.95) - Starea de încărcare video pentru tranziţii netede de opacitate

  3. · KlusterServices

    Dosar comun KAMOTEAM pe fiecare birou

    desktop-1 găzduiește /srv/kamoteam și exportă peste NFSv4; fiecare utilizator VM primește ~/Desktop/KAMOTEAM ca simlink (prin /etc/skel pentru conturile noi și agentul pentru cele existente/adoptate), iar stația de lucru pune același director. VM deține datele, deoarece este întotdeauna-pe partea Laptop WiFi pe DHCP, astfel încât găzduirea acolo ar picătură dosarul pentru utilizatorii VM fiecare timp doarme și rupe muntele lor ori de câte ori adresa sa mutat. Citire completă / scriere are nevoie de trei lucruri împreună, și omiterea oricine oferă o parte care arată bine până când a doua persoană scrie: grupul kamoteam, setgid plus a DEFAULT POSIX ACL (fără el o sask 022 face ca fişierele fiecărui utilizator să fie citite doar pentru toată lumea), și NFS all squash la o identitate fixă astfel încât uid stația de lucru 1000 nu este tratat în tăcere ca uid 1000 VM lui. NFSv4 numai: un port, nu rpcbind, care este ceea ce face forwardable prin KubeVirt mascarada. Expus la LAN ca NodePort 32049.

  4. · kamo-marketing

    Înlocuiți unitatea de text erou cu video promo autoplay

    Schimbați copia eroului de pe prima pagină, CTA-urile și statisticile pentru o videoclipuri cu buclă în timp ce păstrați tratamentul de fundal rotativ.

  5. · KlusterServices

    Alertă asupra OOMKills, și asupra ocupației care le precede

    Nimic nu se uita la memorie. MediaService a fost ucis la fiecare câteva ore pentru majoritatea de o zi și EmailService de șase ori, și modul în care cineva a aflat a fost un chat fereastra care a oprit în liniște de încărcare mesaje Repornirea într-o secundă înseamnă o caracteristică ruptă, nu o pană de curent. Trei reguli. ContainerOOMucidere incendii pe eveniment; ContainerOOMKillLoop Separa un one-off de o pod fiind ucis în mod repetat, care reporneşte rapid suficient pentru a arăta încă 1/1 Running. ContainerMemoryNearLimit este cel care ar au capturat aceste zile mai devreme: >85% din limita deținută timp de 30 de minute. Pentru un JVM pe MaxRAMPercentage care nu este o pod ocupat, este un pod așezat la tavanul său morman cu non-heap stivuite pe partea de sus, care este starea de echilibru imediat înainte de kernel-ul intervine. Un al patrulea, informaţional, steaguri containere fără limită la nu pot fi Uciși de propriul lor grup, dar pot lua un nod în jos. Verificat mai degrabă împotriva datelor reale decât presupus: expresiile au fost evaluate pe acest grup, și interogarea ultimele 12 ore arată motiv="OOMKilled" serie pentru kamowsemail exact (18:33-01:28 UTC) și kamowsmedia (21:28-01:03 October) cele două capsule care picau. Regulile ar fi tras critic pe ambele. O alertă care se potriveşte în tăcere cu nimic nu este acelaşi eşec ca nici o alertă, astfel încât verificarea a contat mai mult decât YAML. Aplicat manual; monitorizarea/ nu este o ţintă de aplicare a CI.

  6. · KlusterServices

    Block outbound SSH cu excepția salviei, rezolva k1m1/k3m1, pachet agentul dir

    Outbound tcp/22 este respins pentru fiecare uid cu excepția rădăcină și salvie, tastat pe priza Proprietar, astfel încât conturile viitoare sunt acoperite fără re-running nimic. Reaplicate la boot-ul de către o unitate de sistem, deoarece normele Nftables nu supraviețuiesc unei repornire. Este o Paardrail, nu o limită: Kamodev are sudo apt fără parolă, care este root-echivalent k1m1/k3m1 gazde intrări du-te în nor-minit melase, precum și /etc/hosts; deoarece manager etc hosts regenerează fișierul de pe fiecare boot și un apendice simplu În tăcere dispare. Folosește IP-uri LAN; suprafeţele WireGuard/CGNAT sunt retrase și 10.0.50.1 este doar legătura nod-nodă. nor-minit poartă acum desktop/agent/ ca o tarball determinist mai degrabă decât un locholder pe fişier altfel a însemnat editarea șablonului și CI face pasul prea.

  7. · KlusterServices

    Standard instrumentchain, taskbar pini și instalaţii fără parolă pentru toți utilizatorii

    Adaugă krita și Maven *************** erau deja prezente), pini Chrome, VS Code, Kate, Spectacol și Krita la bara de lucru pentru fiecare utilizator, și permite utilizatorilor dev instala software fără o parolă admin. Instalează fără parolă are nevoie DE AMBELE jumătăți: sufdere acoperă terminalul, polkit acoperă Discover și orice alt instalator grafic. Domeniul de aplicare al pachetului management prin grupul kamodev, mai degrabă decât rădăcină pătură fiecare fișier pentru motivul pentru care este o rază de explozie mai mică, dar nu o limită de securitate. Bara de lucru: conturile noi mostenesc modelul de la /etc/skel la ora de utilizare; conturile existente primesc doar lansatoarele lor = linie rescrisă, astfel încât un personalizat Panou nu este aruncat pentru a fixa o listă de icoane.

  8. · kamo-internal

    Poartă pictograma Linux pe o dispoziție, nu pe Dumnezeu

    Pictograma apare acum exact atunci când conexiunea din spatele ei va funcționa Criteriul final impune aceeași regulă, astfel încât cele două nu pot fi de acord. Ferestre și Maestru Împărtășesc încă o acreditare, astfel încât acestea să rămână pe este Dumnezeu.

  9. · kamo-internal

    Dialog Dev Machine pe cardul de administrator

    Păstrează trei state separate că unul se va prăbuși: nu a furnizat (necesită o parolă), prevăzut, dar blocat (necesită doar comutatorul) și a eșuat (Necesită eroare și o nouă încercare). Comutatorul nu poate inventa o parolă pe care nimeni nu a ales-o.

  10. · kamo-internal

    Modul client și rute proxy

    *** este transmis în mod explicit token sesiune, și obiectivele dev-mașină rezolva apelantului de la ea. Segmentul de acţiune este verificat în funcţie de un set fix, în loc să fie trecut.

  11. · SecurityService

    Acreditari SSO pe membru si un prim zbor care explica esecurile

    Linux este purtat pe o măsură mai degrabă decât Dumnezeu, și a servit cu propriile acreditări ale membrilor. Conexiunea este omisă din jeton în întregime atunci când ei nu au nici o ofertă care să fie refuzate suprafeţe ca Guacamole lui eroare generică, care este eșecul inacționat acest lucru elimină.

  12. · SecurityService

    Servicii de mașini și controlere Dev

    Numele de utilizator derivă din e-mailul membru Cont, nu e-mailul de lucru TeamMember o adresă de lucru poate sta pe un alt domeniu și ar produce în tăcere un alt domeniu numele contului. Reset-password necesită GD și GodModeActive împreună.

  13. · SecurityService

    Client HTTP pentru agentul de furnizare de mașini de dev

    sănătate () înghite eșecuri de transport și răspunsuri false astfel încât prezbiterii SSO poate returnează un 503 acţionat mai degrabă decât un 500.

  14. · SecurityService

    AES-GCM codec secret și numele de utilizator POSIX derivat

    Codec este în mod deliberat reversibil folosește GCM astfel încât un rând fals sau greșit-cheie nu reușește cu voce tare, mai degrabă decât decriptarea la zgomot care va fi predat lui Guacamole.

  15. · kamo-shared-library

    Dev machine content, status enum și depozit

    statutul și activarea sunt separate în mod deliberat: un cont furnizat, dar dezactivat păstrează directorul său de origine, astfel încât re-aprofundarea restabilește mai degrabă accesul decât reconstruirea.

  16. · KlusterServices

    Secrete de agent în CI, liveness guacamole, alerte de disponibilitate

    Expresii de alertă verificate împotriva Prometheus live. Utilizeaza kube-state-metrics mai degrabă decât kubevirt * Regulile scrise împotriva ei ar fi citit ca acoperire în timp ce nu trage. Selector eticheta este eliberare=kps pentru a se potrivi cu regula lui Prometheus CRSelector. Manipularea secretă se execută cu xtrace off astfel încât valorile stai departe de jurnalul CI.

  17. · KlusterServices

    Instalator de agenti identici, impartit de instalatii cloud-nit si live

    Stadiată sub /opt/kamo-desktop-agent astfel instalat-agent.sh are o sursă distinctă şi destinaţia. Acoperă netplan-by-driver, rețea cloud-init dezactivat, xrdp politica de sesiune, /etc/skel/.xsession și agentul însuși.

  18. · KlusterServices

    Adăugați agentul de furnizare și testele sale unitare

    Numai Python 3 stdlib. Fiecare mutație se execută subproces cu o listă argv, niciodată o coarda de coajă; parolele merg la chpasswd pe Stdin astfel încât acestea să stea departe de /proc.

  19. · SecurityService

    Trimite ID-uri int64 la browser ca siruri de caractere, fără a atinge sesiuni

    CockroachDB unic rowid() id-uri sunt 19 cifre, numărul trecut. MAX SAFE INTEGER, deci un ID trimis ca un număr JSON ajunge în browser cu cifre mici rotunjite departe și fiecare Privirea făcută cu ea ratează. 163 de răspunsuri ale handler-ului au introdus org-uri lungi brute și id-uri pentru membri Maps ad-hoc, deci acest lucru nu a fost ceva DTO-de-DTO lucru ar putea închide. Motivul pentru care a rămas deschis este că fix evident ia platforma în jos. Harta care servește răspunsuri este aceeași fasole KSessionService scrie harta de sesiune *** Redis with, and ids are read back out of that map by ((Number) ....longValue() -- 65 ori în acest serviciu, și din nou în DocsService, MediaService și servicii de conversie; care citeşte aceeaşi încărcătură. Citează Long pe fasolea aia şi toate aruncările alea. Deci regula este atașată la convertoarele de mesaje MVC în schimb, pe o copie. Răspunsurile obţin ea; sesiuni, editori NATS și clienții de serviciu-la-service păstrează harta numerică au avut întotdeauna. De asemenea, nu este o pătură Long - > String. Long nu este un sinonim pentru ID aici: epoca milis privind securitatea ROLEDTO și modelul de ramură și de securitate DTO, LeadIntakeEndpointDTO contoare, Page.getTotalElemente (), dimensiuni și durate octeți sunt toate Longs browserul are aritmetica și noua dată() on, și cele mai multe ajung în interiorul Hărți în cazul în care un mix-in nu are cheie de care să mă ataşez. Serializatorul comută valoarea în schimb: deasupra intervalului de siguranţă JS scrie un şir, sub el un număr. Fiecare unic rowid este deasupra, de fiecare dată când marca, conta Și dimensiunea este mai mică, și câmpurile nimeni nu a clasificat încă sunt tratate de aceeași regulă. Verificat împotriva colegilor care citesc aceste răspunsuri: KamoJwtService și DavauthFilter deja accepta fie forma (instanța numărului? ...: Long.parseLong(...)).

  20. · kamo-login

    Se înlocuiește alerta stoc cu o placă de stare animată

    Mesajele de conectare ("Login succes! Redirecţionez... numele de utilizator și/sau parola.") a folosit Alerta implicită a MUI, a cărui umplere pastel plus Se potrivesc cu textul pastel citit ca generic împotriva cardului de conectare din sticlă. StatusMessage inversează formula: o placă îngheţată aproape albă în aceeaşi familie de sticlă ca card, cu culoarea de severitate concentrată într-o singură pictogramă cip, o spălare care dispare înainte de text, o linie a părului și un moale halo. Cerneală stă aproape negru cu o șoaptă a accentului amestecat în, așa că păstrează contrast faţă de orice org - culoare primară. Mesaje neutre/info împrumută Primar Org lui în loc de un albastru stoc. Mișcarea este o intrare orchestrată -- placa izvorăște, pictograma atrage Propriul său accident vascular cerebral, și un singur speculant subliniază mătură peste. adaugă un fir de păr de călătorie pentru munca încă în zbor, cu fir la existente susţinând-o. Erorile obţin un impuls scurt. Preferă ca mişcarea redusă să se prăbuşească într-un mod simplu. Eroare anunță ca rol="alert"/asertiv, orice altceva rămâne politicos. Aplicat la login, recupera, resetare-parola și pagini de eroare OAuth.

  21. · kamo-marketing

    Adaugă sigiliul aniversar de 25 de ani

    Două plasări, ambele alese pentru locul unde se face deja cererea: Footer În întreaga locație, grupate cu marca made-in ca un alt semn de încredere. În jur de 168px, deschiderea secţiunii misiune. Acea pagină este unde Istoria de 25 de ani este argumentul mai degrabă decât o notă de trecere. Nu la eroul de acasă: acel titlu a fost doar dezbrăcat înapoi la un deliberat efect, și un medalion de aur alături de ea ar anula reținerea. O componentă aniversarBadge în spatele atât, astfel încât bunul, textul său Alt, și anul în care comemorează retragerea dintr-un singur dosar. Sursa PNG a fost 2.4 MB la 1254px. Redimensionate la 512px și codificate la WebP-l este 95 KB, și din moment ce următoarea / imaginea optimizarea este pe, ceea ce navele de fapt este un AVIF derivat per plasare: 8.3 KB pentru subsol la 2x, 35 KB pentru aproximativ.

  22. · kamo-marketing

    Arată gama de drepturi de autor 2001 și anul de încorporare

    Renders "© 2001: <year> KamoCRM. KamoCRM Inc. infiintat in 2025. Toate drepturile rezervat." Gama de start este hard-codat lângă dinamica de sfârșit de an, mai degrabă Decât să trăieşti în şirul tradus, astfel încât nici un loc nu-l poate deteriora.

  23. · kamo-marketing

    Adaugă integrarea şedinţei şi a salarizării

    Zoom şi Microsoft Teams pentru întâlniri, şi cei zece vânzători de salarizare Forţa de muncă Acum, BambusHR, Dayforce, Gusto, Paychex Flex, Paycor, Paylocity, Rippling, UKG, Workday. 33 integrări la 45, cu un nou Payroll & HR categoria şi video Conferinţa promovată lângă Voice. Fiecare pagină reflectă ceea ce furnizorul său pune efectiv în aplicare mai degrabă decât un șablon uniform. Paylocity nu are calendar pe perioada de plată sau solduri PTO; Dayforce nu are calendar pe perioada de plată și nici Paychex, nici Rippling împinge alocarea muncii, astfel încât nici una dintre aceste pagini pretinde altfel; povestea auth diferă și de fiecare vânzător (Oauth for Gusto, Paycor, Rippling and BambusHR, a certificat pentru ADP, un semn de reîmprospătare pentru ziua de lucru, conturi de servicii pentru UKG și Dayforce) și fiecare flux de configurare spune așa. Logo-urile sunt activele vânzătorilor de la kamo-internalul public/logo/{întâlnire, plată}. Setul de salarizare este WORD Marks care rulează de la 0.72:1 (Forţa de zi) la 6.2:1 (Paychex): redate în placa pătrată logo-urile pictograma de utilizare, un semn 6:1 vine Câţiva pixeli înalţi. Integrarea poartă acum intrinsecul activului logoWidth/logoHeight, și în cazul în care acestea sunt stabilite cartela hub și pagina de detaliu redă la o înălțime fixă cu lățimea automată pe o placă care crește pentru a se potrivi același kamo-intern fix făcut pentru aceleași active. Sigle pătrate sunt Neatins. Metadatele Hub au numit doar vechile cinci categorii și codate hard "31 native integrări"; acoperă acum întâlnirile și salariile și numără registrul.

  24. · kamo-marketing

    Numără aplicațiile și integrările separat cu numere reale

    "Apps & Integrations" a fost o tigla citind 31+. Este acum doi, fiecare cu un figura care poate fi re-derivată mai degrabă decât estimată: Aplicații 64 Integrari 64 Contul de integrare vine din registrele furnizorului (AiProviderType, BulkTextProviderType, SocialProviderType, VoipProviderType, IdentityProviderType, RetailProviderType, MlosIntegration) plus statul de plată, sedinta si adaptoarele de inchidere MLOS. Intrările enum cu nimic în spatele lor sunt exclus, astfel încât 18 furnizori de calendar neimplementate, Encompass și Xbox face Nu contează. Ambele cifre sunt întreţinute manual; comentariul înregistrează cum să Reverifică-le. Patru dale au nevoie de o grilă patru-up, astfel încât rândul statistici acum merge 1/2/4 peste Punctele de oprire cu padding gresie și de tip scalate pentru a se potrivi.

  25. · kamolos

    Activează ProxyHmacFilter

    los.proxy-hmac.enabled a fost în scădere până la fals implicit de la acest serviciu implementat, astfel ProxyHmacFilter a existat și nu a fugit. X-Org-Id antetul fiecare interogare telescopică în acest serviciu trusturi Live multi-tenant împrumut API. În condiţii de siguranţă pentru a activa acum, deoarece pasul 1 a aterizat primul: kamo-internal montans aceleaşi los-proxy-hmac secret și pod de funcționare este semnarea, verificat înainte de acest lucru a fost impins. Ordin invers ar fi respins orice cerere de împrumut de pe platformă. Verificat înainte de flipping-l: - filtrul ocoleşte / acţionează/**, astfel încât sondele de pornire şi pregătire încă Pas. Dacă i-ar fi prins, capsula n-ar fi fost niciodată pregătită şi asta ar fi mers. S-a întors. - it bypasses /api/los/webhooks /**, so Stripe continuă să lucreze după semnătura lui Stripe. - kamo-internal este singurul apelant al kamowslos-service, astfel încât nu există nici un nesemnat calea de serviciu lăsată în urmă. Acest lucru nu înlocuiește verificările org în LoanService și LoanScope. Ridica ceea ce X-Org-Id înseamnă de la "un antet cineva trimis" la "un antet acest proxy trimis," în timp ce cei care decid dacă orga numită poate vedea rândul. Apărare în profunzime: nici nu este suficient singur.

  26. · kamo-internal

    Semnează antetele de identitate proxy

    Kamolos are încredere în X-Org-Id şi X-Membru-Id de la acest proxy. ProxyHmacFilter există pentru a dovedi aceste antete într-adevăr a venit de aici, dar este dezactivat în producție: implementarea nu stabilește LOS PROXY HMAC ENABLED și nici un secret comun a existat până acum, așa că los.proxy-hmac.enabled cade prin fals și antetele sunt nesemnate pe un viu împrumut multi-tenant API cu 15 credite reale pe ea. Traseul LOS deja calculează semnătura LOS PROXY HMAC SECRET lipseşte. Montarea noului secret los-proxy-hmac este ceea ce Porneşte semnalul. Partea asta merge prima intenţionat. KamoLOS ignoră semnătura până la propria sa semnătură los.proxy-hmac.enabled este adevărat, astfel încât această comitere nu schimbă niciun comportament oriunde; doar începe atașarea X-Proxy-Signature și X-Proxy-Timestamp. Făcând-o în alt mod ? validarea înainte de semnare ar respinge fiecare cerere de împrumut de pe platformă. Pasul 2 stabilește LOS PROXY HMAC ENABLED=adevărat și același secret privind desfășurarea kamowslos, după această lansare este confirmată.

  27. · SecurityService

    Rezolva logo-ul KamoMeet suprapune în config.json

    KamoMeet este o furculita Meet fara acces la OrgContext, asa ca invata org branding din tema config.json acest serviciu coace. Orgul stochează un Overlay TOKEN; acest lucru îl rezolvă împotriva paleta propria orga și scrie Hexul terminat ca kamomeet Logo OverlayColor. Rezolvarea aici mai degrabă decât transporta masa treisprezece-token în furculita este punctul: că repo poartă deja slideshow-ul de fundal org ca unul din nouă copii independente, iar o a doua astfel de masă ar pluti la fel Ba da. Coacerea unei culori rezolvate nu este, de asemenea, "hex înghețat" această caracteristică evită în baza de date modificări de culoare incluse. Potrivirea prefixului este mai degrabă explicită decât "nu secondary means PRIMARY." A test prins ceea ce a făcut versiunea în vrac: #FF0000" este exact atâta timp cât "PRIMARY," așa că a lăsat un pas gol și a rezolvat la baza primară culoare nimeni nu a ales, sosirea pe un ecran nimeni nu pe platforma vreodata Uită-te la el. Jetoane necunoscute și nuanțe nesetate sunt omise din config.json În întregime, aşa scrie fiecare client "fără acoperire." Tabelul jeton trebuie să rămână în pas cu logo-ul kamo-internal Overlay.ts; Testele sunt ceea ce face o divergență un eșec construi.

  28. · InitializerService

    Adaugă coloana kamomeet logo overlay

    A treia suprafaţă: ecranul de pre-întâlnire KamoMeet. Aceeaşi formă ca şi alte două Paznicul în derivă avea nevoie doar de numele său de câmp, deoarece iterează câmpurile suprapuse ale entității, în loc să le numească pe rând. Aceasta este întregul punct de a fi scris în acest fel.

  29. · kamo-shared-library

    Carry the KamoMeet logo overlay on Organization

    A treia și ultima suprafață suprapusă, același vocabular ca cei doi frați ai săi, plus ramura sa în calea de plasture generic. Acesta este diferit în cazul în care acesta se termină. Pagina principală și ecranul de încărcare citeste-le semnul direct de pe OrgContext; KamoMeet este o furculita Meet cu nr. acces la asta, aşa că Serviciul de Securitate rezolvă acest semn împotriva orgului paleta și coace culoarea finisată în tematica config.json furculita Aduce deja. Prin urmare, simbolul nu părăsește niciodată platforma și Treisprezece opțiuni există într-un singur loc mai degrabă decât să fie copiate într-o furculiță care a acumulat deja nouă copii independente ale fundalului Slideshow. Null se rezolvă la NONE, astfel încât fiecare org existent începe cu nici o suprapunere. ă coloana kamomeet logo overlay este deja aplicată (KamoInitializer).

  30. · kamo-internal

    O suprapunere logo pentru ecranul de pre-întâlnire KamoMeets

    A treia şi ultima suprafaţă, oferite alături de celelalte două opțiuni, propriul set, implicit No Overlay. Ascuns cu excepția cazului în care org poate ajunge efectiv la acel ecran: aplicația Reuniuni pornit și KamoMeets ales ca furnizor. Orga la zoom sau echipe nu redă niciodată un ecran de pre-întâlnire KamoMeets și o org fără aplicație Niciodată nu deschide unul, astfel încât câmpul ar fi un control conectat la nimic. A stocat valoarea supraviețuiește în timp ce ascuns, astfel încât de cotitură Reuniunile înapoi pe restabili Alegerea în loc de a o curăţa în tăcere. Furnizorul este adus o dată pe munte. Până când răspunde câmpul rămâne ascuns, așa că pare mai degrabă decât pâlpâind departe; o căutare eșuată rezolvă la KAMO MEET, care este ceea ce face platforma pentru un org fără furnizor rândul cererea a eșuat. Spre deosebire de cei doi fraţi, acest semn nu ajunge niciodată la suprafaţa pe care o conduce. KamoMeet este o furculita Meet cu nici un acces la OrgContext, astfel încât serviciul de securitate rezolva umbra si coace culoarea finisata in acea tema Config. Json. Doar setările de aici citesc semnul.

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