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.

1 curtida

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.