Skip to content

Choose a tag to compare

@github-actions github-actions released this 29 Aug 20:41
· 1 commit to refs/heads/main since this release
Immutable release. Only release title and notes can be modified.
10618b1

⚠️ Important Changes

  • Dependency management migrated to uv (#2509): requirements.txt, requirements-dev.txt, and the legacy setup.py are gone — dependencies now live in pyproject.toml with a committed uv.lock. Set up a dev environment with uv sync and run tools via uv run. Optional features are now extras (lambda, langchainuv sync --extra <name>) or a dependency group (similar-issueuv sync --group similar-issue), and Docker images install from the lockfile with uv sync --frozen. Installing from PyPI with pip install pr-agent still works.
  • Linting consolidated on Ruff (#2880): flake8 and the standalone isort pre-commit hook were removed. Contributors should run uv run ruff check --fix on touched files before committing.
  • Dependency pins relaxed to patched ranges (#2881): exact pins were loosened so downstream consumers can pick up security updates; LiteLLM was also upgraded to v1.98.0 (#2794).

🚀 Features

🐛 Bug Fixes

  • fix(polling): enforce process limit before spawning by @PeterDaveHello in #2872
  • fix(improve): clean up progress comment on cancellation by @junnhwan in #2850
  • Fix: log dropped inline comments by @raappo in #2876
  • fix(mosaico): preserve request errors around Langfuse spans by @junnhwan in #2865
  • fix: skip non-UTF-8 files in Local Git and Gerrit diffs by @oleksii-tumanov in #2858
  • fix(codecommit): skip non-UTF-8 files in diffs by @oleksii-tumanov in #2860
  • fix: YAML parser error from diff-style lines in nested lists by @isExample in #2061
  • fix: demote openrouter reasoning_effort warning to info for non-none values by @Newer1107 in #2866
  • fix(skills): respect per-command settings in request-scoped cache by @junnhwan in #2857
  • fix(ask-line): enforce conversation history token budget by @junnhwan in #2862
  • fix: show partial code suggestion coverage by @YaoSong808 in #2863
  • fix(suggestions): retain successful chunks after partial failure by @junnhwan in #2829
  • fix(openrouter): normalize reasoning controls by @PeterDaveHello in #2837
  • fix: accept case-insensitive YAML fence labels by @alexsmolya in #2842
  • fix(gerrit): align diff metadata and filtering by @lxingy3 in #2836
  • fix: preserve target indentation in improve suggestions by @Oxygen56 in #2429
  • fix(describe): clean up progress comments on failure and cancellation by @junnhwan in #2833
  • fix(github): release cancelled push-trigger waiters by @junnhwan in #2827
  • fix(agent): preserve asyncio cancellation at request boundary by @junnhwan in #2832
  • fix(suggestions): only offer applicable changes by @TLA020 in #2649
  • fix(ask_line): skip the model call when no hunk lines are selected by @Evhye38496 in #2807
  • fix: propagate exception from verified inline comment publishing by @karesansui-u in #2258
  • fix(github): handle null GraphQL fields in fetch_sub_issues by @erkdgn in #2785
  • fix(agent): preserve quoted webhook command arguments by @junnhwan in #2813
  • fix: fall back for oversized Claude token requests by @junnhwan in #2811
  • fix: recognize generated descriptions with leading content by @bunnysayzz in #2667
  • fix: accept whitespace between code fence and yaml info string by @bunnysayzz in #2622
  • fix(gitlab): support numeric project ID merge request URLs by @waewoo in #2719
  • fix(gitlab): restore ticket context in reviews by @Fnine59 in #2802
  • fix(gitlab): strip sub-path prefix when parsing merge request URLs by @Evhye38496 in #2806
  • fix(pr_agent/algo/file_filter.py): warning when an ignore pattern cannot compile by @dwin-gharibi in #2748
  • fix(pr_agent/algo/pr_processing.py): coercing patch_extra_lines settings to int by @dwin-gharibi in #2740
  • fix(pr_agent/algo/pr_processing.py): filling token counts before sorting the compressed diff by @dwin-gharibi in #2734
  • fix(pr_agent/servers/bitbucket_app.py): building the secret provider per process by @dwin-gharibi in #2736
  • fix(review): publish failure result for manual runs by @oleksii-tumanov in #2795
  • fix(pr_agent/algo/utils.py): clamping the review effort score to its scale by @dwin-gharibi in #2760
  • fix(pr_agent/algo/git_patch_processing.py): skipping lines that are not unified hunk headers by @dwin-gharibi in #2755
  • fix(azure): handle commits without changes by @junnhwan in #2786
  • fix(bitbucket-server): preserve MOVE rename semantics in pull request diffs by @junnhwan in #2801
  • fix(repo-context): propagate provider fetch errors by @junnhwan in #2793
  • fix(pr_agent/algo/skills_loader.py): keeping truncated skills inside the token budget by @dwin-gharibi in #2770
  • fix(pr_agent/tools/pr_add_docs.py): range-checking the model's line numbers by @dwin-gharibi in #2758
  • fix: /ask on outdated review comments crashes with TypeError by @rophy in #2784
  • fix(codecommit): include deleted files in review diffs by @Fnine59 in #2789
  • fix: add config.max_output_tokens so completion calls carry an output token limit by @IsmaelMartinez in #2632
  • fix(ask): stop discarding GitLab answers that mention quick actions (#2302) by @IsmaelMartinez in #2628
  • fix(pr_agent/algo/token_handler.py): coercing the token estimate factor to float by @dwin-gharibi in #2742
  • fix(pr_agent/algo/ai_handlers/langchain_ai_handler.py): moving the Runnable import inside the guard by @dwin-gharibi in #2732
  • fix(bitbucket): propagate repo context fetch errors by @junnhwan in #2791
  • fix(gitea): strip the full /api/v1/repos prefix when parsing URLs by @jamesbraid in #2780
  • fix: sanitize illegal control characters before YAML parsing by @kate1128 in #2618
  • fix(pr_agent/algo/utils.py): rendering nested config values as yaml by @dwin-gharibi in #2752
  • fix(pr_agent/algo/utils.py): guarding the empty relevant line lookup by @dwin-gharibi in #2772
  • fix(pr_agent/algo/utils.py): rendering the review without mutating the caller's data by @dwin-gharibi in #2764
  • fix(pr_agent/algo/utils.py): accepting a single ticket compliance entry by @dwin-gharibi in #2762
  • fix(pr_agent/algo/utils.py): skipping a malformed contribution time estimate by @dwin-gharibi in #2746
  • fix(pr_agent/algo/utils.py): reporting an unreadable token budget instead of ignoring it by @dwin-gharibi in #2744
  • fix(pr_agent/algo/utils.py): coercing configured token limits to int by @dwin-gharibi in #2738
  • fix(pr_agent/git_providers/github_provider.py): normalising inverted line ranges in links by @dwin-gharibi in #2766
  • fix(pr_agent/git_providers/github_provider.py): keying global settings on the host by @dwin-gharibi in #2750
  • fix(github-provider): preserve old_filename and content on renames by @AmirF194 in #2776
  • Fix Azure diff fallback logging by @LunaMeerkats in #2869
  • fix(repo-context): separate cache entries by source branch by @junnhwan in #2856
  • fix(gitlab): retry overflowed merge request diffs by @junnhwan in #2810
  • Fix/litellm custom provider override by @Taooo-habitus in #2344
  • Update event handling for pull request updates by @michaelwellsjr in #2637
  • fix(pr_agent/tools/pr_code_suggestions.py): coercing the per-chunk suggestion count by @dwin-gharibi in #2754
  • Fix deferred LiteLLM callback draining by @PeterDaveHello in #2614
  • fix(review): remove stale progress comments by @oleksii-tumanov in #2788
  • fix(labels): escape single quotes in custom label descriptions by @gvago in #2320
  • fix: avoid UnboundLocalError in _calc_claude_tokens error handler by @karesansui-u in #2256

📚 Documentation

🧹 Maintenance

Full Changelog: v0.43.0...v0.44.0