* Move ChatSettings commands to their own file
* reformat error message strings
* move ChatCommands together in CommandController.cpp
* Allow CommandContext to be provided for builtin functions
using variants MEGADANK
* add missing include
* rename to ComandFunctionVariants
also include some move magic & const reffing
* Fix potential out-of-range access of at when stripping reply mention if
the message contained nothing other than the username
* Update changelog entry
* 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>
* Add initial support for finding hotkey display key sequences
* Make neededArguments work
* Implement displaying key combos in SplitHeader main menu
* Make Settings search text dynamic
* Make tab hide notice use a custom hotkeys key sequence
* Make Notebook menus use custom hotkeys key combo lookup for hiding tabs
* shut up changelog ci
* Make NotebookTab menus show custom hotkeys. SCUFFED:
this does not update dynamically!
* Scuffed: Make the show prefs button setting show the key bind
* Scuffed: Make the R9K description refer to hotkeys
* @pajlada, is something like this ok?
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
For commands affected by the timegating, they will continue to use their IRC command equivalent until the 11th of February, 2023.
This is one week before the actual migration is supposed to start. The wording of the date is shaky, so we start a bit before to be sure.
Any highly affected commands will have a temporary setting at the bottom of the General settings page to override the timegating functionality.
Any commands that are affected will also have their changelog entry updated to notify of the timegating. As of this commit, this is only active for /raid
We no longer blindly parse all sets as global emotes, but rather match them against the default_sets as intended.
This means that some emotes will no longer be visible through Chatterino (e.g. AndKnuckles). This is more in line with how the FrankerFaceZ browser extension works.
* 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>
* 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
* All non-phrase highlights can now trigger on messages from self
New state:
Allows self highlights: Subscription, Whisper, User, Badge
Does not allow self highlights: Message
* Add changelog entry
* fix PR number in changelog
* 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>