All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added joinChannelOnStart property
- Added TextMeshPro to ExampleProject
- Improved alert descriptions
- Improved example scripts
- Upgraded ExampleProject to Unity 2022.3.41f1 (LTS)
- Added JoinChannel and LeaveChannel methods
- Fixed decoded chars array being too small issue
- Switched to using StringBuilder when decoding IRC messages
- Upgraded ExampleProject to Unity 2021.3.21f1 (LTS)
-
Native Twitch chat-like name color behavior
- Users that have not set their name color will be assigned a random color (session based)
- Chatter.GetNameColor() now normalizes the color if needed, meaning that if the color is either too bright or too dark, it will be adjusted to be more readable
-
Color normalization test scene (ExampleProject)
- Minor changes to ExampleProject
- Removed maxDataPerFrame from inspector
- Support for anonymous login
- Support for limiting how many messages can be processed each frame
- Remake example project
- Extensions class
- Utils class
- Chatter.emotes is now an array instead of a list
- Updated package.json
- Reorganized folder structure
- Restructured the code in various ways (pretty much no functional changes)
- Replaced asmdef file
- Change namespace to Lexone.UnityTwitchChat
- Fixed old connection not being terminated when a new connection is made
- Renamed some files
- Removed priority rate limit check (for now)
- Removed a bunch of unused files
- TwitchIRC.singleton, which when true enables DontDestroyOnLoad and destroys duplicate instances
- TwitchIRC.IsConnected, which is true only while there is a stable connection to Twitch
- TwitchIRC.debugThreads, which allows debug warnings for thread termination to be turned on/off
- Rate limiting
- RateLimit class
- Client sets rate limit based on user's channel permissions
- Client delays messages that exceeed the rate limit
- Client sends a warning when a message is queued that will exceed the rate limits
- IRCTags.ContainsEmote and IRCTags.HasBadge (previously exclusive to the Chatter object)
- Unity Tooltips for all inspector fields of the TwitchIRC class
- Chatter.MessageContainsEmote -> Chatter.ContainsEmote
- Client now uses a standard backoff interval (0s, 1s, 2s, 4s, 8s, ...) when reattempting a failed connection
- Fixed issue where TwitchIRC did not end a failed connection
- Fixed issue where TwitchIRC did not properly handle no internet connection
- Client now checks that the connection still exists in the receive thread instead of a third thread
- On disconnect, pending status updates and chat messages are now propogated before a connection is terminated
- Reduced default write interval to 100ms for faster responsiveness
- Settled on a versioning method for pre-release versions
- TwitchIRC.status, which overcomplicated checking the connection for basic cases (for more complex connection handling, listen to the ConnectionAlertEvent)
- TwitchIRC catches a failed authentication attempt
- TwitchIRC checks its connection to the IRC socket on a third thread.
- TwitchIRC.SendPing method (ContextMenu action) for debugging connection
- TwitchIRC.BlockingDisconnect which blocks the main thread while any remainig send/receive threads close (important for closing connecting during OnDisable and OnDestroy)
- TwitchIRC.taskQueue which replaces the functionality of the MainThread class
- XML descriptions for almost all class members
- API Changes
- TwitchIRC.IRC_Connect -> TwitchIRC.Connect
- TwitchIRC.IRC_Disconnect -> TwitchIRC.Disconnect
- TwitchIRC.newChatMessageEvent -> TwitchIRC.ChatMessageEvent
- TwitchIRC.statusEvent -> TwitchIRC.StatusUpdateEvent
- TwitchIRC class
- Each connection is encapsulated in an internal TwitchConnection object
- Login messages are sent using the output thread instead of the main thread
- When disconnecting, waits for threads to terminate before disconnect is completed
- When connecting, disconnects any existing connection before proceding with a new connection
- SendCommand no longer sends any messages instantly but uses priorityOutputQueue to send important messages first
- IRCInputProc decodes buffered data from the socket instead of locking on StreamReader.ReadLine
- Send/receive threads now sleep for a configurable number of milliseconds before reattempting sends/receives to reduce CPU usage
- Uses thread safe classes for connected, outputQueue, priorityOutputQueue, and taskQueue
- Versioning in CHANGELOG to reflect that the API was not stable
- MainThread class and prefab (functionality has been intergrated into TwitchIRC class)
- IRCPrivMsg class and IRCUserstate class which were mostly unused
- CHANGELOG.md
- package.json
- Lexonegit.UnityTwitchChat.asmdef
- All scripts now belong to the Lexonegit.UnityTwitchChat namespace
- Sample scene (temporarily)
- Last release from lexonegit