Minimum_discourse_version falha na verificação em builds -latest (ex.: 2026.8.0-latest.1)

Temas/componentes no canal padrão latest são desativados automaticamente, e os autores de temas precisam usar soluções de contorno pouco intuitivas.

Encontrei isso aqui: Featured Topics - #76 by cogdog É bastante contra-intuitivo que todas as versões mínimas precisem usar um formato como xxx.x.999 abaixo da versão atual com a qual deveriam corresponder.

Plataforma

  • Discourse auto-hospedado no branch latest
  • Versão do Discourse: 2026.8.0-latest.1
  • Afeta: criação de temas/componentes de tema (metadados do about.json) e verificações de compatibilidade de temas

Descrição

Resultado Real:
Um tema com "minimum_discourse_version": "2026.8.0" em seu about.json é considerado incompatível e desativado automaticamente quando o site executa o build -latest 2026.8.0-latest.1. A única maneira de manter o tema ativado é definir uma versão menor, como "minimum_discourse_version": "2026.7.999".

Um problema semelhante ocorre ao importar um tema que define minimum_discourse_version com um valor no estilo -latest (ex.: 2025.12.0-latest), que é rejeitado como inválido — veja o relatório existente: 主题配置文件中minimum_discourse_version不支持日期化版本格式

Resultado Esperado:
Como 2026.8.0-latest.1 é um build -latest da linha de lançamento 2026.8.0, ele deve satisfazer um requisito mínimo de 2026.8.0. Builds latest são mais novos que a versão lançada correspondente, e não mais antigos.

Mas uma versão -latest é uma versão anterior ao lançamento oficial dessa versão. É nisso que as entradas de compatibilidade se baseiam há anos.

A forma como você lidou com isso usando <2026.7.999 parece não intuitiva, mas por que você não especificou <2026.8.0-latest?

Se eu preciso de um commit específico que foi adicionado durante o desenvolvimento da 2026.8, posso ter certeza de que todos que usam o lançamento 2026.8 o possuem, mas não posso ter certeza de que todos na versão 2026.8-latest o tenham. Talvez a última atualização deles tenha ocorrido antes que o commit específico fosse adicionado. Então, se a 2026.8 incluísse a 2026.8-latest por padrão, as coisas poderiam quebrar. Sinto que é melhor o administrador ter que esperar algumas semanas antes de poder usar/atualizar um tema do que correr o risco de as coisas quebrarem porque o commit necessário estava ausente.

4 Curtiram

Sim, isso está correto - 2026.8.0-latest é uma versão menor que 2026.8.0. Você pode confirmar com um parser Semver. Por exemplo, em ruby:

irb(main):001> Gem::Version.new("2026.8.0-latest") < Gem::Version.new("2026.8.0")
=> true

Devemos corrigir isso. Os autores de temas devem poder fazer o seguinte:

minimumDiscourseVersion: "2026.8.0-latest"

Embora, como @moin mencionou, isso possa ser arriscado, já que -latest se refere a uma grande quantidade de commits diferentes. Então, em um mundo perfeito, deveríamos esperar até o próximo lançamento antes de depender de um novo recurso do core em um tema/plugin.

2 Curtiram

Sinto que é um pouco difícil de entender e que preciso usar essa abordagem x.999 também no arquivo de compatibilidade. Por exemplo, é assim que está agora no meu componente:

2026.7.999: 93b5b22
2026.4.999: 0321b6d

Parece que um recurso foi adicionado na 2026.5.0 e, para corresponder a isso, preciso colocar 2026.4.999?

1 Curtiu

Não usei isso recentemente, mas os exemplos da equipe do Discourse geralmente não usavam a versão anterior com .999, e sim a versão atual com o sufixo -latest

1 Curtiu

No passado, sim, por isso alguns temas/plugins antigos ainda fazem isso (e acho que humanos/robôs continuam a copiar o padrão legado).

Mas, nos dias de hoje, você pode usar os indicadores < ou > no lado esquerdo do arquivo de compatibilidade. Assim, você pode fazer:

<2026.7.0-latest: 93b5b22

Mas também, nos dias de hoje, tentamos evitar o uso do arquivo de compatibilidade para qualquer finalidade. Em vez disso, dependemos dos ramos automáticos d-compat/* para cuidar da compatibilidade com versões anteriores.

A documentação sobre os padrões antigo e novo está aqui:

2 Curtiram
4 Curtiram

Este tópico foi fechado automaticamente após 44 horas. Novas respostas não são mais permitidas.