v4.0.0
======

✨ Added
--------

* ``GlbEncoder``: new encoder to ``.glb``.
* ``McsaDecoder``, ``GlbEncoder``: skeleton support (``--skeleton`` flag).
* ``McsaDecoder``, ``GlbEncoder``: built-in skeleton animation support (``--animation`` flag).
* ``OlCubemapDecoder``: new decoder for cubemap textures.
* ``OlDecoder``: ``RGBA32F`` (DX10) format support.
* CLI: ``--parent`` flag.


📝 Changed
----------

CLI
~~~
* Exception handling: unexpected errors no longer interrupt batch processing.
* Cubemap textures: fallback from standard to cubemap on decode failure.
* ``--model-formats`` renamed to ``--mdlformat``.
* ``--hdri`` renamed to ``--cubemap``.
* ``--no-overwrite`` renamed to ``--unique``.
* Default model format changed to ``.obj``.
* Default model format with ``--skeleton`` changed to ``.glb``.

Core
~~~~
* ``FileDecoder.validate()`` renamed to ``validate_signature()``.
* ``FileDecoder.convert_to()`` and ``convert()`` now accept ``options: UserOptions`` parameter.
* ``FileDecoder``, ``FileEncoder``: removed content reset on ``close()``.
* ``FileContent``: new property ``type: FileType``.
* ``FileFormat``: new property ``suffix: str``.

⚡ Optimized
------------

* ``McsaDecoder``: ``StructIO`` read array optimization (parsing ~12x faster).
* CLI: ``files_map`` replaced with iterator (eliminated startup delay on large folders).
