What's Changed
New Features
- Introduce seed in
random_colormethod to produce colors deterministically by @ishu9bansal in #4265 - Add support for arithmetic operators
//,%,*,**and/onValueTrackerby @fmuenkel in #4351 - Add
TangentialArcmobject by @Brainsucker92 in #4469
Fixed Bugs and Enhancements
- Fix environment formating for Tex() mobject by @fmuenkel in #4159
- Improved consistency of rate_function implementations by @BenKirkels in #4144
- Make new
Codemobject compatible with OpenGL renderer by @behackl in #4164 - Fix HSL color ordering in ManimColor by @thehugwizard in #4202
- Fix return type of
Polygram.get_vertex_groups()and rename variables in.round_corners()by @chopan050 in #4063 - Improve
Mobject.align_datadocstring by @irvanalhaq9 in #4152 - Fix :meth:
VMobject.pointwise_become_partialfailing whenvmobjectisselfby @irvanalhaq9 in #4193 - Fix
add_points_as_cornersnot connecting single point to existing path by @irvanalhaq9 in #4219 - Complete typing for logger_utils.py by @fmuenkel in #4134
- Fix(graph): Allow any Line subclass as edge_type in Graph/DiGraph by @Akshat-Mishra-py in #4251
- Replace exceptions, remove unused parameters, and fix type hints in
Animation,ShowPartial,Create,ShowPassingFlash, andDrawBorderThenFillby @irvanalhaq9 in #4214 - Fix:
Axessubmobject colors are not being set properly by @ishu9bansal in #4291 - Refactor
Rotatingand add docstrings toMobject.rotate()andRotatingby @irvanalhaq9 in #4147 - Fix default config of
manim init projectto use correctpixel_heightandpixel_widthby @StevenH34 in #4213 - Handle opacity and transparent images by @henrikmidtiby in #4313
- Gracefully fall back when version metadata is missing by @mohiuddin-khan-shiam in #4324
- Fix for issue 4255 - Do not clear points when the number of curves is zero by @henrikmidtiby in #4320
- Use utf-8 encoding to read generated .tex files. by @OliverStrait in #4334
- Add zero to vmobject points to remove negative zeros in
get_mobject_keyby @elshorbagyx in #4332 - Ensure
stroke_widthattribute ofSVGMobjectis not set toNoneby @henrikmidtiby in #4319 - Fix
Prismincorrectly rendering withdimensions=[2, 2, 2]in OpenGL by @ra1u in #4003 - Fix
BraceLabel.change_label()and documentBraceTextby @henrikmidtiby in #4347 - Include
Text.gradientin hash to properly regenerateTextwhen its gradient changes by @AbhilashaTandon in #4099 - Fixed surface animations in OpenGL by @nubDotDev in #4286
- Add type hints and support for arithmetic operators
+and-onValueTrackerby @fmuenkel in #4129 - Fix duplicate references in
Scene.mobjectsafterReplacementTransformwith existing target mobject by @irvanalhaq9 in #4242 - Optimize
always_redraw()by reducingMobjectcopying inMobject.become()by @chopan050 in #4357 - Enhance
manim cfg showoutput and add info-level logging for config files read by @xnov18 in #4375 - Let
Cubeuse Bevel type line joints by @nubDotDev in #4361 - Properly define
init_pointsmethods for use in OpenGL instead of defininginit_points = generate_pointsby @chopan050 in #4360 - Allow passing a tuple to
buffinSurroundingRectangleto specify buffer in x and y direction independently by @nubDotDev in #4390 - Rewrite
color_gradientto always return a list of ManimColors by @henrikmidtiby in #4380 - Ensure leading whitespace does not change line height for lines in CodeMobject by @behackl in #4392
- Simplify the function
remove_invisible_charsintext_mobject.pyby @henrikmidtiby in #4394 - Fix some config options specified via
--config_filenot being respected properly by @behackl in #4401 - Fix: Correct resolution tuple order to (height, width) by @Nikhil172913832 in #4440
- Ensure that start and end points are stored as float values in Line3D by @SirJamesClarkMaxwell in #4080
- OpenGL: Fix iterated nesting in
DecimalNumber.set_valueby @henrikmidtiby in #4373 - Update default resolution in CLI to match Manim’s 1920x1080 default settings by @SASHAKT1290 in #4452
- Better parsing of color styles in CodeMobject by @SirJamesClarkMaxwell in #4454
- Allow selection of all scenes to render using '*' by @NightyStudios in #4470
- Prevent mutation of
about_pointinapply_points_function_about_pointby @Morkunas in #4478 - Fix behavior of
Mobject.suspend_updating: when only suspending parent mobject, let children continue updating by @behackl in #4402 - Allow passing a
bufftoLabeledDotby @nubDotDev in #4403 - Pass ndarrays to
mapbox_earcut.triangulate_float32()to fixTypeErrorinmapbox_earcut==2.0.0by @GuiCT in #4479 - Fix duplicated arrow tips in DashedVMobject (issue #3220) by @jakekinchen in #4484
Documentation
- Add docstring to :meth:
.Mobject.get_familyby @irvanalhaq9 in #4127 - Fix link formatting and clarify the distinction between Manim versions in index.rst by @irvanalhaq9 in #4131
- Add instructions for installing system utilities
cairoandpkg-configvia Homebrew on MacOS by @behackl in #4146 - Add missing line break in Code of Conduct's conflict of interest policy by @Hasan-Mesbaul-Ali-Taher in #4185
- Fix links to Pango website by @ragibson in #4217
- Replace poetry with uv in the README by @xinoehp512 in #4226
- Improve docstring for
interpolatemethod inMobjectclass by @irvanalhaq9 in #4149 - Add docstrings to
Lineand removeNonehandling forpath_arcparameter by @irvanalhaq9 in #4223 - Add docstring to :meth:
Mobject.family_members_with_pointsby @irvanalhaq9 in #4128 - Update incorrect docstring for :attr:
ManimConfig.gui_locationproperty by @SAYAN02-DEV in #4254 - Fix formatting of color space documentation by @behackl in #4274
- Enhance and Paraphrase Description of ManimCE in README.md by @irvanalhaq9 in #4141
- docs: add explanation about the rate_func in the custom animation by @pedropxoto in #4278
- Fixed artifact in docstring of Animation by @barollet in #4283
- Rename update function
dot_positiontoupdate_labelin.add_updaterexample by @irvanalhaq9 in #4196 - Fix Microsoft typo in
TexFontTemplateLibraryscene inexample_scenes/advanced_tex_fonts.pyby @alterdim in #4305 - Improved readability, grammar, as well as added docstrings for consistency by @NASAnerd05 in #4267
- Add docstrings for
ChangingDecimalandChangeDecimalToValueby @haveheartt in #4346 - Fix Sphinx exceptions when trying to build documentation via latex / as pdf by @behackl in #4370
- Added license information to documentation landing page by @Nikil-D-Gr8 in #3986
- Set the default Python version to 3.13 in the uv installation guide by @henrikmidtiby in #4480
Maintenance and Testing
- Change project management tool from poetry to uv by @behackl in #4138
- Re-add ffmpeg as dependency within Docker image by @behackl in #4150
- Add tests for Matrix, DecimalMatrix, IntegerMatrix by @pdrzan in #4279
- Add tests for polylabel utility by @giolucasd in #4269
- Add support for
pycodestyle Wrule in Ruff by @KaiqueDultra in #4276 - Fix files with few MyPy typing errors by @henrikmidtiby in #4263
- Explicitly mention all files that mypy should ignore in the
mypy.iniconfiguration file by @henrikmidtiby in #4306 - Remove dead code from
scene.pyandvector_space_scene.pyby @henrikmidtiby in #4310 - Add type annotations to
scene.pyandvector_space_scene.pyby @henrikmidtiby in #4260 - Replace setup-texlive-action in CI workflow by @behackl in #4326
- Adding type annotations to polyhedra.py and matrix.py by @henrikmidtiby in #4322
- Handling typing errors in text/numbers.py by @henrikmidtiby in #4317
- Move
configure_pyguiinto aScenemethod and removemanim.guiby @chopan050 in #4314 - Add typing annotations to svg_mobject.py by @henrikmidtiby in #4318
- Add type annotations to
mobject/svg/brace.pyand default tolabel_constructor=TextinBraceTextby @henrikmidtiby in #4309 - Add classes
MethodWithArgs,SceneInteractContinueandSceneInteractReruninside new modulemanim.data_structuresby @chopan050 in #4315 - Fix typo in import of OpenGLCamera in
utils/hashing.pyby @fmuenkel in #4352 - Add type annotations to
manim/renderer/shader.pyby @henrikmidtiby in #4350 - Add type annotations to
tex_mobject.pyby @henrikmidtiby in #4355 - Add type annotations to
three_d_camera.pyby @henrikmidtiby in #4356 - Revert change of default value for tex_environment by @henrikmidtiby in #4358
- Add type hints to
scene_file_writer.py,section.py, andzoomed_scene.pyby @fmuenkel in #4133 - Add type annotations for most of
cameraandmobject.graphingby @henrikmidtiby in #4125 - Add
VectorNDLiketype aliases by @chopan050 in #4068 - Add type annotations to
dot_cloud.py,vectorized_mobject_rendering.pyandopengl_three_dimensions.pyby @henrikmidtiby in #4359 - Add type annotations to
indication.pyby @henrikmidtiby in #4367 - Add type annotations to
composition.pyby @henrikmidtiby in #4366 - Add type annotations to
growing.pyby @henrikmidtiby in #4368 - Add type annotations to
movement.pyby @henrikmidtiby in #4371 - Exclude check for cyclic imports by CodeQL by @behackl in #4384
- Refactor imports from
collections.abc,typingandtyping_extensionsfor Python 3.9 by @chopan050 in #4353 - Add type annotations to
opengl_renderer_window.pyby @fmuenkel in #4363 - Rename
SceneFileWriter.save_final_image()tosave_image()by @fmuenkel in #4378 - Add type annotations to
text_mobject.pyby @henrikmidtiby in #4381 - Rename types like
RGBA_Array_FloattoFloatRGBAand add types likeFloatRGBA_Arrayby @chopan050 in #4386 - Add type annotations to
opengl_geometry.pyby @henrikmidtiby in #4396 - Add type annotations to
moving_camera.pyby @henrikmidtiby in #4397 - Add type annotations to
opengl_mobject.pyby @RBerga06 in #4398 - Fix failing pre-commit tests by @cclauss in #4434
- Add type annotations to
cairo_renderer.pyby @fmuenkel in #4393 - Fix type errors and add typings for
Mobject.apply_function(), its derivatives, and other utility functions by @godalming123 in #4228 - Bump macOS image from deprecated macos-13 to macos-15-intel by @chopan050 in #4481
- Prepare new release
v0.19.1and bump minimum required Python version to 3.10 by @behackl in #4490
Dependency Version Changes
- Bump typing extensions minimum version by @JasonGrace2282 in #4121
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4122
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4140
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4148
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4181
- Bump astral-sh/setup-uv from 5 to 6 by @dependabot[bot] in #4234
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4204
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4391
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4405
- Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #4433
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #4418
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4409
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4460
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #4467
- Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #4466
- Bump astral-sh/setup-uv from 6 to 7 by @dependabot[bot] in #4465
- Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #4464
New Contributors
- @BenKirkels made their first contribution in #4144
- @Hasan-Mesbaul-Ali-Taher made their first contribution in #4185
- @ragibson made their first contribution in #4217
- @thehugwizard made their first contribution in #4202
- @xinoehp512 made their first contribution in #4226
- @SAYAN02-DEV made their first contribution in #4254
- @Akshat-Mishra-py made their first contribution in #4251
- @pdrzan made their first contribution in #4279
- @pedropxoto made their first contribution in #4278
- @giolucasd made their first contribution in #4269
- @KaiqueDultra made their first contribution in #4276
- @ishu9bansal made their first contribution in #4291
- @StevenH34 made their first contribution in #4213
- @alterdim made their first contribution in #4305
- @mohiuddin-khan-shiam made their first contribution in #4324
- @elshorbagyx made their first contribution in #4332
- @NASAnerd05 made their first contribution in #4267
- @ra1u made their first contribution in #4003
- @AbhilashaTandon made their first contribution in #4099
- @nubDotDev made their first contribution in #4286
- @haveheartt made their first contribution in #4346
- @xnov18 made their first contribution in #4375
- @Nikil-D-Gr8 made their first contribution in #3986
- @RBerga06 made their first contribution in #4398
- @Nikhil172913832 made their first contribution in #4440
- @SASHAKT1290 made their first contribution in #4452
- @Brainsucker92 made their first contribution in #4469
- @NightyStudios made their first contribution in #4470
- @Morkunas made their first contribution in #4478
- @GuiCT made their first contribution in #4479
- @godalming123 made their first contribution in #4228
- @jakekinchen made their first contribution in #4484
Full Changelog: v0.19.0...v0.19.1