Due to major changes, this version might break some things, both intentionally and not. Reasoning for the changes I'll include after the changelog.
* PySide2 is now supported alongside PyQt5 via the [QtPy abstraction layer](https://github.com/spyder-ide/qtpy). PyQt5 is still the default, at least until PySide2 becomes fully stable
* Presets for levels, with behavior similar to header presets
* Time field formatting (can be configured in the appearance settings)
* Saving and loading records into files, encoded/decoded with JSON
* **Support for non-Python clients**:
* [Extra fields mode](https://github.com/Busimus/cutelog/wiki/Creating-a-client-for-cutelogextra-mode)
* [Multiple serialization formats](https://github.com/Busimus/cutelog/wiki/Creating-a-client-for-cutelogserialization-formats) (can set the default in the server settings)
* [Internal commands](https://github.com/Busimus/cutelog/wiki/Creating-a-client-for-cuteloginternal-commands) to manage certain options
* Level numbers
* Ability to change the level name in level editor
* Rearranged the menu bar and the settings a bit
* Many other small things
Right after releasing this program I stopped using Python as much as I used to and started writing a lot of Go. I began to miss this program while working on Go projects. So I had to make some changes to allow for more generic logging without the need for clients to imitate Python's logging module 1-to-1.
The result of this effort is that now it's possible to use cutelog as output for log records from any language. Information on how to do that can be found [here](https://github.com/Busimus/cutelog/wiki/Creating-a-client-for-cutelog).
Also I created [gocutelog](https://github.com/busimus/gocutelog), a small Go package that acts as a bridge between existing Go logging libraries and cutelog.