102 Commits
Author SHA1 Message Date
pajladaandGitHub 05d6b2afa2 fix: make announcements a single message (#7196) 2026-08-24 09:46:40 +02:00
pajladaandGitHub 3b7aa53d1d plugins: include exhaustiveFlags in clone (#7195)
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: Nerixyz <nerixdev@outlook.de>
Parent-pr: 7192
2026-08-23 12:51:12 +00:00
pajladaandGitHub 036f2c154a messageelement: allow for exhaustive flag test (#7192)
this allows most elements to be configured with the "exhaustiveFlags"
flag which ensures that _all_ of the element's flags must be set in the
context for it to be laid out.
2026-08-23 10:55:10 +00:00
NerixyzandGitHub ea0e913af4 feat(plugins): Allow messages to be cloned (#6990)
After #6909, we can clone message elements. With this PR, we can clone
whole messages. The messages are non-frozen afterward, so plugins can
edit their properties and add/remove elements.

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-08-09 11:56:06 +00:00
NerixyzandGitHub 514ff0b42c feat(plugins): Add signal for context menus (#6961)
This PR adds the ability for plugins to add actions to context menus of
ChannelViews. They can add actions, submenus and separators.

I added the signal to the `WindowManager` to allow plugins to listen to
these events in any channel.

Here's an example plugin:

```lua
c2.windows:on_channelview_context_menu_requested(function(args)
	args.menu:add_action("Testing", function()
		args.channel:add_system_message("Clicked!")
	end)
	args.menu:insert_action(1, "First!", function()
		local msg = "text='" .. args.message.message_text .. "'"
		if args.message_element then
			msg = msg .. " element=" .. args.message_element.type
		end
		if args.split then
			msg = msg .. " split={channel=" .. args.split.channel:get_name() .. "}"
		end
		args.channel:add_system_message(msg)
	end)
	local sub = args.menu:add_menu("Submenu")
	sub:add_action("An action", function() end)
	sub:add_separator()
	sub:add_action("Second one", function() end)
end)
```

Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-08-09 10:32:03 +00:00
491cda1a58 feat(plugins/datetime): Add local/UTC conversion (#7122)
I mentioned in #7096 that it's helpful to convert between UTC and local
timezones. This PR adds methods for this.


Co-authored-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Parent-pr: https://github.com/Chatterino/chatterino2/pull/7096
2026-08-05 18:47:31 +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
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
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
NerixyzandGitHub b506d35eb2 feat: reverse search previously sent messages (#6622)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2026-06-28 00:16:43 +02:00
NerixyzandGitHub 47e4abf547 fix(plugins): explicitly use draft-07 schema (#7015)
Before, the schema would use the latest schema. 
We should specify that we only need the draft-07 schema like the
Chatterino themes. The newer drafts aren't well-supported. For example,
Visual Studio only recently added support for the 2019 and 2020 drafts
(not even sure if that's released yet).

Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-05-24 17:23:32 +02:00
NerixyzandGitHub 103de42bdb docs(plugins): Add more info on Windows, Splits, and SplitContainers (#6949)
From
https://github.com/Chatterino/chatterino2/pull/6687#discussion_r3068317999,
this adds more documentation on splits and so on. It also adds a utility
to dump the layout to GraphViz which can be handy.

Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
Parent-pr: 6687
2026-04-26 15:02:53 +00:00
0a10fa1c3e plugins: added cloning of message elements (#6909)
Co-authored-by: Nerixyz <nerixdev@outlook.de>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-04-25 11:40:02 +00:00
ArneandGitHub 805e982613 highlights: support displaying colored announcements (#6927)
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-04-25 10:14:24 +00:00
NerixyzandGitHub 490bfdac07 feat(plugins): add readonly window layout access (#6687)
This implements the second part for
https://github.com/Chatterino/chatterino2/issues/5978 - read-only access
to the window layout.

This allows plugins to query the open channels and how they're
presented.

Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-04-17 14:46:33 +00:00
NerixyzandGitHub a582c1efc3 plugins: add message signals (#6781)
This PR adds `Channel:on_message{_appended, _replaced, s_cleared}`. They
use the same functionality as the display name changed signal and
forward the respective signals in `Channel`.

**They're all synchronous.** This makes the implementation fairly
straight forward, but also a trivial stack overflow. Other than
Chatterino crashing, this shouldn't have any consequences, because the
OS will kill the process. Note that a plugin can already halt Chatterino
by executing an infinite loop, because plugins run in the GUI thread.

Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-04-05 11:02:17 +00:00
NerixyzandGitHub cbf7893a8e feat(plugins): Add images and image sets (#6792)
You can query them and on sets, you can change the images. Note that
sets are value types, so getting an image set in Lua will always refer
to a copy, not a reference.

Images are special, because plugin authors can specify a URL that
Chatterino will load if the image is shown. While the plugin can't see
the response, it still causes Chatterino to issue a request, so
_creating_ images will require the network permission.

Tested-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Tested-by: pajlada <rasmus.karlsson@pajlada.com>
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2026-04-04 23:37:40 +00:00
pajladaandGitHub cb2800fa06 chore: update release docs (#6786) 2026-01-31 09:41:44 +01:00
NerixyzandGitHub a869cd4bd1 feat(plugins): add display name change event to Channel (#6594)
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2026-01-29 18:25:39 +01:00
NerixyzandGitHub d21b3c6e38 feat(plugins): Added message read/update methods to the Channel API. (#6650)
This PR adds methods to read and update messages in a channel. Specifically, it adds:
 - message_snapshot
 - last_message
 - replace_message/replace_message_at
 - clear_messages
 - find_message_by_id
 - has_messages
 - count_messages


Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2026-01-20 23:46:39 +00:00
nerixandGitHub e2ba7dff03 feat(plugins): add debug.traceback (#6652)
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2025-12-28 12:03:43 +00:00
nerixandGitHub 74b4674c6b feat(plugins): allow message introspection (#6353)
This allows users to introspect messages (i.e. look at the elements they're made up of).

Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2025-12-07 14:52:59 +00:00
nerixandGitHub 0aff6fbe83 feat: show BTTV Pro badges (#6625)
Reviewed-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2025-12-07 14:15:58 +00:00
c67953d14f feat(plugins): minimal account API (#6554)
Co-authored-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
2025-12-05 14:56:51 +00:00
nerixandGitHub b63739e792 feat(plugins): add JSON parsing/serialization (#6420)
Reviewed-by: Mm2PL <mm2pl+gh@kotmisia.pl>
Reviewed-by: pajlada <rasmus.karlsson@pajlada.com>
2025-11-21 17:43:28 +01:00
pajladaandGitHub 6fe380c00b docs: create serialize/signals/settings tag on release (#6566) 2025-11-06 22:14:16 +00:00
Mm2PLandGitHub 6e443cd767 Plugin links pt 2: Link::InsertText (#6527) 2025-10-25 13:30:49 +00:00
nerixandGitHub 4be0e13883 refactor: move LuaLS meta to a subdirectory (#6530) 2025-10-08 13:56:01 +00:00
33f6383122 Add support for plugin links (#6386)
Co-authored-by: Nerixyz <nerixdev@outlook.de>
2025-10-02 18:56:51 +00:00
nerixandGitHub 3f05edc071 refactor: merge emote element flags (#6511) 2025-09-30 19:07:25 +02:00
pajladaandGitHub 82da4d8a49 doc: fix release docs (#6498) 2025-09-27 12:03:13 +00:00
pajladaandGitHub 4927ad8bb7 Update release documentation (#6472) 2025-09-21 11:38:21 +02:00
nerixandGitHub 60c3e1432a docs(plugins): add documentation for WebSockets (#6432) 2025-09-13 10:00:15 +00:00
pajladaandGitHub 1afac3382e feat: add setting to pulse split input on self message received (#6380) 2025-08-17 23:24:39 +00:00
nerixandGitHub a4478748f7 feat(plugins): add basic message construction (#5754) 2025-07-31 15:36:39 +02:00
nerixandGitHub 91c2c1021c feat(WebSocket): add open event (#6315) 2025-07-05 12:36:22 +00:00
2547technoandGitHub deed1061b5 fix(plugins): TSTL static method generation (#6223) 2025-05-24 12:04:54 +00:00
ynot01andGitHub d46112380d Fix bad enum in plugin documentation (#6225) 2025-05-22 16:41:43 +00:00
2547technoandGitHub d39c1a1459 fix(plugins): TSTL HTTPRequest.create generation (#6190) 2025-05-10 11:47:03 +02:00
nerixandGitHub ab66be21b3 feat(plugins): add c2.WebSocket (#6076) 2025-04-07 17:38:10 +00:00
pajladaandGitHub 3f3a31db4d Release v2.5.3 (#6108) 2025-03-23 16:09:38 +01:00
Mm2PLandGitHub a2ad19df37 Update chatterino.d.ts to match plugin-meta.lua (#5792) 2025-01-19 14:09:45 +00:00
pajladaandGitHub f152c885e9 Update release docs (#5809) 2025-01-11 12:14:55 +01:00
nerixandGitHub ecfb35c9b7 fix(luals-meta): Use opaque enum values and correct HTTP types (#5682) 2024-11-02 11:22:17 +00:00
352a4ec132 Move plugins to Sol (#5622)
Co-authored-by: Nerixyz <nerixdev@outlook.de>
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
2024-10-20 11:57:05 +02:00
nerixandGitHub afa8067a20 Add transparent overlay window (#4746) 2024-10-06 12:54:24 +02:00
2547technoandGitHub 93fbcbbe5f fix plugin http types & docs (#5494) 2024-07-06 00:02:21 +00:00
2547technoandGitHub 0442b7a81b Add Network to plugin info schema (#5492) 2024-07-05 23:25:39 +00:00
Mm2PLandGitHub c980162656 Introduce HTTP API for plugins (#5383) 2024-06-22 10:04:30 +00:00
ec6b1ef24d fix(luals-meta): generate globals in c2 and echo @lua commands (#5385)
Co-authored-by: Mm2PL <miau@mail.kotmisia.pl>
2024-05-22 15:23:33 +02:00