Skip to content

github-api: take the release the maintainer marked as latest - #55

Merged
MickLesk merged 1 commit into
mainfrom
fix/release-selection-designated-latest
Sep 21, 2026
Merged

MickLesk merged 1 commit into
mainfrom
fix/release-selection-designated-latest

Conversation

@MickLesk

Copy link
Copy Markdown
Member

✍️ Description

Picking the newest release by reading tag strings keeps getting it wrong.

/releases/latest is the answer and needs no inference. Sorting stays for the cases it cannot serve: a tag_prefix, an explicit prerelease opt-in, a repo with no designated release, and the untagged placeholders an auto-publishing repo leaves behind.

Checked against 485 Calls in ProxmoxVE with github api token

🔗 Related Issue

Fixes community-scripts/ProxmoxVE#17408
Fixes #54

✅ 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.

Picking the newest release by reading tag strings keeps getting it
wrong. birdnet-go tags its releases 20260823 and its nightlies
nightly-20260511-414, neither flagged prerelease, and the separator rank
added for homer put the nightly on top -- an update that downgrades.
Worse, _forge_is_current then read the nightly as newer, so the
container was never offered a way back.

/releases/latest is the maintainer's own answer and needs no inference.
It is right for 488 of the 489 repos ProxmoxVE fetches from. Sorting
stays for the cases it cannot serve: a tag_prefix, an explicit
prerelease opt-in, a repo with no designated release, and the untagged
placeholders an auto-publishing repo leaves behind.

The separator rank is gone. Ordering now only decides between tags of
the same shape; unequal shapes report not-current so a container that
landed on a nightly is offered the way out.
@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/release-selection-designated-latest \
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/release-selection-designated-latest/tools/run.sh |
  bash -s -- https://raw.githubusercontent.com/YOU/ProxmoxVED/your-branch ct/debian.sh \
             https://raw.githubusercontent.com/community-scripts/core/fix/release-selection-designated-latest

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.

@MickLesk
MickLesk merged commit 1d9caf9 into main Sep 21, 2026
5 checks passed
@github-actions
github-actions Bot deleted the fix/release-selection-designated-latest branch September 22, 2026 07:32
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.

BirdNET-Go do not update, but downgrade BirdNET-Go "updates" to an older version

1 participant