Skip to content

chore: release v0.4.1 (+ develop↔main sync)#46

Merged
amcheste merged 21 commits into
developfrom
chore/release-v0.4.1
May 27, 2026
Merged

chore: release v0.4.1 (+ develop↔main sync)#46
amcheste merged 21 commits into
developfrom
chore/release-v0.4.1

Conversation

@amcheste-ai-agent
Copy link
Copy Markdown
Contributor

@amcheste-ai-agent amcheste-ai-agent Bot commented May 27, 2026

Summary

Releases v0.4.1 and folds in the maindevelop sync that #40 was doing — so it all lands in one merge, no admin override needed.

Why this absorbed #40

The standalone back-merge (#40) got stuck BEHIND: merging #39 advanced develop, and develop's "require branches up to date" rule then blocked the back-merge (the bot can't bypass it — no repo-admin). This branch is built on top of the current develop with main merged in + the version bump, so it's up to date by construction and merges normally.

Contents

  • Merge maindevelop — brings the 19 commits that piled up on main (dependabot action/dependency bumps + release commits).
  • chore: release v0.4.1pyproject 0.4.0 → 0.4.1 + CHANGELOG.

Why v0.4.1 (not re-publishing v0.4.0)

v0.4.0 was tagged but never reached PyPI — the release pipeline was gated on a live Overleaf write test and the test project's premium had lapsed (HTTP 403). With that gate removed (#39, included here), 0.4.1 is the first published 0.4.x release.

After this merges

  1. Promote: git checkout main && git merge --no-ff origin/develop -m "chore: release v0.4.1" && git push origin main (main has enforce_admins; if rejected, use a develop→main PR + gh pr merge --merge --admin).
  2. Tag: git tag -a v0.4.1 -m "Release v0.4.1" && git push origin v0.4.1 → the decoupled pipeline publishes to PyPI.
  3. Flip default branch: gh repo edit amcheste/overleaf-mcp --default-branch develop.

Supersedes #40.

🤖 Generated with Claude Code

amcheste-ai-agent and others added 18 commits April 25, 2026 15:32
Promote develop to main for the v0.1.0 release. CHANGELOG entry:
https://github.com/amcheste/overleaf-mcp/blob/main/CHANGELOG.md#010---initial-release

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Patch release fixing the --version crash. CHANGELOG entry:
https://github.com/amcheste/overleaf-mcp/blob/main/CHANGELOG.md#011---patch-release

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Promote develop to main for the v0.1.2 release. CHANGELOG entry:
https://github.com/amcheste/overleaf-mcp/blob/main/CHANGELOG.md#012---patch-release

Highlights:
- Non-interactive init and auth add (--alias, --token-stdin, --token-from-env)
- CODEOWNERS routing all PRs to @amcheste
- README hero polish (banner, badges)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Promote develop to main for the v0.2.0 release. CHANGELOG entry:
https://github.com/amcheste/overleaf-mcp/blob/main/CHANGELOG.md#020---tool-surface-completion

Highlights:
- 5 new tools: get_sections, get_section_content, create_file,
  delete_file, project_status
- New CLI subcommand: 'overleaf-mcp project clone' (replaces the
  manual git clone step from setup)
- Refactor: authenticated_git_env context manager extracted from
  probe_remote, reused by the new clone helper

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Promote develop to main for the v0.3.0 release. CHANGELOG entry:
https://github.com/amcheste/overleaf-mcp/blob/main/CHANGELOG.md#030---remote-deployment

Highlights:
- Streamable HTTP transport (overleaf-mcp serve-http) — enables
  claude.ai web and any MCP client that can't spawn local subprocesses
- Mandatory bearer-token auth (OVERLEAF_MCP_AUTH_TOKEN); refuses to
  start without it. Constant-time compare via hmac.compare_digest
- /healthz endpoint exempt from auth for monitoring
- stdio transport unchanged; existing Claude Desktop configs keep working

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the python-minor-and-patch group with 2 updates: [mcp](https://github.com/modelcontextprotocol/python-sdk) and [pydantic](https://github.com/pydantic/pydantic).


Updates `mcp` from 1.27.0 to 1.27.1
- [Release notes](https://github.com/modelcontextprotocol/python-sdk/releases)
- [Changelog](https://github.com/modelcontextprotocol/python-sdk/blob/main/RELEASE.md)
- [Commits](modelcontextprotocol/python-sdk@v1.27.0...v1.27.1)

Updates `pydantic` from 2.13.3 to 2.13.4
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v2.13.4/HISTORY.md)
- [Commits](pydantic/pydantic@v2.13.3...v2.13.4)

---
updated-dependencies:
- dependency-name: mcp
  dependency-version: 1.27.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-minor-and-patch
- dependency-name: pydantic
  dependency-version: 2.13.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 3 to 5.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](actions/upload-pages-artifact@v3...v5)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](actions/deploy-pages@v4...v5)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the python-minor-and-patch group with 3 updates: [click](https://github.com/pallets/click), [ruff](https://github.com/astral-sh/ruff) and [mkdocs-include-markdown-plugin](https://github.com/mondeja/mkdocs-include-markdown-plugin).


Updates `click` from 8.3.3 to 8.4.0
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](pallets/click@8.3.3...8.4.0)

Updates `ruff` from 0.15.12 to 0.15.13
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.15.12...0.15.13)

Updates `mkdocs-include-markdown-plugin` from 7.2.2 to 7.3.0
- [Release notes](https://github.com/mondeja/mkdocs-include-markdown-plugin/releases)
- [Commits](mondeja/mkdocs-include-markdown-plugin@v7.2.2...v7.3.0)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: ruff
  dependency-version: 0.15.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-minor-and-patch
- dependency-name: mkdocs-include-markdown-plugin
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the python-minor-and-patch group with 2 updates: [click](https://github.com/pallets/click) and [ruff](https://github.com/astral-sh/ruff).


Updates `click` from 8.4.0 to 8.4.1
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](pallets/click@8.4.0...8.4.1)

Updates `ruff` from 0.15.13 to 0.15.14
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.15.13...0.15.14)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-minor-and-patch
- dependency-name: ruff
  dependency-version: 0.15.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@amcheste-ai-agent amcheste-ai-agent Bot requested a review from amcheste as a code owner May 27, 2026 21:22
amcheste and others added 3 commits May 27, 2026 18:13
Bumps the python-minor-and-patch group with 2 updates: [click](https://github.com/pallets/click) and [ruff](https://github.com/astral-sh/ruff).

Updates `click` from 8.4.0 to 8.4.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/pallets/click/releases">click's releases</a>.</em></p>
<blockquote>
<h2>8.4.1</h2>
<p>This is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.</p>
<p>PyPI: <a href="https://pypi.org/project/click/8.4.1/">https://pypi.org/project/click/8.4.1/</a>
Changes: <a href="https://click.palletsprojects.com/page/changes/#version-8-4-1">https://click.palletsprojects.com/page/changes/#version-8-4-1</a>
Milestone: <a href="https://github.com/pallets/click/milestone/32?closed=1">https://github.com/pallets/click/milestone/32?closed=1</a></p>
<ul>
<li><code>get_parameter_source()</code> is available during eager callbacks and type conversion again. <a href="https://redirect.github.com/pallets/click/issues/3458">#3458</a> <a href="https://redirect.github.com/pallets/click/issues/3484">#3484</a></li>
<li>Zsh completion scripts parse correctly on Windows. <a href="https://redirect.github.com/pallets/click/issues/3277">#3277</a> # 3466</li>
<li>Shell completion of <code>Choice</code> <code>Enum</code> values produces a valid completion result. <a href="https://redirect.github.com/pallets/click/issues/3015">#3015</a></li>
<li>Fix empty byte-string handling in echo. <a href="https://redirect.github.com/pallets/click/issues/3487">#3487</a></li>
<li>Fix closed file error with <code>echo_via_pager</code>. <a href="https://redirect.github.com/pallets/click/issues/3449">#3449</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pallets/click/blob/main/CHANGES.rst">click's changelog</a>.</em></p>
<blockquote>
<h2>Version 8.4.1</h2>
<p>Released 2026-05-21</p>
<ul>
<li><code>get_parameter_source()</code> is available during eager callbacks and type
conversion again. :issue:<code>3458</code> :issue:<code>3484</code></li>
<li>Zsh completion scripts parse correctly on Windows. :issue:<code>3277</code> :pr:<code>3466</code></li>
<li>Shell completion of <code>Choice</code> <code>Enum</code> values produces a valid completion
result. :issue:<code>3015</code></li>
<li>Fix empty byte-string handling in echo. :issue:<code>3487</code></li>
<li>Fix closed file error with <code>echo_via_pager</code>. :issue:<code>3449</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5"><code>6eeb50e</code></a> release version 8.4.1</li>
<li><a href="https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f"><code>67921d5</code></a> change log and doc fixes (<a href="https://redirect.github.com/pallets/click/issues/3495">#3495</a>)</li>
<li><a href="https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1"><code>9c41f46</code></a> Fix changelog and version admonitions</li>
<li><a href="https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6"><code>6cb3477</code></a> fix skip condition</li>
<li><a href="https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37"><code>5ee8e31</code></a> fix I/O operation on closed file error with CliRunner and echo_via_pager (<a href="https://redirect.github.com/pallets/click/issues/3482">#3482</a>)</li>
<li><a href="https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f"><code>becbde5</code></a> pager doesn't close std streams</li>
<li><a href="https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77"><code>a5f5aa6</code></a> Handle empty bytes in echo (<a href="https://redirect.github.com/pallets/click/issues/3493">#3493</a>)</li>
<li><a href="https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2"><code>4d3db84</code></a> handle empty bytes in echo</li>
<li><a href="https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5"><code>d42f15b</code></a> Fix <code>get_parameter_source()</code> during type conversion and eager callbacks (<a href="https://redirect.github.com/pallets/click/issues/3484">#3484</a>)</li>
<li><a href="https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1"><code>0baa8db</code></a> Document ctx.params bypass with test and doc</li>
<li>Additional commits viewable in <a href="https://github.com/pallets/click/compare/8.4.0...8.4.1">compare view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.15.13 to 0.15.14
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p>
<blockquote>
<h2>0.15.14</h2>
<h2>Release Notes</h2>
<p>Released on 2026-05-21.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Implement <code>airflow-task-implicit-multiple-outputs</code> (<code>AIR202</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25152">#25152</a>)</li>
<li>[<code>flake8-use-pathlib</code>] Mark <code>PTH101</code> fix as unsafe when first argument is a class attribute annotated as <code>int</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/25086">#25086</a>)</li>
<li>[<code>pylint</code>] Implement <code>too-many-try-statements</code> (<code>W0717</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/23970">#23970</a>)</li>
<li>[<code>ruff</code>] Add <code>incorrect-decorator-order</code> (<code>RUF074</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/23461">#23461</a>)</li>
<li>[<code>ruff</code>] Add <code>fallible-context-manager</code> (<code>RUF075</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/22844">#22844</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix lambda formatting in interpolated string expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/25144">#25144</a>)</li>
<li>Treat generic <code>frozenset</code> annotations as immutable (<a href="https://redirect.github.com/astral-sh/ruff/pull/25251">#25251</a>)</li>
<li>[<code>flake8-type-checking</code>] Avoid <code>strict</code> behavior when <code>future-annotations</code> are enabled (<code>TC001</code>, <code>TC002</code>, <code>TC003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25035">#25035</a>)</li>
<li>[<code>pylint</code>] Avoid false positives in <code>else</code> clause (<code>PLR1733</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25177">#25177</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-comprehensions</code>] Skip <code>C417</code> for lambdas with positional-only parameters (<a href="https://redirect.github.com/astral-sh/ruff/pull/25272">#25272</a>)</li>
<li>[<code>flake8-simplify</code>] Preserve f-string source verbatim in <code>SIM101</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/25061">#25061</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid unnecessary parser lookahead for operators (<a href="https://redirect.github.com/astral-sh/ruff/pull/25290">#25290</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Update code example setting Neovim LSP log level (<a href="https://redirect.github.com/astral-sh/ruff/pull/25284">#25284</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Add full PEP 798 support (<a href="https://redirect.github.com/astral-sh/ruff/pull/25104">#25104</a>)</li>
<li>Add a parser recursion limit (<a href="https://redirect.github.com/astral-sh/ruff/pull/24810">#24810</a>)</li>
<li>Update various <code>ruff_python_stdlib</code> APIs (<a href="https://redirect.github.com/astral-sh/ruff/pull/25273">#25273</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/ocaballeror"><code>@​ocaballeror</code></a></li>
<li><a href="https://github.com/lerebear"><code>@​lerebear</code></a></li>
<li><a href="https://github.com/samuelcolvin"><code>@​samuelcolvin</code></a></li>
<li><a href="https://github.com/baltasarblanco"><code>@​baltasarblanco</code></a></li>
<li><a href="https://github.com/aconal-com"><code>@​aconal-com</code></a></li>
<li><a href="https://github.com/anishgirianish"><code>@​anishgirianish</code></a></li>
<li><a href="https://github.com/JelleZijlstra"><code>@​JelleZijlstra</code></a></li>
<li><a href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p>
<blockquote>
<h2>0.15.14</h2>
<p>Released on 2026-05-21.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Implement <code>airflow-task-implicit-multiple-outputs</code> (<code>AIR202</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25152">#25152</a>)</li>
<li>[<code>flake8-use-pathlib</code>] Mark <code>PTH101</code> fix as unsafe when first argument is a class attribute annotated as <code>int</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/25086">#25086</a>)</li>
<li>[<code>pylint</code>] Implement <code>too-many-try-statements</code> (<code>W0717</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/23970">#23970</a>)</li>
<li>[<code>ruff</code>] Add <code>incorrect-decorator-order</code> (<code>RUF074</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/23461">#23461</a>)</li>
<li>[<code>ruff</code>] Add <code>fallible-context-manager</code> (<code>RUF075</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/22844">#22844</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix lambda formatting in interpolated string expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/25144">#25144</a>)</li>
<li>Treat generic <code>frozenset</code> annotations as immutable (<a href="https://redirect.github.com/astral-sh/ruff/pull/25251">#25251</a>)</li>
<li>[<code>flake8-type-checking</code>] Avoid <code>strict</code> behavior when <code>future-annotations</code> are enabled (<code>TC001</code>, <code>TC002</code>, <code>TC003</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25035">#25035</a>)</li>
<li>[<code>pylint</code>] Avoid false positives in <code>else</code> clause (<code>PLR1733</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25177">#25177</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-comprehensions</code>] Skip <code>C417</code> for lambdas with positional-only parameters (<a href="https://redirect.github.com/astral-sh/ruff/pull/25272">#25272</a>)</li>
<li>[<code>flake8-simplify</code>] Preserve f-string source verbatim in <code>SIM101</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/25061">#25061</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid unnecessary parser lookahead for operators (<a href="https://redirect.github.com/astral-sh/ruff/pull/25290">#25290</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Update code example setting Neovim LSP log level (<a href="https://redirect.github.com/astral-sh/ruff/pull/25284">#25284</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Add full PEP 798 support (<a href="https://redirect.github.com/astral-sh/ruff/pull/25104">#25104</a>)</li>
<li>Add a parser recursion limit (<a href="https://redirect.github.com/astral-sh/ruff/pull/24810">#24810</a>)</li>
<li>Update various <code>ruff_python_stdlib</code> APIs (<a href="https://redirect.github.com/astral-sh/ruff/pull/25273">#25273</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/ocaballeror"><code>@​ocaballeror</code></a></li>
<li><a href="https://github.com/lerebear"><code>@​lerebear</code></a></li>
<li><a href="https://github.com/samuelcolvin"><code>@​samuelcolvin</code></a></li>
<li><a href="https://github.com/baltasarblanco"><code>@​baltasarblanco</code></a></li>
<li><a href="https://github.com/aconal-com"><code>@​aconal-com</code></a></li>
<li><a href="https://github.com/anishgirianish"><code>@​anishgirianish</code></a></li>
<li><a href="https://github.com/JelleZijlstra"><code>@​JelleZijlstra</code></a></li>
<li><a href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/astral-sh/ruff/commit/9ad2da3015e5faf73bdc5f1d09df3e47238e3edf"><code>9ad2da3</code></a> Bump 0.15.14 (<a href="https://redirect.github.com/astral-sh/ruff/issues/25295">#25295</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/c714e84952510696c05ec21b0158a3548898f594"><code>c714e84</code></a> [ty] Modernize setup of union types in mdtests (<a href="https://redirect.github.com/astral-sh/ruff/issues/25291">#25291</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/8a8e35ebfe318e2467a0f276e5d1a3a9032a55ad"><code>8a8e35e</code></a> [<code>flake8-comprehensions</code>] Skip <code>C417</code> for lambdas with positional-only parame...</li>
<li><a href="https://github.com/astral-sh/ruff/commit/aea5ed4d278017057c2e842c6c3a2e92ad71495f"><code>aea5ed4</code></a> Avoid unnecessary parser lookahead for operators (<a href="https://redirect.github.com/astral-sh/ruff/issues/25290">#25290</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/e9d72bb420f26c23e6660bfce4dfa0028b931bff"><code>e9d72bb</code></a> [ty] Allow enum member accesses on <code>self</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/25077">#25077</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/6cbd59b511a92d5f408db57bde33367c0d47b672"><code>6cbd59b</code></a> Set <code>exclude-newer = &quot;7 days&quot;</code> in our PEP-723 scripts (<a href="https://redirect.github.com/astral-sh/ruff/issues/25285">#25285</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/9999a3967ae28fe3295131e8883b6947f272a076"><code>9999a39</code></a> Update code example on how to update Neovim LSP log level (<a href="https://redirect.github.com/astral-sh/ruff/issues/25284">#25284</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/67d8c544f0d1c526a2fc60d4bb1358fd7956d178"><code>67d8c54</code></a> [ty] Retain recursively-defined state in binary expressions (<a href="https://redirect.github.com/astral-sh/ruff/issues/25277">#25277</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/25a3191140dc0467f9d196f35c128fefde269261"><code>25a3191</code></a> [ty] Refine Callable class-decorator fallback for unknown results (<a href="https://redirect.github.com/astral-sh/ruff/issues/25250">#25250</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/c423054dc09e5b644c926b6b527b6accfbe693e9"><code>c423054</code></a> Add a recursion limit to the parser (<a href="https://redirect.github.com/astral-sh/ruff/issues/24810">#24810</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.13...0.15.14">compare view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions


</details>
v0.4.0 was tagged 2026-05-12 but never reached PyPI: the release pipeline
was gated on a live Overleaf write test, and the test project's premium
plan had lapsed (writes return HTTP 403), which blocked the publish. With
that gate removed (PR #39), 0.4.1 ships all of 0.4.0's changes plus the CI
fixes — it's the first published release of the 0.4.x line.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
@amcheste-ai-agent amcheste-ai-agent Bot force-pushed the chore/release-v0.4.1 branch from b903dd5 to 0275347 Compare May 27, 2026 22:38
@amcheste-ai-agent amcheste-ai-agent Bot changed the title chore: release v0.4.1 chore: release v0.4.1 (+ develop↔main sync) May 27, 2026
@amcheste amcheste merged commit 6e4aa26 into develop May 27, 2026
15 checks passed
@amcheste amcheste deleted the chore/release-v0.4.1 branch May 27, 2026 22:50
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.

2 participants