Skip to content

Releases: jkjkil4/JAnim

JAnim v4.0.0-rc1

31 Jan 03:49

Choose a tag to compare

JAnim v4.0.0-rc1 Pre-release
Pre-release

This is a pre-release. It is not stable and may contain several issues and imperfections.

[BREAKING CHANGES]

Item

  • Refactored Item.astype, enabling features that were previously unsupported, e.g.:
    group(VItem).points.scale(2, scale_stroke_radius=True)
    group(VItem).points.insert_n_curves(5)
  • Modified item_current behavior when used directly within construct, it now returns the animation calculation result of the item at the self.current_time instead of a copy
  • For coordinate_system
    • Changed NumberLine to automatically determine number_places by default
    • Fixed numbers behavior
  • Refactored rich-text regex pattern; this may break some edge cases
  • Set stroke_background=True by default for Text
  • Fixed the semantics of z_normal in ThreeDAxes
  • Refactored ValueTracker implementation, now supports tracking for complex types natively and introduced CustomData for easier customization, see https://janim.readthedocs.io/en/latest/tutorials/value_tracker.html
  • Refactored Relation
    • Changed .children and .parents to private members ._children and ._parents, original access methods are replaced by @property decorators which return copies
    • Changed .children_changed and .parents_changed signals to private members
    • Migrated several methods originally defined in Item to Relation

Render

  • Enabled fill-color rendering for non-closed paths
  • Enhanced Write stroke behavior
  • Refactored shader searching, linking, and compiling
    • Enhanced shader file search strategy
    • Added preprocessor support for #include
    • Added #line hints for debugging
    • Extracted common code for shaders
    • Refactored *Renderer

Others

  • Replaced pyaudio with sounddevice for GUI audio playback to avoid installation complexities and ensure compatibility with Python 3.14
  • Refactored match and mismatch parameters of TransformMatchingShapes
  • Fixed Config.get.default_pixel_to_frame_ratio behavior
  • Hide timelines starting with _ when querying through CLI
  • Changed log output from stdout to stderr to align with common conventions

New Features

GUI

  • Introduced GUI commands, enabling a full interaction loop from the GUI back to the source code, including:
  • Added a button to clear the font cache

Item

  • Added enhanced 3D support for items
    • Added depth-test for items, enable it via .apply_depth_test()
  • Added out-of-the-box support for Typst compilation using the typst-py package
  • Added Item.join
  • Added support for setting size, fov, and orientation in the Cmpt_CameraPoints.set method
  • Added apply_style for Camera, enabling the application of initialization parameters to the Camera
  • Improved ThreeDAxes.get_axis_labels with support for z_label and other minor detail enhancements
  • Supported SVGItem parsing of group_key for non-<group> elements
  • Added Cmpt_Points.face_to_vector method
  • Added NamedGroup class for specifying sub-items by name (#48)
  • Added Relation.insert method to insert sub-items
  • Added Relation.index and Relation.__contains__ methods

Render

  • Added 3D lighting support based on the position of self.light_source of the Timeline, use .shade_in_3d() to enable (#25)
  • Added .apply_distance_sort() functionality to automatically sort rendering order based on distance from camera (#25)

Configuration

  • Added Config.get.scaled_pixel_size, Config.get.scaled_frame_size, Config.get.scaled_width, Config.scaled_height and Config.scaled_size for easier proportional scaling configuration
  • Added Config.get.swapped_size for easier conversion of landscape configurations to portrait
  • Added Config.subtitle_to_edge_buff (#32)

CLI

  • Supported standalone file change detection and rebuilding. Enable it via the --watch flag in the janim run CLI (#31)
  • Added the functionality for quitting janim run after using Ctrl+C
  • Added support for reading code from stdin using - as a placeholder

Others

  • Added TransformMatchingDiff

Fixed Bugs and Enhancements

Animation

  • Fixed root_only for inner animations of TransformMatchingShapes
  • Fixed an issue where MoveToTarget animations would temporarily fail when used within animation groups in some cases
  • Unified the dt passed to self.forward as float type to avoid issues caused by numpy types
  • Fixed an issue where become could break GroupUpdater

Item

  • Fixed caching for SVGItem when a different mark_basepoint is set
  • Enhanced exception handling for rich-text
  • Fixed an issue with Text.idx_to_row_col at the end of strings, subsequently resolving selection issues in Text.select_parts for trailing text
  • Fixed incorrect sampling interval refinement in Axes.get_graph
  • Fixed inconsistent argument behavior for not_changed_func (#47)
  • Fixed issues with accessing x_axis, y_axis, and z_axis members of coordinate_system during copying
  • Fixed a bug where Relation.clear_parents did not clear parents correctly

Render

  • Fixed line/curve rendering behavior when covered by ArrowTip (#27)
  • Fixed the inability to use the OpenGL CPU renderer Mesa3D (Note: CPU rendering is highly inefficient and generally not recommended)

GUI

  • Fixed GUI rebuild behaviors when the Timeline class originates from stdin or the Python REPL
  • Simply refactored network interaction code in AnimViewer
  • The GUI export function now reuses the GUI's GL context. This eliminates the need to recreate the context and resolves export crashes on certain systems (#24)
  • Refactored the GUI code structure

Others

  • Fixed find_file when using outside Timeline
  • Correctly handle fonts with corrupted OS/2 tables (#34)
  • Refactored logger definition
  • Significantly optimized the performance of get_all_timelines_from_module and improved the extraction order of Timeline (#36)
  • Improved typing related to SupportsAnim
  • Improved generic typing in Relation (#55)

Deprecation

  • Refactored parameters of NumberLine

    Previous:

    NumberLine(
        decimal_number_config=dict(
            num_decimal_places=2,
            ...
        )
    )

    Now:

    NumberLine(
        number_places=2,
        number_config=dict(
            ...
        )
    )

    The previous usage is deprecated and will be removed in JAnim 4.3

  • Renamed width height parameters of Axes to x_length y_length

    The previous usage is deprecated and will be removed in JAnim 4.3

  • For Relation:

    def add(self, *objs, insert=False) -> def add(self, *objs, prepend=False)

    The previous insert parameter is deprecated and will be removed in JAnim 4.3

  • For ValueTracker instances:

    .data.get() -> .get_value()

    .data.set(...) -> .set_value(...)

    .data.set_funcs(...) -> Cmpt_Data.register_funcs(...)

    The previous usage is deprecated and will be removed in JAnim 4.3

Documentation

New Guides

  • Added documentation for BasepointVItem, point_from_proportion, CameraInfo, and querying labels in Typst
  • Added documentation for CoordinateSystem, Axes, ThreeDAxes and NumberPlane
  • Added a guide for escaping the < symbol in rich-text
  • Added an introduction to the refactored ValueTracker

Updates & Fixes

  • Updated the project introduction text
  • Improved the description of Typst installation
  • Enhanced documentation for Text, specifically for the select_parts method
  • Enhanced documentation for Axes.get_graph
  • Improved the documentation layout
  • Fixed various typos
  • Added a package version constraint: sphinx < 9.0.0
  • Added sphinx-intl to the [doc] optional dependencies

Restructuring

  • Moved the "GUI Usage" document to "GUI Tutorials"
  • Added an "Advanced Tutorials" category and moved relevant tutorial indices into it
  • Replaced all ''' docstrings with """

JAnim v4.0.0-alpha7

29 Dec 09:00

Choose a tag to compare

JAnim v4.0.0-alpha7 Pre-release
Pre-release

This is a pre-release. It is not stable and may contain several issues and imperfections.

The detailed changelog has been moved to the newer version.

JAnim v4.0.0-alpha6

20 Dec 14:52

Choose a tag to compare

JAnim v4.0.0-alpha6 Pre-release
Pre-release

This is a pre-release. It is not stable and may contain several issues and imperfections.

The detailed changelog has been moved to the newer version.

JAnim v4.0.0-alpha5

04 Dec 14:16

Choose a tag to compare

JAnim v4.0.0-alpha5 Pre-release
Pre-release

This is a pre-release. It is not stable and may contain several issues and imperfections.

The detailed changelog has been moved to the newer version.

JAnim v4.0.0-alpha4

28 Nov 08:24

Choose a tag to compare

JAnim v4.0.0-alpha4 Pre-release
Pre-release

This is a pre-release. It is not stable and may contain several issues and imperfections.

The detailed changelog has been moved to the newer version.

JAnim v4.0.0-alpha3

27 Nov 14:46

Choose a tag to compare

JAnim v4.0.0-alpha3 Pre-release
Pre-release

This is a pre-release. It is not stable and may contain several issues and imperfections.

The detailed changelog has been moved to the newer version.

JAnim v4.0.0-alpha2

23 Nov 09:12

Choose a tag to compare

JAnim v4.0.0-alpha2 Pre-release
Pre-release

This is a pre-release. It is not stable and may contain several issues and imperfections.

The detailed changelog has been moved to the newer version.

JAnim v4.0.0-alpha1

17 Nov 01:32

Choose a tag to compare

JAnim v4.0.0-alpha1 Pre-release
Pre-release

This is a pre-release. It is not stable and may contain several issues and imperfections.

The detailed changelog has been moved to the newer version.

JAnim v3.10.2

16 Nov 18:04

Choose a tag to compare

What's Changed

Fixed Bugs and Enhancements

  • Merge multiple consecutive 'Move' commands in 'SVGItem' into a single one, making compatible with Typst 0.14

JAnim v3.10.1

14 Nov 14:26

Choose a tag to compare

What's Changed

Fixed Bugs and Enhancements

  • Fixed Cmpt_VPoints.add_as_corners when no existing points are present
  • Added a tolerance margin to the selector region
  • Fixed an issue where the stroke component variable was incorrectly overwritten in Angle.__init__
  • Fixed behavior of the unit_size parameter of NumberPlane
  • Fixed detecting changes in ValueTracker when no animation is applied to it