This fixes a crash that could occur when closing a split before the
display name had a chance to update
The reason I found this was because the LiveController change I made
updated display names more regularly
Additionally, we now make sure to not send duplicate `displayNameUpdated` signals
upon each request for channels with CJK characters in their display name
* Default-initialize the `actualDisplayName` with the user's login name to not send an initial display name update if the display name is the same casing as the login name
* Specifically, this adds a caller to the network request, which makes the
success or failure callback not fire.
This has the unintended consequence of the block list not reloading if
the usercard is closed, but it's not a big concern.
* Add unrelated `-DUSE_ALTERNATE_LINKER` cmake option
From 0517d99b46/CMakeLists.txt (L87-L103)
`/debug-force-image-gc` will force garbage collection on all unused images
`/debug-force-image-unload` will force unload all images
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
Available test channels:
- `$$$` - Fill up scrollback (1000 messages), then add a new message every 500ms
- `$$$:e` - Add a new message every 500ms
- `$$$$` - Fill up scrollback (1000 messages), then add a new message every 250ms
- `$$$$:e` - Add a new message every 250ms
- `$$$$$` - Fill up scrollback (1000 messages), then add a new message every 100ms
- `$$$$$:e` - Add a new message every 100ms
- `$$$$$$` - Fill up scrollback (1000 messages), then add a new message every 50ms
- `$$$$$$:e` - Add a new message every 50ms
- `$$$$$$$` - Fill up scrollback (1000 messages), then add a new message every 25ms
- `$$$$$$$:e` - Add a new message every 25ms
Themes are loaded from the Themes directory (under the Chatterino directory, so %APPDATA%/Chatterino2/Themes).
Themes are json files (see the built in themes as an example).
After importing a theme, you must restart Chatterino for it to show up in the settings
Cleanup unused code (Twitch v5)
Add json methods that simplify sending JSON. This also sets the Accepts header, since here, when JSON is sent, only JSON is accepted as a response (this is only done in Helix).
Clarify helix request creations
Cleaned some clang-tidy suggestions in Network{Request,Private}
Remove PCH as an option - it's now always disabled for all jobs
Disable LTO in the Windows build
Merge the Ubuntu Qt 6.2.4 & Ubuntu plugin build
Only upload a single macOS job into the nightly release, and clearly mark it as a macOS 10.15 build.
Fixes a bug where we don't check if the sound device is active before trying to play a sound to it
We fix this by checking its state before every sound we try to play, and if the device is not in the started state we try to restart it.
The scripting capabilities is locked behind a cmake flag, and is not enabled by default.
Co-authored-by: nerix <nerixdev@outlook.de>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
The `SettingsPage::onShow` handler that sets up the block
list is only called when the application settings dialog
has already been shown once before. This caused the blocked
user list to appear empty until the second time it was opened.
Correct this by explicitly regenerating the block list in the
constructor of `IgnoresPage`.
* 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
* Removed magic numbers when checking rowIndex
* Swap from static ints to enum
* Referred enum members by enum name
* Fixed formatting
* Added highlight option for self messages
* Update CHANGELOG.md
* Made disabled by default
* Moved setting from Messages tab to Users tab
* Moved checks to HighlightController
* Set row index to 0
sillE silly me
* Update CHANGELOG.md
* Moved check outside of loop
* Improved naming and documentation on variables
* Fixed formatting
* Fix compile errors
* Update ColorProvider self message highlight color when it's changed
Use the ColorProvider self message highlight color instead of rolling
our own non-updating color
* Update changelog entry
* Remove unused `customColor` from user highlights builder
* Use explicit lambda capture
* Update comment for the color provider color
* HighlightModelHpp: Future-proof custom row enum B)
* Document UserHighlightModel color changes
* Update colorprovider comment
* Update enabled, show in mentions & color setting paths
* Rename settings from `selfMessagesHighlight` to `selfMessageHighlight`
---------
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
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
This feature is enabled by default and can be disabled in settings with the "Enable BTTV live emotes updates" setting.
Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
* Pass link as argument instead of in command string when opening incognito links
* Update CHANGELOG.md
* Make changelog message more user facing
* Remove now unused argument for getCommand
* ci: format yaml and json files with prettier
* chore: add changelog entry
* fix: format everything
* ci: run pretter on all files
* ci: rename prettier step
* Add checkbox for custom logging and table with channels to log on Logs page
* Add checkbox to enable and disable logging per channel
* Return from addMessage before logging if custom logging enabled and channel does not have logging enabled
* Use clang-format to fix formatting
* Add CHANGELOG.md entry
* Resolve PR comments
* Remove toggle for channels so any channel listed will be logged
* Move Only log channels listed below checkbox to just above table
* Fix formatting
* Re-order changelog
* ChannelLog constructor: Copy & move instead of const ref & copy
* ChannelLog::createEmpty: Curly brace initialize instead of repeating
name
* ChannelLog toString & createEmpty: nodiscard
* Use COUNT paradigm in model column
* Remove ChanneLoggingModel source file comments
* Use Column::Channel in getRowFromItem
* Rename `getItemFromRow` parameter and mark it as unused
* Curly brace initialize ChannelLog
* private & friend class the model
* Filter out channels to log using a set instead of iterating over a vector every time a message comes in
* Rename `ChannelLog::channel` member to `ChannelLog::channelName`
Also made it private
* mini comment on ChannelLog
Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
* Add `<functional>` include to QStringHash.hpp
This ensures the base `std::hash` template is declared before this
specialization
* Add missing includes to `src/providers/twitch/TwitchAccountManager.hpp`
* Move explicit HelixChatters constructor to the source file
* Remove unused includes & add used includes to NicknamesModel.hpp
* NicknamesModel.hpp: Remove `virtual` when `override` is used
* Add missing QStringHash include to TwitchEmotes.cpp
* Add missing includes to various files
* Print Qt version in cmake step
Technically unrelated, but I'm sneaking it in
* Add changelog entry
* Fix crash that could occur when a channel is closed
Ensure we copy the QString in case the channel goes out of scope and
we're referring to nothing
* Add changelog entry
* Fix crash that could occur when closing down splits
Specifically, if a split was closed after the request for a thumbnail
had been made, but before the request had finished, we'd run into a
use-after-free issue
* Add changelog entry
* Flatten static functions in anonymous namespace
* SplitHeader ctor: Rename param
* Header: Remove unnecessary `virtual`s
* auto ptr where possible
* Add curly braces
* Comment twitch room modes
* Treat roomModes->slowMode as an integer
* Remove unused `this` from lambdas
* Add `unsigned int` overload for localizeNumbers
* Move thumbnail max age to a constexpr static & set explicit types
* Explicitly use `QObject::connect`
* Use `empty()` instead of `size()`
* Name unused parameters
* Move moderation action refreshing logic from SplitHeader to Split
* fix: remove unused includes
* fix: bad includes
* fix: top include
* fix: streamer mode includes
* fix: missing include
* fix: remove `#else`
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
* Remove unused include util/Helpers.hpp
* SplitContainer::setTag fix parameter naming
* autofy/constify where possible
* More const auto ptr magicifying
* Make SplitNode::Type an enum class
* Move QuickSwitcherPopup includes from header to source file
* Remove unused DropRegion code
* use empty() instead of size() == 0
* Add curly braces everywhere
* Remove useless reinterpret_cast
It was casting Node* to Node*
* Clarify that the connect is QObject::connect
* SplitContainer::setSelected fix parameter naming
* Rename function variables to remove unneccesary underscore
Also move addSpacing parameter out of the layout function
* emplace_back where possible
* Name parameters
* Remove ineffective const from return type
* Make node getters const
* Flatten Node::releaseSplit
* Rename in-function variable to match code style
* [ACTUAL CODE CHANGE/MOVE] Move clamp logic to its own function
* name params
* applyFromDescriptorRecursively: rename node param to baseNode
* [ACTUAL CODE CHANGE/MOVE] Remove the many overloads for append/insertSplit
This utilizes the C++20 designed initializers aggregate initialization feature
* Remove unused includes
* [ACTUAL CODE CHANGE] Clean up dragging logic
There's no need to keep a pointer around to which split is being
dragged, it's already stored in the QDropEvent source()
* UNRELATED .clang-tidy: Only suggest UPPER_CASE for constant global variables
* Remove unused SplitContainer::getSplitCount function
* Use std::max in Node's clamp function
* Remove test code
* DraggedSplit.hpp: remove unused include
* Split `setDraggingSplit` into two functions, `startDraggingSplit` and `stopDraggingSplit`
* 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>
Flatten the anonymous namespace
Make the `loadEmojis` functions static
Make the `filterEmoteMap` function static
Return an EmoteMap from `filterEmoteMap` instead of an EmoteMap*
Other misc cool changes :-)
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)