Releases: ultralytics/actions
v0.2.13 - Update to Codex 5.3 (#709)
🌟 Summary (single-line synopsis)
v0.2.13 refreshes Ultralytics Actions to Codex 5.3-era defaults (new OpenAI/Anthropic model names + pricing mappings), while also improving PR automation reliability and reducing noise from large/binary files 🚀
📊 Key Changes
- (PR #709) Updated default AI models + docs 🤖✨
- OpenAI default:
gpt-5.2-2025-12-11→gpt-5.3-codex - Anthropic default:
claude-sonnet-4-5-20250929→claude-sonnet-4-6 action.ymldescriptions updated so users understand the new default behavior formodelandreview_model.
- OpenAI default:
- (PR #709) Updated cost mapping + tests for new model names 🧾✅
- Added pricing entries for
gpt-5.3-codex,claude-sonnet-4-6, andclaude-opus-4-6. - Updated tests to ensure provider detection and model override logic keeps working.
- Added pricing entries for
- (PR #710) Optional Bun lockfile update step 🥟📦
- New input
bun_update(defaultfalse) and a workflow step to runbun updatewhenbun.lock/bun.lockbis detected (helpful for Bun-based repos).
- New input
- (PR #706) Expanded “skip patterns” to ignore more large/binary assets 🗂️🚫
- Much broader exclusions for images, videos, audio, archives, binaries, databases, and ML model files—reducing unnecessary processing.
- (PR #707) PR review guidelines now include
CONTRIBUTING.md📄🧭- The PR review action reads
CONTRIBUTING.md(when present) alongside existing guideline files.
- The PR review action reads
- (PR #708) More reliable PR review comments 🛠️🧷
- Drops invalid multi-line suggestions and prefers the local git HEAD SHA to avoid GitHub “Line could not be resolved” failures when commits change during automation.
🎯 Purpose & Impact
- Better default AI behavior out of the box 🎯
- New default model references keep the action aligned with the latest “Codex 5.3” naming, reducing confusion and outdated configuration.
- More predictable cost reporting/estimation 💰
- Updated
MODEL_COSTSmeans usage tracking and any cost-aware behavior stays accurate for the newly referenced models.
- Updated
- Smoother PR automation with fewer failures ✅
- Using the local HEAD SHA and rejecting invalid multi-line suggestions reduces flaky review posting, especially in repos with auto-formatters or fast-moving PRs.
- Faster runs + less noise on large repos ⚡
- Skipping more binary/asset/model file types avoids wasting time and tokens scanning files that aren’t useful for formatting/review AI.
- Improved review quality and consistency 🤝
- Including
CONTRIBUTING.mdhelps automated reviews reflect your project’s real contribution rules.
- Including
What's Changed
- Exclude images by @glenn-jocher in #706
- Add CONTRIBUTING.md to PR review guidelines by @Y-T-G in #707
- Reject multine PR review suggestions by @glenn-jocher in #708
- Bun update step by @glenn-jocher in #710
- Update to Codex 5.3 by @glenn-jocher in #709
Full Changelog: v0.2.12...v0.2.13
v0.2.12 - Improve context with YOLO26 and Platform (#705)
🌟 Summary (single-line synopsis)
v0.2.12 refreshes Ultralytics Actions’ AI context to highlight YOLO26 and the Ultralytics Platform, improving output relevance and keeping guidance aligned with current recommendations 🧠🚀
📊 Key Changes
- 🆙 Version bump to v0.2.12 (
__version__from0.2.11→0.2.12) for theultralytics/actionspackage. - 🧩 Improved AI system prompt context (most important change):
- 🏷️ Reinforces correct Ultralytics naming: YOLO26/YOLO11 (not YOLOv26/YOLOv11).
- 📚 Explicitly calls out YOLO26 as the latest stable recommended model, pointing to the YOLO26 documentation.
- 🧰 Recommends the Ultralytics Platform as the easiest path to annotate, train, and deploy, linking to the Ultralytics Platform.
- 🤖 More flexible PR review model selection:
- Adds
review_modelinput wiring viaREVIEW_MODELenv var for first-interaction workflows. - Sets the default PR review model to
gpt-5.2-codex(and documents this inaction.yml) ✅
- Adds
- 📝 More consistent formatting requirements for automated summaries: PR summary guidelines now require H3-only (
###) headers to avoid inconsistent rendering across tools. - 📄 PR reviews can now load repo-specific guidance: auto-reads
CLAUDE.md/AGENTS.md(if present) and budgets prompt space accordingly for better context. - 🧹 Stronger automated formatting: Biome runs with
--unsafeto apply more aggressive auto-fixes (with the usual caution). - 🧾 License/header updater made more robust:
- Regex-based header detection
- Year-range auto-refresh (supports hyphen and en-dash)
- Limits processing to repos under
ultralytics/...
- ✅ Spellcheck tweak: adds
"nin"to ignore list to reduce noisy CI warnings.
🎯 Purpose & Impact
- 🧠 Higher-quality AI outputs: assistants and automated summaries/reviews are more likely to recommend YOLO26 and point users to the Ultralytics Platform, reducing outdated or off-brand responses.
- 📌 Clearer “what to use” guidance for broad audiences: new users get a more direct path (YOLO26 + Platform links), while power users still retain flexibility.
- 🤖 Better control over review cost/performance: maintainers can choose a dedicated
review_model, and the default behavior becomes more consistent withgpt-5.2-codex💸⚡ - 🧾 More consistent CI-generated text formatting: H3-only summaries are easier to parse and render predictably across GitHub and downstream tooling 🧩
- 📄 More context-aware PR reviews: loading
CLAUDE.md/AGENTS.mdhelps reviews match each repo’s conventions, reducing irrelevant feedback ✅ ⚠️ Potential watch-out: enabling Biome--unsafemay introduce behavior changes in edge cases—review auto-fix diffs a bit more carefully.
What's Changed
- Fix review model by @glenn-jocher in #697
- Update summary prompt by @glenn-jocher in #698
- 2026 file headers by @glenn-jocher in #699
- Update biome --unsafe by @glenn-jocher in #700
- PR Reviews read CLAUDE.md and AGENTS.md by @glenn-jocher in #701
- Revise Ultralytics branding and user prompt by @glenn-jocher in #702
- Update ignore-words-list in action.yml by @glenn-jocher in #703
- Update PR Reviews to 5.2 Codex by @glenn-jocher in #691
- Improve context with YOLO26 and Platform by @glenn-jocher in #705
Full Changelog: v0.2.11...v0.2.12
v0.2.11 - Add Anthropic support (#678)
🌟 Summary (single-line synopsis)
v0.2.11 adds Anthropic Claude support as a first-class, drop-in AI provider for Ultralytics Actions—alongside OpenAI—plus a few workflow and reliability refinements 🤖🔄
📊 Key Changes
- Anthropic Claude support added (PR #678 by @fcakyon) 🤝🧠
- Use
anthropic_api_keyas a drop-in alternative toopenai_api_key(Anthropic takes priority if both are set). - New generic inputs:
model(provider-agnostic) andreview_model(override PR review model only). get_response()now routes to OpenAI Responses API or Anthropic Messages API automatically based on selected model/API key.- Adds Claude model cost metadata + improved retry controls (
retriesparameter), and safer handling for structured outputs.
- Use
- README and workflow setup updated for provider choice 📘🔧
- Docs now list supported AI providers (OpenAI + Anthropic) and show how to switch keys/config.
- Example workflows now comment in
anthropic_api_keyas an option.
- Codespell quality-of-life improvement (PR #693 by @glenn-jocher) 🧹✅
- Codespell now ignores
camelCasevia regex to reduce false positives on variable/function names. - Standardizes “Markdown” capitalization across docs/comments.
- Codespell now ignores
- Internal refactors for consistency and robustness (PR #694 by @glenn-jocher) 🧩🛠️
- Centralized shared constants (credit footer, excluded dirs, diff parsing regex).
- More robust diff file detection (better handling of quoted paths/spaces/renames).
- Renamed “skip OpenAI” logic to provider-neutral
should_skip_llm().
🎯 Purpose & Impact
- More flexibility and less vendor lock-in 🔁
Teams can run PR summaries/reviews/labels using either OpenAI or Claude, depending on preference, availability, or policy. - Simpler configuration for users 🧰
Switching providers is basically “swap the key,” andmodel/review_modelmake configuration consistent across providers. - More reliable automations in real repos 🛡️
Fewer codespell false alarms, better diff parsing, and improved retry/structured-output handling means more stable PR summaries and reviews.
Drop-in config example (Claude):
- uses: ultralytics/actions@main
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# model: claude-haiku-4-5-20251001 # optional
# review_model: claude-opus-4-5-20251101 # optionalWhat's Changed
- Codespell ignore camelcase by @glenn-jocher in #693
- Refactor constants by @glenn-jocher in #694
- Add Anthropic support by @fcakyon in #678
Full Changelog: v0.2.10...v0.2.11
v0.2.10 - Skip large files in PR summaries (#692)
🌟 Summary
Ultralytics Actions v0.2.10 makes AI-powered PR reviews and summaries cleaner, faster, and more transparent by skipping noisy generated files, upgrading to GPT‑5.2, and strengthening the step-level retry utility and CI workflows 🚀🧹
📊 Key Changes
-
🧹 Smarter PR summaries & reviews (priority change – PR #692)
- Centralized logic to detect “noisy” files (lock files, generated code, coverage, media, etc.) via shared
SKIP_PATTERNSandshould_skip_file. - New
filter_diff_textremoves these files’ diffs before they’re sent to OpenAI, reducing clutter and prompt size. - Added consistent formatting helpers:
format_skipped_files_notefor concise inline notes in AI prompts.format_skipped_files_dropdownfor collapsible “Skipped files” sections in PR summaries and reviews.
summarize_prandfirst_interactionnow both attach a skipped-files dropdown when applicable.
- Centralized logic to detect “noisy” files (lock files, generated code, coverage, media, etc.) via shared
-
🤖 Default OpenAI model upgraded to GPT‑5.2 (PR #682 & #692)
action.ymldefaultopenai_modelupdated togpt-5.2-2025-12-11.review_pr.pynow usesgpt-5.2-2025-12-11for code reviews.OPENAI_MODELfallback default updated to GPT‑5.2 inopenai_utils.py, with new pricing info inMODEL_COSTS.
-
🧠 Higher-quality, lower-noise PR reviews (PR #683 & #692)
- Review prompt rewritten to:
- Comment only on real, demonstrable issues (bugs, clear performance problems, maintainability, obvious security risks).
- Explicitly allow zero comments for clean PRs.
- Clarify how to read diff line prefixes (R/L) and how to set
line/sidein review comments.
- Skip patterns expanded to ignore more generated artifacts (coverage dirs, images, fonts, videos, docs, common “.generated.” files).
- Minor documentation and typo fixes (
Cloudflare,is_repo_privatedocstring,sanitize_ai_textdocstring).
- Review prompt rewritten to:
-
🔁 Stronger step-level retry action (PR #684 & #686)
retry/action.yml:timeout_minutesnow means total timeout across all attempts, not per attempt.- Default
timeout_minutesincreased from 60 → 360 minutes for long-running jobs.
- Refactor to a single Bash-based execution path:
- Python and Bash commands both run via one robust Bash wrapper using temporary scripts.
- Safer temp-file creation and cleanup with
mktempandtrap. - Explicit validation that commands exist before running.
- Clearer logging around attempts, exit codes, and retries.
- Tests (
test-retry.yml) updated to:- Use the local
./retryaction for both Bash and Python. - Verify env vars are preserved and that retries eventually succeed after controlled failures.
- Clean up temporary attempt counters between runs.
- Use the local
-
⏱️ Improved handling of large PRs and diffs (PR #692)
get_pr_summary_promptnow:- Filters the diff via
filter_diff_textbefore truncation. - Includes a brief note listing skipped files within the prompt.
- Filters the diff via
get_pr_open_response:- Uses filtered diff text in its unified “summary + labels + first comment” call.
- Returns
skipped_filesso UI layers can show a dropdown.
- Large PRs still receive a clear warning when summaries may miss some details.
-
📦 CI & artifact action upgrades (PR #688, #689, #690)
actions/upload-artifactbumped from v5 → v6.actions/download-artifactbumped from v6 → v7 (including in workflows).- Both now run on Node.js 24 and require a minimum Actions Runner version of 2.327.1, improving future compatibility.
-
🧼 Miscellaneous improvements
- Fixed an HTML footer typo so the Ultralytics Actions credit renders correctly.
- Version bumped:
__version__updated from0.2.9→0.2.10.
🎯 Purpose & Impact
-
🧹 Cleaner AI outputs, less noise for reviewers
- By skipping lock files, generated bundles, coverage reports, and media from the AI prompt, reviews and summaries focus on real code changes, not auto-generated churn.
- Reduced prompt size can improve latency and reliability when calling OpenAI.
-
🔍 More trustworthy, actionable PR reviews
- The revamped prompt encourages fewer but higher-value comments, avoiding speculative or stylistic nitpicks.
- Clear rules for line numbers and sides reduce malformed review comments and GitHub API errors.
- Zero-comment reviews are now explicitly treated as acceptable when a PR is clean 👍.
-
🪟 Transparent handling of skipped content
- Skipped-files dropdowns in both PR summaries and reviews make it obvious what was intentionally ignored, so authors and reviewers aren’t surprised.
- Inline notes in AI prompts ensure the model is aware there were additional modified files, even if their diffs are omitted.
-
🚀 Better AI quality with GPT‑5.2
- Moving to GPT‑5.2 aligns all defaults (action config, review backend, fallback model) and can improve:
- Reasoning about complex diffs.
- Adherence to formatting and JSON schemas.
- Overall review and summary quality.
- Trade-off: slightly higher API cost for users relying on defaults.
- Moving to GPT‑5.2 aligns all defaults (action config, review backend, fallback model) and can improve:
-
🧪 More robust long-running workflows
- The retry action’s total-timeout semantics and higher default timeout reduce premature failures in heavy CI workloads (large builds, extensive tests, slow runners).
- A single, well-tested Bash path simplifies maintenance and edge-case handling for both Bash and Python commands.
-
🛠️ Future-proof CI & self-hosted runners
- Upgrading artifact actions to Node.js 24 keeps workflows aligned with GitHub’s evolving platform.
- Self-hosted runner admins should ensure their runner versions meet the new minimum to avoid surprises.
What's Changed
- GPT-5.2 by @glenn-jocher in #682
- Improve PR Review prompt by @glenn-jocher in #683
- Update default timeout to 360 min by @glenn-jocher in #684
- Retry fix by @glenn-jocher in #686
- Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #690
- Bump actions/download-artifact from 6 to 7 by @dependabot[bot] in #688
- Bump actions/download-artifact from 6 to 7 in /.github/workflows by @dependabot[bot] in #689
- Skip large files in PR summaries by @glenn-jocher in #692
Full Changelog: v0.2.9...v0.2.10
v0.2.9 - Improve first-release action (#681)
🌟 Summary
v0.2.9 focuses on making releases more reliable, adding first-class Biome support for JS/TS formatting, modernizing CI, and keeping AI model pricing up to date. 🚀
📊 Key Changes
-
🔢 Release logic & version bump
- Bumped the
ultralytics/actionspackage to 0.2.9. - Improved detection of the previous release point in Git history for generating changelogs and GitHub Releases.
- Bumped the
-
✨ New Biome-based JS/TS formatting (optional)
- Added a new
biomeinput inaction.ymlto enable Biome formatting. - Biome now runs on PRs when
biome: trueand abiome.jsonorbiome.jsoncconfig is present. - Command:
npx biome check --write --line-width=120 --max-diagnostics=1000 --diagnostic-level=error . - Logs the Biome version used and gives a clear message when no config is found.
- Documented in
README.mdand usage example (biome: true) added to sample workflow.
- Added a new
-
🧠 More robust PR scanning for CI automation
scan_prs.pynow:- Filters only PRs that touch workflows or
action.yml/action.yaml. - Uses both
conclusionandstateto detect failing checks reliably. - Prints a direct PR URL, all status checks, and clearer failure messages.
- Filters only PRs that touch workflows or
-
🤖 Updated OpenAI model support
- Added cost entries for
gpt-5.1-codexinMODEL_COSTS, aligned with existinggpt-5-codexpricing.
- Added cost entries for
-
🧰 CI & workflow improvements
- Upgraded all GitHub workflows to
actions/checkout@v6. - Tightened Biome behaviour (no
--unsafe, capped diagnostics, error-only reporting). - Expanded spelling ignore list in
action.yml(e.g.,cancelled,MapPin,cann,CANN,couldn) for cleaner linting. - Improved URL tests to correctly detect Markdown links alongside HTML and plain-text URLs.
- Upgraded all GitHub workflows to
🎯 Purpose & Impact
-
✅ More reliable releases
- The enhanced
get_actual_previous_tagmakes release summaries more accurate, especially for:- First-ever releases (no previous tag).
- CI environments with shallow clones.
- GitHub Releases now compare against a sensible previous point (prior tag, first commit, or
HEAD~1as a last resort).
- The enhanced
-
💅 Better frontend formatting experience
- Teams can now opt into Biome for JS/TS/JSX/TSX/JSON with simple config:
- uses: ultralytics/[email protected] with: biome: true
- Produces fast, consistent formatting with controlled line width and focused, error-level diagnostics.
- Teams can now opt into Biome for JS/TS/JSX/TSX/JSON with simple config:
-
🧪 Stronger, clearer CI automation
- Auto-merge / scan tooling behaves more predictably, only considers relevant PRs, and explains exactly why a PR is skipped or blocked.
- Easier debugging thanks to verbose status-check logs and clear Biome messages.
-
🔍 Cleaner, less noisy checks
- Fewer false-positive failures from spell-check and formatting tools means:
- Smoother contributor experience.
- Faster CI signal with less “noise” to sift through.
- Fewer false-positive failures from spell-check and formatting tools means:
-
📈 Ready for newer AI models
- Accurate cost handling for
gpt-5.1-codexkeeps AI-powered features and billing logic aligned with the latest OpenAI offerings.
- Accurate cost handling for
What's Changed
- Add 5.1 Codex to
MODEL_COSTSdict by @glenn-jocher in #664 - Bump actions/checkout from 5 to 6 in /.github/workflows by @dependabot[bot] in #665
- Bump actions/checkout from 5 to 6 by @dependabot[bot] in #666
- Fix scan_prs missing dependabot PRs by @glenn-jocher in #667
- Add Biome by @glenn-jocher in #668
- Update action.yml spelling by @glenn-jocher in #669
- Update action.yml by @glenn-jocher in #670
- Update action.yml by @glenn-jocher in #671
- Update action.yml by @glenn-jocher in #672
- Update action.yml biome max diagnostics 1000 by @glenn-jocher in #673
- Print biome version by @glenn-jocher in #674
- Update biome to --diagnostic-level error by @glenn-jocher in #675
- Add 'cann' to ignore words list in action.yml by @onuralpszr in #676
- fix: 🐞 test_mixed_formats to correctly assert all URLs in mixed format string by @onuralpszr in #677
- Update ignore words list in action.yml by @glenn-jocher in #679
- Update ignore word "cancelled" in action.yml by @glenn-jocher in #680
- Improve first-release action by @glenn-jocher in #681
Full Changelog: v0.2.8...v0.2.9
v0.2.8 - New format Markdown string function (#663)
🌟 Summary
Ultralytics Actions v0.2.8 focuses on smarter, cleaner automation: better AI-powered PR reviews, richer GitHub issue templates, and powerful markdown/code formatting tools for both files and in-memory strings. ✨
📊 Key Changes
-
🧩 New markdown string formatter (core of this release)
- Added
process_markdown_string(...)to format Python and Bash code blocks inside in-memory markdown strings, not just files. - Reuses existing formatting logic (
process_markdown_file,format_code_with_ruff,format_bash_with_prettier,update_markdown_file) for consistent behavior. - Safely handles temp files via
tempfile.TemporaryDirectory()so nothing is written permanently.
- Added
-
🤖 Smarter, more focused AI PR reviews
- Switched review generation to the
gpt-5.1-codexmodel for better code understanding. - Introduced
should_skip_file()and refined skip patterns to avoid generated/minified/irrelevant files. - Added safeguards:
- Ignore non-file paths and files larger than 100 KB.
- Limit file content to a 5,000-character snippet, with a clear
... (truncated)marker.
- Added prompt controls:
- Uses a conservative token budget estimate to stay under
MAX_PROMPT_CHARS. - Caps inline review comments at
MAX_REVIEW_COMMENTS = 8. - Sorts comments by severity, then file, then line number using
SEVERITY_RANK.
- Uses a conservative token budget estimate to stay under
- Improves GitHub API usage for reviews and comments:
- Proper pagination (
?per_page=100) for reviews and comments. - Correct delete endpoint for inline comments (
/pulls/comments/{id}). - More robust HTTP status handling: only treat unexpected status codes as hard errors.
- Proper pagination (
- Adds detailed debug logging (system and user prompts) specifically when running in
ultralytics/actionsfor easier troubleshooting.
- Switched review generation to the
-
🧹 Consistent Prettier formatting at 120 characters
- Updated
action.ymlandupdate_markdown_code_blocks.pyso Prettier runs with--print-width 120for:- JS/TS, CSS, JSON, YAML, HTML, Vue, Svelte, etc.
- Shell scripts via
prettier-plugin-sh. - Markdown files (including docs, with existing
--tab-width 4preserved).
- Ensures generated shell code blocks in markdown also use the 120-character width.
- Updated
-
🧭 Cleaner URL handling & GitHub client refactor
- Simplified
clean_url()to more reliably strip quotes, trailing punctuation,.git@main, andgit+, including nested cases. - Refactored
GitHubClientto parse and storeownerandrepo_nameonce, then reuse them in:is_org_memberget_label_ids(GraphQL)block_userget_pr_contributors
- Improved HTTP request handling:
- Separates “status is expected” from “status is successful”.
- Only raises errors when status is unexpected, not just because it’s 4xx, making workflows more resilient.
- Simplified
-
📋 New GitHub issue templates & support links
- Added structured Bug Report, Feature Request, and Question templates under
.github/ISSUE_TEMPLATE/. - Each template guides users to provide context, logs, environment details, and minimal repro examples.
- Introduced shared
config.ymlwith quick links to:
- Added structured Bug Report, Feature Request, and Question templates under
-
🔢 Version bump
actions/__init__.pyversion updated from0.2.7to0.2.8.
🎯 Purpose & Impact
-
🚀 Easier programmatic docs & content generation
process_markdown_string(...)lets you format markdown that lives purely in memory (e.g., generated docs, bot comments, PR descriptions) without touching the filesystem.- Ensures Python and Bash code blocks are consistently formatted whether they come from files or are dynamically generated.
-
🤖 Higher-quality, more reliable PR reviews
- Using
gpt-5.1-codexshould improve code understanding and the relevance of automated feedback. - Smarter file skipping, size limits, and content truncation keep the AI focused on meaningful changes and avoid wasting tokens on noise.
- Comment capping, severity-based sorting, and concise-guidance produce fewer but higher-value review comments, making them easier for maintainers to act on.
- More robust API handling reduces flaky failures and edge cases when dismissing old reviews or deleting previous comments.
- Using
-
📏 Cleaner, more readable code and docs
- A unified 120-character line width across JS/TS, shell scripts, and markdown reduces wrapping noise and makes diffs easier to review.
- Consistent formatting across CI, local runs, and doc-generation tools leads to more predictable outputs and fewer formatting-only PR changes.
-
🧱 Stronger infrastructure for automation
- Refined URL cleaning avoids broken or malformed links in generated content and summaries.
- Centralized repo owner/name handling simplifies future integrations with GitHub APIs and reduces subtle bugs.
- Clearer error semantics (expected vs. unexpected statuses) help workflows fail less often while still surfacing true misconfigurations.
-
🙋 Better support and community interaction
- Structured issue templates help users provide the right information the first time, making it faster to reproduce and fix problems.
- Direct links to docs and community channels encourage self-help and discussion, reducing friction for both users and maintainers.
Overall, v0.2.8 makes Ultralytics Actions more developer-friendly, more robust in CI, and better suited for automated documentation and review workflows. 💼✨
What's Changed
- Guard large files in PR Reviews by @glenn-jocher in #652
- PR Review improvements by @glenn-jocher in #653
- Add owner and repo_name properties to Actions object by @glenn-jocher in #656
- Fix delete comments by @glenn-jocher in #657
- Add Issue templates by @glenn-jocher in #658
- Prettier 120 line width by @glenn-jocher in #659
- Update update_markdown_code_blocks.py to 120 print width by @glenn-jocher in #660
- Update review_pr.py by @glenn-jocher in #661
- New format Markdown string function by @glenn-jocher in #663
Full Changelog: v0.2.7...v0.2.8
v0.2.7 - New `gpt-5.1-2025-11-13` model (#651)
🌟 Summary
v0.2.7 standardizes all OpenAI model references to gpt-5.1-2025-11-13 for more consistent, higher-quality reviews and accurate cost tracking across the action ⚙️🤖
📊 Key Changes
- Default model updated to gpt-5.1-2025-11-13 in action inputs and utilities
action.yml:openai_modeldefault → gpt-5.1-2025-11-13actions/utils/openai_utils.py:OPENAI_MODELdefault → gpt-5.1-2025-11-13
- PR review generation now uses gpt-5.1-2025-11-13 by default (still notes gpt-5-codex as an alternative)
- Cost map updated: added gpt-5.1-2025-11-13, removed gpt-5-2025-08-07 for accurate billing estimates
- Version bump: 0.2.6 → 0.2.7
See PR: New gpt-5.1-2025-11-13 model (#651) by @glenn-jocher
🎯 Purpose & Impact
- Better defaults out of the box 🚀: Aligns reviews and tools on a single, newer model for improved reasoning and consistency.
- Accurate cost tracking 💸: MODEL_COSTS now reflects the new default, helping teams estimate usage reliably.
- Non-breaking upgrade ✅: Minor version bump indicates safe adoption with improved behavior.
- Clear configuration paths 🔧: Users can still override the model via action input or environment variable.
Example usage:
# Override in workflow if needed
- uses: ultralytics/[email protected]
with:
openai_model: gpt-5.1-2025-11-13Or set environment variable:
export OPENAI_MODEL=gpt-5.1-2025-11-13What's Changed
- New
gpt-5.1-2025-11-13model by @glenn-jocher in #651
Full Changelog: v0.2.6...v0.2.7
v0.2.6 - Optimize citation removal in sanitize_ai_text (#650)
🌟 Summary
Faster, cleaner PR review outputs: v0.2.6 optimizes AI text sanitization with a precompiled regex and standardizes its use across the workflow. ⚡🧼
📊 Key Changes
- Optimized citation removal in
sanitize_ai_textusing a precompiled regex pattern for better performance (Optimize citation removal in sanitize_ai_text – PR #650 by @glenn-jocher). - Centralized AI text sanitization into a shared utility and exported it for reuse (Refactor sanitize_ai_text() – PR #649 by @glenn-jocher).
- Updated PR review generation to use the shared
sanitize_ai_text, ensuring consistent cleaning of AI outputs. - Safer handling of empty or None inputs in sanitization to avoid edge-case errors.
- Version bump:
0.2.5→0.2.6.
🎯 Purpose & Impact
- Performance boost: Avoids recompiling regex on every call, improving speed in hot paths. 🚀
- Cleaner outputs: Removes leaked AI citation tokens (e.g., internal tool refs) for more readable PR reviews. 🧽
- Consistency: One shared sanitization utility used across actions reduces duplication and drift. 🧩
- Reliability: Better handling of empty inputs prevents unexpected crashes or noisy logs. 🛡️
- Maintainability: A single, precompiled pattern is easier to update and test. 🛠️
Quick usage example:
from actions.utils import sanitize_ai_text
text = "Please cite turn3search5 for details."
clean = sanitize_ai_text(text) # -> "Please for details."What's Changed
- Refactor sanitize_ai_text() by @glenn-jocher in #649
- Optimize citation removal in sanitize_ai_text by @glenn-jocher in #650
Full Changelog: v0.2.5...v0.2.6
v0.2.5 - List skipped PR Review files (#648)
🌟 Summary
v0.2.5 sharpens PR review quality and speeds up CI by making skipped files explicit, skipping minified assets in formatting, hardening text sanitization, and aligning tooling to Python 3.9. 🚀
📊 Key Changes
- PR reviews: Show actual skipped files, not just a count
- Tracks and returns a
skipped_fileslist and renders an expandable list in the review summary for transparency. See PR List skipped PR Review files (#648) ✨
- Tracks and returns a
- Prettier: Skip minified assets to avoid noisy diffs and speed up CI
- Ignores
**/*.min.jsand**/*.min.cssinaction.yml. See PR Prettier skip minified files (#647) ⚡
- Ignores
- Text sanitizer: Fix corrupted AI citation markers (Unicode private-use area)
- More robust regex to strip AI tool citations without artifacts. See PR Fix Unicode citation marker corruption (#644) 🧹
- Python baseline: Align to Python 3.9 across configs
- Set
requires-python >=3.9, update Ruff target topy39, and adjust CI matrix. See PR Align Python 3.9 requirement (#643) 🐍
- Set
- Link checker: Bump lychee action
- Upgrade to
lycheeverse/[email protected]. See PR Bump lycheeverse/lychee-action to 2.7.0 (#641) 🔗
- Upgrade to
- CLI docs and header updater refinement
- Clearer
parse_cli()docstring and simpler header-update flow without behavior change. See PR Update parse_cli docstring (#646) 📝
- Clearer
- Code quality refactor
- Cleaner control flow, safer docstring wrapping, and simplified diff parsing/review logic. See PR Refactor Python (#645) 🔧
- Docstring normalization
- Map "Example Usage"→"Examples" and "Reference"→"References" for consistency. See PR Add "Example Usage" to formatter (#640) 📚
- Version bump
__version__updated to0.2.5.
🎯 Purpose & Impact
- Greater PR review transparency and trust ✅
- Reviewers can see exactly which files were skipped (lock/minified/images, etc.), improving auditability and debugging.
- Faster, cleaner CI and diffs 🚀
- Skipping minified files reduces processing time and avoids noisy or risky formatting changes.
- More reliable automated comments 🛡️
- Fixed Unicode-related citation artifacts in AI-generated reviews for cleaner outputs.
- Consistent tooling and environment 🔒
- Standardizing on Python 3.9 simplifies linting, formatting, and CI behavior.
- Better contributor experience 🧭
- Clearer CLI docs, normalized docstring headers, and refactored utilities make contributions smoother.
Overall, v0.2.5 focuses on clarity, speed, and consistency—making reviews more informative and CI more efficient. 🎉
What's Changed
- Add "Example Usage" to format_python_docstrings.py by @glenn-jocher in #640
- Fix Unicode citation marker corruption in PR reviews by @fcakyon in #644
- Bump lycheeverse/lychee-action from 2.6.1 to 2.7.0 by @dependabot[bot] in #641
- Align Python 3.9 requirement across all configs by @fcakyon in #643
- Refactor Python by @glenn-jocher in #645
- Prettier skip minified files by @glenn-jocher in #647
- Update
parse_clidocstring by @glenn-jocher in #646 - List skipped PR Review files by @glenn-jocher in #648
Full Changelog: v0.2.4...v0.2.5
v0.2.4 - Enable new Ultralytics Google-style docstring formatter (#637)
🌟 Summary
v0.2.4 turns on our new Google‑style Python docstring formatter by default, delivers faster and smarter docstring formatting, and makes AI PR reviews cleaner and more accurate. ✨⚡
📊 Key Changes
- New formatter enabled by default
- The Python docstring formatter now runs by default in the Action (
python_docstrings: true) for consistent, high-quality docs across repos. See PR Enable new Ultralytics Google-style docstring formatter (#637). ✅
- The Python docstring formatter now runs by default in the Action (
- Faster, safer, style-aware docstring formatting
- Parallel processing for speed, smarter file discovery (skips venv/cache/build dirs), and robust wrapping of lists, code fences, tables, and preformatted blocks. Preserves non-Google styles (NumPy, reST, Epydoc) without touching them. See PR Parallelize docstring formatter (#635). ⚡🛡️
- Cleaner list formatting by correctly joining continuation lines, reducing awkward breaks and noisy diffs. See PR Fix docstrings tail calculation (#636). 🧹
- New CLI flags:
--check,--line-width=120,--start-newlinefor summary placement control. 🧰
- Cleaner AI PR reviews
- Removes leaked tool-citation tokens from AI output for professional, user-facing reviews. See PR Sanitize PR Review web output (#634). 🧽
- Hunk-aware diff parsing ensures comments/suggestions attach to the correct lines; stricter validation for multi-line ranges and suggestions. See PR Fix different hunks bug for PR Review (#639). 🎯
🎯 Purpose & Impact
- Consistent, readable docs by default
- Turning the formatter on by default standardizes Python docstrings across projects, improving readability and maintainability. 📚
- Faster CI and fewer noisy diffs
- Parallel processing and smarter wrapping reduce CI time and minimize unnecessary changes in PRs. 🚀
- Better contributor experience
- PR reviews are cleaner, clearer, and precisely aligned to diffs—reducing confusion and rework. ✅
- Flexible control when needed
- Easily check or enforce formatting locally or in CI with simple flags, and disable via input if your repo requires it. 🔧
Example usage:
- Run a check locally (no changes):
python actions/format_python_docstrings.py --check --line-width=120 . - Force summary to start on a new line:
python actions/format_python_docstrings.py --start-newline path/to/file.py
- Disable in your workflow if needed:
with: python_docstrings: "false"
Thanks to @UltralyticsAssistant and @glenn-jocher for the improvements! 🎉
What's Changed
- Sanitize PR Review web output by @glenn-jocher in #634
- Parallelize docstring formatter by @glenn-jocher in #635
- Fix docstrings tail calculation by @glenn-jocher in #636
- Fix different hunks bug for PR Review by @glenn-jocher in #639
- Enable new Ultralytics Google-style docstring formatter by @UltralyticsAssistant in #637
Full Changelog: v0.2.3...v0.2.4