Lançado o Forgejo v16.0 — notificações, revisão de PRs e expansão de recursos do Actions
(forgejo.org)- Lançado em 16 de julho de 2026, o Forgejo v16.0 amplia o controle de notificações por repositório, o progresso de migração, a revisão de pull requests, além de recursos de Actions e API
- O bloqueio de redirecionamentos HTTP em espelhos Git reforça a defesa contra SSRF, e repositórios remotos cujo nome ou proprietário tenham mudado exigem atualização manual do endereço do espelho
- Se você usa autenticação de proxy reverso em contêineres, agora é necessário informar os intervalos de endereços de proxies confiáveis; algumas configurações antigas com a porta web padrão exposta a redes não confiáveis não funcionarão mais
- Foram adicionados revisão em múltiplas linhas, rastreamento da posição de comentários com base em
git blame --reverse, prioridade de execução no Actions, Authorized Integrations baseadas em JWT e APIs para logs, artefatos e cancelamento de workflows - A v16.0 é uma versão não LTS, com suporte até 29 de outubro de 2026, e exige backup completo e revisão de todas as mudanças de compatibilidade antes do upgrade
Lançamento e upgrade
- O Forgejo v16.0 foi lançado em 16 de julho de 2026 como uma plataforma de colaboração de código self-hosted leve e desenvolvida pela comunidade
- A lista completa de mudanças está disponível nas notas de lançamento, e também há uma instância de testes dedicada
- Antes do upgrade, é preciso criar um backup completo seguindo o guia de upgrade e verificar todas as mudanças de compatibilidade
- O upgrade é feito substituindo o binário ou a imagem de contêiner por uma versão compatível com a v16.0
- Estão disponíveis o binário do Forgejo v16.0.0 e a imagem de contêiner
- Usando a tag
16.0do contêiner, você pode acompanhar automaticamente as releases de patch16.0.Ymais recentes
Mudanças de compatibilidade e reforços de segurança
-
Defesa contra SSRF em espelhos Git
- Foi corrigido um problema em que
[migrations].ALLOWED_DOMAINS,LOCKED_DOMAINSeALLOW_LOCALNETWORKSnão eram aplicados corretamente em alguns casos excepcionais - Foi aplicado
http.followRedirects=falsepara impedir que o Git seguisse redirecionamentos durante o acesso a repositórios HTTP(S) e burlasse as configurações - Se um repositório remoto do Forgejo teve o nome alterado ou foi transferido para um novo proprietário, o redirecionamento será tratado como erro, então espelhos existentes precisam ser atualizados para o novo endereço do repositório
- Foi corrigido um problema em que
-
Remoção da função de excluir EXIF de avatares
- A função de remoção de metadados EXIF de imagens de avatar, adicionada na v13.0, foi removida por um problema de licença relacionado ao uso incorreto de uma biblioteca AGPL
- Enquanto uma implementação alternativa é avaliada, o recurso foi removido para restabelecer a conformidade de licença
-
Configuração de proxies confiáveis em contêineres
- Os contêineres Forgejo existentes usavam
REVERSE_PROXY_TRUSTED_PROXIES = *como valor padrão - Quando todas as condições abaixo eram atendidas, um usuário não autorizado podia se passar por outro usando o cabeçalho
X-WebAuth-User- Implantação em contêiner com Docker ou Podman
- Configuração de
[service].ENABLE_REVERSE_PROXY_AUTHENTICATION=true - Manutenção do valor padrão
*em[security].REVERSE_PROXY_TRUSTED_PROXIES - Exposição da porta web padrão
:3000a uma rede não confiável, permitindo contornar o proxy reverso de autenticação
- A v16 não segue mais a configuração de proxy reverso nesse tipo de cenário, então agora é necessário informar os intervalos de endereços dos proxies confiáveis por onde o tráfego entra
- Um exemplo com variável de ambiente é
FORGEJO__security__REVERSE_PROXY_TRUSTED_PROXIES=127.0.0.0/8,::1/128,172.16.X.X/X - No
app.ini, configure a mesma lista de endereços emREVERSE_PROXY_TRUSTED_PROXIESsob[security]
- Os contêineres Forgejo existentes usavam
Usabilidade de repositórios e organizações
- Agora é possível assinar notificações de repositório em três categorias: Issues, Pull requests e Releases
- O backend de notificações redesenhado servirá de base para suportar configurações mais granulares no futuro
- O objetivo é dar ao usuário mais controle sobre notificações sem expor opções demais
- A tela de migração de repositório agora mostra o progresso da transferência de issues e pull requests da origem em lotes, permitindo verificar se tarefas longas travaram
- O tamanho padrão do lote é 45, e o número mínimo de itens para exibir progresso também é 45
- Dois avatares reduzidos são gerados em locais onde o tamanho completo não é necessário, reduzindo uso de banda e tempo de carregamento
- Na lista de membros da organização, agora é possível abrir uma caixa de diálogo diretamente para adicionar novos membros e atribuí-los a vários times de uma vez
- O Git agora verifica e rejeita várias inconsistências em objetos recebidos para evitar que o repositório entre em um estado inconsistente ou corrompido
- O repositório de backend não gera mais arquivos de hooks de exemplo do Git, e hooks Git compartilhados pela instância deixam de ser duplicados por repositório e passam a ficar armazenados centralmente
- Isso economiza cerca de 20KiB por repositório
- Arquivos de exemplo e duplicados gerados automaticamente em repositórios existentes podem ser removidos conforme o guia de upgrade
- Foi corrigido um bug presente desde a v7.0.0 que impedia novos usuários de verem a orientação para ativar mais recursos de repositório, e a configuração para desativar esse aviso também ficou mais fácil de encontrar
- O aviso “Enable more” só aparecerá quando um administrador ou o dono do repositório tiver desativado explicitamente alguns recursos do repositório
Pull requests e revisão de código
- A lista de commits na página de pull request foi redesenhada com um novo layout mais legível e melhor adaptado a diferentes tamanhos de tela
- Por enquanto, a mudança vale apenas para a página de pull request, com expansão gradual planejada para outras telas de lista de commits
- Agora há suporte a revisão em múltiplas linhas, conectando várias linhas alteradas a um único comentário de revisão
- Mantendo
Shiftpressionado, clique no botão de mais ao lado da primeira linha e arraste até a última para vincular as linhas selecionadas a um comentário só
- Mantendo
- Foram corrigidos problemas em que comentários de revisão apareciam no diff errado, na posição errada da tela ou perdiam o vínculo com o diff
- O
git blametradicional podia localizar a posição incorretamente quando o código alvo do comentário era movido em commits posteriores - Internamente, agora é usado
git blame --reversepara rastrear a mudança do código até sua posição atual - A posição dos comentários é calculada com base não apenas no HEAD do pull request atual, mas também no base e head que o revisor realmente está vendo, além do commit do código exibido
- Linhas removidas têm seu ponto de exclusão identificado e também são verificadas na mesma posição do diff atual para confirmar se continuam removidas, antes de posicionar o comentário ou marcá-lo como antigo
- O
Forgejo Actions e integração com JWT
-
Prioridade de execução e gerenciamento de workflows
- É possível marcar manualmente execuções individuais de workflow para prioridade, e o Forgejo Actions as processará antes das execuções normais
- Sempre que possível, o Forgejo avalia diretamente as condições
if, sem enviar o trabalho ao Forgejo Runner, permitindo iniciar execuções mais rapidamente - Execuções de workflow concluídas, assim como logs e artefatos, podem ser removidos pela UI ou pela API HTTP
- Apenas administradores do repositório ou tokens de acesso com permissão
write:repositorypodem removê-los
- Apenas administradores do repositório ou tokens de acesso com permissão
- Expressões
cronagora também suportam a sintaxe de fuso horário no estilo do GitHub, além do formatoCRON_TZjá existente - Verificações puladas, que em versões anteriores eram mostradas como bem-sucedidas, passam a aparecer como skipped a partir da v16
-
Authorized Integrations
- Depois de adicionar na v15 a geração de JWTs para uso por sistemas externos na autenticação, a v16 traz Authorized Integrations para autenticar acesso à API e ao Git do Forgejo com JWT
- Pode ser usado com Forgejo Actions local ou configurado com regras para que o Forgejo valide JWTs arbitrários
- Isso elimina a necessidade de definir um token de acesso estático e substituí-lo no futuro quando for preciso acesso além das permissões normais de
${{ forgejo.token }} - O recurso não expõe meios para que autores de workflow concedam a si próprios permissões inesperadas
- Pode ser usado em vários repositórios Forgejo
- Sistemas externos que atendam aos requisitos técnicos podem acessar diretamente a API e os repositórios Git do Forgejo por meio da Authorized Integration do usuário, sem segredos estáticos entre sistemas
- Exemplos incluem Amazon Web Services, GitHub Actions e GitLab CI/CD
Actions e API de administração
- Foi adicionada uma API para obter logs de execuções completas de workflow ou de jobs individuais
- Há endpoints para listar, baixar e excluir artefatos
- Um endpoint documentado para upload de artefatos continua na lista de trabalhos futuros
- Foi adicionada uma API para cancelar execuções individuais de workflow
/actions/runagora retorna informações da execução de workflow à qual o token automáticoFORGEJO_TOKENpertence- Outras mudanças de API incluem:
- Vários endpoints agora incluem o horário de criação no modelo de organização retornado
- A busca de pull requests agora pode filtrar pelos nomes dos branches base e head
- Administradores da instância podem listar, emitir e excluir tokens de acesso de usuários
- A lista de usuários pode ser filtrada pelo status de 2FA
Período de suporte e builds de teste
- Releases principais saem a cada 3 meses, e releases de patch podem ser distribuídas com mais frequência dependendo da gravidade dos bugs ou correções de segurança incluídos
- A v16.0 é uma versão não LTS, com suporte até 29 de outubro de 2026
- O suporte da v11.0 LTS termina em 16 de julho de 2026
- A v15.0 LTS tem suporte até 15 de julho de 2027
- A v17.0 está prevista para 15 de outubro de 2026, com suporte até 28 de janeiro de 2027
- Builds diários
16.0-testsão gerados a partir das mudanças mais recentes no branch de desenvolvimentov16.0/forgejoe implantados na instância de testes- Estão disponíveis a imagem OCI root, a imagem OCI rootless e o binário
- O nome do build é mantido, mas substituído diariamente por uma nova build
1 comentários
Opiniões no Lobste.rs
@pushcx, para onde foi o link suggest? Eu queria sugerir a tag
vcs, mas agora o link não aparece em nenhum postObrigado a todos os contribuidores, especialmente à equipe de merge. Pessoalmente, tenho orgulho de ter contribuído para a correção de https://forgejo.org/2026-07-release-v16-0/#repository-units-hint
Passei alguns dias configurando e ajustando um Forge pessoal em https://forge.l3x.in e migrando aos poucos do GitHub, e a experiência de hospedar o Forgejo por conta própria foi muito satisfatória; recomendo bastante
Ouvi dizer que o SourceHut também é bom, mas não usei diretamente e, por enquanto, estou focado no Forgejo
Fico feliz em ver o recurso de review em várias linhas e posicionamento de comentários de review. No meu
$JOBnão existe code review, então não estou acostumado, mas ao receber review de patches enviados para projetos livres e de código aberto, já entendi errado várias vezes a que bloco de código um comentário estava se referindoEstou muito animado com as configurações granulares de assinatura. Era um recurso que eu usava no GitHub e senti muita falta no Forgejo
Também desejo há muito tempo, no GitHub, a possibilidade de assinar quando issues e PRs são criados. Assim dá para acompanhar o andamento de projetos para os quais contribuo só de vez em quando sem precisar cancelar manualmente a assinatura de 90% das notificações que não me interessam
Registrei um pedido de recurso no repositório do Forgejo: https://codeberg.org/forgejo/forgejo/issues/13494
Já faz algum tempo que mantenho o Forgejo rodando no meu homelab e estou muito satisfeito. Migrei cerca de 500 repositórios que estavam no Github.com, e o processo quase não trouxe inconvenientes; estou executando o Forgejo e os runners dentro de k8s
O fato de o Forgejo Runner usar a mesma definição de workflow do GitHub Actions foi especialmente prático, e bastou criar os rótulos corretos no runner local
Ainda não decidi se vou deixar o GitHub como somente leitura, apagar tudo ou manter como espelho equivalente. De qualquer forma, agora faço push diretamente para a instância do Forgejo em vez do GitHub, e tudo ficou muito mais rápido, na escala de segundos