Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
7e23884
feat(plugins): add basic message construction
Nerixyz Dec 5, 2024
9a02517
feat: add types
Nerixyz Dec 8, 2024
c69e9a9
Merge remote-tracking branch 'upstream/master' into feat/basic-plugin…
Nerixyz Dec 8, 2024
5dee992
fix: tests
Nerixyz Dec 8, 2024
311ac91
why does ubuntu 22.04 compare case insensitively?
Nerixyz Dec 8, 2024
41f44eb
changelog
Nerixyz Dec 8, 2024
f223c51
silly
Nerixyz Dec 8, 2024
80e8aad
Merge remote-tracking branch 'upstream/master' into feat/basic-plugin…
Nerixyz Mar 12, 2025
ffd9f70
chore: update to changes in message element
Nerixyz Mar 12, 2025
c16cecf
changelog
Nerixyz Mar 12, 2025
ffc2e61
Merge remote-tracking branch 'upstream/master' into feat/basic-plugin…
Nerixyz Apr 16, 2025
c702f8f
Merge remote-tracking branch 'upstream/master' into feat/basic-plugin…
Nerixyz Apr 16, 2025
f06fa25
Merge remote-tracking branch 'upstream/master' into feat/basic-plugin…
Nerixyz May 10, 2025
01aced2
fix: no combined values
Nerixyz May 10, 2025
11a5fb5
fix: tidy
Nerixyz May 10, 2025
6a75cbd
Merge remote-tracking branch 'upstream/master' into feat/basic-plugin…
Nerixyz Jun 14, 2025
10550c1
Merge remote-tracking branch 'upstream/master' into feat/basic-plugin…
Nerixyz Jul 5, 2025
44a128f
Merge remote-tracking branch 'upstream/master' into feat/basic-plugin…
Nerixyz Jul 20, 2025
908b822
feat: add optional improved text wrapping (#6265)
Nerixyz Jul 20, 2025
0025fa9
fix: link is also themeable
Nerixyz Jul 25, 2025
2e8c223
fix: allow tooltips for all elements
Nerixyz Jul 25, 2025
f6aa00f
docs: expand on `lua-fragment`
Nerixyz Jul 25, 2025
43b64d7
fix: use a helper to access required fields
Nerixyz Jul 25, 2025
6a280cf
docs: add TS types
Nerixyz Jul 25, 2025
7347175
docs: add prose docs
Nerixyz Jul 25, 2025
204b187
Merge remote-tracking branch 'upstream/master' into feat/basic-plugin…
Nerixyz Jul 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
- Minor: Added WebSocket API for plugins. (#6076, #6186, #6314, #6315)
- Minor: Allow for themes to set transparent values for window background on Linux. (#6137)
- Minor: Popup overlay now only draws an outline when being interacted with. (#6140)
- Minor: Added basic message API to plugins. (#5754)
- Minor: Made filters searchable in the Settings dialog search bar. (#5890)
- Minor: Updated emojis to Unicode 16.0. (#6155)
- Minor: Allow disabling of double-click tab renaming through setting. (#6163, #6184)
Expand Down
208 changes: 208 additions & 0 deletions docs/chatterino.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ declare namespace c2 {

add_system_message(message: string): void;

add_message(
message: Message,
context?: MessageContext,
override_flags?: MessageFlag | null
): void;

is_twitch_channel(): boolean;

get_room_modes(): RoomModes;
Expand Down Expand Up @@ -152,4 +158,206 @@ declare namespace c2 {
) => WebSocket;
}
var WebSocket: WebSocketConstructor;

interface Message {
__dummy: void; // avoid being an empty interface
}
interface MessageConstructor {
new: (this: void, init: MessageInit) => Message;
}
var Message: MessageConstructor;

interface MessageInit {
flags?: MessageFlag;
id?: string;
parse_time?: number;
search_text?: string;
message_text?: string;
login_name?: string;
display_name?: string;
localized_name?: string;
user_id?: string;
channel_name?: string;
username_color?: string;
server_received_time?: number;
highlight_color?: string | null;
elements?: MessageElementInit[];
}

interface MessageElementInitBase {
tooltip?: string;
trailing_space?: boolean;
}

type MessageColor = "text" | "link" | "system" | string;

type MessageElementInit =
| TextElementInit
| SingleLineTextElementInit
| MentionElementInit
| TimestampElementInit
| TwitchModerationElementInit
| LinebreakElementInit
| ReplyCurveElementInit;

interface TextElementInit extends MessageElementInitBase {
type: "text";
text: string;
flags?: MessageElementFlag;
color?: MessageColor;
style?: FontStyle;
}

interface SingleLineTextElementInit extends MessageElementInitBase {
type: "single-line-text";
text: string;
flags?: MessageElementFlag;
color?: MessageColor;
style?: FontStyle;
}

interface MentionElementInit extends MessageElementInitBase {
type: "mention";
display_name: string;
login_name: string;
fallback_color: MessageColor;
user_color: MessageColor;
}

interface TimestampElementInit extends MessageElementInitBase {
type: "timestamp";
time?: number;
}

interface TwitchModerationElementInit extends MessageElementInitBase {
type: "twitch-moderation";
}

interface LinebreakElementInit extends MessageElementInitBase {
type: "linebreak";
flags?: MessageElementFlag;
}

interface ReplyCurveElementInit extends MessageElementInitBase {
type: "reply-curve";
}

enum MessageFlag {
None = 0,
System = 0,
Timeout = 0,
Highlighted = 0,
DoNotTriggerNotification = 0,
Centered = 0,
Disabled = 0,
DisableCompactEmotes = 0,
Collapsed = 0,
ConnectedMessage = 0,
DisconnectedMessage = 0,
Untimeout = 0,
PubSub = 0,
Subscription = 0,
DoNotLog = 0,
AutoMod = 0,
RecentMessage = 0,
Whisper = 0,
HighlightedWhisper = 0,
Debug = 0,
Similar = 0,
RedeemedHighlight = 0,
RedeemedChannelPointReward = 0,
ShowInMentions = 0,
FirstMessage = 0,
ReplyMessage = 0,
ElevatedMessage = 0,
SubscribedThread = 0,
CheerMessage = 0,
LiveUpdatesAdd = 0,
LiveUpdatesRemove = 0,
LiveUpdatesUpdate = 0,
AutoModOffendingMessageHeader = 0,
AutoModOffendingMessage = 0,
LowTrustUsers = 0,
RestrictedMessage = 0,
MonitoredMessage = 0,
Action = 0,
SharedMessage = 0,
AutoModBlockedTerm = 0,
ClearChat = 0,
EventSub = 0,
ModerationAction = 0,
InvalidReplyTarget = 0,
}

enum MessageElementFlag {
None = 0,
Misc = 0,
Text = 0,
Username = 0,
Timestamp = 0,
TwitchEmoteImage = 0,
TwitchEmoteText = 0,
TwitchEmote = 0,
BttvEmoteImage = 0,
BttvEmoteText = 0,
BttvEmote = 0,
ChannelPointReward = 0,
ChannelPointRewardImage = 0,
FfzEmoteImage = 0,
FfzEmoteText = 0,
FfzEmote = 0,
SevenTVEmoteImage = 0,
SevenTVEmoteText = 0,
SevenTVEmote = 0,
EmoteImages = 0,
EmoteText = 0,
BitsStatic = 0,
BitsAnimated = 0,
BadgeSharedChannel = 0,
BadgeGlobalAuthority = 0,
BadgePredictions = 0,
BadgeChannelAuthority = 0,
BadgeSubscription = 0,
BadgeVanity = 0,
BadgeChatterino = 0,
BadgeSevenTV = 0,
BadgeFfz = 0,
Badges = 0,
ChannelName = 0,
BitsAmount = 0,
ModeratorTools = 0,
EmojiImage = 0,
EmojiText = 0,
EmojiAll = 0,
AlwaysShow = 0,
Collapsed = 0,
Mention = 0,
LowercaseLinks = 0,
RepliedMessage = 0,
ReplyButton = 0,
Default = 0,
}

enum FontStyle {
Tiny,
ChatSmall,
ChatMediumSmall,
ChatMedium,
ChatMediumBold,
ChatMediumItalic,
ChatLarge,
ChatVeryLarge,
TimestampMedium,
UiMedium,
UiMediumBold,
UiTabs,
EndType,
ChatStart,
ChatEnd,
}

enum MessageContext {
Original,
Repost,
}
}
Loading
Loading