Invalid version list in discourse themes

Not really, but maybe yes.

There are many reasons why you would get that error. The most common reason is probably that the .discourse-compatibility is empty [1], [2], [3]. (The leading # are comment lines)

Effectively the warning means that Discourse is unable to determine if the current “latest” version of the component/plugin is compatible with the current discourse version. Or if it needs to checkout an older version of the component/plugin.

The .discourse-compatibility file of the component/plugin can contain a mapping of a discourse version range to a specific revision of the component/plugin. If discourse finds a mapping, it will use that revision instead of the latest one. This does require that the developer updates the file once they make changes which break with a previous Discourse version. As long as you did not make breaking changes, then the file would remain empty, and thus produce that warning message.

If the component/plugin works with the latest version of Discourse is always a guess.

I started developing a plugin for 2026.1, so that would be the minimum version of Discourse. It is still developed and tested against that version (and tested against the current latest). Because there is no older supported Discourse version, the .discourse-compatibility is empty; and thus produces this warning message. Once 2026.1 will run out of support, I am going to move to the new ESR. At that point I am not longer going to test against 2026.1, and thus I would update the .discourse-compatibilityfile making it finally non-empty. Only then this warning will disappear for my plugin.

More info about this .discourse-compatibility file: Introducing .discourse-compatibility: pinned plugin/theme versions for older Discourse versions