Add public known-aliases endpoint for kamo-nowww build-time bake-in
Add analytics → analytics text replacement in changelog sanitization
Redact tokens ≥32 chars in changelog sanitization
Any word (run of non-whitespace) that is 32 characters or longer is replaced with **************** before titles and descriptions are sent to the translation se...
Generate TXT verification token on domain create, check in verify-dns
- createDomain: generate 32-char UUID token and store via setVerificationToken - verifyDns: check _kamo-verify TXT record for kamo-site-verification=<token> - T...
Update required aliases — add app, capcha, docs, sign; remove legacy
Bound translation concurrency to 3 threads to prevent DB pool exhaustion
Unbounded @Async (SimpleAsyncTaskExecutor) created 50 threads simultaneously when the retry scheduler fired, each opening a DB transaction and draining HikariCP...
Three bugs preventing changelog translations from being saved
1. **************** was discarding events because handleWebhook() had no @Transactional — save + publishEvent() ran outside any transaction. Add @Transact...
Add /setup/dns backend — one-domain enforcement, SSL probe, new aliases
- Enforce one custom domain per org in POST /api/security/domains - Add capcha, docs, sign to standard aliases; remove legacy aliases - Update verify-dns to tra...
Apply word replacement at translation time, not ingestion
Original text is preserved in the DB so that adding a new rule and re-triggering translation is all that is needed to update existing records. Changes: - Chang...
Move changelog word replacement to backend before translation
Text replacements (Docs→Docs, Meet→Meet, etc.) and secret name redaction (K8s secret names→***) were previously applied client-side in ChangelogClient.tsx, mean...
Check TeamMember.isOrganizationOwner flag for owner detection in my-networks endpoint
The previous check only looked at org.getOwner() (user_id_owner column) which can be null for existing orgs. The authoritative owner flag lives on the TeamMembe...
Include parent org in /org/domain response
The getOrganizationByDomain endpoint manually builds a response map but never included the parent organization reference. This prevented the frontend from knowi...
Don't let null translated description hide the English original in changelog
The translation lookup for non-en locales was unconditionally overwriting description with **************** which is null when: - the translation was saved befo...
Utilizați metode de repo bazate pe UUID pentru traducerile planului de abonament, evitați sarcina leneș în programator
Adăugați traducere asinc pentru changelog și planuri de abonament, adăugați API-uri publice locale
Adăugați grupul de convailități pentru a preveni fluxurile de lucru duplicate
Atunci când o apăsare declanşează un flux de lucru şi fluxul de lucru display este, de asemenea, concediat (sau două împingeri sosesc în succesiune rapidă), amb...
Adăugați managementul aportului de plumb și publicul primește controlere
Adaugă două controlere pentru sistemul automat de admisie a plumbului: - LeadIntakeController: CRUD autentificat pentru criteriile finale de administrare, domen...
Utilizați PST miezul nopții goale (fără conversie UTC) pentru a conta modificările de astăzi
Data la care depozitul este introdus în UTC și se utilizează fereastra de rulare de 24 de ore pentru numărul de astăzi
Adaugă GET Nu-ţi face griji. Obiectivul final utilizând numărul de SQL
Correct security level column reference in login SQL
security level este pe masa membrilor (m), nu membru echipă membru (e). Numele greşit e.Securitate nivel a determinat întregul SQL să eşueze în tăcere, așa că m...
Stocare membruType în sesiune Redis la autentificare
Adaugă cazul în care E.D. nu este NULL, atunci "TEAM MINTIȚI-VĂ" autentificarea SQL interogare și trece rezultatul prin creareaSesssion în Redis; astfel încât f...
Elimina ImagingController și fasole/imagine mutat la Transformareservice și DocsService
Încarcă criteriile de evaluare în direct în TransformationService la /api/conversion/imaging/*. Toate obiectivele de management și de descărcare trăiesc acum în...
Generație de miniatură delegată la ConversieServicii, elimina dependența de PDFBox
generați șiStoreThumbnails POSTs acum PDF convertit la serviciul de conversie - Nu. Unzips răspunsul, stochează fiecare Degetul mare p {n}.png în MinIO, și publ...
Generație sincronă per pagină miniatură în timpul uploadului șablonului cu progres granular WS
- Adăugați dependență PDFBox la pom.xml - După stocarea PDF convertit, redați toate paginile prin PDFRenderer și încărcați fiecare ca {id} thumb p{n}.png - Even...
Adaugă GET - Nu. Obiectivul final pentru a servi unghiile PNG per pagină
Elimină validarea secretă a webhook-ului redundant, APIService se ocupă de HMAC auth
Eliminați KamoGamesRoboCluck din proiectele publice changelog, adăugați scripturi backfill
Se adaugă /api/changelog/public/stats obiectivul pentru numărul total pe tip și proiect
Truncate comite titluri mai mari de 500 de chars pentru a preveni introducerea de eșecuri DB
Adăugați validarea secretă a webhook pentru a modifica obiectivul jurnal
Apărare în profunzime: validează *** antetul pe SecurityService în plus față de validarea APIService gateway.
Configurează proiectele publice de schimb cu toate cele 23 de programe Forgejo
Adaugă nivelul de acces al membrilor și criteriile de evaluare a statutului proprietarului
Adaugă GET and PACTCH *************** obiective pentru citirea și actualizarea nivelurilor de acces cu aplicarea deplină a permisiunii. Actualizați crearea orga...
Adăugați etape de proces de conversie granulare cu 8 actualizări distincte WebSocket
Etape: descărcare (0-15%) → pregătire (15-20%) → conversie (20-65%) → verificare (65-75%) → depozitare (75-90%) → finalizarea (90-100%) → completă
Adăugați logare extinsă la fluxul de conversie sincron, fixați căutarea găleată
Utilizați img.getAssocId() pentru găleată în loc de variabila assocType locale. Adăugați pas cu pas logare pentru descărcare, apel de conversie, și rezultatul.
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
