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...
Serializzare org e gli ID dei membri come stringhe nel endpoint my-networks per prevenire la perdita di precisione JS
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...
Rimuovi tradurre config da application.yml — appartiene a k8s/configmap.yaml
Utilizzare metodi di repo basati su UUID per le traduzioni del piano di abbonamento, evitare lazy-load in scheduler
Aggiungi una traduzione asincrona per i piani di changelog e abbonamento, aggiungi le API pubbliche locali-consapevoli
Aggiungere il gruppo di concurrency per evitare doppioni di flusso di lavoro
Quando una spinta innesca un flusso di lavoro e workflow dispatch viene anche licenziato (o due spinte arrivano in rapida successione), entrambe le rune eseguir...
Aggiungi TranslateService alla lista dei progetti pubblici changelog
Aggiungere la gestione dell'assunzione di piombo e ricevere i controller pubblici
Aggiunge due controller per il sistema automatizzato di assunzione di piombo: - LeadIntakeController: autenticato CRUD per endpoint di aspirazione, campo mappat...
Utilizzare nudo PST mezzanotte (nessuna conversione UTC) per contare le modifiche di oggi
Data di depositoCommesso in UTC e utilizzare la la laminazione 24h finestra per il conte di oggi
Corretto il riferimento della colonna security level nel login SQL
security level è sulla tabella dei membri (m), non membro team member (e). L'alias e.security level sbagliato ha causato l'intero SQL a fallire silenziosamente,...
Membri StoreType in Redis sessione al login
Aggiunge CASE WHEN e.id non è NULL THEN 'TEAM MEMBER' ELSE 'MEMBER' END a il login query SQL e passa il risultato attraverso creareSession in Redis, così fronte...
Rimuovere ImagingController e fagioli/imaging - spostati a ConversionService e DocsService
I endpoint di caricamento ora vivono in ConversionService a /api/conversion/imaging/*. Tutti i endpoint di gestione e download ora vivono in DocsService a /api/...
Eliminare la generazione di miniature per ConversionService, rimuovere la dipendenza PDFBox
generareAndStoreThumbnails ora POSTs il PDF convertito a ConversionService E' il momento giusto. destare la risposta, memorizza ogni thumb p{n}.png in MinIO, e ...
Generazione di miniature sincrona per pagina durante il caricamento del modello con progresso granulare WS
- Aggiungi dipendenza PDFBox da pom.xml - Dopo aver memorizzato PDF convertito, rendere tutte le pagine tramite PDFRenderer e caricare ciascuna come {id} thumb ...
Aggiungi GET Non e' vero. endpoint per servire le miniature PNG per pagina
Rimuovere la convalida segreta webhook ridondante, APIService gestisce HMAC auth
Rimuovere KamoGamesRoboCluck dai progetti pubblici changelog, aggiungere script di backfill
Aggiungi /api/changelog/public/stats endpoint per conteggi aggregati per tipo e progetto
Truncate i titoli di commit superiori a 500 chars per evitare guasti di inserto DB
Aggiungere la convalida segreta webhook per changelog endpoint
Difesa-in-profondità: convalida *** intestazione sul lato SecurityService oltre alla validazione del gateway APIService.
Aggiungi il livello di accesso dei membri e gli endpoint dello stato del proprietario
Aggiungi GET e PATCH. endpoints per la lettura e l'aggiornamento dei livelli di accesso con l'applicazione completa del permesso. Creazione di organizzazione di...
Aggiungere fasi di avanzamento di conversione granulare con 8 aggiornamenti WebSocket distinti
Stage: download (0-15%) → preparazione (15-20%) → conversione (20-65%) → verifica (65-75%) → memorizzazione (75-90%) → finalizzazione (90-100%) → completa
Add extensive logging to synchronous conversion flow, fix bucket lookup
Use img.getAssocId() for bucket instead of local assocType variable. Add step-by-step logging for download, conversion call, and result.
Come quello che vedi la spedizione?
Tutto questo arriva nel vostro spazio di lavoro da solo. Iniziare sul piano gratuito e leggere di nuovo questa pagina in un mese.
