Skip to content

v3.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Jun 01:22
· 20 commits to master since this release

Release v3.0.0

Major breaking rewrite! See MIGRATION.md for migration steps.

Changes since v2.6.10

  • Fix stray whitespace in RLVPermissionsService (cinder)
  • Another swing at Bug #165 OpenSim client baking upload (cinder)
  • Fix a load of warnings (cinder)
  • Add handler for GenericStreamingMessage (cinder)
  • Fix COF race condition upon teleport and quiet some verbose logging (cinder)
  • Quiet some verbose logging in Caps (cinder)
  • OnSimConnected now subscribes to sim.Caps.CapabilitiesReceived instead of calling SetModeOnSimAsync directly. The actual send is deferred to OnCapabilitiesReceived, which fires after caps are fully negotiated. (cinder)
  • Warning CS8602 cleanup (cinder)
  • Clean up redundant using across the codebase (cinder)
  • Nullability fixes (cinder)
  • Replace LockingDictionary with ConcurrentDictionary across the board (cinder)
  • Implement DI support for IGridClient (cinder)
  • Fix a few more renames that I missed and rename RLV and Voice consistently. (cinder)
  • Consistent API naming corrections (cinder)
  • Account Benefits correctness fixes (cinder)
  • Add high res texture upload support (cinder)
  • GroupManager.RequestBannedAgents — removed EventHandler? callback parameter and all three if (callback != null) invocation blocks. Also dropped the unused gid local. Callers use the BannedAgents event as usual. GroupManager.RequestBanAction — removed EventHandler? callback parameter and both if (callback != null) blocks. Also cleaned up the unused response variable from the PostAsync destructuring. AnimationsChangedEventArgs.Animations — changed property type from LockingDictionary<UUID, int> to IReadOnlyDictionary<UUID, int>. Required adding IReadOnlyDictionary<TKey, TValue> to LockingDictionary's interface list (net481 doesn't chain IDictionary → IReadOnlyDictionary), with two explicit implementations for Keys/Values to resolve the ICollection vs IEnumerable return-type conflict. (cinder)
  • Add MIGRATION.md and update other resources (cinder)
  • Remove GestureManager stub, introduce LogoutAsync() (cinder)
  • Refactor Crossings and teleport to remove locking (cinder)
  • More cleaning related to prior commits (cinder)
  • GroupName2KeyCache (GroupManager): - Removed the public LockingDictionary<UUID, string> field and its initialization - RequestGroupName(UUID) now always sends a packet (no cache short-circuit) - RequestGroupNames(List) now always sends all IDs (no cache-hit early-fire) - Removed cache writes in AvatarGroupsHandler and UUIDGroupNameReplyHandler - Removed the cache check in AgentManager.IsGroupMessage — it now correctly falls through to the GroupChatSessions check, which already covers joined group chats (cinder)
  • ChatterBoxAcceptInvite().Wait() fix (AgentManager.PacketHandlers.cs): - Changed ChatterBoxInvitationEventHandler from private void to private async void - Replaced .Wait() with await ... .ConfigureAwait(false) — eliminates the deadlock risk (cinder)
  • Convert remaining public callback-delegate APIs to async Task returns (InventoryManager, AgentManager, AppearanceManager, EstateTools, GestureManager, OarFile, TestClient commands). (cinder)
  • Settings redesign/reshape (cinder)
  • RIP MeshMerizer, MeshFoundry is the supported lib (cinder)
  • CancellationToken propagation audit: (cinder)
  • Simple async Task + callback → async Task conversions: - AvatarManager.GetDisplayNames → GetDisplayNamesAsync returning Task<(bool, AgentDisplayName[]?, UUID[]?)> - AvatarManager.RequestAgentProfile → RequestAgentProfileAsync returning Task<(bool, AgentProfileMessage?)>; CloneProfileCommand.cs TCS pattern replaced with direct await - AgentManager.GetAttachmentResources → GetAttachmentResourcesAsync returning Task<(bool, AttachmentResourcesMessage?)> - AgentManager.SetAgentAccessAsync — dropped AgentAccessCallback? parameter, returns Task; InitialOutfitHandler.cs caller updated - ParcelManager.GetParcelResources → GetParcelResourcesAsync returning Task<(bool, LandResourcesInfo)> - ObjectManager.RequestObjectMediaAsync — dropped ObjectMediaCallback?, returns Task<(bool, string, MediaEntry[]?)>; bare { block cleaned up in the process (cinder)
  • sync-over-async removal: (cinder)
  • Inventory rewrite: (cinder)
  • Prepping for 3.0: (cinder)

Packages

  • LibreMetaverse.3.0.0.nupkg
  • LibreMetaverse.LslTools.3.0.0.nupkg
  • LibreMetaverse.PacketDump.3.0.0.nupkg
  • LibreMetaverse.PrimMesher.3.0.0.nupkg
  • LibreMetaverse.Rendering.MeshFoundry.3.0.0.nupkg
  • LibreMetaverse.Rendering.Simple.3.0.0.nupkg
  • LibreMetaverse.RLV.3.0.0.nupkg
  • LibreMetaverse.StructuredData.3.0.0.nupkg
  • LibreMetaverse.Types.3.0.0.nupkg
  • LibreMetaverse.Utilities.3.0.0.nupkg
  • LibreMetaverse.Voice.Vivox.3.0.0.nupkg
  • LibreMetaverse.Voice.WebRTC.3.0.0.nupkg