Releases: TehGM/Wolfringo
v2.2.0 - Support Link and Image Preview + Fix embed deserialization
Release info
Recently a version 2.1.5 added support for group preview embeds. Unfortunately that version also introduced a severe bug that caused deserialization of any message containing an embed to fail. Version 2.2.0 finally fixes this problem, and version 2.1.5 will be marked as deprecated.
Additionally, support was added for link and image preview embeds. These embeds will automatically be enabled for you, unless you opt out using ChatMessageSendingOptions. Of course, you can also add new or override existing embed implementations using a new deserializer.
This release also contains other minor improvements, such as resolving a couple of warnings, or improving performance by removing a few unnecessary locks.
Changes
- Added:
IChatEmbedDeserializerto allow deserialization of chat embeds. - Added: support for Link and Image preview embeds through
LinkPreviewChatEmbedandImagePreviewChatEmbedrespectively. - Added:
ChatMessageSendingOptionsprovide 2 predefined statics:DisableEmbedsandDisableLinkDetection. - Change: Chat Messages and retrieved chat histories will now have Embeds property properly populated.
- Change:
UrlMetadataMessagenow uses headers with version 2. - Change:
ChatMessageSerializernow has a constructor that takes aIChatEmbedDeserializer. - Change:
ChatHistoryResponseSerializernow has a constructor that takes aIChatEmbedDeserializer. - Change: Removed unnecessary locks in CommandsSystem, MessageSerializerProvider and ResponseSerializerProvider.
- Fix: an error when a message containing an embed is received.
- Fix: warnings logged due to link metadata message not having a serializer registered with the provider.
Obsoletions:
BuildDefaultServiceProvidermethod inWolfClientis now obsolete - the constructors that use this method have been obsolete since v2.0.0. Both the constructors and the method will be removed in a future release.BuildDefaultServiceProvidermethod inCommandsSystemis now obsolete - the constructors that use this method have been obsolete since v2.0.0. Both the constructors and the method will be removed in a future release.
Package URL
v2.1.5 - Group link preview support and other minor tweaks
Release info
Caution
This release has been deprecated due to a bug that caused errors during deserialization of any message containing an embed. Please use version 2.2.0 or newer instead.
This release focuses on minor improvements enabled by later .NET framework, as well as enables sending of group previews and gives greater control over how group and website links are handled.
Changes
- Added:
ChatMessageSendingOptionsclass used in CommandContext and Sender utility to configure how message gets pre-processed. - Added: Support for sending embeds in chat messages - currently
GroupPreviewChatEmbed. Note: deserializing embeds is unsupported in this release. - Added:
SlowModeRateproperty for chat responses. - Change: ID field in chat message classes is no longer obsolete as WOLF seems to be using them again.
- Change: Improve thread safety when handling IDs in underlying socket client.
- Change:
System.Threading.Lockwill be used instead ofSystem.Objector other types for locking when running on .NET 9.0 or greater. - Fix: Structured logs now contain content of binary messages when logging exceptions.
Package URL
v2.1.4 - Fix group member updates
Release info
Over past 3 years, WOLF protocol changed the group member update events to be way more convoluted and completely breaking Wolfringo's caching of group members. This patch prioritizes fixing this, so group member updates such as joins, leaves, privileges (admin & mod), silences and owner changes are getting properly captured and cached again.
Changes
- Added:
GroupMemberPrivilegedAddEvent,GroupMemberPrivilegedUpdateEventandGroupMemberPrivilegedDeleteEvent. - Added:
IGroupMemberPrivilegedEventinterface which is implemented by the above events to streamline handling by cache service. - Added:
Reputationproperty forWolfGroup. - Change: Default caching implementation has been updated to handle the events that WOLF servers now send.
- Fix: Stack overflow exception when parsing certain group chat events, such as member leaving.
Obsoletions:
GroupMemberUpdateEventis now obsolete - seems WOLF protocol no longer uses this event type, and it'll be removed in a later release of Wolfringo.
Package URL
v2.1.3 - hotfix for link detection & caret return
Release info
A second small hotfix for link detection added in v2.1.1.
Changes
- Fix: http/https link detection will now end link on caret return as well as new line, to avoid issues with some new line formatting.
Package URL
v2.1.2 - hotfix for link detection & new lines
Release info
A small hotfix for link detection added in v2.1.1
Changes
- Fix: http/https link detection will now end link on new line in addition to space.
Package URL
v2.1.1 - http and https links support
Release info
A quick follow up update to v2.1.0 - enabling Sender and CommandContext to detect http/https links.
Changes
- Added: Sender utility and CommandContext extension methods will now automatically detect http/https links and generate metadata required for the link to be clickable.
Obsoletions:
AvatarUtilitiesis now obsolete - the old, deterministic way to get avatar links no longer works, and a redesign of the class is required. It's planned for a future release.
Package URL
v2.1.0 - Fixes after 3 years
Release info
An upgrade that focuses on fixing some issues caused by WOLF protocol changes over past 3 years.
See Upgrade Guide for any potential breaking changes.
Changes
- Added: Add
GroupMemberRegularListMessageandGroupMemberPrivilegedListMessage. - Added: support for ChatMessage metadata for links (normal URLs and group links).
- Added:
GroupLinkDetectionHelperinternal utility class which helps with generating group links from text. - Added:
[HelpOrder]attribute to allow more customization of help message. - Change: Separated
PrefixRequirementfromPrefixAttributeto combat the way CLR handles nullables in attribute constructors. - Fix: prefix checks for empty prefixes.
- Fix: updating group member list for groups with more than 100 members in
[RequireGroupPrivilege]CommandContext and Sender Utility extensions. - Fix: fix Sender Utility method for joining a group by name - group will now be requested separately to get the ID.
- Fix: serialization errors when WOLF server responds with an error response.
- Fix: some logging bugs and issues.
- Fix: some CancellationToken race conditions.
Obsoletions:
GroupMembersListMessageis now obsolete - using it will fail retrieving more than 100 group members.GroupNameproperty and related constructor inGroupJoinMessageis now obsolete, as WOLF protocol changes made it not work.
Package URL
v2.0.1 - Fix old logging bug
Release info
This small update fixes an old bug that caused silenced messages to be logged as error, along with other really small tweaks.
Changes
- Change: CommandsListBuilder now accepts
ICommandsServiceinstead ofCommandsServicein constructor. - Fix: Logging of silenced sending exception in commands now checks for a proper error code.
Package URL
v2.0.0 - Client and CommandService builder, help command, cache separation, and much more!
Release info
Wolfringo v2.0 brings some significant changes - streamlined client and commands initialization, separation of caching and client logic, addition of help command support, and many more.
See Upgrade Guide for help with migrating and high level breakdown of new features!
As a bonus, official documentation page now has a set of guides on Customizing Wolfringo, which should make it much easier for you to tweak Wolfringo's internals!
Changes
- Added:
WolfClientBuilderthat makes creation of a WolfClient much easier! See Getting Started to check out the new flow! - Added:
CommandsServiceBuilderthat makes creation of a CommandsService much easier! See Commands System to check out the new flow! - Added: Easy help command support. See Help Command to learn more!
- Added:
{{RecipientID}}and{{RecipientName}}placeholders are now supported in command argument error messages. - Added:
[ArgumentText]attribute for command method arguments. - Added: Support for checking URL metadata.
- Added: Support for requesting group achievements.
- Added: Both standard and regex commands now support a timeout.
- Added: Regex commands now support a Regex engine timeout to prevent potential attacks.
- Added: Extension method for
ChatMessageclass:GetMessageWithoutPrefix. - Added:
CommandContextOptionsclass which can now be injected into command method. - Added:
CommandRequirementsResultclass for use by command requirements. - Added:
IWolfTokenProviderinterface, along withConstantWolfTokenProvider,RandomizedWolfTokenProviderandHostedWolfTokenProviderclasses, which are used by WolfClient. This increases flexibility of resolving token. They replaceWolfTokenProvider. - Added: A new
IWolfClientCacheinterface which allows for cache customization via Dependency Injection. - Added: A new
WolfClientCacheclass with default caching implementation. This replaces oldWolfEntityCacheContainer, which is now removed. - Added: A new
WolfCacheOptionsclass for configuring built-in caching. - Change: Caching related properties have been removed from
WolfClient. - Change:
IWolfEntityCache<TEntity>has been renamed toIWolfCachedEntityCollection<TEntity>. - Change:
WolfEntityCacheExtensionshas been renamed toWolfCachedEntityCollectionExtensions. - Change: Caching related types (including
IWolfClientCacheAccessor) were moved fromTehGM.Wolfringo.Utilitiesto newTehGM.Wolfringo.Cachingnamespace. - Change:
DefaultServerURL,BetaServerURLandDefaultDeviceconstants have been moved fromWolfClientto a newWolfClientOptionsclass. - Change:
ServerURL,DeviceandIgnoreOwnChatMessagesproperties ofWolfClienthave been moved to a newWolfClientOptionsclass. - Change: It is now possible to provide a custom
ISocketClienttoWolfClient. - Change: WolfClient's
OnMessageSentInternalAsyncandOnMessageReceivedInternalAsyncwere renamed toOnMessageSentAsyncandOnMessageReceivedAsyncrespectively. Since caching logic has been moved toIWolfClientCache, they also are now empty, so overriding them is completely safe. - Change:
UserAchievementListResponsehas been replaced byEntityAchievementListResponse, which supports both user and group achievements. - Change: Sender utility now returns achievements with nullable timestamps. This is due to how WOLF server handles them.
- Change: Command requirements'
CheckAsyncmethod now returnsICommandResultinstead of a boolean. SupportingAbortOnFailandSendMessageWhenSkippingproperties andResultFromBooleanmethod were added toCommandRequirementAttributeclass. - Change:
StandardCommandInstanceandRegexCommandInstancenow inherit from a sharedCommandInstanceBaseclass. - Change:
CommandsOptionsnow implement a newICommandOptionsinterface. - Change: Some
WolfClientconstructors were removed or marked as obsolete. Favour usingWolfClientBuilder. - Change: Some
CommandsServiceconstructors were removed or marked as obsolete. Favour usingCommandsServiceBuilder. - Change: Types implementing
ICommandResultare now classes instead of structs. - Change: IsSuccess property of
ICommandResultis now obsolete. Favour usingStatusproperty. - Change: Exception property has been removed from most of classes implementing
ICommandResult. - Change: ErrorMessage property of
ICommandRequirementhas been removed. It is still present inCommandRequirementAttribute, so existing error messages should still work just fine. - Change: ICommandsService now has
Commandsproperty, containing all instance descriptors currently active within the service. - Change:
SimpleServiceProviderandCombinedServiceProviderclasses were removed, as they're no longer needed internally. - Change:
CommandInstanceDescriptorExtensionsclass has been moved fromTehGM.Wolfringo.Commands.InitializationtoTehGM.Wolfringo.Commandsnamespace. - Change: Command instance descriptor extension methods now use new internal attribute cache class
DescriptorAttributeCache. This cache uses lazy reflection for performance. - Change: Priority property of
CommandInstanceDescriptorhas been removed. Favour using extension methods. - Change: JSON Converters have been modified to support JsonPath.
- Change: "command" argument has been renamed to "eventName" in signatures of built-in message and response serializers.
- Change: Constructor of
HostedWolfClienthas been simplified. - Change:
IHostedWolfClientServiceBuildernow has a newConfigureCachingmethod. - Fix: Requesting specific achievements has been optimized, which should result in a slightly reduced network usage.
- Fix: Dependency Injection mechanisms for Commands now correctly differentiate between argument with default value and optional argument.
- Fix: Some Sender methods were not configuring await properly. This is now fixed.
Package URL
v1.1.2 - Fix to crashes when user icon is null
Release info
This update fixes a rare crash when user's icon is null for some reason.
Changes
- Change:
IconIDwithAvatarUtilityis now optional. - Fix: Made WolfUser's and WolfGroup's
Iconfields nullable.