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...
Serializar org e IDs de membros como strings no endpoint das minhas redes para evitar perda de precisão 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...
Remover translate config do application.yml — pertence ao k8s/configmap.yaml
Adicionar a configuração do serviço de tradução ao mapa de configuração do K8s
Use métodos de repo baseados em UUID para traduções do plano de assinatura, evite carregar preguiçoso no agendador
Adicione async tradução para Changelog e planos de assinatura, adicione APIs públicas locais
Adicionar grupo de concorrência para evitar a execução de fluxos de trabalho duplicados
Quando um push ativa um fluxo de trabalho e o workflow dispatch também é ativado (ou dois pushs chegam em rápida sucessão), ambas as execuções iriam executar si...
Adicionar gestão de ingestão de chumbo e controladores de recepção pública
Adiciona dois controladores para o sistema automatizado de admissão de chumbo: - LeadIntakeController: CRUD autenticado para endpoints de entrada, campo mapeame...
Use a meia-noite PST nua (sem conversão UTC) para contar as alterações de hoje
Data de armazenamentoComprometida em UTC e usar janela 24h rolando para a contagem de hoje
Adicionar GET **************************** endpoint usando contagem SQL
Correct security level column reference in login SQL
security level está na tabela de membros (m), não member team member (e). O alias errado e.security level fez com que todo o SQL falhasse silenciosamente, então...
Membro da lojaTipo na sessão Redis no login
Adiciona o caso quando e.id não é nulo, em seguida, 'team member' outro 'member' fim para a consulta SQL de login e passa o resultado através de createSession e...
Remova ImagingController e feijão / imaging - movido para ConversionService e DocsService
Enviar endpoints agora ao vivo em ConversionService em /api/conversion/imaging/*. Todos os terminais de gerenciamento e download agora vivem no DocsService em /...
Delegar a geração de miniaturas para ConversionService, remover a dependência do PDFBox
gerarAndStoreThumbnails agora POSTs o PDF convertido para ConversionService **************************** abre a resposta, armazena cada thumb p{n}.png em MinIO,...
Geração de miniaturas sincronizadas por página durante o upload do modelo com progresso granular WS
- Adicionar dependência PDFBox para pom.xml - Depois de armazenar PDF convertido, renderizar todas as páginas via PDFRenderer e enviar cada como {id} thumb p{n}...
Adicionar GET **************************** Endpoint para servir as miniaturas de PNG por página
Remover validação secreta do webhook redundante, APIService lida com a autenticação HMAC
Remover KamoGamesRoboCluck de projetos públicos changelog, adicionar scripts de backfill
Adicionar /api/changelog/public/stats endpoint para contagem de agregados por tipo e projeto
Truncar títulos de commit superiores a 500 caracteres para evitar falhas de inserção DB
Adicionar validação secreta do webhook ao endpoint do changelog
Defesa em profundidade: valida o cabeçalho *** no SegurançaService lado além de validação de gateway APIService.
Configurar projetos públicos changelog com todos os 23 repos Forgejo
Adicionar nível de acesso dos membros e parâmetros de status dos proprietários
Adicione GET e PATCH Endpoints para leitura e atualização dos níveis de acesso com autorização total. Atualizar criação de organização para usar createOrganizaç...
Add granular conversion progress stages with 8 distinct WebSocket updates
Stages: downloading (0-15%) → preparing (15-20%) → converting (20-65%) → verifying (65-75%) → storing (75-90%) → finalizing (90-100%) → complete
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.
Como o que vês no transporte?
Tudo isso chega em seu espaço de trabalho por conta própria. Comece no plano gratuito e leia esta página novamente em um mês.
