Pinning plugin and theme versions for older Discourse installs (d-compat branches)

The d-compat/<YYYY>.<M>strategy would require a branch for every specific release right? No range possible as with the .discourse-compatibility construction.

So if I was maintaining a plugin for which works from ESR to latest. When I am then moving the developments to the new ESR (which overlaps with the old-ESR) I would need to create branches for each intermediate version?

For example, right now ESR is 2026.1, release is 2026.6, and latest is 2026.7, still supported in 2026.5. When I’m moving my plugin to the new ESR (2026.7), while the old-ESR is still supported by Discourse. Would I need to create the branches:

  • d-compat/2026.1
  • d-compat/2026.2
  • d-compat/2026.3
  • d-compat/2026.4
  • d-compat/2026.5
  • d-compat/2026.6

Where .2 to .5 (including) are EOL by Discourse, but people could still be using it.

Or does Discourse find the most suitable branch if one is missing, instead of assuming the main branch?

For example, if I was running 2026.5 and the only branches are d-compat/2026.1 and d-compat/2026.6. Which branch would be used?

  1. d-compat/2026.1 which is the closest compatible version?
  2. main as there is no specific branch?
1 Like