mirror of
https://github.com/ManimCommunity/manim.git
synced 2026-06-22 10:01:47 +00:00
Prepare new release, v0.20.0 (#4599)
* fix: resolve parameter shadowing bug in release script changelog command * chore: bump version to v0.20.0, regenerate lockfile, update citation * generate v0.20.0 changelog, first round * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * a bit of copyediting, second pass * include newly merged PR, apply suggestions from review * Update docs/source/changelog/0.20.0-changelog.md Co-authored-by: Francisco Manríquez Novoa <49853152+chopan050@users.noreply.github.com> --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Francisco Manríquez Novoa <49853152+chopan050@users.noreply.github.com>
This commit is contained in:
parent
9504757918
commit
d1eea48aa6
6 changed files with 100 additions and 8 deletions
|
|
@ -4,10 +4,10 @@ authors:
|
|||
-
|
||||
name: "The Manim Community Developers"
|
||||
cff-version: "1.2.0"
|
||||
date-released: 2026-01-17
|
||||
date-released: 2026-02-20
|
||||
license: MIT
|
||||
message: "We acknowledge the importance of good software to support research, and we note that research becomes more valuable when it is communicated effectively. To demonstrate the value of Manim, we ask that you cite Manim in your work."
|
||||
title: Manim – Mathematical Animation Framework
|
||||
url: "https://www.manim.community/"
|
||||
version: "v0.19.2"
|
||||
version: "v0.20.0"
|
||||
...
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ This page contains a list of changes made between releases.
|
|||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
changelog/0.20.0-changelog
|
||||
changelog/0.19.2-changelog
|
||||
changelog/0.19.1-changelog
|
||||
changelog/0.19.0-changelog
|
||||
|
|
|
|||
86
docs/source/changelog/0.20.0-changelog.md
Normal file
86
docs/source/changelog/0.20.0-changelog.md
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
short-title: v0.20.0
|
||||
description: Changelog for v0.20.0
|
||||
---
|
||||
|
||||
# v0.20.0
|
||||
|
||||
Date
|
||||
: February 20, 2026
|
||||
|
||||
|
||||
## What's Changed
|
||||
### Breaking Changes 🚨
|
||||
* Fix `ImageMobject` 3D rotation/flipping and remove resampling algorithms `lanczos` (`antialias`), `box` and `hamming` by {user}`chopan050` in {pr}`4266`
|
||||
* Fix `YELLOW_C` and add `PURE_CYAN`, `PURE_MAGENTA` and `PURE_YELLOW` by {user}`chopan050` in {pr}`4562`
|
||||
|
||||
### Highlights 🌟
|
||||
* Rewrite MathTex to make it more robust regarding splitting by {user}`henrikmidtiby` in {pr}`4515`
|
||||
|
||||
The MathTex implementation has been updated to make it more robust and fix a number of issues.
|
||||
A beneficial side effect is that named groups in svg files can now be accessed through SVGMobject.
|
||||
|
||||
* Add new Animation Builder `Mobject.always` by {user}`JasonGrace2282` in {pr}`4594`
|
||||
|
||||
This new feature is a convenience wrapper around `add_updater` that allows adding
|
||||
updaters to a mobject in an intuitive and easy-to-read way. Example usage in a scene:
|
||||
```python
|
||||
d = Dot()
|
||||
s = Square()
|
||||
d.always.next_to(s, UP)
|
||||
self.add(s, d)
|
||||
self.play(s.animate.to_edge(LEFT))
|
||||
```
|
||||
|
||||
|
||||
### New Features ✨
|
||||
* Add a `seed` config option + `--seed` CLI option for reproducible randomness in rendered scenes by {user}`arnaud-ma` in {pr}`4532`
|
||||
|
||||
### Enhancements 🚀
|
||||
* Enable `strict=True` for `zip()` where safe by {user}`Oll-iver` in {pr}`4547`
|
||||
|
||||
### Bug Fixes 🐛
|
||||
* using `color` instead of `fill_color` with MathTeX for node labels by {user}`Schefflera-Arboricola` in {pr}`4501`
|
||||
* fix: infinite recursion caused by accessing color of a highlighted Ta… by {user}`BHearron` in {pr}`4435`
|
||||
* Prevent potential `UnboundLocalError` in `PolarPlane` by {user}`RinZ27` in {pr}`4557`
|
||||
* Fixed division by 0 in `turn_animation_into_updater` by {user}`SoldierSacha` in {pr}`4567`
|
||||
* Fix TOCTOU Race Conditions when creating directories by {user}`SoldierSacha` in {pr}`4587`
|
||||
* Resolve more race conditions potentially happening during directory creation by {user}`SoldierSacha` in {pr}`4589`
|
||||
* Fix `c2p`/`coords_to_point` method call with single flat list or 1D array input by {user}`danielalanbates` in {pr}`4596`
|
||||
|
||||
### Documentation 📚
|
||||
* Enable rendered documentation of `RandomColorGenerator` by {user}`arnaud-ma` in {pr}`4533`
|
||||
* Remove pin to Python 3.13 in installation docs by {user}`chopan050` in {pr}`4534`
|
||||
* Fix broken aquabeam OpenGL link using Wayback Machine by {user}`behackl` in {pr}`4545`
|
||||
* Add type annotations and docstrings in `opengl_renderer.py` by {user}`arnaud-ma` in {pr}`4537`
|
||||
* docs: improve `TransformFromCopy` docstring by {user}`GoThrones` in {pr}`4597`
|
||||
|
||||
### Infrastructure & Build 🔨
|
||||
* Install missing dependencies in release pipeline by {user}`behackl` in {pr}`4531`
|
||||
|
||||
### Code Quality & Refactoring 🧹
|
||||
* Rework and consolidate release changelog script, add previously skipped changelog entries by {user}`behackl` in {pr}`4568`
|
||||
* Remove `__future__.annotations` from required imports by {user}`JasonGrace2282` in {pr}`4571`
|
||||
* Cleaned up `mypy.ini` by {user}`henrikmidtiby` in {pr}`4584`
|
||||
* Add `py.typed` to declare manim as having type hints by {user}`Timmmm` in {pr}`4553`
|
||||
* Fix assertion in `ImageMobjectFromCamera.interpolate_color()` by {user}`chopan050` in {pr}`4593`
|
||||
* Reduce dependency on scipy - replace `scipy.special.comb` with `math.comb` by {user}`fmuenkel` in {pr}`4598`
|
||||
|
||||
### Type Hints 📝
|
||||
* Add type annotations to `rotation.py` by {user}`fmuenkel` in {pr}`4535`
|
||||
* Add type annotations to `opengl_compatibility.py` by {user}`fmuenkel` in {pr}`4585`
|
||||
* Add type annotations to `image_mobject.py` by {user}`henrikmidtiby` in {pr}`4458`
|
||||
* Add type annotations to `opengl_image_mobject.py` by {user}`fmuenkel` in {pr}`4536`
|
||||
* Add type annotations to `point_cloud_mobject.py` by {user}`fmuenkel` in {pr}`4586`
|
||||
|
||||
## New Contributors
|
||||
* {user}`arnaud-ma` made their first contribution in {pr}`4533`
|
||||
* {user}`Schefflera-Arboricola` made their first contribution in {pr}`4501`
|
||||
* {user}`BHearron` made their first contribution in {pr}`4435`
|
||||
* {user}`RinZ27` made their first contribution in {pr}`4557`
|
||||
* {user}`SoldierSacha` made their first contribution in {pr}`4567`
|
||||
* {user}`Oll-iver` made their first contribution in {pr}`4547`
|
||||
* {user}`GoThrones` made their first contribution in {pr}`4597`
|
||||
* {user}`danielalanbates` made their first contribution in {pr}`4596`
|
||||
|
||||
**Full Changelog**: [Compare view](https://github.com/ManimCommunity/manim/compare/v0.19.2...v0.20.0)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "manim"
|
||||
version = "0.19.2"
|
||||
version = "0.20.0"
|
||||
description = "Animation engine for explanatory math videos."
|
||||
authors = [
|
||||
{name = "The Manim Community Developers", email = "contact@manim.community"},
|
||||
|
|
|
|||
|
|
@ -346,7 +346,12 @@ def cli(ctx: click.Context, dry_run: bool) -> None:
|
|||
)
|
||||
@click.option("--head", default="main", help="Head ref for comparison (default: main)")
|
||||
@click.option("--title", help="Custom changelog title (default: vX.Y.Z)")
|
||||
@click.option("--update-citation", is_flag=True, help="Also update CITATION.cff")
|
||||
@click.option(
|
||||
"--update-citation",
|
||||
"also_update_citation",
|
||||
is_flag=True,
|
||||
help="Also update CITATION.cff",
|
||||
)
|
||||
@click.pass_context
|
||||
def changelog(
|
||||
ctx: click.Context,
|
||||
|
|
@ -354,7 +359,7 @@ def changelog(
|
|||
version: str,
|
||||
head: str,
|
||||
title: str | None,
|
||||
update_citation: bool,
|
||||
also_update_citation: bool,
|
||||
) -> None:
|
||||
"""Generate changelog for an upcoming release.
|
||||
|
||||
|
|
@ -375,7 +380,7 @@ def changelog(
|
|||
click.echo()
|
||||
click.secho("[DRY RUN]", fg="yellow", bold=True)
|
||||
click.echo(f" Would save: {CHANGELOG_DIR / f'{version}-changelog.md'}")
|
||||
if update_citation:
|
||||
if also_update_citation:
|
||||
click.echo(f" Would update: {CITATION_FILE}")
|
||||
click.echo()
|
||||
click.echo("--- Generated changelog ---")
|
||||
|
|
@ -385,7 +390,7 @@ def changelog(
|
|||
filepath = save_changelog(version, content)
|
||||
click.secho(f" ✓ Saved: {filepath}", fg="green")
|
||||
|
||||
if update_citation:
|
||||
if also_update_citation:
|
||||
citation_path = update_citation(version)
|
||||
click.secho(f" ✓ Updated: {citation_path}", fg="green")
|
||||
|
||||
|
|
|
|||
2
uv.lock
generated
2
uv.lock
generated
|
|
@ -1396,7 +1396,7 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "manim"
|
||||
version = "0.19.2"
|
||||
version = "0.20.0"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "audioop-lts", marker = "python_full_version >= '3.13'" },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue