* Remove unused `setAccountData` function
* Move PubSub out of TwitchIrcServer and into Application
* Add changelog entry
* fix: assert feedback
* Add PubSub::unlistenPrefix as per review suggestion
* Fix tests
* quit pubsub on exit
might conflict with exit removal, so can be reverted but this shows it's possible
* Don't manually call stop on clients, it's called when the connection is closed
* nit: rename `mainThread` to `thread`
* Join in a thread!!!!!!!!
It's no longer a singleton
It's now a unique_ptr that dies together with the Application
* Add getChatLogger to EmptyApplication
* unrelated change: Access Application::instance statically
* fix logging init order
* Add changelog entry
This means it's no longer a singleton, and its lifetime is bound to our application.
This felt like a good small experiment to see how its changes would look
if we did this.
As a shortcut, `getApp` that is already a mega singleton keeps a
reference to Args, this means places that are a bit more difficult to
inject into call `getApp()->getArgs()` just like other things are
accessed.
The `nightly` branch of Chatterino on Flathub will no longer be updated due to changes in Flathub rules. Nightly builds will instead be published in the `flathub-beta` repository. The `.flatpakref` file has been updated to point to the new location.
See also: https://github.com/flathub/flathub/issues/4767
Miniaudio now runs everything in a separate audio thread - this uses boost::asio's io_context.
Our miniaudio implementation is now also much simplified - it does not use its own resource manager or device. This might end up being stupid if sounds don't work after changing output device or locking or w/e
I've made the sound controller into an interface, meaning we can support multiple sound backends in Chatterino. I've added a Null sound backend that disables all sound. A QMediaPlayer or QSoundEffect or Qt backend could be added.
Miniaudio might idle & disable the device now too, not sure
I've added some unrelated changes in the form of a new setting type, and a new setting page helper function for it, which will hopefully make adding new enum settings easier in the future.
This setting stores its value as a string instead of an int, and uses magic_enum to convert between that string value and its enum value.
Use full path in includes
Sort includes
Move anon namespace out of chatterino namespace
Use auto * where possible
Disable convert-member-function-to-static check for all member functions
Don't use else after return
Removed empty constructor
Replace use of `boost::variant` with `std::variant`
Co-authored-by: nerix <nerixdev@outlook.de>