Repository navigation
Releases
v0.5.24 - Fail publish runs when GitHub can't create the release, retrying transient server errors first (#951)
🌟 Summary
Release publishing is now more reliable: failed GitHub release creation is retried when appropriate, and genuine failures no longer pass unnoticed.
📊 Key Changes
- 🔁 Retries GitHub release requests after server errors, with waits of 30 seconds and then 60 seconds.
- ✅ If GitHub does not return its usual success response, checks whether the release exists before deciding the operation failed.
- 🧪 Adds tests for successful creation and recovery from a server error. No model changes are included.
🎯 Purpose & Impact
- 🚨 Prevents publishing workflows from appearing successful when a GitHub release was never created.
- 🔎 Surfaces persistent problems—such as outages or invalid credentials—at the release step, making them easier to diagnose.
- 🛡️ Handles cases where GitHub creates a release but returns an error, avoiding a false failure when the release can be verified.
What's Changed
- Fail publish runs when GitHub can't create the release, retrying transient server errors first by @glenn-jocher in #951
Full Changelog: v0.5.23...v0.5.24
v0.5.23 - Flag unneeded and partially applied changes in PR reviews (#950)
🌟 Summary
Version 0.5.23 sharpens PR review guidance to catch unnecessary changes and fixes that are only partly applied.
📊 Key Changes
- Reviewers are now prompted to flag changes that address no reported or real-world problem.
- Reviewers should also flag fixes missing from some affected locations, noting the remaining locations in one comment.
- Updated the package version to
0.5.23. - All 195 tests passed. ✅
🎯 Purpose & Impact
- Helps reviewers spot avoidable changes and incomplete fixes before they are merged.
- Inline review comments result in a COMMENT rather than an APPROVE, making these issues visible to PR authors.
What's Changed
- Flag unneeded and partially applied changes in PR reviews by @glenn-jocher in #950
Full Changelog: v0.5.22...v0.5.23
v0.5.22 - Ignore Portal's /presse route and acronym possessives in codespell (#949)
🌟 Summary
v0.5.22 prevents codespell from flagging or rewriting two known false positives in Portal-related code.
📊 Key Changes
- 📝 Added
presseto codespell’s ignore list so the/presseroute is not mistaken for a misspelling. - 🔤 Updated the ignore pattern to preserve possessives of all-caps acronyms, such as
GET'sandAPI's. Lowercase words likeget'sremain subject to spelling checks. - 🔄 Applied the same configuration in the GitHub Action and Python formatter, keeping their behavior aligned.
- 🏷️ Bumped the package version to
0.5.22. No model changes are included.
🎯 Purpose & Impact
- ✅ Reduces false failure annotations in Portal formatting runs caused by the
/presseroute. - 🛡️ Prevents automatic spelling fixes from changing valid acronym possessives in comments.
- 🔍 Keeps ordinary spelling checks active, including for lowercase text.
What's Changed
- Ignore Portal's /presse route and acronym possessives in codespell by @glenn-jocher in #949
Full Changelog: v0.5.21...v0.5.22
v0.5.21 - Ignore Swift's inout keyword in codespell (#948)
🌟 Summary
Version 0.5.21 prevents Swift’s valid inout keyword from triggering false spelling errors in formatting checks.
📊 Key Changes
- Added
inoutto the codespell ignore lists in both the GitHub Action and Python formatter, keeping their settings aligned. - Published the updated
ultralytics-actions-formatCLI as version 0.5.21. - No model or other user-facing features changed.
🎯 Purpose & Impact
- 🧹 Stops repeated, misleading codespell failures on unchanged Swift files in iOS projects.
- ✅ Makes formatter results clearer by reducing noise in checks and pull request annotations.
- 📦 Consumers of the updated CLI, including the Ultralytics App, receive the fix when they update to this release.
What's Changed
- Ignore Swift's inout keyword in codespell by @glenn-jocher in #948
Full Changelog: v0.5.20...v0.5.21
v0.5.20 - Download shfmt before the Markdown pass, credit no bot commits, and end URLs at CJK punctuation (#946)
🌟 Summary
v0.5.20 improves GitHub automation and code-formatting reliability, while refining contributor credits and URL detection.
📊 Key Changes
- 🛠️ More reliable formatting: The
shfmtshell formatter is now downloaded before Markdown code blocks are processed. If its download fails, shell formatting is skipped without blocking the other formatting steps. - 🙌 Cleaner contributor credits: Bot accounts ending in
[bot]are excluded from PR contributor credits. PRs with more than 100 commits also avoid relying on an incomplete commit list. - 🔗 Better URL handling: URL detection now stops at common full-width punctuation, helping prevent punctuation in text from being included in links.
- 🏷️ Fewer duplicate labels: A related update prevents adding another scoped label when an item already has one.
- 📦 Version update: The package version is now
0.5.20.
🎯 Purpose & Impact
- ✅ Formatting jobs are less likely to leave shell examples in Markdown unformatted, while other formatting can still run if
shfmtcannot be downloaded. - 👥 Contributor acknowledgments are less likely to credit bots or omit contributors on large PRs.
- 🌏 Links in text containing full-width punctuation are more likely to be detected cleanly.
- 🧹 Automated issue and PR labeling is less likely to apply conflicting priority labels.
What's Changed
- Offer no second scoped label, credit only the author past 100 commits, and download shfmt last by @glenn-jocher in #945
- Download shfmt before the Markdown pass, credit no bot commits, and end URLs at full-width punctuation by @glenn-jocher in #946
Full Changelog: v0.5.19...v0.5.20
v0.5.19 - Offer no second scoped label, credit only the author past 100 commits, and download shfmt last (#945)
🌟 Summary
Release v0.5.19 improves GitHub automation and CI reliability, with no model changes. The main fixes prevent conflicting labels, make contributor credits more accurate, and keep formatting checks from being interrupted by a failed shfmt download. 🛠️
📊 Key Changes
- Avoid conflicting scoped labels: If an issue or PR already has a scoped label—such as
priority: high—the assistant won’t offer another scoped label. - Improve contributor credits: For PRs with more than 100 commits, the action now recognizes that the commit list is incomplete and avoids crediting only the authors visible on the first page. It credits the PR author and commenters instead.
- Make formatting more resilient: The workflow now downloads
shfmtafter the Markdown and Prettier formatting passes. If the download fails, those earlier formatting steps can still run. - Expand automated checks: The Ultralytics Actions workflow adds a broken-link check for Markdown and HTML files, alongside its existing formatting and documentation checks.
🎯 Purpose & Impact
- 🏷️ Prevents the assistant from suggesting a lower-priority label when an item already has a scoped priority.
- 🙌 Reduces incomplete or misleading contributor acknowledgments on large PRs.
- ✅ Helps ensure a temporary
shfmtdownload issue doesn’t block other formatting work. - 🔗 Helps teams catch broken documentation links before changes are merged.
What's Changed
- Update Ultralytics Actions with Lychee and GitHub Token by @pderrenger in #47
- Offer no second scoped label, credit only the author past 100 commits, and download shfmt last by @glenn-jocher in #945
New Contributors
- @pderrenger made their first contribution in #47
Full Changelog: v0.5.18...v0.5.19
v0.5.18 - Strip utm_source=openai from reviews, retry transient GitHub reads, and pass setup-uv venv-path only when activating (#944)
🌟 Summary
v0.5.18 improves the reliability and cleanliness of Ultralytics’ GitHub automation and CI workflows. 🛠️
📊 Key Changes
- 🧹 Cleaner AI-generated reviews and comments: Removes
utm_source=openaifrom links while preserving other URL parameters. - 🔁 More resilient GitHub API reads: Retries transient connection and incomplete-response errors, reducing failures when retrieving large GitHub Actions pages.
- ⚙️ Updated
setup-uvconfiguration: Upgrades the setup action and only supplies a virtual-environment path when environment activation is enabled. - 📄 More immediate report output: Runs the GitHub Report module with unbuffered output, so logs appear sooner.
🎯 Purpose & Impact
- Makes automated reviews and comments cleaner and more shareable.
- Helps scheduled reports recover from temporary network issues instead of failing prematurely.
- Improves compatibility when setting up Python environments in GitHub Actions.
- Makes CI logs easier to follow while jobs are running.
No model changes are included in this release.
What's Changed
- Strip utm_source=openai from reviews, retry transient GitHub reads, and pass setup-uv venv-path only when activating by @glenn-jocher in #944
Full Changelog: v0.5.17...v0.5.18
v0.5.17 - Treat a lost runner's notice as explaining a job with no log in failure triage (#943)
🌟 Summary
Release v0.5.17 improves CI failure triage so lost-runner failures can be correctly identified as transient and automatically rerun.
📊 Key Changes
- 🤖 Updated the triage guidance to treat GitHub’s notice that a runner lost communication as an explanation for a job that has no log.
- ✅ In replay tests of one affected run, triage classified the failure as Transient in all 65 trials, compared with 60 of 65 before the change.
🎯 Purpose & Impact
- 🔄 Repositories using automatic reruns are less likely to miss a retry when a runner disconnects before producing logs.
- 🧭 The change resolves a conflict in the triage instructions: missing logs generally mean Unclear, but a lost-runner notice provides a specific reason to treat the failure as Transient.
- 🛠️ No model or user-facing feature changes are included; this release focuses on more reliable CI failure handling.
What's Changed
- Treat a lost runner's notice as explaining a job with no log in failure triage by @glenn-jocher in #943
Full Changelog: v0.5.16...v0.5.17
v0.5.16 - Skip PRs closed before the open task runs, and allow UltralyticsAssistant in CLA checks (#942)
🌟 Summary
v0.5.16 makes PR automation safer by skipping work on pull requests that have already been closed and preventing the UltralyticsAssistant bot from being listed as a human CLA contributor.
📊 Key Changes
- 🛑 Skip closed PRs: When a PR-open task starts, it reloads the PR while fetching its diff and stops if the PR is no longer open. This prevents summaries, labels, greetings, and automatic reviews from being added to closed PRs.
- 🤖 Update the CLA bot allowlist:
UltralyticsAssistantis now recognized as a bot, so its formatting commits are not incorrectly shown as contributor sign-offs. - ✅ Add regression coverage: A test checks that a PR closed before processing does not receive an automatic review.
- 🚀 Release and redeployment: The version is bumped to 0.5.16, triggering the App redeployment.
🎯 Purpose & Impact
- Reduces unnecessary work and avoids lengthy reviews—and the risk of related service timeouts—on PRs that are already closed.
- Keeps PR comments and labels from being applied after an author has closed their PR.
- Makes CLA status clearer by excluding the formatter bot from contributor listings.
What's Changed
- Skip PRs closed before the open task runs, and allow UltralyticsAssistant in CLA checks by @glenn-jocher in #942
Full Changelog: v0.5.15...v0.5.16
v0.5.15 - Skip first-interaction on the Action's own issues (#940)
🌟 Summary
Version 0.5.15 prevents the first-interaction action from greeting or labeling issues and discussions created by its own account, and makes setup-uv prefer Python versions already installed on the runner.
📊 Key Changes
- 🤖 Skip self-authored reports: The first-interaction action now returns without responding when the event author is the authenticated account. This extends the existing self-author check for pull requests to eligible issues and discussions.
- 🐍 Prefer preinstalled Python:
setup-uvsets Python preference tosystem, helping avoid unintended use of leftover uv-managed Python versions on persistent self-hosted runners. Managed or downloaded Python remains available as a fallback. - ✅ Version and tests: Bumped the package version to
0.5.15; the first-interaction tests passed (19 tests).
🎯 Purpose & Impact
- Keeps automated fuzz reports and other self-authored items from receiving confusing, self-directed welcome messages or labels.
- Makes Python selection on persistent runners more predictable, reducing surprises when jobs run without an explicitly requested Python version.
What's Changed
- Prefer preinstalled Python over leftover uv-managed Python in setup-uv by @glenn-jocher in #939
- Skip first-interaction on the Action's own issues by @glenn-jocher in #940
Full Changelog: v0.5.14...v0.5.15