Releases: ManimCommunity/manim
Manim v0.19.1
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 https://github.com/Ma...
Manim v0.19.0
Changelog
The full curated and commented changelog can be found at https://docs.manim.community/en/latest/changelog/0.19.0-changelog.html.
What's Changed
- feat: Add three animations that together simulate a typing animation by @VinhPhmCng in #3612
- Fixed action for building downloadable documentation by @JasonGrace2282 in #3737
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3739
- Fixes #3744 - underline tag should be in the documentation. by @anagorko in #3745
- Bump tqdm from 4.66.1 to 4.66.3 by @dependabot in #3746
- Bump jinja2 from 3.1.3 to 3.1.4 by @dependabot in #3750
- Add typehints to
manim.utils.iterablesby @JasonGrace2282 in #3751 - Let
SceneFileWriteraccessffmpegviaavinstead of via external process by @behackl in #3501 - Use --py39-plus in pre-commit by @JasonGrace2282 in #3761
- Optimized
manim.utils.bezier.is_closed()by @chopan050 in #3768 - Created and optimized Bézier splitting functions such as
partial_bezier_points()inmanim.utils.bezierby @chopan050 in #3766 - Bump requests from 2.31.0 to 2.32.0 by @dependabot in #3776
- Fix assertions and improve error messages when adding submobjects by @chopan050 in #3756
- Add pyproject for ruff formatting by @JasonGrace2282 in #3777
- pre-commit change to ruff by @JasonGrace2282 in #3779
- Ignore Ruff format in git blame by @Viicos in #3781
- Fixed
there_and_back_with_pause()rate function behaviour with differentpause_ratiovalues by @jkjkil4 in #3778 - Optimize
VMobjectmethods which append topointsby @chopan050 in #3765 - Add
@shorthand forCoordinateSystemmethodscoords_to_point(c2p) andpoint_to_coords(p2c) by @JasonGrace2282 in #3754 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3784
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3794
- Add Ruff Lint by @JasonGrace2282 in #3780
- Replace Pyupgrade with Ruff rule by @JasonGrace2282 in #3795
- Bump tornado from 6.4 to 6.4.1 by @dependabot in #3796
- Fixing the
get_nth_subpathfunction in "opengl_vectorized_mobject.py". by @yang-tsao in #3790 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3801
- Add typings to
OpenGLMobjectby @chopan050 in #3803 - fix: importing manim should not trigger pygments.styles.get_all_styles by @goldenphoenix713 in #3797
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3809
- Bump urllib3 from 2.2.1 to 2.2.2 by @dependabot in #3810
- Fix MacOS LaTeX CI by @JasonGrace2282 in #3812
- Fixed infinite loop in OpenGL
BackgroundRectangle.get_color()by @camburd2 in #3732 - docs(contributing): add manim.typing guide by @JasonGrace2282 in #3669
- Fix
DiGraphedges not fading correctly onFadeInandFadeOutby @Nikhil-42 in #3786 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3823
- feat(autoaliasattr): Implement Documentation of TypeVar's by @JasonGrace2282 in #3818
- Fixed
Arrow3D.put_start_and_end_on()to use the actual end of the arrow by @SirJamesClarkMaxwell in #3706 - Optimized
manim.utils.bezier.get_smooth_cubic_bezier_handle_points()by @chopan050 in #3767 - Fix docker build by @JasonGrace2282 in #3827
- Doc: add docstrings to Brace by @biinnnggggg in #3715
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3834
- Bump docker/build-push-action from 5 to 6 by @dependabot in #3835
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3844
- Bump certifi from 2024.2.2 to 2024.7.4 by @dependabot in #3841
- Fix incorrect version number in plugin section in docs by @JasonGrace2282 in #3849
- Bump zipp from 3.18.2 to 3.19.1 by @dependabot in #3847
- Rename
manim.typing.Imagetype aliases toPixelArrayto avoid conflict withPIL.Imageby @chopan050 in #3851 - Change from tempconfig to a config fixture in tests by @JasonGrace2282 in #3853
- Fix :attr:
.ManimConfig.formatnot updating movie file extension by @JasonGrace2282 in #3839 - Rewrite
manim.utils.bezier.get_quadratic_approximation_of_cubic()to produce curves which can be animated smoothly by @chopan050 in #3829 - Log execution time of scene rendering in the Manim Checkhealth command by @chopan050 in #3855
- Optimize
VMobject.pointwise_become_partial()by @chopan050 in #3760 - Update installation instructions for MacOS (via dedicated brew formula) by @Elastino in #3857
- Update docker to use ENV x=y instead of ENV x y by @JasonGrace2282 in #3858
- Fixed behavior of
config.background_opacity < 1and duplicated log messages by @abul4fia in #3680 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3865
- Fix pre-commit linting by @JasonGrace2282 in #3877
- Use ruff for pytest style by @JasonGrace2282 in #3872
- feat: set_default for Animation class by @christopher-hampson in #3876
- Use ruff instead of flake8-simplify by @JasonGrace2282 in #3873
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3880
- Change flake8-comprehensions and flake8-bugbear to ruff by @JasonGrace2282 in #3882
- Rename parameters and variables conflicting with builtin functions by @JasonGrace2282 in #3884
- Added
colorscaletoaxes.plot()by @alembcke in #3148 - Fix :meth:
.OpenGLMobject.invertnot reassembling family by @JasonGrace2282 in #3885 - Experimenting with an HSV class by @MrDiver in #3518
- Fix typo from HSV PR by @JasonGrace2282 in #3887
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3889
- Replace the TypeError message code in the _typecheck_input method in … by @irvanalhaq9 in #3890
- Significantly reduce rendering time with a separate thread for writing frames to stream by @smu160 in #3888
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3896
- Lock
poetry.lockby @JasonGrace2282 in #3895 - fix a wrong type mark in a function head. by @fogsong233 in #3902
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3904
- bugfix: convert non-
.wav/.rawfiles to.wavbefore passing to pydub by @behackl in #3832 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3911
- fix type hint, change int to float by @irvanalhaq9 in #3916
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #3918
- Simplify Sector Class by Removing Redundant Parameters by @irvanalhaq9 in #3922
- Changing the 'side_length' attribute to a property by @irvanalhaq9 in #3901
- Standardize docstrings with ruff pydocstyle rules by @JasonGrace2282 in https://...
Manim v0.18.1
What's Changed
Breaking Changes and Deprecations
- Removed deprecated
manim newcommand by @chopan050 in #3512 - Removed support for dynamic plugin imports by @Viicos in #3524
- Remove meth:
.Mobject.wagby @JasonGrace2282 in #3539 - Remove deprecated parameters and animations by @JasonGrace2282 in #3688
New Features
- Added
cap_stylefeature toVMobjectby @MathItYT in #3516 - Allow hiding version splash by @jeertmans in #3329
- Added the ability to pass lists and generators to
Scene.play()by @MrDiver in #3365 - Added
--preview_commandcli flag by @JasonGrace2282 in #3615
Fixed Bugs and Enhancements
- Allow accessing ghost vectors in :class:
.LinearTransformationSceneby @JasonGrace2282 in #3435 - Optimized
get_unit_normal()and replacednp.cross()with customcross()inmanim.utils.space_opsby @chopan050 in #3494 - Implement caching of fonts list to improve runtime performance by @MrDiver in #3316
- Reformatting the
--save_sectionsoutput to have the format<Scene>_<SecNum>_<SecName><extension>by @doaamuham in #3499 - Account for dtype in the pixel array so the maximum value stays correct in the invert function by @jeertmans in #3493
- Added
grid_linesattribute toRectangleto add individual styling to the grid lines by @RobinPH in #3428 - Fixed rectangle grid properties (#3082) by @pauluhlenbruck in #3513
- Fixed animations with zero runtime length to give a useful error instead of a broken pipe by @MrDiver in #3491
- Fixed stroke width being ignored by
StreamLineswith a single color by @yashm277 in #3436 - Fixed formatting of
MoveAlongPathdocs by @JasonGrace2282 in #3541 - Added helpful hints to
VGroup.add()error message by @vvolhejn in #3561 - Made
earclip_triangulationmore robust by @hydromelvictor in #3574 - Refactored
TexTemplateby @Viicos in #3520 - Fixed
write_subcaption_fileerror when using OpenGL renderer by @yuan-xy in #3546 - Fixed
get_arc_center()returning reference of point by @sparshg in #3599 - Improved handling of specified font name by @staghado in #3429
- Fixing the behavior of
.becometo not modify target mobject via side effects fix color linking by @MrDiver in #3508 - Fixed bug in :class:
.VMobjectFromSVGPathby @abul4fia in #3677 - Fix for windows cp1252 encoding failure (fix test pipeline) by @JasonGrace2282 in #3687
- Fix NameError in try... except by @JasonGrace2282 in #3694
- Fix successive calls of :meth:
.LinearTransformationScene.apply_matrixby @SirJamesClarkMaxwell in #3675 - Fixed
Mobject.put_start_and_end_onwith same start and end point by @MontroyJosh in #3718 - Fixed issue where
SpiralIndoesn't show elements by @gixtox in #3589 - Cleaned
Graphlayouts and increase flexibility by @Nikhil-42 in #3434 AnimationGroup: optimizedinterpolate()and fixed alpha bug onfinish()by @chopan050 in #3542- Fixed warning about missing plugin
""by @behackl in #3734
Documentation
- Typo in
indicationdocumentation by @jcep in #3477 - Fixed typo: 360° to 180° in quickstart tutorial by @szchixy in #3498
- Fixed typo in mobject docstring:
line->squareby @yuan-xy in #3509 - Explain
.Transformvs.ReplacementTransformin quickstart examples by @JasonGrace2282 in #3500 - Fixed formatting in building blocks tutorial by @MrDiver in #3515
- Fixed
Indicatedocstring typo by @Lawqup in #3461 - Added Documentation to
.to_edgeandto_cornerby @TheMathematicFanatic in #3408 - Added some words about Cairo 1.18 by @jeertmans in #3530
- Fixed typo of
get_y_axis_labelparameter documentation by @yuan-xy in #3547 - Added note in docstring of
ManimColorabout class constructors by @JasonGrace2282 in #3554 - Improve documentation section about contributing to docs by @chopan050 in #3555
- Removed duplicated documentation for -s / --save_last_frame CLI flag by @gixtox in #3528
- Updated Docker instructions to use bash from the PATH by @NotWearingPants in #3582
- Fixed typo in
value_tracker.pyby @yuan-xy in #3594 - Added
ref_classforBooleanOperationsin Example Gallery by @JasonGrace2282 in #3598 - Changed
Vector3toVector3Din contributing docs by @JasonGrace2282 in #3639 - Added some examples for
Mobject/VMobjectmethods by @JasonGrace2282 in #3641 - Fixed broken link to Poetry's installation guide in the documentation by @biinnnggggg in #3692
- Fixed minor grammatical errors found in the index page of the documentation by @biinnnggggg in #3690
- Fixed typo on page about translations by @biinnnggggg in #3696
- Fixed outdated description of CLI option in Manim's Output Settings by @HairlessVillager in #3674
- Mention pixi in installation guide by @pavelzw in #3678
- Updated typing guidelines by @JasonGrace2282 in #3704
- Updated documentation and typings for
ParametricFunctionby @danielzsh in #3703 - Fixed docstring markup in
Rotateby @TheCrowned in #3721 - Improve consistency in axis label example by @amrear in #3730
Maintenance and Testing
- Fixed wrong path in action building downloadable docs by @behackl in #3450
- Add type hints to
_configby @Viicos in #3440 - Update dependency constraints, fix deprecation warnings by @Viicos in #3376
- Update Docker base image to python3.12-slim (#3458) by @PikaBlue107 in #3459
- Fixed
line_jointojoint_typein example_scenes/basic.py by @szchixy in #3510 - Fixed :attr:
.Mobject.animatetype-hint to allow LSP autocomplete by @JasonGrace2282 in #3543 - Finish TODO's in
contributing/typings.rstby @JasonGrace2282 in #3545 - Fixed use of
Mobject's deprecatedget_*()andset_*()methods in Cairo tests by @JasonGrace2282 in #3549 - Added support for Manim type aliases in Sphinx docs and added new TypeAliases by @chopan050 in #3484
- Fixed typing of
Animationby @dandavison in #3568 - Added some TODOs for future use of
ManimFrameby @chopan050 in #3553 - Fixed typehint of :attr:
InternalPoint2D_Arrayby @JasonGrace2282 in #3592 - Fixed error in Windows CI pipeline by @behackl in #3611
- Fixed type hint of indication.py by @yuan-xy in #3613
- Revert vector type aliases to NumPy ndarrays by @chopan050 in #3595
- Run
poetry lock --no-updateby @JasonGrace2282 in #3621 - Code Cleanup: removing unused imports and global variables by @JasonGrace2282 in #3620
- Fixed type hint of
Vectordirection parameter by @JasonGrace2282 in #3640 - Flake8 rule C901 is about McCabe code complexity by @cclauss in https://github.com/ManimCommuni...
Manim v0.18.0.post0
This release is a post-release fixing #3676 (a bug caused by a recent change introduced to the way how SVG files of text are generated by Pango).
Manim v0.18.0
The full changelog can be found at https://docs.manim.community/en/latest/changelog/0.18.0-changelog.html.
Manim v0.17.3
The full changelog can be found at https://docs.manim.community/en/latest/changelog/0.17.3-changelog.html.
Manim v0.17.2
Bugfix release which re-enables the usage of OpenGLSurface (and other OpenGL Mobjects) without attribute errors.
The full changelog can be found at https://docs.manim.community/en/latest/changelog/0.17.2-changelog.html.
Manim v0.17.1
Bugfix release: this mainly fixes an issue with rendering LaTeX with TexLive-based TeX distributions on Windows.
The full changelog can be found at https://docs.manim.community/en/latest/changelog/0.17.1-changelog.html.
Manim v0.17.0
The full changelog can be found at https://docs.manim.community/en/latest/changelog/0.17.0-changelog.html.
Manim v0.16.0.post0
This release is a post-release fixing #2875.
The changelog for v0.16.0 can be found at https://docs.manim.community/en/latest/changelog/0.16.0-changelog.html.