Skip to content

Releases: rank releases on their numbers, not on sort -V over the raw tag - #39

Merged
MickLesk merged 1 commit into
mainfrom
fix-version-ranking-nonstandard-tags
Sep 15, 2026
Merged

MickLesk merged 1 commit into
mainfrom
fix-version-ranking-nonstandard-tags

Conversation

@MickLesk

Copy link
Copy Markdown
Member

✍️ Description

Ordering by version in #38 replaced "newest published" with sort -V over the stripped tags. sort -V puts anything that does not begin with a digit above every numeric version, and _forge_strip_v only removed a lowercase v followed by a digit. One irregular tag in a repository was therefore ranked above its entire release history:

Heimdall V2.5.8 -> offered as an update over 2.8.3
Linkwarden v.2.11.0 -> offered as an update over 2.16.3

Only the check was affected. The deploy path ranks with _FORGE_JQ_VKEY, which extracts the digit groups, so it installed the correct release while the message named an older one.

🔗 Related Issue

Fixes community-scripts/ProxmoxVE#17248

✅ Prerequisites (X in brackets)

  • Self-review completed – Code follows project standards.
  • Tested thoroughly – Changes work as expected (Proxmox VE and/or Incus, as applicable).
  • No security risks – No hardcoded secrets, unnecessary privilege escalations, or permission issues.
  • API.txt regenerated – If a function signature or behavior changed, API.txt was updated to match.

🤖 AI Assistance (X in brackets)

If you used an AI tool (GitHub Copilot, Claude, ChatGPT, etc.) to write or generate any code in this PR, you must confirm compliance below.
Select exactly one option.

  • No AI used – Code was written without AI assistance.
  • AI was used – The output has been reviewed and corrected, and I take responsibility for it matching this repo's conventions.

🛠️ Type of Change (X in brackets)

  • 🐞 Bug fix – Resolves an issue without breaking functionality.
  • New feature – Adds new, non-breaking functionality.
  • 💥 Breaking change – Alters existing behavior in a way that may require updates in every downstream script.
  • 🔧 Refactoring / Code Cleanup – Improves readability or maintainability without changing functionality.
  • 📝 Documentation update – Changes to README, docs/, CONTRIBUTING.md, or other docs.

@github-actions

Copy link
Copy Markdown
Contributor

Try this branch

The engine and the scripts resolve independently, so a production script can
be run against the engine from this PR by setting one variable:

COMMUNITY_SCRIPTS_CORE_URL=https://raw.githubusercontent.com/community-scripts/core/fix-version-ranking-nonstandard-tags \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/debian.sh)"

Swap ct/debian.sh for whatever exercises the change.

Run a script from a fork as well
curl -fsSL https://raw.githubusercontent.com/community-scripts/core/fix-version-ranking-nonstandard-tags/tools/run.sh |
  bash -s -- https://raw.githubusercontent.com/YOU/ProxmoxVED/your-branch ct/debian.sh \
             https://raw.githubusercontent.com/community-scripts/core/fix-version-ranking-nonstandard-tags

Note that run.sh is reached through a pipe, so the script it starts inherits
an exhausted stdin. Whiptail is fine — it opens /dev/tty — but a plain read
would see EOF. The single-variable form above does not have that problem.

Useful flags while testing

dev_mode=net logs every engine fetch with status and duration, which is the
quickest way to confirm the branch is really being used. dev_mode=keep stops a
failed build from deleting the container along with the evidence.

Ordering by version in #38 replaced "newest published" with sort -V over
the stripped tags. sort -V puts anything that does not begin with a
digit above every numeric version, and _forge_strip_v only removed a
lowercase v followed by a digit. One irregular tag in a repository was
therefore ranked above its entire release history:

  Heimdall    V2.5.8     -> offered as an update over 2.8.3
  Linkwarden  v.2.11.0   -> offered as an update over 2.16.3

Only the check was affected. The deploy path ranks with _FORGE_JQ_VKEY,
which extracts the digit groups, so it installed the correct release
while the message named an older one.

Rank on the same digit groups here, and accept an uppercase V in the
strip so it matches _FORGE_JQ_VKEY's ^[vV]. Tags whose prefix is not a
letter plus a digit keep their guard and are still left alone.

Verified against the full release lists of Heimdall, Linkwarden,
Navidrome and Frigate, which now resolve to 2.8.3, 2.16.3, 0.64.0 and
0.18.0, and against the backported-patch case from #38, where 3.14.0
still outranks a later published 3.13.3.
@MickLesk
MickLesk force-pushed the fix-version-ranking-nonstandard-tags branch from 0142600 to 43148b8 Compare September 15, 2026 07:51
@MickLesk
MickLesk merged commit 865f585 into main Sep 15, 2026
5 checks passed
@github-actions
github-actions Bot deleted the fix-version-ranking-nonstandard-tags branch September 16, 2026 07:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Linkwarden] Wrong version detected when doing "update" on new install

1 participant