**Quick note**
From now until 1.0 release, I plan to keep the API \*mostly* stable, for those wanting to use PyIMG4 in their tools.
For now, the only major things I plan to do before 1.0 release are:
- Write the CLI tool
- Write documentation
Now, for some (probably incomplete) release notes:
**Major Changes**
- Lots of code cleanup and minor bug fixes
- Added automated tests. They should help confirm releases will always be fully functional
- Fix installing on Python 3.10
- This was due to PyLZSS needing an update. I now have a [fork](https://github.com/m1stadev/pylzss) that PyIMG4 uses, which has Python 3.10 support.
- Better error handling
- Added support for parsing IM4R
- Added `pyimg4.IM4R` for handling the data
- Properly handle/recreate the `complzss` header found at the beginning of LZSS-compressed kernelcaches, along with extra data (like KPP)
- Added `print-img4-info` script
- `pyimg4.IMG4`, `pyimg4.IM4P`, and `pyimg4.IM4R` can all be constructed without any data, and modified much easier.
**API Changes**
- `pyimg4.Compression`
- Added `Compression.UNKNOWN` for when payload is encrypted
- `pyimg4.IM4M`
- Added `IM4M.chip_id`
- `pyimg4.ManifestImageData`
- `fourcc` is no longer a required argument
- More data is now parsed in this class
- `pyimg4._PyIMG4`
- New internal class that acts as a base for all PyIMG4 data types
- Prefix `_PyIMG4.encoder` and `_PyIMG4.decoder` with an underscore to signal they are meant for internal use.
- `pyimg4.PyIMG4Data`
- Now subclasses `_PyIMG4`
- Renamed to `Data`
**Full Changelog**: https://github.com/m1stadev/PyIMG4/compare/v0.4...v0.5