Skip to content

Releases: ultralytics/actions

v0.2.13 - Update to Codex 5.3 (#709)

26 Feb 18:27
62bea03

Choose a tag to compare

🌟 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-11gpt-5.3-codex
    • Anthropic default: claude-sonnet-4-5-20250929claude-sonnet-4-6
    • action.yml descriptions updated so users understand the new default behavior for model and review_model.
  • (PR #709) Updated cost mapping + tests for new model names 🧾✅
    • Added pricing entries for gpt-5.3-codex, claude-sonnet-4-6, and claude-opus-4-6.
    • Updated tests to ensure provider detection and model override logic keeps working.
  • (PR #710) Optional Bun lockfile update step 🥟📦
    • New input bun_update (default false) and a workflow step to run bun update when bun.lock/bun.lockb is detected (helpful for Bun-based repos).
  • (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.
  • (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_COSTS means usage tracking and any cost-aware behavior stays accurate for the newly referenced models.
  • 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.md helps automated reviews reflect your project’s real contribution rules.

What's Changed

Full Changelog: v0.2.12...v0.2.13

v0.2.12 - Improve context with YOLO26 and Platform (#705)

19 Jan 23:05
43ec4b2

Choose a tag to compare

🌟 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__ from 0.2.110.2.12) for the ultralytics/actions package.
  • 🧩 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_model input wiring via REVIEW_MODEL env var for first-interaction workflows.
    • Sets the default PR review model to gpt-5.2-codex (and documents this in action.yml) ✅
  • 📝 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 --unsafe to 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 with gpt-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.md helps reviews match each repo’s conventions, reducing irrelevant feedback ✅
  • ⚠️ Potential watch-out: enabling Biome --unsafe may introduce behavior changes in edge cases—review auto-fix diffs a bit more carefully.

What's Changed

Full Changelog: v0.2.11...v0.2.12

v0.2.11 - Add Anthropic support (#678)

31 Dec 00:29
e02546d

Choose a tag to compare

🌟 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_key as a drop-in alternative to openai_api_key (Anthropic takes priority if both are set).
    • New generic inputs: model (provider-agnostic) and review_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 (retries parameter), and safer handling for structured outputs.
  • 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_key as an option.
  • Codespell quality-of-life improvement (PR #693 by @glenn-jocher) 🧹✅
    • Codespell now ignores camelCase via regex to reduce false positives on variable/function names.
    • Standardizes “Markdown” capitalization across docs/comments.
  • 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,” and model / review_model make 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  # optional

What's Changed

Full Changelog: v0.2.10...v0.2.11

v0.2.10 - Skip large files in PR summaries (#692)

25 Dec 02:05
669f124

Choose a tag to compare

🌟 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_PATTERNS and should_skip_file.
    • New filter_diff_text removes these files’ diffs before they’re sent to OpenAI, reducing clutter and prompt size.
    • Added consistent formatting helpers:
      • format_skipped_files_note for concise inline notes in AI prompts.
      • format_skipped_files_dropdown for collapsible “Skipped files” sections in PR summaries and reviews.
    • summarize_pr and first_interaction now both attach a skipped-files dropdown when applicable.
  • 🤖 Default OpenAI model upgraded to GPT‑5.2 (PR #682 & #692)

    • action.yml default openai_model updated to gpt-5.2-2025-12-11.
    • review_pr.py now uses gpt-5.2-2025-12-11 for code reviews.
    • OPENAI_MODEL fallback default updated to GPT‑5.2 in openai_utils.py, with new pricing info in MODEL_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/side in 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_private docstring, sanitize_ai_text docstring).
  • 🔁 Stronger step-level retry action (PR #684 & #686)

    • retry/action.yml:
      • timeout_minutes now means total timeout across all attempts, not per attempt.
      • Default timeout_minutes increased 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 mktemp and trap.
      • Explicit validation that commands exist before running.
      • Clearer logging around attempts, exit codes, and retries.
    • Tests (test-retry.yml) updated to:
      • Use the local ./retry action 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.
  • ⏱️ Improved handling of large PRs and diffs (PR #692)

    • get_pr_summary_prompt now:
      • Filters the diff via filter_diff_text before truncation.
      • Includes a brief note listing skipped files within the prompt.
    • get_pr_open_response:
      • Uses filtered diff text in its unified “summary + labels + first comment” call.
      • Returns skipped_files so 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-artifact bumped from v5 → v6.
    • actions/download-artifact bumped 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 from 0.2.90.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.
  • 🧪 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

Full Changelog: v0.2.9...v0.2.10

v0.2.9 - Improve first-release action (#681)

11 Dec 11:56
b06c6ea

Choose a tag to compare

🌟 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/actions package to 0.2.9.
    • Improved detection of the previous release point in Git history for generating changelogs and GitHub Releases.
  • New Biome-based JS/TS formatting (optional)

    • Added a new biome input in action.yml to enable Biome formatting.
    • Biome now runs on PRs when biome: true and a biome.json or biome.jsonc config 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.md and usage example (biome: true) added to sample workflow.
  • 🧠 More robust PR scanning for CI automation

    • scan_prs.py now:
      • Filters only PRs that touch workflows or action.yml / action.yaml.
      • Uses both conclusion and state to detect failing checks reliably.
      • Prints a direct PR URL, all status checks, and clearer failure messages.
  • 🤖 Updated OpenAI model support

    • Added cost entries for gpt-5.1-codex in MODEL_COSTS, aligned with existing gpt-5-codex pricing.
  • 🧰 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.

🎯 Purpose & Impact

  • More reliable releases

    • The enhanced get_actual_previous_tag makes 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~1 as a last resort).
  • 💅 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.
  • 🧪 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.
  • 📈 Ready for newer AI models

    • Accurate cost handling for gpt-5.1-codex keeps AI-powered features and billing logic aligned with the latest OpenAI offerings.

What's Changed

Full Changelog: v0.2.8...v0.2.9

v0.2.8 - New format Markdown string function (#663)

19 Nov 14:32
fd550b8

Choose a tag to compare

🌟 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.
  • 🤖 Smarter, more focused AI PR reviews

    • Switched review generation to the gpt-5.1-codex model 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.
    • 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.
    • Adds detailed debug logging (system and user prompts) specifically when running in ultralytics/actions for easier troubleshooting.
  • 🧹 Consistent Prettier formatting at 120 characters

    • Updated action.yml and update_markdown_code_blocks.py so Prettier runs with --print-width 120 for:
      • JS/TS, CSS, JSON, YAML, HTML, Vue, Svelte, etc.
      • Shell scripts via prettier-plugin-sh.
      • Markdown files (including docs, with existing --tab-width 4 preserved).
    • Ensures generated shell code blocks in markdown also use the 120-character width.
  • 🧭 Cleaner URL handling & GitHub client refactor

    • Simplified clean_url() to more reliably strip quotes, trailing punctuation, .git@main, and git+, including nested cases.
    • Refactored GitHubClient to parse and store owner and repo_name once, then reuse them in:
      • is_org_member
      • get_label_ids (GraphQL)
      • block_user
      • get_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.
  • 📋 New GitHub issue templates & support links

  • 🔢 Version bump

    • actions/__init__.py version updated from 0.2.7 to 0.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-codex should 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.
  • 📏 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

Full Changelog: v0.2.7...v0.2.8

v0.2.7 - New `gpt-5.1-2025-11-13` model (#651)

13 Nov 23:26
79818f5

Choose a tag to compare

🌟 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_model default → gpt-5.1-2025-11-13
    • actions/utils/openai_utils.py: OPENAI_MODEL default → 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-13

Or set environment variable:

export OPENAI_MODEL=gpt-5.1-2025-11-13

What's Changed

Full Changelog: v0.2.6...v0.2.7

v0.2.6 - Optimize citation removal in sanitize_ai_text (#650)

09 Nov 22:21
95942d5

Choose a tag to compare

🌟 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

🎯 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

Full Changelog: v0.2.5...v0.2.6

v0.2.5 - List skipped PR Review files (#648)

09 Nov 15:40
f9ca609

Choose a tag to compare

🌟 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

🎯 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

Full Changelog: v0.2.4...v0.2.5

v0.2.4 - Enable new Ultralytics Google-style docstring formatter (#637)

02 Nov 19:23
44878d9

Choose a tag to compare

🌟 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
  • 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-newline for summary placement control. 🧰
  • Cleaner AI PR reviews

🎯 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

Full Changelog: v0.2.3...v0.2.4