Changelog

Upcoming release

Date

TBD

Changes for the upcoming release are tracked in our GitHub wiki.

v0.4.0

Date

March 3, 2021

The changes since Manim Community release v0.3.0 are listed below.

Breaking Changes

  • pull request 915: Manim’s SVG engine has been reworked and is able to handle a wider variations of SVG files. In particular: fill and stroke properties are now retained from the original files. Breaking change: VMobjectFromSVGPathstring is deprecated and has been renamed to SVGPathMobject.

New Features

Bugfixes and Enhancements

v0.3.0

Date

February 1, 2021

The changes since Manim Community release v0.2.0 are listed below.

New Features

Bugfixes and Enhancements

v0.2.0

Date

January 1, 2021

The changes since Manim Community release v0.1.1 are listed below.

Breaking Changes

  • Remove all CONFIG dictionaries and all calls to digest_config and allow passing options directly to the constructor of the corresponding classes (pull request 783).

    Practically, this means that old constructions using CONFIG like:

    class SomeMobject(Thing):
        CONFIG = {
            "my_awesome_property": 42
        }
    

    where corresponding objects were then instantiated as my_mobject = SomeMobject() should now be created simply using my_mobject = SomeMobject(my_awesome_property=42).

  • Remove old syntax for animating mobject methods by passing the methods and arguments to self.play, and use a new syntax featuring the animate property (pull request 881).

    For example: the old-style play call

    self.play(my_square.shift, LEFT)
    

    should be replaced with the new following call using the animate property:

    self.play(my_square.animate.shift(LEFT))
    

New Features

Bugfixes

Other changes

v0.1.1

Date

December 1, 2020

Changes since Manim Community release v0.1.0

Plugins

  1. Provided a standardized method for plugin discoverability, creation, installation, and usage. See the documentation.

Fixes

  1. JsRender is optional to install. (via pull request 697).

  2. Allow importing modules from the same directory as the input file when using manim from the command line (via pull request 724).

  3. Remove some unnecessary or unpythonic methods from Scene (get_mobjects, add_mobjects_among, get_mobject_copies), via pull request 758.

  4. Fix formatting of Code (via pull request 798).

Configuration

  1. Removed the skip_animations config option and added the Renderer.skip_animations attribute instead (via pull request 696).

  2. The global config dict has been replaced by a global config instance of the new class ManimConfig. This class has a dict-like API, so this should not break user code, only make it more robust. See the Configuration tutorial for details.

  3. Added the option to configure a directory for external assets (via pull request 649).

Documentation

  1. Add :issue: and :pr: directives for simplifying linking to issues and pull requests on GitHub (via pull request 685).

  2. Add a skip-manim tag for skipping the .. manim:: directive when building the documentation locally (via pull request 796).

Mobjects, Scenes, and Animations

  1. The alignment attribute to Tex and MathTex has been removed in favour of tex_environment.

  2. Text now uses Pango for rendering. PangoText has been removed. The old implementation is still available as a fallback as CairoText.

  3. Variations of Dot have been added as AnnotationDot (a bigger dot with bolder stroke) and LabeledDot (a dot containing a label).

  4. Scene.set_variables_as_attrs has been removed (via pull request 692).

  5. Ensure that the axes for graphs (GraphScene) always intersect (pull request 580).

  6. Now Mobject.add_updater does not call the newly-added updater by default (use call_updater=True instead) (via pull request 710)

  7. VMobject now has methods to determine and change the direction of the points (via pull request 647).

  8. Added BraceBetweenPoints (via pull request 693).

  9. Added ArcPolygon and ArcPolygonFromArcs (via pull request 707).

  10. Added Cutout (via pull request 760).

  11. Added Mobject raise not implemented errors for dunder methods and implementations for VGroup dunder methods (via pull request 790).

  12. Added ManimBanner for a animated version of our logo and banner (via pull request 729)

  13. The background color of a scene can now be changed reliably by setting, e.g., self.camera.background_color = RED (via pull request 716).

v0.1.0

Date

October 21, 2020

This is the first release of manimce after forking from 3b1b/manim. As such, developers have focused on cleaning up and refactoring the codebase while still maintaining backwards compatibility wherever possible.

New Features

Command line

  1. Output of ‘manim –help’ has been improved

  2. Implement logging with the rich library and a logger object instead of plain ol’ prints

  3. Added a flag --dry_run, which doesn’t write any media

  4. Allow for running manim with python3 -m manim

  5. Refactored Tex Template management. You can now use custom templates with command line args using --tex_template!

  6. Re-add --save_frames flag, which will save each frame as a png

  7. Re-introduce manim feature that allows you to type manim code in stdin if you pass a minus sign (-) as filename

  8. Added the --custom_folders flag which yields a simpler output folder structure

  9. Re-implement GIF export with the -i flag (using this flag outputs ONLY a .gif file, and no .mp4 file)

  10. Added a --verbose flag

  11. You can save the logs to a file by using --log_to_file

  12. Read tex_template from config file if not specified by --tex_template.

  13. Add experimental javascript rendering with --use_js_renderer

  14. Add -q/--quality [k|p|h|m|l] flag and removed -m/-l flags.

  15. Removed --sound flag

Config system

  1. Implement a manim.cfg config file system, that consolidates the global configuration, the command line argument parsing, and some of the constants defined in constants.py

  2. Added utilities for manipulating Manim’s .cfg files.

  3. Added a subcommand structure for easier use of utilities managing .cfg files

  4. Also some variables have been moved from constants.py to the new config system:

    1. FRAME_HEIGHT to config["frame_width"]

    2. TOP to config["frame_height"] / 2 * UP

    3. BOTTOM to config["frame_height"] / 2 * DOWN

    4. LEFT_SIDE to config["frame_width"] / 2 * LEFT

    5. RIGHT_SIDE to config["frame_width"] / 2 * RIGHT

    6. self.camera.frame_rate to config["frame_rate"]

Mobjects, Scenes, and Animations

  1. Add customizable left and right bracket for Matrix mobject and set_row_colors method for matrix mobject

  2. Add AddTeXLetterByLetter animation

  3. Enhanced GraphScene

    1. You can now add arrow tips to axes

    2. extend axes a bit at the start and/or end

    3. have invisible axes

    4. highlight the area between two curves

  4. ThreeDScene now supports 3dillusion_camera_rotation

  5. Add z_index for manipulating depth of Objects on scene.

  6. Add a VDict class: a VDict is to a VGroup what a dict is to a list

  7. Added Scene-caching feature. Now, if a partial movie file is unchanged in your code, it isn’t rendered again! [HIGHLY UNSTABLE We’re working on it ;)]

  8. Most get_ and set_ methods have been removed in favor of instance attributes and properties

  9. The Container class has been made into an AbstractBaseClass, i.e. in cannot be instantiated. Instead, use one of its children classes

  10. The TextMobject and TexMobject objects have been deprecated, due to their confusing names, in favour of Tex and MathTex. You can still, however, continue to use TextMobject and TexMobject, albeit with Deprecation Warnings constantly reminding you to switch.

  11. Add a Variable class for displaying text that continuously updates to reflect the value of a python variable.

  12. The Tex and MathTex objects allow you to specify a custom TexTemplate using the template keyword argument.

  13. VGroup now supports printing the class names of contained mobjects and VDict supports printing the internal dict of mobjects

  14. Add all the standard easing functions

  15. Scene now renders when Scene.render() is called rather than upon instantiation.

  16. ValueTracker now supports increment using the += operator (in addition to the already existing increment_value method)

  17. Add PangoText for rendering texts using Pango.

Documentation

  1. Added clearer installation instructions, tutorials, examples, and API reference [WIP]

Fixes

  1. Initialization of directories has been moved to config.py, and a bunch of bugs associated to file structure generation have been fixed

  2. Nonfunctional file media_dir.txt has been removed

  3. Nonfunctional if statements in scene_file_writer.py have been removed

  4. Fix a bug where trying to render the example scenes without specifying the scene would show all scene objects in the library

  5. Many Exceptions have been replaced for more specific exception subclasses

  6. Fixed a couple of subtle bugs in ArcBetweenPoints

Of interest to developers

  1. Python code formatting is now enforced by using the black tool

  2. PRs now require two approving code reviews from community devs before they can be merged

  3. Added tests to ensure stuff doesn’t break between commits (For developers) [Uses Github CI, and Pytest]

  4. Add contribution guidelines (for developers)

  5. Added autogenerated documentation with sphinx and autodoc/autosummary [WIP]

  6. Made manim internally use relative imports

  7. Since the introduction of the TexTemplate class, the files tex_template.tex and ctex_template.tex have been removed

  8. Added logging tests tools.

  9. Added ability to save logs in json

  10. Move to Poetry.

  11. Colors have moved to an Enum

Other Changes

  1. Cleanup 3b1b Specific Files

  2. Rename package from manimlib to manim

  3. Move all imports to __init__, so from manim import * replaces from manimlib.imports import *

  4. Global dir variable handling has been removed. Instead initialize_directories, if needed, overrides the values from the cfg files at runtime.