Lista de versões inválida em temas do Discourse

Encontrei isso ao atualizar. Bem, já faz um tempo, mas desta vez peguei um log.

[db:default] 'Messages section for sidebar' -  checking...
Invalid version list in /tmp/discourse_theme_c64ff70a4cc7d614d9e88b106805c78f

[db:default] 'Unhide composer fullscreen toggle for tablets' -  checking...
Invalid version list in /tmp/discourse_theme_4f18f6036fb93a7e2c8eca368c66ad09


[db:default] 'Discourse Highlight to Search' -  checking...
Invalid version list in /tmp/discourse_theme_f7e393183be5f0189adb336c4602f071

[db:default] 'Discourse Wikipedia Lookup' -  checking...
Invalid version list in /tmp/discourse_theme_8cf76b5d4fe5eac70cd636ee2487be35

[db:default] 'Accent' -  checking...
Invalid version list in /tmp/discourse_theme_9796e5491667b1c43c7b9c680fc68ff3

Devo me preocupar?

Não exatamente, mas talvez sim.

Existem muitas razões pelas quais você pode receber esse erro. A razão mais comum é provavelmente que o arquivo .discourse-compatibility está vazio [1], [2], [3]. (Os # iniciais são linhas de comentário)

Essencialmente, o aviso significa que o Discourse não consegue determinar se a versão “mais recente” atual do componente/plugin é compatível com a versão atual do Discourse. Ou se é necessário verificar uma versão mais antiga do componente/plugin.

O arquivo .discourse-compatibility do componente/plugin pode conter um mapeamento de um intervalo de versões do Discourse para uma revisão específica do componente/plugin. Se o Discourse encontrar um mapeamento, ele usará essa revisão em vez da mais recente. Isso exige que o desenvolvedor atualize o arquivo sempre que fizer alterações que quebrem a compatibilidade com uma versão anterior do Discourse. Desde que você não tenha feito alterações que quebrem a compatibilidade, o arquivo permanecerá vazio, e, portanto, produzirá essa mensagem de aviso.

Se o componente/plugin funciona com a versão mais recente do Discourse é sempre uma suposição.

Comecei a desenvolver um plugin para a versão 2026.1, então essa seria a versão mínima do Discourse. Ele ainda está sendo desenvolvido e testado contra essa versão (e testado contra a versão mais recente atual). Como não há versão anterior do Discourse suportada, o .discourse-compatibility está vazio; e, portanto, produz essa mensagem de aviso. Assim que a versão 2026.1 deixar de ter suporte, vou migrar para o novo ESR. Nesse ponto, não vou mais testar contra a versão 2026.1, e, portanto, atualizarei o arquivo .discourse-compatibility, tornando-o finalmente não vazio. Só então esse aviso desaparecerá para o meu plugin.

Mais informações sobre este arquivo .discourse-compatibility: Introducing .discourse-compatibility: pinned plugin/theme versions for older Discourse versions

Testei isso. Criei um fork do componente Discourse Wikipedia Lookup e adicionei o arquivo .discourse-compatibility nele. Copiei o conteúdo de outro componente. O aviso desapareceu. Então, era realmente isso.

Obrigado.

Mas dei uma olhada em alguns outros TCs e neles o .discourse-compatibility estava completamente ausente ou totalmente vazio. No entanto, eles não exibiram nenhum aviso.

Mas o problema foi resolvido e vamos seguir com a vida.

Copiar o conteúdo do arquivo de compatibilidade de outro componente pode resultar em erros, pois o commit referenciado para uma versão específica do Discourse não existe no repositório para o qual você o copiou.

Eu sei que o fluxo de trabalho para os ramos de compatibilidade falhou nos meus repositórios porque ainda não adicionei a correção que o Arkshine adicionou ao tema skeleton. Acho que ambos os meus repositórios na sua lista estão atualmente afetados por isso.

Isso impedirá que os avisos sejam registrados para arquivos que contêm apenas comentários:

.discourse-compatibility ainda é suportado, embora nossa recomendação atual seja seguir a estratégia baseada em ramificação d-compat/* para compatibilidade de temas/plugin. Mais detalhes aqui:

Portanto, se o seu arquivo não tiver nenhuma entrada real, recomendo excluí-lo.

Claro. Não tenho nenhuma intenção de realmente usar esse fork. Foi apenas um teste para ter certeza de que o motivo era o uso do arquivo de modelo/boilerplate. Eu só queria ter certeza de usar commits reais e a sintaxe correta.