Commit graph

926 commits

Author SHA1 Message Date
pajlada acee654bd2
fix: badge highlights not immediately updating color (#5110) 2024-01-20 11:56:09 +00:00
Mm2PL 36931fac62
Remove reference to lua import() (#5108) 2024-01-19 21:31:19 +00:00
nerix ba94e3879b
deps(conan): use boost in header-only mode (#5107) 2024-01-19 20:32:34 +00:00
pajlada 4380ef8c5f
refactor: Remove most raw accesses into Application (#5104) 2024-01-19 17:59:55 +01:00
pajlada 326a402710
refactor: Make ChatterinoBadges less of a singleton (#5103) 2024-01-19 17:25:52 +01:00
nerix 5bf1a5a7dd
fix: ignore channel name when copying message (#5106)
Fixes #5101
2024-01-19 13:11:25 +01:00
nerix 4f2ca3b174
fix: assert for GUI thread in getters instead of get(I)App (#5102) 2024-01-18 19:50:57 +00:00
pajlada 11838c8e16
refactor: Move TwitchBadges to Application (#5096)
* refactor: Move TwitchBadges to Application

* refactor: Use named initializers

* refactor: Use `empty()` instead of `size() > 0`

* refactor: use emplace instead of push into the callback queue
2024-01-17 23:53:10 +01:00
pajlada 7d5967c248
Use the same input padding between light & dark themes (#5095) 2024-01-17 20:34:01 +00:00
pajlada 718696db53
refactor: Un-singletonize Paths & Updates (#5092) 2024-01-16 20:56:43 +00:00
pajlada 7f935665f9
refactor: Remove the NullablePtr class (#5091) 2024-01-15 21:30:34 +00:00
pajlada 93e2bc18fa
refactor: move Network files from src/common/ to src/common/network/ (#5089) 2024-01-15 21:28:44 +01:00
nerix 292f9b9734
fix: ignore save requests after closing all windows (#5081) 2024-01-14 12:37:03 +00:00
pajlada 13ff11ea75
refactor: SplitOverlay (#5082) 2024-01-14 13:09:07 +01:00
nerix c4c62f2796
fix: restore focus of last split when restoring (#5080) 2024-01-14 12:06:52 +01:00
fraxx 06f950a55b
Improve Streamlink documentation (#5076)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2024-01-12 15:15:42 -05:00
nerix 5c9747e08f
fix: button hover state-change not visible in some cases (#5077) 2024-01-11 23:31:33 +01:00
nerix fa5648fd9a
refactor: NetworkPrivate (#5063)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2024-01-09 00:37:15 +01:00
nerix f42ae07408
dev: Add RecentMessages benchmark (#5071)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2024-01-07 12:15:36 +00:00
nerix 78a7ebb9f9
Improve color selection and display (#5057)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2024-01-06 20:52:29 +00:00
iProdigy 693d4f401d
feat: add badges, emotes, and filters for suspicious messages (#5060)
* feat: show chat badges on suspicious user messages

* feat: display emotes in suspicious user messages

* feat: add search filters for suspicious messages

* chore: update changelog

* refactor: resolve initial nits

* fix: finish adding new filter identifier

* Comment the new message flags

* Add a list of known issues to low trust update messages

* fix: Keep shared-pointerness of the channel

Without this change, we would have the possibility of using the
TwitchChannel after the Channel itself has gone out of scope, albeit not
realistically since we just post this to a thread and parse it - there's
no networking or big delays involved. but this shows the intent better

---------

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2024-01-06 13:22:00 +00:00
pajlada 416806bb0a
refactor: Twitch PubSub client (#5059)
* 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!!!!!!!!
2024-01-06 13:18:37 +01:00
nerix e48d868e8c
fix: Avoid duplicate scale in settings dialog (#5069) 2024-01-06 11:28:06 +00:00
nerix 1192393039
fix: Avoid unnecessary NotebookTab updates (#5068)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2024-01-06 11:04:04 +00:00
fraxx 4a0ef08a00
Added missing periods at mod-related messages and some system messages (#5061)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2024-01-03 12:24:23 +01:00
pajlada 65b1ed312c
refactor: Logging (chat logger) (#5058)
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
2023-12-31 12:51:40 +00:00
iProdigy 036a5f3f21
feat: show restricted chats and suspicious treatment updates (#5056)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-12-31 10:44:55 +00:00
Mm2PL 69a54d944d
Autogenerate docs/plugin-meta.lua (#5055) 2023-12-30 10:26:19 +00:00
nerix 9a2c27d258
Allow customization of whisper colors in settings (#5053) 2023-12-29 20:52:35 +00:00
nerix 60d79ef57e
Improve docs/supplemental files for plugins (#5047)
Co-authored-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2023-12-29 17:12:50 +00:00
pajlada d085ab578f
refactor: Make Args less of a singleton (#5041)
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.
2023-12-29 15:40:31 +01:00
nerix c65ebd26bd
fix: non-native drag on Windows (#5051) 2023-12-29 15:10:56 +01:00
nerix d84779f127
fix: some buttons triggering when releasing mouse outside (#5052)
Examples of buttons fixed with this: Usercard profile picture & split header mod mode button
2023-12-29 14:20:07 +01:00
nerix d0d240136e
fix: Add check for tall messages (#5045) 2023-12-27 16:50:04 +01:00
nerix 9612eac966
perf: Only update regions with animated elements (#5043) 2023-12-27 01:12:14 +01:00
iProdigy eb12cfa50b
feat: add sound and flash alert for automod caught messages (#5026)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-12-25 23:17:44 +00:00
nerix 1006bf955a
perf: skip update from GIF timer if no animated elements are shown (#5042) 2023-12-25 19:04:46 +00:00
nerix 485fc5cdb4
fix: Tooltip parenting on Windows (#5040)
Fixes #5019
2023-12-25 17:17:25 +00:00
nerix 25add89b14
feat: Add crash recovery on Windows (#5012) 2023-12-24 15:38:58 +01:00
nerix d105a68dba
Allow ChannelViews without a Split (#4747) 2023-12-17 21:49:37 +01:00
pajlada 269e7a07b4
chore: Unify .clang-format file (#5037)
* chore: Unify all .clang-format files in the root dir

* Update `scripts/check-format.sh` to include all source dirs

* Add changelog entry
2023-12-17 13:50:42 +00:00
pajlada 0395b692e4
fix: ReplyThreadPopup now requires a split as its parent (#5036)
Co-authored-by: Nerixyz <nerixdev@outlook.de>
2023-12-17 13:16:40 +00:00
pajlada 5dd8c1c88a
dev: Rename tools directory to scripts (#5035) 2023-12-17 13:37:30 +01:00
pajlada aa11a24163
fix: UserInfoPopup now requires a split as its parent (#5034)
Co-authored-by: Nerixyz <nerixdev@outlook.de>
2023-12-17 11:53:06 +00:00
Wissididom d016a16269
Migrate tests on macOS to the same way tests are run on windows (#5032) 2023-12-17 11:32:40 +01:00
Herman Stornes b78b57b454
Fixes to ctrl+backspace behavior (#5013) 2023-12-16 13:40:05 +00:00
iProdigy e75ce5db54
fix: request more historical messages on wake (#5018) 2023-12-16 12:38:35 +00:00
Mm2PL 5f8c4c6b66
BREAKING: Replace custom import() with normal Lua require(). (#5014)
* Use require() instead of a custom import()

* Also search relative to the current file

* Update documentation
2023-12-16 12:16:54 +00:00
iProdigy bbf75516ed
fix: show user message on watch streak notice (#5029) 2023-12-16 11:48:32 +00:00
nerix 66f4480371
fix: Fixed some compiler warnings (#5028)
* fix(C4101): unreferenced local variable

* fix(C4189): variable initialized but not referenced

* fix(C4305): narrowing from double to float

* fix(C4457): declaration hiding function parameter

* fix(C4456): shadowing declaration

* fix(C4996): remove deprecations

* chore: add changelog entry

* fix: Remove more unused variables

* fix: removed unused lambda captures

* Update changelog entry

---------

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-12-16 11:24:28 +00:00
Mm2PL fd4cac2c2c
Add a new completion API for experimental plugins feature. (#5000)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-12-10 13:41:05 +00:00
pajlada e4258160cd
Fixed "Yes, don't ask again" image uploader prompt not working on macOS (#5011) 2023-12-10 13:28:31 +01:00
iProdigy 13dc306506
perf: query fewer historical messages on reconnects (#5001)
Co-authored-by: Ruben Anders <ruben.anders@robotty.de>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-12-09 19:46:30 +01:00
Mm2PL 401e097d62
Hide the Usercard button in the User Info Popup in special channels (#4972) 2023-12-09 12:21:00 +00:00
smc fec8f8c49f
Fix missing parent of tooltips for Wayland (#4998)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-12-09 11:28:33 +00:00
Ilya Zlobintsev 3ad2e4b30a
Update flatpak nightly build link (#5008)
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
2023-12-09 09:47:26 +01:00
pajlada 036c4f33df
conan: Update Boost to 1.83 & OpenSSL to 3.2.0 (#5007) 2023-12-09 00:23:35 +01:00
Mm2PL c3d3903b6f
feat: add --safe-mode command line option (#4985)
This ensures the settings button isn't hidden, and disables plugins from being loaded to make sure the user can always recover from messing things up
2023-12-05 17:37:42 +00:00
iProdigy 44abe6b487
feat: add channel for messages caught by AutoMod (#4986)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-12-03 22:07:30 +00:00
nerix 812186dc4c
Return correct hit-test values for title bar buttons on Windows (#4994)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-12-03 13:41:33 +00:00
pajlada 584a7c86fc
Move clang-tidy to its own CI job (#4996)
* Only run the `post-clang-tidy-review` if the `clang-tidy` build succeeded
2023-12-02 13:04:43 +00:00
nerix c4c94473ae
Do bounds-checking on more windows (#4797)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-12-02 12:56:03 +01:00
pajlada e327ed4166
Update magic_enum from v0.9.3 to v0.9.5 (#4992)
* Fix include path for magic enum
* Update .clang-format to ensure magic enum is caught as a third party library
2023-12-01 15:03:04 +01:00
Mm2PL 6d02bb7304
Make emote completion a lot smarter (#4987) 2023-11-28 10:06:35 +00:00
pajlada a240797b68
Add support for sound backends & some miniaudio changes (#4978)
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.
2023-11-26 22:06:12 +01:00
pajlada 1f09035bfb
refactor: common/Credentials (#4979)
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>
2023-11-26 18:38:31 +00:00
pajlada 5b741a8eb6
refactor: Remove Emoji's EmojiMap with a vector (#4980) 2023-11-26 18:17:58 +00:00
nerix e8673fc52a
fix: deadlock and use-after-free in tests (#4981)
* fix: use-after-free in settings

* refactor: put seventv api into a singleton

* chore: add changelog entry

* Add warning for when the 7TV load fails
2023-11-26 15:54:19 +00:00
nerix 854032fce9
fix: Only display spaces between words in reply context (#4977) 2023-11-26 11:15:35 +01:00
Mm2PL fbc8aacabe
Refactored the Image Uploader feature. (#4971)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-11-19 11:05:30 +00:00
Wissididom 7898b97fc2
feat: Run tests on Windows & macOS in CI (#4970) 2023-11-18 15:13:27 +01:00
kornes 0bdcaae5d1
Fix: dont select mod buttons at triple click (#4961) 2023-11-18 11:39:10 +00:00
nerix 3d9db1d528
refactor: Ignores and Replacements (#4965)
Fixes a freeze from a bad regex in _Ignores_
Fixes some emotes not appearing when using _Ignores_
Fixes lookahead/-behind not working in _Ignores_
2023-11-17 17:39:45 +01:00
nerix 6faf63c5c4
refactor: Remove Outcome from network requests (#4959) 2023-11-12 14:51:51 +01:00
pajlada 95620e6e10
fix: Split input sometimes not accepting focus (#4958) 2023-11-11 10:58:20 +00:00
pajlada 244efaa0a9
fix: /banid and /ban id: performing duplicate bans (#4957) 2023-11-10 18:46:28 +00:00
pajlada 423829be43
feat: /unban and /untimeout by id (#4956) 2023-11-10 19:18:20 +01:00
kornes c8e03b4ad7
Dont invalidate paint buffer when selecting (#4911) 2023-11-08 21:19:18 +00:00
pajlada fcc5f4b3df
feat: Allow id: prefix in /ban and /timeout (#4945)
ban example: `/ban id:70948394`, equivalent to `/banid 70948394`
timeout example: `/timeout id:70948394 10 xd`
2023-11-08 21:42:06 +01:00
iProdigy d40b0a6c1d
fix: avoid reward redemption crash via buffer refactor (#4949)
Co-authored-by: nerix <nero.9@hotmail.de>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-11-08 18:14:48 +01:00
Mm2PL f943f70634
Add support for opening usercards by ID (#4934)
Co-authored-by: nerix <nerixdev@outlook.de>
2023-11-06 20:42:24 +01:00
iProdigy 5209e47df1
Improve reply popup after thread update (#4923)
Co-authored-by: nerix <nero.9@hotmail.de>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
2023-11-05 16:25:26 +00:00
iProdigy 9dd83b040b
feat: /reply command now replies to the latest message of the user (#4919)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-11-05 16:30:15 +01:00
nerix 7d145e3577
Disable clickable sections in tables (#4913) 2023-11-04 18:42:13 +00:00
nerix 5325c7b826
Fix tooltips appearing too large and/or away from the cursor (#4920) 2023-11-04 18:13:34 +00:00
Alex Baines 879a63e6f3
Support using follower emotes outside of channel if subbed (#4922)
If we also have a subscriber emote set for a channel, then don't treat
a follower emote set as local to that channel.

Co-authored-by: iProdigy <8106344+iProdigy@users.noreply.github.com>
2023-11-04 17:45:18 +00:00
kornes b3ed3285ee
feat: Add VERSIONINFO resource for windows (#4912) 2023-11-03 18:19:50 +01:00
Mm2PL 03b32bffc8
Bugfix: Fixed a crash when clicking More messages below button in a usercard and closing it quickly. (#4933) 2023-11-02 12:12:52 +00:00
pajlada 56346874e1
ci: Use clang-format 16 (#4929) 2023-10-31 17:24:47 +00:00
pajlada f4726ed7a8
refactor: IrcMessageHandler (#4927) 2023-10-31 17:47:56 +01:00
pajlada 7efe58cca9
refactor: ChannelView (#4926)
Co-authored-by: nerix <nerixdev@outlook.de>
2023-10-31 14:54:14 +01:00
nerix c811e2d991
refactor: Change lifetime of context menus (#4924) 2023-10-29 19:24:38 +00:00
nerix 7ecbfa0cdb
refactor: debug count and popup (#4921)
* Moved implementation of the methods to the `cpp` file.
* Added `DebugCount::Flag(s)` and `DebugCount::configure(name, flags)`.
* Moved from `QMap` to `std::map` (order is important here).
* Used `QStringBuilder` for concatenations.
* Used `QLocale` for formatting (adds separators).
* Added `DebugCount::Flag::DataSize` for data sizes in bytes (and fixed language to English).
* Used `DataSize` for image sizes (maybe this should be moved somewhere else?).
* Added copy button to popup.
* Fixed Image usage reporting being eight times too large (could be another PR, but honestly it's four characters).
2023-10-28 21:17:32 +02:00
nerix fcb6eff8cc
Remove direct dependency on Qt 5 compatibility module (#4906) 2023-10-23 21:28:02 +02:00
kornes 12808d3154
refactor: simplify double click selection (#4898) 2023-10-17 13:38:38 +02:00
nerix b975900043
refactor: Toast (#4899)
* Fixes a bug where avatars weren't loaded on fresh installations of Chatterino.
* Avatars now update every two weeks.
* Removes misleading `DownlaodManager` (now part of `Toasts.cpp`).
* Refactors usage of WinToast to be easier to read.
* Added version to AUMI.
* Removes manual `QString` → `std::wstring` conversions.
* Removes uses of implicit ASCII casts in `Toasts.cpp`, meaning it can be compiled with `QT_NO_CAST_FROM_ASCII`.
2023-10-17 01:50:18 +00:00
kornes ccaedc3987
perf: reduce repaints amount caused by selection (#4889)
Co-authored-by: nerix <nero.9@hotmail.de>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2023-10-13 17:19:52 +00:00
Daniel Sage b85d666b32
fix: Remove tab completion caching of source (#4893) 2023-10-13 09:43:16 +00:00
Daniel Sage 653a14c76b
fix: Don't use QCompleter prefix filter (#4855)
* Invalidate tab completion model when settings change

* Remove true culprit

* Update CHANGELOG.md

* Remove QCompleter setFilterMode call

---------

Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
2023-10-13 11:22:48 +02:00
pajlada fec45889a8
Replace boost::optional with std::optional (#4877) 2023-10-08 16:50:48 +00:00