* Update `CMakeLists.txt`
* Update `resources/com.chatterino.chatterino.appdata.xml`
* Update `src/common/Version.hpp`
* Update `CHANGELOG.md`
This includes changelog re-ordering changes that would normally be in a seperate PR, but this release will be an exception to that rule
* feat: crashpad on windows
* feat: inline it
* feat: more crashpad
* chore: remove qBreakpad
* fix: add mention to crashpad
* refactor: version string
* feat: add crashpad module
* refactor: build crashpad from source
* fix: minor adjustments
* chore: add changelog entry
* fix: formatting and include
* fix: format
* build: use flags similar to release profile
* ci: build with crashpad on windows
* ci: recurse submodules
* ci: always include crashpad
* fix: try 7z
for some reason zstd just doesn't run
* fix: wrong path for symbols
* fix: copy
pls don't build
* ci: use new cache key
* fix: missing pragma
* ci: add workflow without crashpad
* docs: elevate changelog entry
* fix: add link to cmake issue
* fix: windows include issue
Someone (crashpad) includes Windows.h before winsock2.h
* fix: working directory
* fix: another working directory
Thanks Greenlandicsmiley, Nerixyz, Yoitsu, and helmak for helping debug & test this
* Remove QMediaPlayer includes
* Prefer local path when generating the sound path
* Update changelog entry number
* Disable pitch & spatialization control
* feat: c++ 20
* fix: c++ 20 deprecations
* fix(msvc): warnings
* chore: add changelog entry
* fix: formatting
* Update websocketpp to the `develop` branch
* Specify other template type in FlagsEnum != operator
* Remove the user of simple template ids in our websocketpp template class
Also standardizes the file a bit by using nested namespaces, using
pragma once
* fix: turn `MAGIC_MESSAGE_SUFFIX` into a `QString`
* hacky unhacky hacky const char hack
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
This change enforces strict include grouping using IncludeCategories
In addition to adding this to the .clang-format file and applying it in the tests/src and src directories, I also did the following small changes:
In ChatterSet.hpp, I changed lrucache to a <>include
In Irc2.hpp, I change common/SignalVector.hpp to a "project-include"
In AttachedWindow.cpp, NativeMessaging.cpp, WindowsHelper.hpp, BaseWindow.cpp, and StreamerMode.cpp, I disabled clang-format for the windows-includes
In WindowDescriptors.hpp, I added the missing vector include. It was previously not needed because the include was handled by another file that was previously included first.
clang-format minimum version has been bumped, so Ubuntu version used in the check-formatting job has been bumped to 22.04 (which is the latest LTS)
* fix: link to the current user in timeouts
* fix: `readability-suspicious-call-argument`
* docs: add changelog entry
* fix: link both users when replacing timeout
* Update changelog entry
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
* Add working reconnect recent messages
* Rename method to messagesUpdated
* Use audo declarations
* Add docs to new LimitedQueue methods
* Add more documentation, try atomic loading flag
* Update CHANGELOG.md
* Remove unused include
* Rename 'reconnected' signal to 'connected'
* Reserve before filtering on arbitrary update
* Extract recent messages fetching to own class
* Use std::atomic_flag instead of std::atomic_bool
* Add PostToThread include
* Add chatterino.recentmessages logging
* Remove unneeded parameters, lambda move capture
* Remove TwitchChannel::buildRecentMessages
* Add documentation, use more clear method name
* Reword changelog entry
I think it sounds better like this :)
* Rework how filling in missing messages is handled
This should hopefully prevent issues with filtered channels with old messages
that no longer exist in the underlying channel
* Check existing messages when looking for reply
* Clean up string distribution in file
* Try to improve documentation
* Use std::function for RecentMessagesApi
* Only trigger filledInMessages if we inserted
* Remove old unused lines
* Use make_shared<MessageLayout> instead of new MessageLayout
* Alphabetize QLogging categories
* Reorder CHANGELOG.md
* Use circular buffer for LimitedQueue
* Reduce copying of snapshot
* Small optimizations
* Remove unneeded lock statements
* Add LimitedQueue tests
* Fix includes for limited queue benchmark
* Update CHANGELOG.md
* Use correct boost version iterators
* Use a shared_mutex to clarify reads and writes
* Update `find`/`rfind` to return the result as a boost::optional
* Use `[[nodiscard]]` where applicable
* Update comments
* Add a couple more doc comments
* Replace size with get
get is a safe (locked & checked) version of at
* Use std::vector in LimitedQueueSnapshot
* Update LimitedQueue benchmarks
* Add mutex guard to buffer accessors
We do not know whether T is an atomic type or not
so we can't safely say that we can copy the value
at a certain address of the buffer.
See https://stackoverflow.com/a/2252478
* Update doc comments, add first/last getters
* Make limit_ const
* Omit `else` if the if-case always returns
* Title case category comments
* Remove `at`
* Fix `get` comment
* Privatize/comment/lock property accessors
- `limit` is now private
- `space` is now private
- `full` has been removed
- `empty` now locks
* Remove `front` function
* Remove `back` method
* Add comment to `first`
* Add comment to `last`
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
added new `GIT_MODIFIED` variable - used to determine whether the vcs tree was compiled or not at the time of building the app
added information about running in DEBUG mode which might be very helpful to determine whether one is running a DEBUG build, e.g. in the process of troubleshooting/determining crash causes
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
Fix CLI arguments not being respected. This happened due to the addition of category-based logging (--help, --version) and changes to the window loading ( --channels), respectively.
When handling --channels, I took the liberty to refactor the previous version of window description (which relied on generating JSON) to directly building the WindowLayout.
Also changes the way timeouts happen, since right now if a timeout was met (which it mostly wasn't), it would run the error callback twice causing potentially undefined behaviour
PR #2284 introduced this bug: whispers aren't linked to a twitch channel
but we're storing user colors in a twitch channel. So, dereferencing
a nullptr. Not good.
You can disable this by unchecking "Color @usernames" under `Settings -> General -> Advanced (misc.)`
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>