Commit Graph
5484 Commits
Author SHA1 Message Date
VoiceOfGrogandGitHub 0da2c452ba Add voiceofgrog to contributors list (#7154)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-08-03 17:17:46 +02:00
f6be3003ed fix: add missing ellipsis to menu items that open dialogs (#6858)
Added missing ellipsis (…) to menu items that open a dialog requiring
user input,
following standard HIG conventions.

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
Tested-by: voiceofgrog
2026-08-02 11:19:08 +00:00
pajladaandGitHub 1ab17263a0 chore: update contributor documentation (#7130) 2026-08-02 10:04:38 +00:00
pajladaandGitHub 9fc250a74a fix: unlock badge sets map before calling pending callbacks (#7148) 2026-08-01 14:31:57 +00:00
pajladaandGitHub dafbbcb608 chore: scaffold setting migration system (#7144) 2026-08-01 13:58:22 +00:00
pajladaandGitHub bac63c22d1 eventsub: add some logging when privileges change (#7143) 2026-08-01 13:05:24 +00:00
ArneandGitHub 3168fbde61 fix: make Notebook::findItem safe (#7137)
Reviewed-by: Nerixyz <nerixdev@outlook.de>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-08-01 12:15:50 +00:00
NerixyzandGitHub a5117a9c33 build(windows): Enable segment heap if possible (#7142)
With Visual Studio 2026 18.6, Microsoft included a script to easily
enable the segment heap for apps
([blog](https://devblogs.microsoft.com/cppblog/segment-heap-support-for-c-projects-in-visual-studio/)).
The segment heap was already available for some years, but it hasn't
been enabled by default. With the provided script we can add a manifest
to enable it. In my basic testing it reduced the memory usage from
~75MiB to ~70MiB with one tab and 4 messages. So it should be a free win
for us.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-08-01 11:32:29 +00:00
NerixyzandGitHub e36ec74f07 refactor: move JSON serialization to descriptors (#7138)
The last main part from #6906: Produce the JSON in the descriptors
instead of in the window layout. This mainly moves the content from
`encodeNodeRecursively` into `toJson` functions on the descriptors.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-08-01 10:48:24 +00:00
pajladaandGitHub 3cfdb3b47e chore: label "double click links" setting as pause (#7141)
helps make sure it shows up when searching for "pause" in the settings dialog
2026-07-29 11:27:48 +00:00
NerixyzandGitHub 772c291196 deps: Update libcommuni and use Communi::TagsRef (#7134)
This updates `libcommuni` to include
https://github.com/Chatterino/libcommuni/pull/13 which refactors the tag
handling (see PR for the reasons).

The only change here is the replacement of the map and the lookup
functions.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-26 17:23:17 +00:00
NerixyzandGitHub 1e5dd7363b feat: Set window roles for session restoration (#7058)
This sets the window roles for our windows similar to what I described
in #6655. All roles are prefixed with `chatterino.` to avoid collision
in the case where we're embedded.

- Main Window: `chatterino.main`
- Popups: `chatterino.popup.{id}`
- Emote popup: `chatterino.emote-popup`
- Settings: `chatterino.settings`
- Overlay: `chatterino.overlay`

Right now, you need to pass `-session {session-id}_0` when starting, but
I hope future Qt versions add a way to set the session ID after the
`QGuiApplication` is created. Note that because of this, restoration
won't work out of the box. That's expected. You can see the session
status in the logs of `qt.qpa.wayland`.

Tested with KDE 6.7 and Qt 6.12-beta1.

Closes #6655.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2026-07-26 13:24:37 +00:00
pajladaandGitHub b97457297b fix: remove hype chat functionality (#7136)
Hype Chat was deprecated by Twitch in 2023

Parent-pr: 6695
2026-07-26 14:47:08 +02:00
pajladaandGitHub 61ea0fde5c refactor: make env::readBool public (#7135)
Parent-pr: 6695
2026-07-26 11:26:52 +00:00
NerixyzandGitHub 45f98a71b0 refactor(window-layout): Build descriptor for serializing (#7092)
It's useful for other components to get a split descriptor from a split
(e.g. chatterino-embed). To avoid differences between the descriptor and
the JSON output (e.g. adding a field to the split data), this makes the
descriptor mandatory. Instead of going `SplitContainer* -> JSON`, we do
`SplitContainer* -> NodeDescriptor -> JSON`. In a followup, I'm going to
add `*Descriptor::toJSON`.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-26 10:34:56 +00:00
NerixyzandGitHub 8f84483330 feat: improve memory usage of FFZ badges (#7126)
FFZ badges consume a decent amount of memory in Chatterino. Before this
PR, they consumed 18.4 MiB.

We can do two cheap optimizations that cut the use in half:
- Use [`QVarLengthArray`](https://doc.qt.io/qt-6/qvarlengtharray.html)
to store the badges for a user instead of `std::set`. `std::set` always
allocates, even if there's only one badge. Since most users only have
one, we create many small allocations. With `QVarLengthArray<T, N>`, `N`
elements are stored inline. This reduced the memory usage to 11.9 MiB.
- Use `boost::unordered_flat_map` instead of `std::unordered_map`.
Because of relaxed requirements for the Boost map, it doesn't need to
store as much auxiliary data. This reduced the memory usage to 9.3 MiB.

A further optimization could be the use of a
`boost::container::flat_multimap<std::string, int>`. This gets us to 4.6
MiB. I haven't measured the performance of this. We'd have to assume
that FFZ returns us unique users per badge. The comparison with
`QString` for the lookup can be done by comparing `QString <
QLatin1StringView` (as we know badge IDs are latin1).


Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-25 15:30:52 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Rasmus Karlsson
5cee1b78d1 ci: bump Chatterino/msvc-dev-cmd from 2.0.5 to 2.0.7 (#7101)
Bumps
[Chatterino/msvc-dev-cmd](https://github.com/chatterino/msvc-dev-cmd)
from 2.0.5 to 2.0.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/chatterino/msvc-dev-cmd/releases">Chatterino/msvc-dev-cmd's
releases</a>.</em></p>
<blockquote>
<h2>v2.0.6</h2>
<h2>What's Changed</h2>
<ul>
<li>Remove amd64_arm from build workflow by <a
href="https://github.com/Wissididom"><code>@​Wissididom</code></a> in <a
href="https://redirect.github.com/Chatterino/msvc-dev-cmd/pull/3">Chatterino/msvc-dev-cmd#3</a></li>
<li>Update some ilammy's to Chatterino in README.md by <a
href="https://github.com/Wissididom"><code>@​Wissididom</code></a> in <a
href="https://redirect.github.com/Chatterino/msvc-dev-cmd/pull/2">Chatterino/msvc-dev-cmd#2</a></li>
<li>Use a PowerShell composite action instead of NodeJS by <a
href="https://github.com/Wissididom"><code>@​Wissididom</code></a> in <a
href="https://redirect.github.com/Chatterino/msvc-dev-cmd/pull/5">Chatterino/msvc-dev-cmd#5</a></li>
<li>Normalize indentations to 4 spaces by <a
href="https://github.com/Wissididom"><code>@​Wissididom</code></a> in <a
href="https://redirect.github.com/Chatterino/msvc-dev-cmd/pull/6">Chatterino/msvc-dev-cmd#6</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Chatterino/msvc-dev-cmd/compare/v2.0.5...v2.0.6">https://github.com/Chatterino/msvc-dev-cmd/compare/v2.0.5...v2.0.6</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Chatterino/msvc-dev-cmd/commit/5e15a285487363708f5bc6a135fd434bd20d22a6"><code>5e15a28</code></a>
Normalize indentations to 4 spaces (<a
href="https://redirect.github.com/chatterino/msvc-dev-cmd/issues/6">#6</a>)</li>
<li><a
href="https://github.com/Chatterino/msvc-dev-cmd/commit/7e0343fa431e4345b6215a4c2681980c3602f67f"><code>7e0343f</code></a>
Use a PowerShell composite action instead of NodeJS (<a
href="https://redirect.github.com/chatterino/msvc-dev-cmd/issues/5">#5</a>)</li>
<li><a
href="https://github.com/Chatterino/msvc-dev-cmd/commit/ca6e1c6fe2653f6fae90ebd04d38fced8b53259e"><code>ca6e1c6</code></a>
docs: update some ilammy's to Chatterino in README.md (<a
href="https://redirect.github.com/chatterino/msvc-dev-cmd/issues/2">#2</a>)</li>
<li><a
href="https://github.com/Chatterino/msvc-dev-cmd/commit/579e4881d4df6b285c4f683fc07fc8f19006977d"><code>579e488</code></a>
ci: remove amd64_arm from build workflow (<a
href="https://redirect.github.com/chatterino/msvc-dev-cmd/issues/3">#3</a>)</li>
<li>See full diff in <a
href="https://github.com/chatterino/msvc-dev-cmd/compare/v2.0.5...v2.0.6">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2026-07-25 14:40:14 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d64ad573d8 ci: bump actions/setup-python from 6 to 7 (#7123)
Bumps [actions/setup-python](https://github.com/actions/setup-python)
from 6 to 7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-python/releases">actions/setup-python's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.0</h2>
<h2>What's Changed</h2>
<h3>Enhancements</h3>
<ul>
<li>Migrate to ESM and upgrade dependencies by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1330">actions/setup-python#1330</a></li>
<li>Pin SHA commits and update docs with latest versions by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1338">actions/setup-python#1338</a></li>
<li>Remove the pip-install input by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-python/pull/1336">actions/setup-python#1336</a></li>
</ul>
<h3>Bug Fix</h3>
<ul>
<li>Fix to Classify stderr warning messages as warnings instead of
errors in annotations by <a
href="https://github.com/lmvysakh"><code>@​lmvysakh</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1335">actions/setup-python#1335</a></li>
<li>Validate and retry manifest fetch to prevent silent failures by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1332">actions/setup-python#1332</a></li>
</ul>
<h3>Dependency Upgrade</h3>
<ul>
<li>Bump certifi from 2020.6.20 to 2024.7.4 in
/<strong>tests</strong>/data by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1328">actions/setup-python#1328</a></li>
<li>Remove EOL Python versions and Bumps numpy text fixture by <a
href="https://github.com/priya-kinthali"><code>@​priya-kinthali</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1333">actions/setup-python#1333</a></li>
<li>Upgrade <code>@​actions/cache</code> to 6.2.0 by <a
href="https://github.com/philip-gai"><code>@​philip-gai</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1337">actions/setup-python#1337</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/lmvysakh"><code>@​lmvysakh</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-python/pull/1335">actions/setup-python#1335</a></li>
<li><a
href="https://github.com/philip-gai"><code>@​philip-gai</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-python/pull/1337">actions/setup-python#1337</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-python/compare/v6...v7.0.0">https://github.com/actions/setup-python/compare/v6...v7.0.0</a></p>
<h2>v6.3.0</h2>
<h2>What's Changed</h2>
<h3>Enhancement</h3>
<ul>
<li>Add RHEL support and include Linux distro in cache keys by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1323">actions/setup-python#1323</a></li>
<li>Fix pip cache error handling on Windows by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1040">actions/setup-python#1040</a></li>
</ul>
<h3>Dependency update</h3>
<ul>
<li>Upgrade minimatch from 3.1.2 to 3.1.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1281">actions/setup-python#1281</a></li>
<li>Upgrade actions dependencies by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a> in
<a
href="https://redirect.github.com/actions/setup-python/pull/1303">actions/setup-python#1303</a></li>
<li>Upgrade <code>@​actions/cache</code> to 5.1.0, log cache write
denied by <a
href="https://github.com/jasongin"><code>@​jasongin</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1324">actions/setup-python#1324</a></li>
<li>Upgrade dependency versions and test workflow configuration by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1322">actions/setup-python#1322</a></li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Update advanced-usage.md by <a
href="https://github.com/Dunky-Z"><code>@​Dunky-Z</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/811">actions/setup-python#811</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-python/pull/1303">actions/setup-python#1303</a></li>
<li><a href="https://github.com/jasongin"><code>@​jasongin</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-python/pull/1324">actions/setup-python#1324</a></li>
<li><a href="https://github.com/Dunky-Z"><code>@​Dunky-Z</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-python/pull/811">actions/setup-python#811</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-python/compare/v6.2.0...v6.3.0">https://github.com/actions/setup-python/compare/v6.2.0...v6.3.0</a></p>
<h2>v6.2.0</h2>
<h2>What's Changed</h2>
<h3>Dependency Upgrades</h3>
<ul>
<li>Upgrade dependencies to Node 24 compatible versions by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1259">actions/setup-python#1259</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-python/commit/5fda3b95a4ea91299a34e894583c3862153e4b97"><code>5fda3b9</code></a>
Pin SHA commits and update docs with latest versions (<a
href="https://redirect.github.com/actions/setup-python/issues/1338">#1338</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/4ab7e95f05e168b4356aebde89dd84f59c283d8e"><code>4ab7e95</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/setup-python/issues/1337">#1337</a>
from actions/philip-gai/bump-actions-cache-6-2-0</li>
<li><a
href="https://github.com/actions/setup-python/commit/0f3a009f475dbea83c0371cd85d099690fee8c5c"><code>0f3a009</code></a>
Remove the pip-install input (<a
href="https://redirect.github.com/actions/setup-python/issues/1336">#1336</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/f8cf4291c8b8e273ddd26e569454615c7315d932"><code>f8cf429</code></a>
Migrate to ESM and upgrade dependencies (<a
href="https://redirect.github.com/actions/setup-python/issues/1330">#1330</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/54baeea5b34417d10a7479663a23cca53ea209b5"><code>54baeea</code></a>
Validate and retry manifest fetch to prevent silent failures (<a
href="https://redirect.github.com/actions/setup-python/issues/1332">#1332</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/c7092773a316760f4ecfe498e4af668a4dafeac5"><code>c709277</code></a>
Annotation code fix (<a
href="https://redirect.github.com/actions/setup-python/issues/1335">#1335</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/6849080452e69b330395e8a6d23cf90f56d76a1a"><code>6849080</code></a>
remove EOL Python versions and Bumps numpy text fixture (<a
href="https://redirect.github.com/actions/setup-python/issues/1333">#1333</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/0903b469fbf4441aadfe4f4b249dc5b1fba3a73e"><code>0903b46</code></a>
Bump certifi from 2020.6.20 to 2024.7.4 in /<strong>tests</strong>/data
(<a
href="https://redirect.github.com/actions/setup-python/issues/1328">#1328</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-python/compare/v6...v7">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 14:35:11 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Rasmus Karlsson
544c5903af ci: bump vmactions/freebsd-vm from 1.5.0 to 1.5.2 (#7119)
Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm)
from 1.5.0 to 1.5.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vmactions/freebsd-vm/releases">vmactions/freebsd-vm's
releases</a>.</em></p>
<blockquote>
<h2>v1.5.2</h2>
<p>reduce image sizes.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/vmactions/freebsd-vm/compare/v1...v1.5.2">https://github.com/vmactions/freebsd-vm/compare/v1...v1.5.2</a></p>
<h2>v1.5.1</h2>
<p>The prepare step (installing packages etc.) normally runs on every
build. With cache-after-prepare: true, the action shuts the VM down
cleanly after prepare has finished, caches the prepared VM image, and
boots the VM again before run. Later runs with the same prepare script
restore the prepared image, skip prepare entirely, and start directly at
run</p>
<p><a
href="https://github.com/vmactions/freebsd-vm#10-cache-the-vm-image-after-prepare">https://github.com/vmactions/freebsd-vm#10-cache-the-vm-image-after-prepare</a></p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/vmactions/freebsd-vm/compare/v1...v1.5.1">https://github.com/vmactions/freebsd-vm/compare/v1...v1.5.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/77ed28d336d03fe19a3f4f7266c1d2c4714dd79d"><code>77ed28d</code></a>
Update vmactions/freebsd-vm from base-vm</li>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/7e4394ceec879179f8c566de645663ea497fc2a7"><code>7e4394c</code></a>
Generated from base-vm</li>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/1943f6c7798721062c79065c2fff836250b050fc"><code>1943f6c</code></a>
Update vmactions/freebsd-vm from base-vm</li>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/df48c4d9631e2adc7580787adba929840803f295"><code>df48c4d</code></a>
Generated from base-vm</li>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/857a4066240a8bc5a148fed1f954a4be8419d909"><code>857a406</code></a>
fix for image size</li>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/b05c66399774471f70a8d6bcca5e3043ae9ac5f4"><code>b05c663</code></a>
Update version to v1.5.1</li>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/a46f291854f624412f94e37b2e6ba64bdb52b5dd"><code>a46f291</code></a>
Update vmactions/freebsd-vm from base-vm</li>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/9f53bb3f0e92d93ea182d74a934572b6223d2763"><code>9f53bb3</code></a>
Generated from base-vm</li>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/cc38efae1744a90315f43bd85e49116af72320fa"><code>cc38efa</code></a>
Update version to v1.5.0</li>
<li><a
href="https://github.com/vmactions/freebsd-vm/commit/0eea5137bc632b845b6194e80c74c373e0d617ac"><code>0eea513</code></a>
Update vmactions/freebsd-vm from base-vm</li>
<li>Additional commits viewable in <a
href="https://github.com/vmactions/freebsd-vm/compare/v1.5.0...v1.5.2">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2026-07-25 11:41:53 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
aba6e69fb1 ci: bump lib/twitch-eventsub-ws/lib/date from 7875f43 to 179a6b9 (#7129)
Bumps
[lib/twitch-eventsub-ws/lib/date](https://github.com/HowardHinnant/date)
from `7875f43` to `179a6b9`.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/HowardHinnant/date/commit/179a6b921ccd6179b5b04dce812a89f71a51b4df"><code>179a6b9</code></a>
Update remote_version to new website</li>
<li>See full diff in <a
href="https://github.com/HowardHinnant/date/compare/7875f43aa9288d176191c83e8284d61acdd5ab7c...179a6b921ccd6179b5b04dce812a89f71a51b4df">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 12:48:19 +02:00
NerixyzandGitHub 6de0516c66 fix(windows): deploy OpenSSL TLS plugin (#7125)
Since #7009, our Windows nightly builds were missing the OpenSSL TLS
plugin for Qt. Qt 6.8+ only deploys the OpenSSL plugin if it sees
`libcrypto.dll` or `libssl.dll`. However, our OpenSSL is named
`lib{ssl,crypto}-3-x64.dll`. `--force-openssl` will deploy the SSL
plugin regardless.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-22 14:49:52 +02:00
NerixyzandGitHub b2f1e12e62 tests: increase wait and timeout in OnceFlag.waitFor (#7121)
In hopes to not land a PR for #7116, this increases the wait + timeout
as described in
https://github.com/Chatterino/chatterino2/issues/7116#issuecomment-5015316981.

I think the issue is that macOS runners on GitHub Actions are so
incredibly slow sometimes that we get these weird timings. And if that's
the cause, the overhead (e.g. from switching tasks) should be constant.
Then, if we increase the wait and timeout, we also increase the accepted
jitter (timeout - wait) from 100ms to 1s. So if the lag we get is at
about 150ms, that is now accepted.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-20 16:59:09 +00:00
ExeArcoandGitHub d9886c8840 accounts: add visual indicator for login expiry (#6919)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-19 18:43:11 +00:00
ArneandGitHub d6c8bdde61 emotepopup: search by tags and original name (#7077)
Search by tags with `tags:forsen`
Search by tags & name with `tags:forsen pepe`

Reviewed-by: Nerixyz <nerixdev@outlook.de>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-19 20:00:53 +02:00
LeafyzitoandGitHub c3368d0fb5 feat: add tab history navigation (#7063)
Tested-by: apa420 <17131426+apa420@users.noreply.github.com>
Reviewed-by: Nerixyz <nerixdev@outlook.de>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-19 14:24:10 +00:00
NerixyzandGitHub d853137820 feat(plugins): Add c2.DateTime (#7096)
This adds the `DateTime` API described in #7021.

Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-19 13:26:21 +00:00
NerixyzandGitHub 14b5c665a4 chore: Scale down pinned message banner (#7113)
I think the text in the pinned message banner is too large in relation
to the default UI font width, so I scaled it down.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Parent-pr: 7014
2026-07-19 11:41:42 +00:00
NerixyzandGitHub 2ca4b28457 fix: Update pined message height if viewport resized (#7114)
If the split is not 100dp wide, the calculated message height can be
wrong. If the split is larger than 100dp and the message would wrap at
that size, the widget would be too tall. And vice versa for splits
smaller than 100dp.

We do calculate the height in our resize event, but we use the size of
our children. Their resize events are delivered after we're resized. So
we check if we need to resize after we show the widget. This does result
in a small flash where the content is sized incorrectly, but better than
it being incorrect the entire time.

Parent-pr: 7014
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-19 11:00:12 +00:00
JEC15andGitHub b581099119 chore: add ArmpitsLover420 to contributors list (#7115)
Reviewed-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2026-07-19 10:19:18 +00:00
James UpjohnandGitHub 355c8192d9 chore: clarify r9k references as "unique chat" (#7112)
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-18 23:03:09 +00:00
ArneandGitHub 8ccb6d6be7 feat: add setting to show shared chat badge for all messages (#7099)
This behaviour is enabled by default, and can be disabled in the settings.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-19 00:14:18 +02:00
JEC15andGitHub dda05c03c3 fix: ignore phrase replacements break in some scenarios (#7098)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-18 17:18:31 +00:00
Marie RamlowandGitHub 290f896759 fix: explicitly set QT desktop file name (#7110)
This fixes an issue with GNOME not being able to display the application
icon, because in a rare edge case QT would set an incorrect wayland
app_id.

Link: https://github.com/NixOS/nixpkgs/issues/542967
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-18 16:34:42 +00:00
ArneandGitHub 4e198083e1 fix: make pinned message text selectable (#7109)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Reviewed-by: Nerixyz <nerixdev@outlook.de>
Parent-pr: 7014
2026-07-18 13:21:55 +00:00
teknslandGitHub 78e856f7c9 feat: command-line arguments for setting portable directory (#7093)
Reviewed-by: Nerixyz <nerixdev@outlook.de>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-18 11:53:18 +00:00
Neil LoboandGitHub 14bf8c6fad fix(plugins): vip badge type (#7107)
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-18 11:01:15 +00:00
somsoandGitHub b1c64d6488 Included alt pronouns in usercards (#7108)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Reviewed-by: Nerixyz <nerixdev@outlook.de>
2026-07-18 10:11:04 +00:00
invisibl3catandGitHub 7a6348e3ad sharedchat: respect preferred username display mode in header (#7111)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Parent-pr: 6948
2026-07-18 11:23:40 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9112873c55 ci: bump actions/setup-node from 6 to 7 (#7105)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6
to 7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-node/releases">actions/setup-node's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.0</h2>
<h2>What's Changed</h2>
<h3>Enhancements:</h3>
<ul>
<li>Add cache-primary-key and cache-matched-key as outputs by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-node/pull/1577">actions/setup-node#1577</a></li>
<li>Migrate to ESM and upgrade dependencies by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-node/pull/1574">actions/setup-node#1574</a></li>
</ul>
<h3>Bug fixes:</h3>
<ul>
<li>Remove dummy NODE_AUTH_TOKEN export by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-node/pull/1558">actions/setup-node#1558</a></li>
<li>Only use <code>mirrorToken</code> in <code>getManifest</code> if
it's provided by <a
href="https://github.com/deiga"><code>@​deiga</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1548">actions/setup-node#1548</a></li>
</ul>
<h3>Documentation updates:</h3>
<ul>
<li>Add documentation for publishing to npm with Trusted Publisher
(OIDC) by <a
href="https://github.com/chiranjib-swain"><code>@​chiranjib-swain</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1536">actions/setup-node#1536</a></li>
<li>docs: Update restore-only cache documentation by <a
href="https://github.com/priya-kinthali"><code>@​priya-kinthali</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1550">actions/setup-node#1550</a></li>
<li>docs: Update caching recommendations to mitigate cache poisoning
risks by <a
href="https://github.com/chiranjib-swain"><code>@​chiranjib-swain</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1567">actions/setup-node#1567</a></li>
</ul>
<h3>Dependency update:</h3>
<ul>
<li>Upgrade <code>@​actions/cache</code> to 5.1.0, log cache write
denied by <a
href="https://github.com/jasongin"><code>@​jasongin</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1569">actions/setup-node#1569</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/chiranjib-swain"><code>@​chiranjib-swain</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1536">actions/setup-node#1536</a></li>
<li><a href="https://github.com/deiga"><code>@​deiga</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1548">actions/setup-node#1548</a></li>
<li><a href="https://github.com/jasongin"><code>@​jasongin</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1569">actions/setup-node#1569</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-node/compare/v6...v7.0.0">https://github.com/actions/setup-node/compare/v6...v7.0.0</a></p>
<h2>v6.5.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update <code>@​actions/cache</code> to 5.1.0 and add security
overrides for undici and fast-xml-parser by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1579">actions/setup-node#1579</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-node/compare/v6.4.0...v6.5.0">https://github.com/actions/setup-node/compare/v6.4.0...v6.5.0</a></p>
<h2>v6.4.0</h2>
<h2>What's Changed</h2>
<h3>Dependency updates:</h3>
<ul>
<li>Upgrade <a
href="https://github.com/actions"><code>@​actions</code></a>
dependencies by <a
href="https://github.com/Copilot"><code>@​Copilot</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1525">actions/setup-node#1525</a></li>
<li>Update Node.js versions in versions.yml and bump package to v6.4.0
by <a
href="https://github.com/priya-kinthali"><code>@​priya-kinthali</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1533">actions/setup-node#1533</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Copilot"><code>@​Copilot</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1525">actions/setup-node#1525</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-node/compare/v6...v6.4.0">https://github.com/actions/setup-node/compare/v6...v6.4.0</a></p>
<h2>v6.3.0</h2>
<h2>What's Changed</h2>
<h3>Enhancements:</h3>
<ul>
<li>Support parsing <code>devEngines</code> field by <a
href="https://github.com/susnux"><code>@​susnux</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1283">actions/setup-node#1283</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-node/commit/820762786026740c76f36085b0efc47a31fe5020"><code>8207627</code></a>
Migrate to ESM and upgrade dependencies (<a
href="https://redirect.github.com/actions/setup-node/issues/1574">#1574</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/04be95cf3511ea51ebf9f224ddfb99cc7ab87cd4"><code>04be95c</code></a>
Add cache-primary-key and cache-matched-key as outputs (<a
href="https://redirect.github.com/actions/setup-node/issues/1577">#1577</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/7c2c68d20d402ed6a201ada70a81341941093140"><code>7c2c68d</code></a>
docs: Update caching recommendations to mitigate cache poisoning risks
(<a
href="https://redirect.github.com/actions/setup-node/issues/1567">#1567</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/6a61c0375d66246de94630495909f12cf8dac84d"><code>6a61c03</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/setup-node/issues/1569">#1569</a>
from jasongin/update-actions-cache-5.1.0</li>
<li><a
href="https://github.com/actions/setup-node/commit/30eb73b41ded577900c1ebf968ef95cdf8f7434f"><code>30eb73b</code></a>
Resolve high-severity audit issues</li>
<li><a
href="https://github.com/actions/setup-node/commit/4e1a87a501d0302f99e30e2748568adcb388d09f"><code>4e1a87a</code></a>
Update dist</li>
<li><a
href="https://github.com/actions/setup-node/commit/360237f0c01778d0c17291f75c56d6feae4f7574"><code>360237f</code></a>
Strict equality</li>
<li><a
href="https://github.com/actions/setup-node/commit/4f8aac5beb2f0854bc79651567a18c67eb0b9de3"><code>4f8aac5</code></a>
Bump <code>@​actions/cache</code> to 5.1.0, log cache write denied</li>
<li><a
href="https://github.com/actions/setup-node/commit/f4a67bbeca970f103397d3d2b9462cf787cd2980"><code>f4a67bb</code></a>
Only use <code>mirrorToken</code> in <code>getManifest</code> if it's
provided (<a
href="https://redirect.github.com/actions/setup-node/issues/1548">#1548</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/0355742c943ddb13ca8a6b700f824231caa91e75"><code>0355742</code></a>
Remove dummy NODE_AUTH_TOKEN export (<a
href="https://redirect.github.com/actions/setup-node/issues/1558">#1558</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/setup-node/compare/v6...v7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-node&package-manager=github_actions&previous-version=6&new-version=7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-15 11:06:23 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3260f53816 ci: bump lib/libcommuni from bb5417c to ac0e713 (#7102)
Bumps [lib/libcommuni](https://github.com/Chatterino/libcommuni) from
`bb5417c` to `ac0e713`.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Chatterino/libcommuni/commit/ac0e713e5a904b6f3231c70e076f6fd67a78455e"><code>ac0e713</code></a>
tests: build with cmake as well (<a
href="https://redirect.github.com/Chatterino/libcommuni/issues/12">#12</a>)</li>
<li><a
href="https://github.com/Chatterino/libcommuni/commit/881ee412986b9f871df20d587263aacb2a738ff0"><code>881ee41</code></a>
fix(ci): Coverage and pin macOS to 14 (<a
href="https://redirect.github.com/Chatterino/libcommuni/issues/11">#11</a>)</li>
<li><a
href="https://github.com/Chatterino/libcommuni/commit/0cc209ffe3315b9f81bd4f582dde8f3c452e3e5c"><code>0cc209f</code></a>
ci: use Chatterino fork of ilammy/msvc-dev-cmd action (<a
href="https://redirect.github.com/Chatterino/libcommuni/issues/10">#10</a>)</li>
<li>See full diff in <a
href="https://github.com/Chatterino/libcommuni/compare/bb5417c451d764f57f2f1b3e1c9a81496b5521bd...ac0e713e5a904b6f3231c70e076f6fd67a78455e">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 11:56:46 +02:00
tlosandGitHub fa2badce64 Add tlos to contributors list (#7100)
Reviewed-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2026-07-14 11:40:02 +02:00
invisibl3catandGitHub 91cf6a4a57 Show participants in a shared chat session in the split header (#6948)
Reviewed-by: Nerixyz <nerixdev@outlook.de>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-12 12:11:48 +00:00
invisibl3catandGitHub 5e73ba7e24 nit: try to dequote logfile path (#6982)
Reviewed-by: Nerixyz <nerixdev@outlook.de>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-12 11:26:08 +00:00
NerixyzandGitHub bc772c5b2b chore(window-layout): cleanup loadFromJSON (#7089)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-12 10:45:52 +00:00
teknslandGitHub 2cb4657966 refactor: uncouple Args from Paths (#7084)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Reviewed-by: Nerixyz <nerixdev@outlook.de>
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2026-07-12 09:57:08 +00:00
tlosandGitHub 7d4f10e60f feat: add pinned message banner (#7014)
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Reviewed-by: Nerixyz <nerixdev@outlook.de>
2026-07-12 11:17:19 +02:00
pajladaandGitHub 597a2c57dd reuse: annotate some more source files (#7086) 2026-07-11 11:08:33 +00:00
WissididomandGitHub 2130871a83 ci: update to macOS 26 for the Qt 6.11 build (#7091)
Reviewed-by: Nerixyz <nerixdev@outlook.de>
Reviewed-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2026-07-11 12:08:55 +02:00
NerixyzandGitHub ad99ab8daa refactor: Use magic_enum for encoding channels (#7079)
Split from #6906.

This changes the en-/decoding of channels in the window layout to use
magic-enum for translating between enum and string.
This way, the names are consistent when en-/deconding. And more
importantly, when adding channel types, you should get compiler warnings
in switch statements for uncovered cases.


Tested-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-07-05 14:09:18 +00:00
NerixyzandGitHub dbfa071447 fix(channelview): Use source channel more often (#7085)
We have info about the channel that we're derived from in `ChannelView`,
but didn't use it for context menu items. This PR does that.

Closes #7082.

Tested-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reported-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2026-07-05 13:19:16 +00:00