1 pontos por GN⁺ 4 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • 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

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_DOMAINS e ALLOW_LOCALNETWORKS não eram aplicados corretamente em alguns casos excepcionais
    • Foi aplicado http.followRedirects=false para 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
  • 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 :3000 a 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 em REVERSE_PROXY_TRUSTED_PROXIES sob [security]

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 Shift pressionado, 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ó
  • 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 blame tradicional podia localizar a posição incorretamente quando o código alvo do comentário era movido em commits posteriores
    • Internamente, agora é usado git blame --reverse para 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

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:repository podem removê-los
    • Expressões cron agora também suportam a sintaxe de fuso horário no estilo do GitHub, além do formato CRON_TZ já 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/run agora retorna informações da execução de workflow à qual o token automático FORGEJO_TOKEN pertence
  • 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-test são gerados a partir das mudanças mais recentes no branch de desenvolvimento v16.0/forgejo e implantados na instância de testes

1 comentários

 
GN⁺ 4 시간 전
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 post

    • Estou vendo a mesma coisa e queria saber o motivo
    • No momento, o link suggest aparece para mim neste post e na maioria dos posts da página inicial, e também não há nenhum registro de ação na conta em https://lobste.rs/moderations. Parece ser um bug
  • Obrigado 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 $JOB nã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 referindo

  • Estou 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