Discourse 主题中的版本列表无效

我在升级时发现了这些。嗯,这已经有一段时间了,但这次我记录了日志。

[db:default] 'Messages section for sidebar' -  checking...
/tmp/discourse_theme_c64ff70a4cc7d614d9e88b106805c78f 中的版本列表无效

[db:default] 'Unhide composer fullscreen toggle for tablets' -  checking...
/tmp/discourse_theme_4f18f6036fb93a7e2c8eca368c66ad09 中的版本列表无效


[db:default] 'Discourse Highlight to Search' -  checking...
/tmp/discourse_theme_f7e393183be5f0189adb336c4602f071 中的版本列表无效

[db:default] 'Discourse Wikipedia Lookup' -  checking...
/tmp/discourse_theme_8cf76b5d4fe5eac70cd636ee2487be35 中的版本列表无效

[db:default] 'Accent' -  checking...
/tmp/discourse_theme_9796e5491667b1c43c7b9c680fc68ff3 中的版本列表无效

我是否应该担心?

不完全是,但也许可以这么说。

出现该错误的原因有很多。最常见的原因可能是 .discourse-compatibility 文件为空 [1][2][3]。(开头的 # 是注释行)

实际上,该警告意味着 Discourse 无法确定当前组件/插件的“最新”版本是否与当前的 Discourse 版本兼容,或者是否需要检出该组件/插件的旧版本。

组件/插件的 .discourse-compatibility 文件可以包含 Discourse 版本范围与组件/插件特定修订版之间的映射。如果 Discourse 找到映射,它将使用该修订版而不是最新版本。这就要求开发者在做出与先前 Discourse 版本不兼容的更改时更新该文件。只要您没有做出破坏性更改,该文件就会保持为空,从而产生该警告消息。

组件/插件是否与 Discourse 的最新版本兼容始终只是一个猜测。

我开始为 2026.1 开发一个插件,因此这将是 Discourse 的最低版本。它仍在针对该版本(以及当前最新版本)进行开发和测试。由于没有较旧的支持版 Discourse 版本,.discourse-compatibility 文件为空;因此产生了此警告消息。一旦 2026.1 停止支持,我将转向新的 ESR(扩展支持版本)。到那时,我将不再针对 2026.1 进行测试,因此我会更新 .discourse-compatibility 文件,使其最终非空。只有那时,我的插件才会不再显示此警告。

有关此 .discourse-compatibility 文件的更多信息:Introducing .discourse-compatibility: pinned plugin/theme versions for older Discourse versions

我试了一下。我 fork 了 Discourse Wikipedia Lookup 组件,并在其中添加了 .discourse-compatibility 文件。我从另一个组件复制了内容。那个警告消失了。所以确实就是这个问题。

谢谢。

但我查看了几个其他 TC,它们要么完全缺少 .discourse-compatibility,要么完全为空。然而,它们并没有给出警告。

不过问题已经解决了,生活还得继续。

从另一个组件的兼容性文件中复制内容可能会导致错误,因为为特定 Discourse 版本引用的提交在您复制到的存储库中不存在。

我知道我的存储库中的兼容性分支工作流失败了,因为我尚未添加 Arkshine 在主题骨架中引入的修复。我认为您列表中的我的两个存储库目前都受到了该问题的影响。

这将停止记录仅包含注释的文件的警告:

.discourse-compatibility 仍然受支持,尽管我们现在建议遵循基于 d-compat/* 分支的主题/插件兼容性策略。更多详情见此处:

因此,如果您的文件中没有任何实际条目,建议将其删除。

当然。我并没有实际使用那个分支的计划。那只是为了确认问题原因是否在于模板/样板文件而进行的一次测试。我只是想确保使用实际的提交记录和正确的语法。