Releases: jkjkil4/JAnim
JAnim v4.0.0-rc1
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_currentbehavior when used directly withinconstruct, it now returns the animation calculation result of the item at theself.current_timeinstead of a copy - For
coordinate_system- Changed
NumberLineto automatically determinenumber_placesby default - Fixed numbers behavior
- Changed
- Refactored rich-text regex pattern; this may break some edge cases
- Set
stroke_background=Trueby default forText - Fixed the semantics of
z_normalinThreeDAxes - Refactored
ValueTrackerimplementation, now supports tracking for complex types natively and introducedCustomDatafor easier customization, see https://janim.readthedocs.io/en/latest/tutorials/value_tracker.html - Refactored
Relation- Changed
.childrenand.parentsto private members._childrenand._parents, original access methods are replaced by@propertydecorators which return copies - Changed
.children_changedand.parents_changedsignals to private members - Migrated several methods originally defined in
ItemtoRelation
- Changed
Render
- Enabled fill-color rendering for non-closed paths
- Enhanced
Writestroke behavior - Refactored shader searching, linking, and compiling
- Enhanced shader file search strategy
- Added preprocessor support for
#include - Added
#linehints for debugging - Extracted common code for shaders
- Refactored
*Renderer
Others
- Replaced
pyaudiowithsounddevicefor GUI audio playback to avoid installation complexities and ensure compatibility with Python 3.14 - Refactored
matchandmismatchparameters ofTransformMatchingShapes - Fixed
Config.get.default_pixel_to_frame_ratiobehavior - Hide timelines starting with
_when querying through CLI - Changed log output from
stdouttostderrto align with common conventions
New Features
GUI
- Introduced GUI commands, enabling a full interaction loop from the GUI back to the source code, including:
select: Select sub-items of the specified itemcamera: Freely rotate, move, and zoom the camera viewmove: Move items with auto-snapping support- For further details, refer to https://janim.readthedocs.io/en/latest/tutorials/gui_commands.html
- 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 depth-test for items, enable it via
- Added out-of-the-box support for Typst compilation using the
typst-pypackage - Added
Item.join - Added support for setting
size,fov, andorientationin theCmpt_CameraPoints.setmethod - Added
apply_styleforCamera, enabling the application of initialization parameters to theCamera - Improved
ThreeDAxes.get_axis_labelswith support forz_labeland other minor detail enhancements - Supported
SVGItemparsing ofgroup_keyfor non-<group>elements - Added
Cmpt_Points.face_to_vectormethod - Added
NamedGroupclass for specifying sub-items by name (#48) - Added
Relation.insertmethod to insert sub-items - Added
Relation.indexandRelation.__contains__methods
Render
- Added 3D lighting support based on the position of
self.light_sourceof 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_heightandConfig.scaled_sizefor easier proportional scaling configuration - Added
Config.get.swapped_sizefor 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
--watchflag in thejanim runCLI (#31) - Added the functionality for quitting
janim runafter usingCtrl+C - Added support for reading code from stdin using
-as a placeholder
Others
- Added
TransformMatchingDiff
Fixed Bugs and Enhancements
Animation
- Fixed
root_onlyfor inner animations ofTransformMatchingShapes - Fixed an issue where
MoveToTargetanimations would temporarily fail when used within animation groups in some cases - Unified the
dtpassed toself.forwardasfloattype to avoid issues caused bynumpytypes - Fixed an issue where
becomecould breakGroupUpdater
Item
- Fixed caching for
SVGItemwhen a differentmark_basepointis set - Enhanced exception handling for rich-text
- Fixed an issue with
Text.idx_to_row_colat the end of strings, subsequently resolving selection issues inText.select_partsfor 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, andz_axismembers ofcoordinate_systemduring copying - Fixed a bug where
Relation.clear_parentsdid 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_filewhen using outsideTimeline - Correctly handle fonts with corrupted OS/2 tables (#34)
- Refactored logger definition
- Significantly optimized the performance of
get_all_timelines_from_moduleand improved the extraction order ofTimeline(#36) - Improved typing related to
SupportsAnim - Improved generic typing in
Relation(#55)
Deprecation
-
Refactored parameters of
NumberLinePrevious:
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
widthheightparameters ofAxestox_lengthy_lengthThe 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
insertparameter is deprecated and will be removed in JAnim 4.3 -
For
ValueTrackerinstances:.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,ThreeDAxesandNumberPlane - 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 theselect_partsmethod - Enhanced documentation for
Axes.get_graph - Improved the documentation layout
- Fixed various typos
- Added a package version constraint:
sphinx < 9.0.0 - Added
sphinx-intlto 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
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
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
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
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
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
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
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
JAnim v3.10.1
What's Changed
Fixed Bugs and Enhancements
- Fixed
Cmpt_VPoints.add_as_cornerswhen no existing points are present - Added a tolerance margin to the selector region
- Fixed an issue where the
strokecomponent variable was incorrectly overwritten inAngle.__init__ - Fixed behavior of the
unit_sizeparameter ofNumberPlane - Fixed detecting changes in
ValueTrackerwhen no animation is applied to it