Commit graph

281 commits

Author SHA1 Message Date
9788254f6f Fix inventory link deduplication with AssetType.Link 2026-05-08 19:50:30 -06:00
a37bc42a0e Deduplicate inventory items in folder view 2026-05-08 19:47:11 -06:00
0223fdffc5 Implement millisecond timestamps for chat history 2026-05-08 19:29:12 -06:00
40abda5eee Synchronize bot chat tags and fix double-talk 2026-05-08 19:19:41 -06:00
801c740549 Queued ReplaceOutfit with 2s delay 2026-05-08 18:10:56 -06:00
681d6b915b Use high-level clean swap for ReplaceOutfit 2026-05-08 18:07:21 -06:00
27cf89c736 Fix type casting in ReplaceOutfit 2026-05-08 18:00:15 -06:00
5d679b3c7c Fix ReplaceOutfit toggling by explicitly detaching current items first 2026-05-08 17:57:48 -06:00
fb63cd6bd8 Fix Attach and Detach synchronization with CurrentOutfitFolder 2026-05-08 17:51:42 -06:00
3d7e020353 Add GetWornItems, AddOutfit, and RemoveOutfit commands for dashboard integration 2026-05-08 17:26:30 -06:00
414ac7751b Enhance dashboard login with UUID return and enable bot self-chat in history with {BOT} tagging 2026-05-08 14:37:09 -06:00
5627b66229 feat: enhance bot commands, group handling, friend management, and avatar pick retrieval 2026-05-08 01:29:57 -06:00
adf4e30cd2 Dashboard & Group Management Integration
- [LibreMetaverse] Enhanced GroupInvitationEventArgs with GroupID.
- [InteractionService] Added persistence for group invites when auto-accept is disabled.
- [DataStoreService] Implemented pending group invitation tracking and management.
- [DataStoreService] Enhanced local chat recording with Shout/Whisper/OwnerSay type tags.
- [BotClientService] Improved logout stability with explicit logout call and delay.
- [RLVService] Exposed active RLV rules list for external monitoring.
- [Commands] Added GroupInviteRespond, GetPendingGroupInvites, and RLVStatus API commands.
- [Commands] Overhauled NearmeWithDetails to support multi-simulator tracking and better position resolution for seated avatars.
2026-05-05 16:01:58 -06:00
176b9d059f Fix #120: Resolve global position of seated avatars for accurate Nearme radar tracking 2026-04-27 17:07:27 -06:00
Madpeter
9c5274d656 Shorten avatar check interval, add guest log
Reduce the avatar tracking throttle from 30s to 10s to make avatar updates more responsive (update conditional and comment). Also add an informational log when the guest list becomes ready to track. No other functional changes.
2026-02-05 22:18:50 +00:00
Madpeter
27d5e29487 Refactor KnownAvatar into helper methods
Extract avatar lookup logic from KnownAvatar into three methods: SyncAvatarsHashMap (sync local avatar map), KnownAvatarUUID (check by UUID via UUIDNameReply), and KnownAvatarName (check by display name via AvatarPickerReply). Reworked KnownAvatar to call SyncAvatarsHashMap and then validate using the new helpers, returning false for UUID.Zero and avoiding the previous always-true outcome. Preserves event subscription/teardown and timeout waits while clarifying visibility (protected helpers, public KnownAvatar) and cleaning up callback logic.
2026-02-05 22:18:20 +00:00
Madpeter
d77a7f0f62 Use DateTime format for clock stamp
Replace verbose StringBuilder-based timestamp construction with a single DateTime format string. The method now returns the clock stamp using the format "[{DateTime.Now:dd-MM-yy HH:mm}] ", simplifying the code and improving readability while preserving the original output layout.

for issue 121
2026-02-05 22:01:42 +00:00
Madpeter
4133496775 Refactor message handling to use SignedCommand
Updated IM and group message handling to use SignedCommand and CommandsService.RunCommand instead of direct client calls. Also updated data classes to use properties with getters and setters, and fixed casing inconsistencies in JsonCommandFormat.
2025-11-16 12:00:45 +00:00
Madpeter
80f1ce7af0 Remove redundant chat command execution
Eliminated the call to GetClient().Self.Chat for each command in RLVService, as it was only being used for testing
2025-11-03 20:51:15 +00:00
Madpeter
bbea1b7473 Refactor GetAllItems to use folder UUID
Changed GetAllItems to accept a folder UUID instead of InventoryNode, updating all relevant calls. Improved inventory item retrieval logic for outfit management and fixed recursive traversal to use folder UUIDs.
2025-11-03 20:45:29 +00:00
Madpeter
4e7af8d903 Remove unused usings from WikiService.cs
Cleaned up WikiService.cs by deleting unnecessary using directives to improve code readability and maintainability.
2025-10-18 18:30:55 +01:00
Madpeter
172a0132a2 Add config descriptor and JSON config helpers
Introduces ConfigDescriptor to describe config settings with name, type, and value. Adds DescribeConfig method to Config for structured config introspection. WikiService now generates JSON files for each config class, aiding documentation and tooling.
2025-10-18 18:29:59 +01:00
Madpeter
d46f0457ef correct issue with some commands
god dam json converter has issues converting UUIDs
2025-10-15 20:17:33 +01:00
Madpeter
be4e03d8d7 issue 116
System.Text.Json defaults suck and we want it to work like Newtonsoft.Json
2025-10-10 11:25:44 +01:00
Madpeter
008cb44e24 Use UnsafeRelaxed JSON serialization globally
Replaces all usages of JsonSerializer.Serialize with the UnsafeRelaxed option via a new JsonOptions.UnsafeRelaxed static property. This ensures consistent relaxed escaping for all JSON output, improving compatibility with consumers expecting unescaped JSON. Refactors affected command, service, and static classes to use the new option.
2025-10-05 20:07:42 +01:00
Madpeter
811baa74bc Use relaxed JSON escaping for command replies
Updated JSON serialization in CommandsService to use UnsafeRelaxedJsonEscaping for replies, ensuring special characters are not escaped unnecessarily when sending processed command results.
2025-10-05 19:36:14 +01:00
Madpeter
4216105037 Update parcel flag command return value
Changed the return hint and reply for the parcel flag update command to consistently return 'true' instead of 'true|false' or a status message. This improves clarity and standardizes the command's output.
2025-10-05 19:27:04 +01:00
Madpeter
e63253dec0 Refactor BotCommandNotice to use auto-properties
Changed BotCommandNotice constructor parameter names and replaced field assignments with auto-properties for improved clarity and maintainability.
2025-10-05 18:21:50 +01:00
Madpeter
5d464edd4d Add ClearChatOnConnect option and improve channel cleaning
Introduces a new Discord config option 'ClearChatOnConnect' to control whether channels are cleaned on connect. Refactors channel cleaning logic to handle bulk and individual message deletion based on message age, and updates permission modification calls for clarity and maintainability.
2025-10-05 11:01:54 +01:00
Madpeter
7a04f2c520 Refactor TriggerEvent logic and improve debug output
Refactored the TriggerEvent method for clarity and modularity by extracting debug logging, event value building, rule evaluation, and action triggering into separate helper methods. Improved debug output and streamlined event and rule checks for better maintainability and readability.
2025-10-04 23:19:22 +01:00
Madpeter
7411ba3268 Refactor inventory event lookup logic
Replaced ContainsKey and indexer access with TryGetValue for InventoryEvents dictionary to improve performance and readability in EventsService.
2025-10-04 23:11:34 +01:00
Madpeter
04b4e872a8 Make InventoryUpdateEvent asynchronous
Wraps InventoryUpdateEvent logic in a Task to run asynchronously, improving responsiveness and preventing blocking of the main thread during event processing.
2025-10-04 23:05:56 +01:00
Madpeter
050ef3c133 Replace Newtonsoft.Json with System.Text.Json
Migrated all serialization and deserialization from Newtonsoft.Json to System.Text.Json across the codebase for improved performance and reduced dependencies. Updated package references and refactored helper method names for consistency (e.g., IsEmpty, NotEmpty, InRange). Also updated NuGet package versions in project files.
2025-10-03 23:12:20 +01:00
Madpeter
93dbde2818 Improve inventory preload tracking and reporting
Refactored inventory preload logic to track both folder and item counts, and updated related command and service methods to report these values. Changed folder loading to be asynchronous and recursive, improved reporting format, and fixed root folder naming in inventory contents command.
2025-10-03 21:56:33 +01:00
Madpeter
e14ba787d4 Refactor inventory node loading logic
Simplifies the inventory node loading by replacing type checks with a string comparison on the entry type name. Removes redundant else-if block and ensures all entries are processed consistently.
2025-10-03 01:25:35 +01:00
Madpeter
70c1dcc86c Add randomized delay to folder preloading
Replaced fixed delay with a randomized delay when preloading folders to reduce predictability and overloading the server with multiple requests at the same time Introduced a static Random instance for delay calculation.
2025-10-03 00:58:14 +01:00
Madpeter
91a1ba4086 Add inventory preload status and folder count commands
Introduces two new commands to check if inventory preload is done and to request the number of preloaded folders. Updates inventory node mapping to use dynamic type names and improves folder preload tracking in DataStoreService.
2025-10-03 00:50:54 +01:00
Madpeter
7118d523cd Update ReturnHints formatting in Inventory command
Changed the ReturnHints string in InventoryContentsCatched to use <br/> for line breaks, improving readability of the JSON data object description.
2025-10-02 22:13:50 +01:00
Madpeter
0139326d67 Add cached inventory mapping and log truncation
Introduces InventoryContentsCatched to return mapped inventory using cached data and adds InventoryNodeEntry for structured inventory representation. Also truncates command log results to 100 characters in CommandsService for improved logging.
2025-10-02 22:07:02 +01:00
Madpeter
c00a11a99d Add inventory prefetching support
Introduces configuration options and logic for prefetching inventory folders on startup, including depth control. Updates Dockerfile and DataStoreConfig to support new settings, and modifies DataStoreService to handle inventory preloading asynchronously.
2025-10-02 11:22:19 +01:00
Madpeter
c40c551316 Add async inventory contents retrieval method
Introduces AsyncInventoryContents to fetch folder contents asynchronously, allowing non-blocking operations. Also updates documentation for the blocking method to clarify its behavior and output format.
2025-10-01 10:00:08 +01:00
Madpeter
231a19ff08 Add async inventory operations with smart replies
Introduces asynchronous versions of rez, send, and transfer inventory commands with smart reply support, returning request UUIDs and JSON status objects. Adds the InventoryAsyncReply class for structured replies and updates command attributes for clarity. Enhances error handling and reply mechanisms for improved integration with external systems.
2025-09-30 22:28:11 +01:00
Madpeter
61da8bf4cd update parcel ban/unban to work 2025-09-28 00:39:44 +01:00
Madpeter
b890fdc54b Update LibreMetavese and add support for ResetParcelAcccessLists 2025-09-28 00:11:54 +01:00
Madpeter
8f79b49495 Update ParcelCommands.cs 2025-09-27 22:22:19 +01:00
Madpeter
c0be75434c fix bork'd RequestBanAction 2025-09-27 19:31:20 +01:00
Madpeter
4f708621fa add GetCurrentParcelUUID 2025-09-26 18:36:39 +01:00
Madpeter
dc9310e5ff tidy up 2025-09-17 20:57:23 +01:00
Madpeter
3a29bdf748 Update Estate.cs 2025-09-06 23:28:10 +01:00
Madpeter
6bd37c55d8 adds non capps fallback 2025-09-06 23:27:32 +01:00