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>
* 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>
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>
* 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>
* 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`
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)
* feat(helix): create response model for VIP listing
* feat(helix): stub out channel/vips request + handler
* feat(helix): parse VIPs list from data and pass to callback
* feat(helix): handle errors when getting VIP list then pass to callback
* feat(command): add barebones handler for helix-based /vips
* feat(command): provide better /vips output when user is not broadcaster
* chore(format): bulk reformat with clang-format
* chore(changelog): add entry for /vips Helix migration
* fix(helix): use correct method when calling VIP list endpoint
* fix(helix): use correct VIP list endpoint
* chore(tidy): please clang-tidy by marking parameter as unused
* feat(command): display unsorted VIP list returned from Helix API
* feat(settings): clone raid timegate settings for /vips
* feat(command): check /vips timegate setting before execution
* feat(command): handle 0 VIPs from Helix response
* feat(command): sort users alphabetically from Helix VIPs response
* fix(command): highlight users in Helix /vips output to match IRC
* fix(command): replace dynamic /vips error message with hardcoded string
* chore(comment): remove TODO comment that was DONE
* chore(format): bulk reformat using clang-format
* fix(command): send 0 VIP message after creation
* chore: apply suggestions from Felanbird
* fix(helix): change mention of user ban to VIPs in VIP list error message
* feat(helix): distinguish non-broadcaster auth error when getting VIPs
* chore(command): move handling of non-broadcaster /vips usage to API response
* chore(format): re-indent multiline string to get away from 80 char limit
* reformat
* fix tests
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
* feat: add `Go to message` action in search popup
* chore: add changelog entry
* fix: only scroll if the scrollbar is shown
* fix: go to message when view isn't focused
* feat: animate highlighted message
* fix: missing includes
* fix: order of initialization
* fix: add `ChannelView::mayContainMessage` to filter messages
* feat: add `Go to message` action in `/mentions`
* fix: ignore any mentions channel when searching for split
* feat: add `Go to message` action in reply-threads
* fix: remove redundant `source` parameter
* feat: add `Go to message` action in user-cards
* feat: add link to deleted message
* fix: set current time to 0 when starting animation
* chore: update changelog
* fix: add default case (unreachable)
* chore: removed unused variable
* fix: search in mentions
* fix: always attempt to focus split
* fix: rename `Link::MessageId` to `Link::JumpToMessage`
* fix: rename `selectAndScrollToMessage` to `scrollToMessage`
* fix: rename internal `scrollToMessage` to `scrollToMessageLayout`
* fix: deleted message link in search popup
* chore: reword explanation
* fix: use for-loop instead of `std::find_if`
* refactor: define highlight colors in `BaseTheme`
* core: replace `iff` with `if`
* fix: only return if the message found
* Reword/phrase/dot changelog entries
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
Streamer mode now automatically detects if XSplit, PRISM Live Studio, Twitch Studio, or vMix are running
Co-authored-by: Kasia <zneix@zneix.eu>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
This can be done by right-clicking the tab area or pressing the keyboard shortcut (default: Ctrl+U).
Co-authored-by: Leon Richardt <leon.richardt@gmail.com>
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.
You can disable this by unchecking "Color @usernames" under `Settings -> General -> Advanced (misc.)`
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
Adds custom channel filters complete with their own mini-language. Filters can be created in settings, and applied by clicking the three dots to open the Split menu and selecting "Set filters".
There's now a new (yet another, sigh) section in Settings -> General, which lets you set streamer mode to 'enable/disable/detect obs' and there are also separate settings for each of the things that streamer mode covers. I just have to add ping sounds and PR is ready to be merged :)
* Show "Streamer Mode" image as link thumbnails if applicable
* Moved hideViewerCountAndDuration to streamerMode settings
Set it to false by default (just how it used to be under /misc settings, also reworked live tooltip to be a bit prettier and say "<Streamer Mode>" in gray instead of "Live with <hidden> for <hidden> viewers"
* Experimental argument handling
* Restored browser extension launch functionality
Also moved check from BrowerExtension.cpp to Args.cpp as it is more relevant there and doesn't require passing arguments to a function in another file
* Fixed formatting
* Simplified Args.cpp code, added changelog entry
* Hid crash-recovery from help
* Dont save settings if launched with --channels
* Changed parsing method to t:channel
* Code cleanup
* Changed plaform delimeter to :, platform defaults to Twitch
Co-authored-by: fourtf <tf.four@gmail.com>
* Split up Window Layout loading into a loading and application stage
Previously, we were creating UI elements at while we were reading the window-layout.json file.
We now read the window-layout.json file fully first, which results in a
WindowLayout struct which is built up of a list of windows with a list
of tabs with a root node which contains containers and splits.
This WindowLayout can then be applied.
This will enable PRs like #1940 to start Chatterino with Window Layouts
that aren't defined in a json file.
This commit has deprecated loading of v1 window layouts (we're now on v2). If a v1 window layout is there, it will just be ignored and Chatterino will boot up as if it did not have a window layout at all, and on save that old window layout will be gone.
* Fix compile error for mac
* (#1874) Disable update checking for unsupported platforms
As described #1874, only Windows, macOS and GNU/Linux are officially
supplied with builds. Thus checking for updates is unnecessary if we
are e.g. on FreeBSD, OpenBSD, illumos distros and possibly other
Operating Systems.
This fixes#1874 by ifdef-ing the 3 officially supported platforms
when checking for updates. Otherwise a debug warning will be emitted
and in the settings the checkbox for beta-updates is hidden and
replaced by a message, explaining the reason for why there are no beta
updates.
* Update CHANGELOG
In accordance with #1874
* (#1874) Move platform check into checkForUpdates
As discussed in #1914
* (#1874) Move check for supported OS to a seperate function.
As requested in #1914
* fixed SearchWindow memory leak
* Update CHANGELOG.md
* added DebugCount for BaseWindow
* [Bug Fix] Color of second user highlight cannot be set (#1898)
* Highlighting: Fix bug preventing user highlight from being set
Before this commit, only the row of a clicked cell was checked, but not
the tab it was clicked in.
Since the "Whispers" row is the second row in the "Messages" tab on the
highlighting page, the color picker was not opened for the second entry
in the "Users" tab either. This commit fixes the bug by also checking
tab the cell was clicked in.
* Update CHANGELOG.md
* Emote Popup Improvements (#1895)
* Put exact matching emotes first
* Close GenericListView on Escape press
* smol fix
* fixed emote input when not in the first char
* fixes#1902
* closes#1904
Co-authored-by: Leon Richardt <leon.richardt@gmail.com>
Co-authored-by: Daniel <24928223+dnsge@users.noreply.github.com>
This feature is off by default and can be enabled in the settings with the "Show link thumbnail" setting. This feature also requires the "Show link info when hovering" setting to be enabled.
thumbnails support is only there for direct image links, twitch clips, and youtube links. can be expanded in the future in the /api repo
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
* Better Highlights: Fix wrong color for migrated phrases
Prior to this commit, no default color was set when an "old" highlight
phrase (one added prior to #1320 / 5957551) was deserialized. This
commit makes highlight phrases uses the default self-highlight color for
these situations. This approach is reasonably sensible since that color
is also similar to the old highlight color.
Fixes#1565.
* Update default self-highlight color
The new default color was suggested in [1] by @RAnders00. Refer to the
link for further information.
[1]: https://github.com/Chatterino/chatterino2/issues/1565#issuecomment-590441625
* Theme: Remove highlight color
As highlight color is independent of the selected theme now, the member
has been removed from the `Theme` singleton. Instead, the fallback theme
color is defined in `HighlightPhrase` now.
Uses of `themes->messages.backgrounds.highlighted` have been replaced
with `HighlightPhrase::FALLBACK_COLOR` accordingly.
* Update src/controllers/highlights/HighlightPhrase.hpp
attempt to just remove constexpr
Co-Authored-By: Ruben Anders <ruben.anders@robotty.de>
* Initialize FALLBACK_COLOR outside header file
* Rename FALLBACK_COLOR to FALLBACK_HIGHLIGHT_COLOR
In preparation for the next commit introducing a new variable.
* Moved subscription highlight color into HighlightPhrase
* Use actual subscription color as a fallback
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
Co-authored-by: Ruben Anders <ruben.anders@robotty.de>
There's a document in src/providers/twitch/api which describes how we interact with the Twitch API.
Keeping this up to date might be a healthy way for us to ensure we keep using the right APIs for the right job.