Full Progressive ChangeLog

27 November 2017

  • Release 9.171 - hotfix release for Windows 8.1 / Windows 10 addressing tickets #11 and #53
  • Corrade now properly sets the en-US culture in order to be compatible with SecondLife.
  • The underlying library has been patched to conform to globalization rules and to eliminate redundant warning messages.
  • The path to the group chat log file is now automatically created by Corrade on startup.
  • Corrade now prevents the process from being suspended under platforms that support process suspension (Windows).
  • Saving state is no longer performed whilst cycling simulators but rather on state change.
  • The verify command has been adjusted to report errors whenever a repository is not available.

26 November 2017

  • Release 9.170 - this issue is a major bugfix release with many thanks to the reporters on trac.grimore.org!
  • A re-occurring bug that lead Corrade to disconnect from all simulators but not cycle start locations has been resolved - ticket #11
  • Configurator has been updated to list language ISO codes only once - ticket #50
  • When running Corrade as a service under Windows 10, Corrade either did not install properly or terminated unexpectedly. The compatibility issues when running as a service under Windows 10 have been addressed - ticket #49 and #48
  • An issue that made Corrade send an unexpected response when using the built-in HTTP command server has been addressed - ticket #48 and thanks Hintswen
  • Corrade will now not return the entire list of installed notifications when specifying type and/or tags for the notify command with action set to list. Instead, the entire list of notifications will be returned when no type or tags keys are sent along with the command - ticket #47
  • Corrade will now explicitly create the necessary folders required for storing items such as chat logs, state files, etc... - ticket #42
  • An issue has been fixed that made Corrade not accept any commands that made the agent rotate after the movement state file had been corrupted.
  • A bug that made Corrade crash on startup whilst attempting to automatically set the scripted agent status has been resolved.
  • The Corrade configuration takes an extra parameter named HTTPCommandTimeout that limits the amount of time that Corrade will allow a command to run when sending the command via the Corrade built-in HTTP server (the default is set to 5 minutes and configurable via the Configurator->Limits tab).
  • A new command cycle has been introduced that will make Corrade disconnect from the grid and re-log to the next location defined in the StartLocation Corrade configuration - ticket #11
  • Corrade will now commit the group member list to hard-drive periodically when the list has been retrieved for the defined groups; instead of storing the list on termination.
  • Corrade may have returned duplicate keys when resolving an agent UUID to an agent name. The issue has now been resolved (thanks PauDat).
  • The RLVa nostrip features for the detach RLV behaviour have now been implemented.
  • A null exception for the detach RLV behaviour has been addressed thereby fixing issues with attachment removals: by attachment slot and entirely through @detach=force.
  • Concurrency issues with Corrade RLV rules have been addressed by using thread-safe collections and by locking down the relevant data structures.
  • The getstatusall RLV behaviour has been properly implemented instead of just being an alias.
  • The RLV behaviour redirchat has been implemented and applied to the tell command for local chat.
  • Multiple code redundancies and cleanups throughout the whole codebase.
  • All the third-party software that Corrade depends on, including the AI component, has been updated.

1 September 2017

  • Release 9.169 - bug fixes and major feature additions.
  • Add RLV blacklist support as per v2.8 of the RLV specification; the blacklist can be changed via the Corrade configuration.
  • Implemented the RLV getblacklist command, both via IM and via LSL scripts.
  • Corrected RLV setgroup command to properly unset the current group in case the group is not specified.
  • Implemented the versionnumbl RLV command.
  • Corrections to the acceptpermission RLV behaviour and the addition of the declinepermission RLV behaviour - Corrade now no longer forwards script questions to scripts when RLV is enabled and the Attach and TakeControls permissions are requested.
  • The accepttp RLV behaviour has now been implemented to conform to v1.16 of the RLV specification (addresses #44).
  • Addition and partial conformance of the notify RLV behaviour.
  • Ensure that HTTP and Nucleus servers are shut down entirely before trying to restart them when Corrade relogs (addresses #43).
  • Minimize the scripted agent status errors when known errors occur.
  • Fix heartbeat comparison in first start calculation.
  • Use Cache.MuteEntry instead of OpenMetaverse.MuteEntry.
  • Avoid adding inventory offer from masters to inventory offer but send the notification.

4 August 2017

  • Release 9.168 - major bugfixes and major feature additions.
  • Nucleus no longer unpacks the nucleons into memory but instead creates a folder under the “cache/” directory - this was changed in order to reduce the memory footprint when using Nucleus.
  • A new nucleon “pack-rat” has been added to Nucleus that allows inventory items to be manipulated.
  • Nucleus has been re-written as a window manager.
  • Nucleus now provides directory listings in JSON format instead of CSV - this is to facilitate the interaction with JavaScript without having to rely on wasCSVToList.
  • All JSON reponses from the web-interface now use ServiceStack to avoid dependency collisions with SynBot.
  • The Nucleus HTTP server and the first start bootstrap interaction has been reviewed and fixed. As a consequence, Corrade now requires UAC elevation when Corrade runs under Windows machines as a console application.
  • The cache options for Nucleus have been removed since Nucleus now uses a static disk cache that is rebuilt automatically whenever the nucleons are changed.
  • The logic for rezzing items has been amended to account for land permissions.
  • Links to outfit folders are now properly removed - in case you were using outfit commands with Corrade and you had experienced intermittent failures then this update should fix all the outstanding issues.
  • Corrade now splits the logs into “OpenMetaverse.log” and “Corrade.log” in order to increase the number of useful messages reported by “Corrade.log”.
  • The default SIML files and the SIML component has been updated to the latest version.

29 June 2017

  • Release 9.167 - maintenance release - big thanks to all reporters that found bugs in Corrade!
  • Fixed a deadlock in “replytoinventoryoffer” (thanks Infra).
  • Revised inventory attaching and detaching of items - major improvements to the reliability of attaching and detaching items (thanks Infra).
  • Added the “toggleparcelflags” command that can toggle individual parcel flags (thanks shadow, FireEyes).
  • Fixed issues with empty avatar names not being processed correctly (thanks FireEyes).
  • Used thread-safe collections for the Corrade configuration.
  • Updated Corrade console logo.
  • Hopefully fixed doxing Eva (thanks Ghost) :-)
  • Fixed issues concerning setting appropriate login parameters after configuration has been re-read.
  • Fixed an issue that prevented Corrade to re-log properly on the very first connection / disconnect cycle.
  • Used more verbose and stylish error reporting that should hopefully provide more insight when people file issues on http://trac.grimore.org/Corrade
  • Multiple simulator connections have been re-introduced - the memory leaks have been traced down to libopenmetaverse not flushing UDP packets on disconnect (the only game in town without a logout button). We have fixed libopenmetaverse instead and re-introduced the multiple simulator connections option.
  • Fix configuration updates crash when Nucleus has to be restarted.
  • Update synthetic markup AI component (SIML) to latest version.

16 June 2017

  • Release 9.166 - bug fixes and major feature additions.
  • The Corrade Horde now allows load-balancing commands between different Corrade bots participating as peers in a horde. Corrade currently benefits from two load balancers - a weighted load balancer that distributes the command to a single Corrade instance computed using a configurable weighted algorithm and an unison balancer that attempts to make all Corrade instances execute the same command. For more information please see the Horde documentation.
  • An issue has been addressed concerning Corrade not being able to log back in after a first initial disconnect from the grid on first start.
  • The multiple simulator connections option has been removed hopefully to address memory issues.
  • Corrade now avoids trying to save an asset to the asset cache twice.
  • A mono compatibility issue pertaining to the download and upload commands has been resolved.
  • Corrade will now report errors more verbosely by unwinding stack frames and specifying where the error has occurred.
  • A new parameter has been added to Heartbeat named WorkerOccupation as a ratio between the number of currently occupied group workers versus the free group workers.
  • Multiple updates to the packages that Corrade uses including the Synthetic AI component.
  • Resolved a few race conditions pertaining to Corrade's caches.
  • Fixed concurrency issues with the Nucleus server.

08 June 2017

  • Release 9.165 - maintenance release.
  • Fixed issues with inventory items not being found for createnotecard, download, upload and getassetdata commands.
  • Fixed an issue concerning the removal of notifications by tags for the notify command: Corrade will now properly only remove notifications by the supplied tag.
  • Turned multiple-simulator connections off by default to avoid libomv experimental code.
  • Introduced an XML serializer cache that should boost the performance.
  • Altered the cache command in order to take a CSV list of entities for the purge action - you can now specify which caches should be purged.
  • Converted all notification templates to UTF-8.
  • Fixed an issue with Script-Kiddie in Nucleus not displaying error messages properly.
  • All Nucleus nucleons have been updated to the latest release.
  • Adopted BayesSharp as part of a Wizardry and Steamworks project in order to work around dependency hell.
  • Updated all external components that Corrade relies on; including the synthetic ML / AI SIML component.

27 May 2017

  • Release 9.164 - major feature additions and bug fixes; thanks to everyone that contributed!
  • Corrade now picks nearest object when looking for objects in a range (thanks chakkichakki).
  • Double entries in chat logs have been fixed (thanks Arkana).
  • Fixes to sifting regular expression match.
  • An issue has been resolved with the wear command impacting stability (thanks chakkichakki).
  • The crossing notification now properly reports new simulator (thanks DJ Phydeaux).
  • Removed logout grace in favor of services timeout.
  • Ensured thread safety for caches thereby resolving an issue with loading partially saved caches.
  • Corrade now properly check that the client is connected before proceeding with an inventory update in order to avoid message sent by the grid announcing that the client is not fully logged-in.
  • Corrade will now by default keep connecting to start locations and never give up unless requested - this means that Corrade will now attempt to reconnect to the grid and not shutdown when all the connections to simulators have been lost.
  • The importxml command now takes an optional region parameter.
  • The setparceldata command now no-longer checks permissions.
  • The commands batchsetparcellist, creategrass, createprimitive, createtree, importxml, parceldeed, parceleject, parcelfreeze, parcelrelease, rez, setparceldata, setparcellist, terraform will automatically attempt to switch to the land group in order to perform the requested operation.
  • Add optional mono parameter for the upload command when creating a script
  • The upload command returns script compilation errors as a sub-CSV following an error item.
  • The upload command now properly marks uploaded asset type folder as needing an update.
  • The upload command can now be used to additionally update existing inventory assets such as notecards and scripts.
  • Two new commands updatenotecard, respectively updatescript have been added that are able to update notecard, respectively script contents in Corrade's inventory as well as update notecards, respectively scripts inside primitive inventories of in-world objects.
  • Economy notification should only fire for known transaction types (thanks DJ Phydeaux).
  • Fix erroneous result in getteleportlures command (thanks DJ Phydeaux).
  • Fixes double firstname for getinventoryoffers command (thanks DJ Phydeaux).
  • The terraform command now optionally takes altitude describing the altitude at which the brush acts (default is 0) and the amount parameter is now optional (default is 1).
  • Two commands parceldivide and parceljoin have been added that will allow joining and dividing parcels (thanks anonymous).
  • The database command now properly returns empty values.
  • The createnotecard command now allows embedding items into notecards via the new optional attachments parameter.
  • Added the ability to set permissions via the permissions parameter when creating a notecard with the createnotecard command.
  • Addition of the createlandmark command that allows Corrade to create a landmark at the current location (thanks DJ Phydeaux).
  • Added the getassetdata commands that allow querying asset data.
  • Corrade returns base64 encoded binary data instead of indexed array.
  • Refinement of permission setting - the upload command now takes a Corrade permission string instead of a list of permissions.
  • Added the ability to read scripts from files, supply them as source text or read them as asset data when using the updatescript command. Added the ability to reset a script via the reset parameter (default True) when creating or updating a script.
  • Change the createprimitive command to allow setting the name, description and permissions of the newly created primitive. Furthermore, the command now returns the UUID of the newly created primitive for easily reusing with other commands.
  • The Nucleus Script-Kiddie module has been finalized.
  • Updated all Corrade components, including the synthetic artificial intelligence module.

1 May 2017

  • Release 9.163 - feature additions, mono/Unix compatibility fixes, and some code rework.
  • Increase verbosity on failed commands (thanks chakkichakki).
  • The unwear command has been changed to accept unwearing items by slot and UUID (thanks chakkichakki).
  • Updates to the basic Nucleus nucleons - used package management systems instead of plain source files.
  • Pass sounds triggered by attachments through the sound notification.
  • Corrade now uses a managed SQLite implementation and the database command has been changed to support prepared statements.
  • Issues with Nucleus on mono/Unix failing to authenticate have been resolved.
  • The plural form commands batchgive, batchlure, batchavatarkeytoname, batchavatarnametokey have been added.
  • Code cleanups.

20 April 2017

  • Release 9.162 - major code rework, major feature additions and performance and consistency enhancements.
  • Re-worked the directorysearch command for better performance and consistency.
  • Used slim locking for better performance.
  • Corrade now downloads all simualtor parcels on relying commands for consistency.
  • Added an option to the configuration (and Configurator) to disable automatic scripted-agent registration and improved the reliability of setting the scripted agent status (thanks Tom, thanks Cari).
  • Corrected HTTP 304 cache-responses for Nucleus server.
  • Implemenented polling recent Corrade notifications from Nucleus - you are now able to retrieve a configurable amount of past notifications directly through a blessed Nucleus path (thanks chakkichakki).
  • The OpenMetaverse log has been fusioned with the main Corrade log - furthermore, Corrade is now much more verbose in the logs and console interface.
  • Added the ability to set permissions on various Second Life assets using data-related commands instead of dedicated commands.
  • Corrade now supports notificatin tagging such that bound URLs can have tags and then notifications can processed using the set tags (thanks Arkana).
  • Fixed an issue concerning the corruption of the movement state that would prevent Corrade from rotating after an unclean shutdown.
  • Component upgrades, including the AI component and the graphics processing packages.

8 April 2017

  • Release 9.161 - major fixes, feature additions and optimizations.
  • Issues concerning inventory operations have been addressed and the functionality has been restored (thanks chakkichakki).
  • A new command compilescript has been added that will make Corrade attempt to compile an user-supplied string and return any potential error message or success in case the script could be compiled successfully. This command would allow you, for instance, to couple or favorite IDE to Corrade and use Corrade as a lexer to check the supplied LSL syntax by attempting to compile the script.
  • A new command getestateinfodata has been added that will return requested estate info information.
  • A new command scriptreset has been added that will make Corrade reset scripts inside a primitive - individually, or all the scripts in the primitive by using the all parameter.
  • Fixed a potential annoyance with the Configurator not displaying the language selection properly (thanks Ghost).
  • Fixed an issue with dynamically re-loading the configuration file that may have corrupted state.
  • Sped up group and inventory operations by slimming down the locks further.
  • Fixed an issue with groups not being cached properly due to loose conversions between UUIDs and strings.
  • Fixed issues with Corrade not being able to properly set and unset the scripted agent status.

19 March 2017

  • Release 9.160 - feature additions.
  • This release introduces the verify command that allows groups to check whether the Corrade files match the files from a Stitch repository of their choice. The command returns the number of files that match and the number of files that do not match.
  • The command batchgetprofiledata has been added that allows groups to query profile data for a given set of avatars.
  • The command getprofilesdata has been added that retrieves profile data for avatars on a specified region or on all connected regions.

12 March 2017

  • Release 9.159 - cleanups and bugfixes.
  • The getaccounttransactionsdata command has been cleaned and checked to properly retrieve the account transactions.
  • Configurator now automatically loads defaults instead of prompting the user when no configuration file can be found - this is to prevent creating broken configurations.
  • A new command getaccounthistorydata has been added that gets an account history on the Second Life grid.
  • Corrade now automatically sets and unsets the scripted agent status when connecting to Second Life for compliance with the Linden terms of service.
  • The synthetic markup component of Corrade's AI has been updated to the latest version.

4 March 2017

  • Release 9.158 - maintenance and bugfixes.
  • The teleport command has been fixed to address the issue of the look-at vector not being taken into consideration.
  • An issue was addressed concerning the setprimitivetexturedata command that would not allow Corrade to set a texture on all faces when all was being passed to the face parameter.
  • The getparcellist command has been extended to allow fetching very large list of banned residents (thanks FireEyes).
  • The teleport command should now properly return the failure message in case of a teleport failure.
  • Corrade now avoids setting the status-code of a HTTP request in case part of the body has been sent to the client (this should address problems with mono not being compliant to the .NET implementation).
  • Component packages have been updated to their latest versions.
  • The turn command now takes radians as parameter instead of degrees.

25 February 2017

  • Release 9.157 - major feature additions.
  • Corrade is now capable of managing parcel access lists via the getparcellist and setparcellist command. Additionally, Corrade benefits from a batchsetparcellist command that will allow you to batch-load avatars on a parcel ban or allow list.
  • Added the ability for Corrade to perform a count when sifting return data - this will allow you to count the number of cells in a CSV string as passed back my Corrade's data-oriented commands (thanks tom).
  • Added the ability to retrieve and change the maturity level via the agentaccess command.
  • Corrade now allows a setting to be made such that scripts will be able to detect the language using llGetAgentLanguage.
  • Added the ability to set inventory data for multiple items in one swoop via the batchsetinventorydata command (for Jym).
  • getremoteparcelinfodata now uses the current simulator by default.
  • Added the getparcelobjectresourcedetaildata and the plural form getparcelobjectsresourcedetaildata commands that are able to query a parcel for resource usage and to retrieve a list of primitives.
  • The getparcellist command now properly returns a sane message if it fails to retrieve the parcel list.
  • Corrade can now optionally be prevented from establishing connections to neighboring simulators (configuration setting) - although this greatly decreases Corrade's ability to sense avatars, objects, parcels and others, it may be preferable in cases where one would want a resource constrained instance.
  • Corrade now properly reports the last execution status to the grid for compliance.
  • After a failed teleport, Corrade will additionally report the failure message passed to the data key of any installed callback.

5 February 2017

  • Release 9.156 - feature additions, bug fixes and enhancements.
  • The turn command has been updated to properly process degrees (thank you Luci).
  • Nucleus now supports adding regular expressions in order to access files on the local filesystem. The Corrade configurator has been updated to permit managing the whitelist.
  • The anonymous Nucleus group can now be assigned to an existing group in order to make Nucleus use a defined group for commands that do not use a group and password pair to authenticate.
  • The AI component of Corrade has been upgraded to the latest available version.
  • Corrade now properly implements the Syn tick-timer required by some SIML configurations.
  • The Heartbeat structure now properly reports the time (thanks Jym).
  • The official nuclons for Nucleus have been updated in order to make bootstrapping new Corrade deployments easier and to mention the default Nucleus username and password.
  • Nucleus now support ETag caching and sending the cache hints to browsers.
  • Removed the instant message limitation.

24 January 2017

  • Release 9.155 - major feature additions, refinements and bug fixes.
  • The major feature for this release is Nucleus. Nucleus is an HTTP web-server, similar to the already-available Corrade HTTP server, with the unique difference that Nucleus serves web-pages, interacts with Corrade and acts like a management interface without requiring the user to install a HTTP server on their operating system. Nucleus is extensible (by injecting modules) and comes in this release with the base and bootstrap modules. Please see the Nucleus section on further details on Nucleus.
  • When Corrade is deployed (either through Stitch, or by downloading a zip release) and launched for the first time, Nucleus is launched and guides the user to a website where they can create a minimal configuration for Corrade. This feature addition will allow new users to create a standard configuration fast and easily without bothering with the Configurator.exe tool.
  • The getaccounttransactiondata command has been amended to use the new Linden URL for retrieving account transaction data (thanks Jamal).
  • The inventory notification along with its corresponding processing command has been fixed and redesigned (thanks Jonas).
  • Corrade now rotates the main log-file at logs/Corrade.log, keeping 10 logs as archives, all below the 1MiB mark. This should make browsing the Corrade log file easier (thanks Ghost).
  • The built-in Corrade HTTP server for commands has been redesigned entirely.
  • The Horde data synchronization feature has been redesigned - 9.155 now uses a new Horde interface and will not be able to synchronize assets with previous version.
  • All file operations now prefer async/IO.
  • Two new parameters: shell and window have been added to the execute command allowing the user to specify whether Corrade should execute the command as a shell command (defaults to False for being able to run shell commands whilst Corrade is a service) and whether Corrade should create a window for the process (defaults to False, for the same reasons).
  • A nucleus command has been added that allows starting, stopping and generally, manipulating Nucleus.
  • Corrade's SIML component has been updated to the latest synthetic artificial intelligence release.
  • Corrade now features a javascript sift action that allows the user to execute JavaScript code in order to process Corrade's output. This is done by setting the sift action to js and supplying the javascript as plaintext to the sift parameter.
  • If Corrade is running on WIndows and is not installed as a service, it will now automatically attempt to reserve the URL without requiring the user to issue netsh commands. However, the netsh command still has to be issued for binding SSL certificates.

4 January 2017

  • Release 9.154 - feature additions and fixes.
  • A new command copynotecardasset has been added that allows requesting a copy of items embedded in notecards to be stored to the inventory.
  • Corrade now uses log4net for logging - the log format has been changed depending on whether Corrade runs as a service or interactively. The client log file will now automatically rotate once the file reaches 1MB and will create 10 archives before removing older archives.
  • The attachall RLV behavior has been implemented with atachallover and attachalloverorreplace as synonyms.
  • Fixed an issue with inventory items not being sorted properly.

3 January 2017

  • Release 9.153 - optimizations and feature additions.
  • Corrade now benefits from $O(1)$ lookups for cache items.
  • The viewer effects expirations times are now measured in UTC instead of local time for easy compatibility with LSL.
  • The createnotecard command has been changed to accept reading text from either a file or directly by passing the text parameter - this change may break scripts relying on the createnotecard command and the scripts should be updated to pass entity as text in order to preserve compatibility (thanks chakkichakki).
  • An important bug has been fixed concerning the Bayes filters for groups that under some circumstances would prevent Corrade from passing notifications.
  • The Corrade configurator now checks that a start location is properly formatted before allowing the entry to be added to the list.

30 December 2016

  • Release 9.152 - code maintenance, reductions, consistency adjustments and bug fixes.
  • Accepting inventory items to given inventory folders using the replytoinventoryoffer command has been fixed (thanks Jonas).
  • More eliminations of locale for the transition to en-US.
  • Removed some redundant case changes and type boxing.
  • Revised the timer and used actions instead.

18 December 2016

  • Release 9.151 - globalization fixes for localized Corrade installations.
  • Corrade will now adopt an US English culture for in-world assets in order to adopt an uniform handling of data passed though LSL. The US English culture will also propagate to HTTP-based handling.
  • The notify command has been adjusted to properly overwrite previous URLs when action is set to set as per the API.

10 December 2016

  • Release 9.150 - minor feature additions and removals.
  • The HTTP compression option has been removed from the Corrade configuration and Corrade now handles the compression automatically depending on whether a.) the client sends gzip or deflate compressed data via the proper content encoding, b.) the client accepts gzip or deflate via the proper accept content header. This could potentially mean less bandwidth usage when having to post or receive large data slices from Corrade.
  • The HTTP client now sends an Accept header in order to avoid potential blocks by modules such as mod_security.
  • A bug concerning the interaction with the SQLite component under x64 has been resolved.
  • Minor cleanups.

10 December 2016

  • Release 9.149 - modifications to command-line handling and fixes to the restart system.
  • This release fixes all outstanding issues with Corrade not reconnecting to the grid once it looses its connection to all the simulators (such as, when the simulator that Corrade is on is restarted).
  • The command-line handling system has been changed. For instance, to install Corrade as a service, you now need to issue Corrade.exe install. For more documentation, please see the relevant pages on installing Corrade as a service.
  • Corrade will now install itself per default as an automatically restarting service with delayed start.
  • A new command-line option info has been added that will display various information about Corrade.
  • Dependencies and libraries have been updated.

1 December 2016

  • Release 9.148 - fix for tell on negative channels and fix for terraform with negative amounts (thanks Lucy).
  • Using tell on negative channels when the entity is set to local is now possible.
  • Using a negative brush for the amount parameter with the terraform command is now possible.
  • Used plain ASCII copyright symbols across projects.

31 November 2016

  • Release 9.147 - feature additions and structural changes - please read the upgrade instructions since changes are needed to Corrade.ini.
  • The Configurator can now select .default files in order to load the default configuration file.
  • The Configurator select and deselect buttons for notifications and permissions have been fixed to not deselect the current configuration.
  • Corrade will now attempt to reconnect to the list of start locations in-sequence after losing its connection to all current simulators (thanks Ghost).
  • Corrade now uses the Wizardry and Steamworks fork of the libopenmetaverse library.
  • Make the Corrade configuration a portable library for reuse in Stitch, Vassal and other software. The old configuration has been removed and substituted for a new portable library project maintained independently.

27 November 2016

  • Release 9.146 - code cleanups and small changes to files.
  • The default configuration file provided by releases is now named Corrade.ini.default - this file should be loaded with the Configurator and then saved to Corrade.ini for updates. Configurator now loads the defaults from Corrade.ini.defaults and prompts to load the defaults in case no Corrade.ini could be found. This change is necessary in order to simplify upgrade procedures that do not require updating the Corrade configuration.
  • The Configurator will now by default fill-out Corrade.ini when saving a configuration.

26 November 2016

  • Release 9.145 - hotfix for the download command under mono (thanks Cale).
  • The MP3 download format has been removed for both .NET and mono platforms, due to compatibility issues with mono.

20 November 2016

  • Release 9.144 - code maintenance and minor feature additions.
  • Corrade is now able to create OAR exports - currently, limited to objects (instead of regions, etc...), via the new exportoar command.
  • Fixed issues with teleport throttling.
  • Fixed spurious crash on Corrade startup.
  • Corrade now accepts HTTP 1.0 - upgrading the protocol and setting the keepalive option only when possible.
  • Fixed double-escaping of afterburn parameters as well as caching the script and result keys for faster searches.
  • The getprimitives command has been reverted to the old behaviour meaning that scanning will take more time but will produce more consistent results.
  • Some cache locking was remedied to lock on the correct object.
  • The heartbeat feature has been revised in order to produce correct results even after long uptimes.
  • The project dependencies have been fixed such that they do not need to be re-added for compilation.
  • Converted most of the non-long running threads to use the smart thread pool for better performance.
  • Corrade displays what simulator it is trying to connect to after a failed attempt to log-in.
  • Various other minor cleanups of the codebase.

9 November 2016

  • Release 9.143 - this release will break script relying on the commands teleport and all the reply-family of commands. The dialog interaction system has been revamped in order to reply to dialogs by UUID rather than having to specify a large list of parameters. The reply-family of commands has been updated to add options such as ignore or purge that will allow ignoring or flushing the entire tracked status. teleport has been updated to allow teleporting to global coordinates, to a region, position and lookat (the old behaviour) as well as to landmarks by UUID.
  • The thread-handling system has been redesigned to use the smart thread pool for commands which is in-line with libopenmetaverse. This should yield a much better responsiveness with much less CPU cost for commands.
  • The language detection system has been changed to a faster and more efficient one that works better for sufficiently long strings.
  • The SIML component of Corrade has been updated to the latest official release.
  • Some state-tracked parameters relating to the reply-family of commands have been optimized for speed using O(1) searches instead of O(n).
  • The teleport command has been changed in order to allow Corrade to teleport to global coordinates, region name, position and look at (the current style) as well as landmarks by UUID or path. For compatibility, existing scripts should add entity, region to the list of parameters sent to Corrade.
  • The replytoteleportlure command has been updated in order to allow action to be set to ignore in order to ignore the teleport lure request or purge in order to purge all existing tracked teleport lures.
  • The replytoscriptpermissionrequest now also allows action to be set to ignore or purge in order to ignore a script permission request, respectively purge the entire list of tracked script permission requests. The command now explicitly requires setting action to reply in order to answer to script permission requests such that existing scripts should be updated to include action set to reply in order to be compatible with this release.
  • Dialogs are now tracked by an UUID (stored in the id key from the notification data) and will now require only the UUID and button name or button index in order to successfully reply to a dialog. The replytoscriptdialog now explicitly requires setting action to reply in order to answer to dialogs and either button or index can be supplied (note that if both are supplied, then Corrade will check if the button label matches the index). Furthermore, the replytoscriptdialog command now allows setting action to ignore or purge in order to ignore a dialog, respectively to purge all pending tracked dialogs.
  • The replytoinventoryoffer command has been updated in order to allow setting action to ignore or purge in order to ignore, respectively purge all pending tracked inventory offers. Note that by ignoring an inventory offer (or by purging all inventory offers), Corrade will simply remove the offer from its tracked offers without either accepting nor declining the inventory offer.
  • The replytogroupinvite command has been updated in order to allow setting action to ignore or purge in order to ignore, respectively purge all pending tracked group invites.

5 November 2016

  • Release 9.142 - reflection hotfix.
  • A bug concerning the retrieval of array or list-based data using the Corrade data-related commands has been addressed. This change should re-enable the usage of the “Get Avatar Shape Gender” template with minor modifications as well as other possible instances when array-type data has to be returned.

30 October 2016

  • Release 9.141 - code maintenance.
  • The group membership, effects and group feed threads have been moved to timers.
  • The inventory command with action set to ls now returns the inventory items in descending order by their time stamp.
  • The Configurator has been changed to properly deselect items whenever form elements are clicked.
  • Sound items are now broadcasted over the horde in case the retrieval of the sound asset from the asset server has been successful.
  • Corrade now displays informative messages whenever it fails to log-in to a start location and is cycling simulators attempting to log-in.

22 October 2016

  • Release 9.140 - consistency fixes and additions for compatibility with Caspertech.
  • The eject and batcheject commands now take an additional parameter demote (which is true by default) that can be set to False in order to prevent Corrade ejecting members that are part of any other roles other than the Everyone role. This is in response to the CapserLet issue ID 0001568 ( https://bugs.casperdns.com/view.php?id=1568 ) and should allow Caspertech to implement ejections that are compatible with other scripted agents. In case an agent is part of roles other than the Everyone role and demote has not been set to True, then Corrade will throw an error indicating that the eject needs a demote.
  • Two buttons for all/ none functionality have been added to the Groups section of the Configurator in order to conveniently allow toggling all or no permissions and notifications.
  • The newest additions to the inventory notifications that can be used to track inventory additions, updates and removals have been branched out of the inventory notification and are now in a different self-standing notification called store. This is to prevent a lot of information being sent through the inventory notification.
  • A new RLV behaviour detachall has been added to Corrade's RLV subsytem.
  • Some slowness with detaching and attaching inventory items that are not currently attached, respectively detached has been remedied.

18 October 2016

  • Release 9.139 - fixes and enhancements.
  • Data-related commands that set information have been restored to their working state. This affects the creategroup, createprimitive, directorysearch, setcameradata, setconfigurationdata, getgroupdata, getinventorydata, setmovementdata, setobjectmediadata, setparceldata, setprimitiveflexibledata, setprimitivelightdata, setprimitivesculptdata, setprimitiveshapedata, setprimitivetexturedata and setprofiledata commands (thanks Jym).
  • The getprimitivesdata and getobjectsdata commands when sent with entity set to parcel have been fixed to only return primitives in that parcel (thanks Duck).
  • The heartbeat logging has been made configurable (by default 1 hour) and can now be set to a custom interval in the Limits section of the configurator (thanks Ghost).

16 October 2016

  • Release 9.138 - major feature additions and bug fixes - please review the changes before upgrading: you will most likely need to load the Corrade configuration with the provided Configurator and add a starting location to Corrade.
  • Corrade will now cycle the start-locations when it fails to connect to a simulator - this is meant to avoid simulators being down by making Corrade attempt to log-in to alternate locations. The bundled Configurator has been changed to take a list of starting locations instead of the old start location. A pre-defined set is supplied consisting of Second Life info HUBs and safe regions (thanks Jym).
  • The heartbeat component has been changed to possibly deal with a bug that had Corrade reporting 0% CPU after a long running time.
  • A new notification called login has been added that allows Corrade to report on the log-in progress as well as send a message when it logs out of the grid.
  • The softban feature has been extended and its meaning has been changed such that Corrade will now optionally add the soft ban to the group ban list and then remove the group ban after a long time. This is a shortcut to prevent ejected members to re-join the group in a short time interval. Given that Corrade now wraps the limited group ban-list, it is recommended to use Corrade's softban feature instead of the grid group ban feature because it provides a better and a limits-conscientious protection (thanks Ghost).
  • The inventory notification has been extended to report additional inventory-store events such as when an item was: added, removed and updated. This addition to the inventory notification will also take into account events where items are added to the inventory during an asset upload.
  • Corrade now allows automatically pruning the asset cache - by default, this feature is turned off and it is recommended to keep this feature turned off because the downloaded assets occupy very little space given the underlying media types that implement compression; furthermore a good large cache allows Corrade to perform much better at the expense of a few megabytes of disk space.
  • Corrade now supports synchronizing the Bayes filters across the horde.

9 October 2016

  • Release 9.137 - compatibility solutions for Unix / mono and restoring 64bit compatibility.
  • This release addresses the Unix / mono compatibility issues for the new heartbeat feature.

9 October 2016

  • Release 9.136 - overhaul of the inventory subsystem.
  • This release enhances the speed and the consistency of all inventory-handling routines used by Corrade. As a consequence, the inventory handling pertaining to RLV has been updated to fix some outstanding issues with OpenCollar not properly displaying the currently attached items. All the inventory-handling commands are affected and an upgrade is highly advised.

7 October 2016

  • Release 9.135 - feature additions (thanks Ghost).
  • Added the addconfigurationgroup command that allows adding groups to Corrade's configuration dynamically.
  • Added the removeconfigurationgroup command that allows removing groups from Corrade's configuration.

7 October 2016

  • Release 9.134 - feature additions, corrections and command renames.
  • The deleteitem command has been renamed to trashitem.
  • A new command removeitem has been introduced that deletes an inventory item or folder by path or UUID (thanks Duck).
  • A new notification heartbeat has been added that sends various data, such as RAM or CPU usage, about Corrade as the bot is running (thanks Duck).
  • A new command getheartbeatdata has been added that allows groups with grooming Corrade permission to query Corrade's heartbeat data.
  • Implementing escaping paths for inventory items that contain the forward-slash in their name - such items can now be escaped using the backslash (note that two backslashes are needed in LSL) (thanks Jym & Duck).
  • The searchinventory command now takes folders into account (thanks Jym) and additionally will be able to search both the inventory root folder as well as the library folder for items or folders. Furthermore the searchinventory command now returns a CSV string of item asset type by item name by item UUID (instead of the asset UUID).
  • The createnotecard command now returns the newly created notecard's asset UUID and inventory UUID (thanks Duck).
  • The inventory notification has been altered to pass the item name and item UUID whenever Corrade sends, receives or is offered an item.
  • All data-related commands are now able to query parent abstract types.

6 October 2016

  • Release 9.133 - redesign of the inventory handling routines - these changes may break scripts, especially those dealing with inventory items, so please do not upgrade production bots till you have not upgraded your scripts.
  • The inventory handling routines have been changed to take full paths into account rather than item names and to include the grid Library as part of the inventory managed by Corrade. All commands dealing with inventory items, in particular, those that take an item or folder parameter, can now find an inventory item by UUID (since UUIDs are unique) or by path (rather than inventory item name as it was previously). This change is meant to get rid of the ambiguity when trying to locate inventory items that may have the same name. The affected commands are: addclassified, addpick, animation, attach, changeappearance, deleteitem, derez, detach, download, facebook, getinventorydata, give, inventory, notice, playgesture, playsound, renameitem, replytoinventoryoffer, rez, setestatecovenant, setinventorydata, setregionterraintextures, unwear, updateprimitiveinventory, and wear.
  • Improvements to the inventory notification for reliability when receiving or sending items.
  • Corrade's RLV component has been dramatically revised on the side of inventory-manipulating behaviours in order to be closer to the official specification with improvements to speed and correctness.
  • A new notification teleport has been added that can send data to a bound URL about the teleport progress whilst Corrade is in transit.

26 September 2016

  • Release 9.132 - hotfix for permission system.
  • Small bugfix to allow permissions to go through even though SL cannot confirm them - this is to extend the compatibility with Second Life and OpenSim.

24 September 2016

  • Release 9.131 - hotfix.
  • Protected the storage of state files in a concurrent context such that quick notification binding will not fail to bind.

24 September 2016

  • Release 9.130 - feature additions and enhancements.
  • Added the ability to select the SSL protocol used for TCP notifications - by default Corrade defaults to TLS 1.2.
  • Corrade now uses TLS for all communication including the communication with the grid.
  • Added the getavatarpicks command that can retrieve all the picks for an avatar as a CSV string of pick UUID to pick name.
  • Added the getavatarclassifieds command that can retrieve all the picks for an avatar as a CSV string of classified UUID to classified name.
  • Added the getavatarpickdata command that can query a profile pick given an avatar UUID and a pick UUID (for instance, retrieved previously with the getavatarpicks command).
  • Added the getavatarclassifieddata command that can query a profile classified given an avatar UUID and a classified UUID (for instance, retrieved previously with the getavatarclassifieds command).

24 September 2016

  • Release 9.129 - bug fixes and additions - please reload Corrade.ini using the bundled Configurator tool and then overwrite the old file such that the settings are updated.
  • The notifications TCP server has been fixed and will now work without having to bind to regular notifications.
  • The notifications TCP server now requires a certificate to be supplied (with an optional password) and the connection runs over SSL instead of raw TCP. No client verification is performed such that any client can connect to Corrade's TCP notifications port and subscribe to notifications provided that the group and password pair match.
  • Rewrite the Corrade AES implementation such that it now uses RFC2898-derived salts. Furthermore, messages encrypted with AES will go out as a concatenation between the salt, the : separator and the cyphertext. The data will have to be decrypted by extracting the IV from the salt using RFC289 derivation and then decyphering the next segment after the : which represents the cyphertext.

23 September 2016

  • Release 9.128 - feature additions and command enhancements.
  • Corrade now implements a separate Bayes filter for each group that it manages. Groups can manage their own categories, training their own filter individually with the use of the bayes command. Furthermore, the Bayes filter has been integrated with the notification system such that any sent notification can be configured to return the most probable match for the returned notification string - for instance, the group notification will now attempt a Bayesian classification for each message sent to the group. One good application for the Bayesian filter is to harvest group message spam and then use follow-up commands to eject or ban users depending on whether the probability threshold is high enough (similar to how E-Mail Bayesian filters work). However, Corrade allows groups direct access and manipulation of their Bayesian filter such that any other application that requires a probabilistic categorization of text could use this feature. The group filters are saved and loaded when Corrade terminates or starts and they are placed under the new Bayes folder as a file for each managed group.
  • The give command now allows sending inventory folders (thanks Jym).
  • Extended locks over state save functions (thanks Jym).

22 September 2016

  • Release 9.127 - feature additions.
  • A setinventorydata command has been added that will allow Corrade to set various data on inventory items (thanks Jym).
  • Made Corrade update the parent source and parent target folder when items are moved with the inventory command.
  • Added missing fetch after an inventory item is copied with the inventory command.
  • Corrected command syntax for getinventorydata.

22 September 2016

  • Release 9.126 - major fixes and feature additions.
  • The download command is now capable of downloading sounds in wav and mp3 formats for increased compatibility with HTML5.
  • The upload command has been fixed in order to accept uploading images in formats other than JPEG2000.
  • The upload command can now properly upload sounds.

18 September 2016

  • Release 9.125 - feature additions.
  • The getgridregiondata and teleport commands now accept a region UUID to be passed to the region parameter of the commands.
  • The getinventorydata command can now be used to query data that is specific to the inventory item type found.
  • The inventory command now returns an additional parameter time in an LSL-compatible date-time format that represents the last time the item was updated (created or modified). For folders, the inventory command will return a value passed to the time parameter that corresponds to the update time of the most recent item.
  • Added the wasSharpNET project dependency to the CorradeConfiguration project.
  • Clean-up of region-cache routines.

17 September 2016

  • Release 9.124 - recompile to 32bit since SQLite requires x86.
  • This hotfix release fixes issues with the database command (thanks Nitro and Cameron).

13 September 2016

  • Release 9.123 - small fixes and additions.
  • A bug concerning the listcommands command has been addressed that made the command fail (thanks Jym).
  • A new command getremoteparcelinfodata has been added that allows the user to query the ParcelInfo structure of a parcel on a remote region. Contrasted to the getparcelinfodata command, getremoteparelinfodata takes as parameter a vector passed to the position parameter whose X and Y components represent a global (grid) position. The command could, for instance, be used to retrieve the simulator name of a remote region if the global position of that region is known.
  • Small changes to the inventory command that should not affect its functionality.

11 September 2016

  • Release 9.122 - feature additions.
  • Changed the changeprimitivelink command such that it will not timeout when attempting to link primitives that are already linked. Added the optional parameter restructure that takes care to unlink all the supplied primitives to the command and then re-link them into an object if requested.
  • A command named deactivate has been added as the converse of the activate command that will make Corrade set the group to none and thereby clear any tags (thank you Dj Phydeaux).
  • Added a command named renameitem that is able to rename an inventory item (thanks Jym).
  • The inventory command has been changed to allow naming target items when performing the cp, mv or ln actions (thanks Jym).

6 September 2016

  • Release 9.121 - hotfix for annoying messages in console when Corrade was made to process group information for groups that it was not configured to handle (thanks Duck).
  • Since the new conversions, groups are classes not structures, so added null checks for LINQ.

4 September 2016

  • Release 9.120 - feature additions, security enhancements and stability improvements.
  • Corrade and its Configurator no longer require Administrator privileges to run. Administrator privileges are still required in order to install or uninstall Corrade as a service. Furthermore, this means that if you are using Corrade's built-in HTTP server, you will need to use the netsh command in Windows as an administrator in order to allow Corrade to listen on its prefix.
  • This release adds the ability to synchronize group additions and deletions across the horde by adding a new synchronization option user. You can now configure a Corrade horde to synchronize the same group configuration.
  • A new meta-command shoot has been added that makes Corrade turn towards a specified position, enter mouselook, press the left mouse button and then exit mouselook.
  • A new notification preload for sound-preloads has been added. Furthermore, Corrade respects the hint to preload sounds and automatically downloads them to the asset cache. This is fully integrated with the Corrade horde, such that the asset will be distributed across any configured horde peers using the asset channel.
  • Regions are now cacheable and a new cache file will appear at cache/Regions.cache that will contain grid information for the various regions that Corrade travels to. Corrade soft-resolves a region handle and then proceeds with a follow-up check in the background to make sure that the cached region is not stale.
  • Libraries that Corrade depends on (such as the SynBot andMagick.NET) have been upgraded to their latest versions.
  • Improvements to the horde in general, concerning updating Corrade's configuration will Corrade is running. Testing for stability were performed and more checks were added for synchronized assets.

3 September 2016

  • Release 9.119 - major rework of data processing functions and notifications. This release will break scripts using *data commands as well as scripts relying on the output of the dialog and animation notification. Please consult the progressive upgrade instructions for Corrade 9.119 in order to find out how existing scripts will have to be altered.
  • Corrade now supports XML-templated notifications allowing the returned data to be customized by editing the template files (even without restarting Corrade). This change breaks scripts relying on the shape of the data returned by the dialog and animation notifications. The upgrade will require scripts to be changed and the new templates folder to be copied over.
  • All data queried by Corrade using the *data-related commands has to adopt a full-path to the field of property to be queried.
  • The wasSharp library has been forked into the portable component and the wasSharpNET non-portable library that contains code that is not portable.
  • Major refactoring of the entire code-base (as a group effort), with repercussions to both performance and tidiness of the code. This affects all commands and RLV behaviors; the latter being split between the wasOpenMetaverse library for general structures and Corrade for instance-specific constructs.

21 August 2016

  • Release 9.118 - feature enhancements and additions.
  • Corrade now supports propagating soft bans across a Corrade horde. A new option has been added in the Configurator under the Horde that allows selecting soft-ban synchronization for each individual peer.
  • The batchinvite command now check whether an agent has been banned before inviting and requires the group permission to manage the group ban list. Furthermore the batchinvite command now also checks for soft-bans and offers the ability to soft-unban invited agents via a new optional parameter soft.
  • The invite command has been fixed to use the target group instead of the command group. Similar to bathinvite, the invite command now also checks for soft-banned avatars and offers the new optional soft parameter to unban the avatar before inviting them to the group.
  • Committed the rest of the missing build-files.

21 August 2016

  • Release 9.117 - feature additions and performance enhancements.
  • Corrade now benefits from a softban command such that avatars can be soft-banned from a group and then automatically ejected in case they re-join the group. The list of soft-bans is stored locally on the filesystem and is independent of the group ban list (manageable with the ban command).
  • The ban command has been overhauled and now performs an extra check to see whether adding the new set of bans would overstep the Second Life group ban list length (500 avatars).
  • The ban command benefits from a new parameter soft that can be set to True in order to additionally add the ban to Corrade's soft-ban list.
  • The membership notification has been enhanced and solved in a better manner than previously, hopefully leading to better overall performance.
  • The replytoscriptdialog has been changed in order to make the index parameter optional. In case the index parameter is not specified, then Corrade will attempt to locate the button index and use it (thanks Luci).
  • Multiple locks have been removed for several commands where multiple separate requests are possible without having to lock the client.

20 August 2016

  • Release 9.116 - changes to the mute system; may break scripts relying on the mute command.
  • The mute command has been changed in order to distinguish between muting agents, groups and objects. The mute command now requires the type parameter to be specified.
  • A problem with getmutes and mute commands has been addressed such that empty mute lists are returned much faster instead of timing out.
  • The Corrade Configurator now trims the login password to 16 characters before hashing it in order to avoid errors due to Second Life not recognizing passwords larger than 16 characters.

20 August 2016

  • Release 9.115 - code maintenance and minor changes to horde configuration.
  • A new configuration parameter Name has been added to the horde configuration in order to refer to peers by name instead of HTTP URL.
  • Added support for checking whether Corrade has loaded a compatible configuration file. In case the configuration file does not match, Corrade will still load but will display an error hinting that the configuration file must be updated (for instance, by running the Configurator).
  • Using task-based timers instead of thread timers.
  • Intern commands and notification strings.
  • Centralized bit twiddling operations.
  • Multiple cleanups of the wasSharp library.

14 August 2016

  • Release 9.114 - enhancements to the horde - this release will require you to reload your configuration with the Configurator, check the new options and then overwrite the configuration file.
  • All cache objects have been changed to use a custom implementation that should be much faster and still provide sensible resource propagation across the network.
  • Added the ability to configure your Corrade as a horde member that will both add and also remove cache items from other horde peers.
  • Made sure that pushing cache items is only performed when hording is enabled in the configuration.
  • Made sure that cache items are consistent such that items accepted for synchronization are not corrupted or partial assets.
  • Eliminated the startup burst of synchronization and only newly added resources will be synchronized.

12 August 2016

  • Release 9.113 - more work on the horde framework - please perform a full upgrade (replacing, libs and manifest files) and then load your old configuration in the Configurator because the framework has changed a lot since the previous release.
  • The Corrade horde now supports configuring individual assets (such as agent, region, group, etc...) with horde peers. Furthermore, Corrade now requires an additional shared-secret to be established individually between your Corrade instance and the other Corrade bots in the horde in order for synchronization to work.
  • Added the ability to synchronize mutes between Corrade horde members. That means that given a configured horde of Corrade bots, once a mute has been added to one Corrade bot in the horde that shares the mute asset, that mute will propagate to all other Corrade bots in the horde accepting mute asset synchronization.
  • The Configurator no longer hides tabs depending on the experience level due to issues with the pop-up documentation not showing properly. Instead, tabs that exceed the current experience level will be selectable but all controls will appear disabled. More work on the Configurator in order to fix small bugs and annoyances.
  • Minor changes to the libraries related to the Corrade horde in order to optimize lookups and avoid errors.
  • The cache format has been updated and cache related files from the cache/ directory (such as Agents.cache, Group.cache, etc...) are no longer compatible. However, upon upgrading, Corrade will truncate the files and start recreating the caches again.

11 August 2016

  • Release 9.112 - feature additions - Corrade hording (or botnet).
  • Corrade now supports coupling multiple Corrade instances together in order to create a botnet that will share resources. This initial release sets up the Corrade hording framework and enables multiple Corrade instances linked together to share cache objects. Hording can be configured using the bundled Configurator and requires at least two bots to create a botnet. This release adds pushing agents, groups, regions and downloaded assets using the various commands to the entire botnet once the cache object has been created on one instance. The effect of sharing cache amongst various Corrade instances will result in a considerable speed-up of the various linked bots by alleviating the pressure on the grid services that are needed to perform lookups. For further details, please see the Corrade documentation.

10 August 2016

  • Release 9.111 - feature additions and improvements.
  • The conference notification has been added that allows Corrade to send conference messages through the notification system.
  • Corrade now logs conference messages to the logs/conference directory named after the name of the conference.
  • The logs command has been updated in order to allow processing of conference messages.
  • The conference entity has been added to the tell command in order to allow Corrade to send messages to conferences.
  • A new command conference has been added that allows Corrade to create a new conference, list the members of a conference and list the conferences that Corrade is part of. Corrade is now able to manage conferences as well as restore previous conferences in case Corrade disconnected from the grid.
  • Two new commands, getconferencememberdata and getconferencemembersdata allow querying the ChatSessionMember class in order to retrieve data about participants in a conference.
  • The download command now checks that an inventory item has been found in case a script or notecard has been requested for download.
  • The configurator has been updated in order to preserve the experience level setting across executions and to accommodate the new settings. Note that you will have to create a logs/conference directory and enable it in the configurator in case you are upgrading.

9 August 2016

  • Release 9.110 - hotfix for playgesture command.
  • A bug concerning playing gestures with the playgesture command has been addressed such that Corrade now properly plays gestures when items are specified either by name or asset UUID (thanks Dj Phydeaux).

6 August 2016

  • Release 9.109 - code improvements and package updates.
  • The membership notification has been revised and the algorithms have been optimized.
  • The feed command now properly only requires an URL when the action is set to remove and both name and URL when the action is set to add (thanks Jaroslaw).
  • The ai command now checks that SIML has been enabled before processing messages.
  • Components that Corrade depends on such as SIML and HTML processing component have been updated to their latest versions.

30 July 2016

  • Release 9.108 - feature enhancements.
  • This release makes cookies collected by Corrade's HTTP calls persistent. Cookies set by websites will be stored in binary format under the “state” directory in a “GroupCookies.state” file. Once a cookie has been set by a website to which Corrade makes either a POST or GET request will be stored in a per-group container such that they can be retrieved again by external scripts. Note that each group benefits from their own private cookie jar.

29 July 2016

  • Release 9.107 - optimizations.
  • Implement per-group HTTP clients in order to reuse connections.
  • Use portable SQLite library in order to regain the ability to run as a 64-bit application on 64-bit operating systems.

20 July 2016

  • Release 9.106 - feature additions and fixes.
  • The playsound command has been fixed in order to properly play sounds (thanks Jaroslaw). Furthermore, the command now takes an additional parameter region that can trigger the sound on any connected region. The parameter item of the playsound command can now either be a name, in which case the item is searched in Corrade's inventory, or an asset UUID in which case Corrade trusts that it is the asset UUID of a sound on the grid and plays the sound.
  • A new notification sound has been added that makes Corrade pass data on the sounds that it hears on all connected regions.
  • An optional parameter region has been added to the command getregionterrainheights that allows the command to act on any neighboring region.
  • An optional parameter region has been added to the command getregionterraintextures that allows the command to act on any neighboring region.
  • Aesthetic cleanup of notifications.

13 July 2016

  • Release 9.105 - feature additions and minor changes.
  • A new command importxml has been added that can import XML files or ZIP files previously exported using the exportxml command. Please see the documentation page for the importxml command for further details on how to import items.
  • The upload command has been altered in order to return the inventory item UUID and the asset UUID of the uploaded item as a CSV list (thanks Ray). This should allow you to perform an action directly once an item has been uploaded without needing to search the inventory for the item beforehand.

10 July 2016

  • Release 9.104 - add support for many other image formats on Windows platforms for the upload and download command (thanks Ray).
  • Added support for very many formats on the Windows platform for the upload and download commands. Please make sure you read the documentation on the API page for the upload and download commands when you design your application and need an exotic file format that is platform dependent.

9 July 2016

  • Release 9.103 - added the ability to Second Life grid live feed data.
  • A new command getgridlivedatafeeddata has been introduced that allows querying Second Life live feed data which includes grid statistics as well as LindeX data (Linden exchange).

8 July 2016

  • Release 9.102 - hotfix for reloading configuration dynamically.
  • Corrade should now properly reload “Corrade.ini” and apply the new configuration instantly. Furthermore, Corrade now additionally displays a message indicating when it has started to apply the settings and when the procedure has completed.

7 July 2016

  • Release 9.101 - code maintenance and bug fixes.
  • A bug has been fixed concerning sequential threads for the Corrade thread pool.
  • The HTTP interaction functions have been branched out to the PCL library and made portable. This change should drastically reduce the number of failed HTTP request messages.
  • All HTTP requests (for example, for callbacks and notifications) retain a per-group cookie storage.
  • Used proper formatting for the user agent that Corrade sends for HTTP requests.

4 July 2016

  • Release 9.100 - feature additions and optimisations.
  • The inventory retrieval procedure when Corrade starts has been optimised to take into account inventory items that have been loaded in order to prevent loading them again.
  • Two new commands “readfile”, respectively “writefile” have been added that are able to read, respectively write files to the filesystem given a path (thanks Ghost).

3 July 2016

  • Release 9.99 - feature additions.
  • Added the getavatargroupsdata command as the plural form of getavatargroupdata that will be able to query AvatarGroup data for all groups that an agent is a member of (thanks Ghost).
  • Allowed sequential threads to terminate previous threads in the Corrade thread pool.

3 July 2016

  • Release 9.98 - hotfix for slow teleports.
  • Corrade should now teleport faster and yield less timeouts.

3 July 2016

  • Release 9.97 - feature additions.
  • Added the setestatecovenant command, as the counterpart to the older getestatecovenant, that is able to change the covenant of the current estate. It is now possible to batch-change estate covenants using Corrade and LSL scripts. :-)

29 June 2016

  • Release 9.96 - minor feature additions.
  • Corrade now checks for the group permission to manage group ban lists when sending an invite to a banned agent. (thanks Tatiana).

25 June 2016

  • Release 9.95 - feature additions and cleanups.
  • Added the commands marry and divorce that will allow Corrade to send partnership requests to other avatars as well as dissolve partnerships.

20 June 2016

  • Release 9.94 - bug fixes, command changes and command enhancements.
  • The invite command now invites people to groups by default regardless whether they are in the group or not. The force parameter from the previous release has been changed to verify such that scripts must send a verification request in order for Corrade to perform the extra check whether an agent is in the group or not. This change is necessary to make Corrade compliant with the default Second Life behavior that does not perform any extra checks on sending group invites.
  • The addevent and modifyevent commands have been enhanced in order to santize input before sending the form to Second Life. Furthermore, the commands will return error messages from the online form in case of failure.
  • A patch by FireEyes has been added to libopenmetaverse that adds support for various newly introduced Linden parcel flags that were not previously supported. As a consequence, Corrade should not mess up parcel flags when using parcel commands that manipulate parcel flags.

19 June 2016

  • Release 9.93 - feature additions (thanks Casper, thanks FireEyes) and overhaul of the Configurator.
  • The invite command now takes an additional parameter force that, when set to True will forcibly invite an avatar to a group regardless if they are already inside the group.
  • Corrade now supports a master password override feature that can be used to control any group managed by Corrade. In order to use this feature, simply configure the master password override using the Configurator and then send the commands as usual, but instead of the group password, you send the master password.
  • The Configurator now has three experience levels that hide various advanced options. By default, the Configurator loads in the Basic experience level where only the essential Corrade settings are shown. The other experience levels unlock more and more features.
  • A button has been added to the Configurator Load Defaults that loads a default configuration - similarly, the Configurator now loads the default configuration even if there is no Corrade.ini in the same directory.
  • The Configurator syntax for setting the log-in location has been simplified to: <region name>/<x>/<y>/<z> instead of the URI-escaped string that was expected before. The special strings last (default) and home are still compatible.
  • The Configurator now checks whether the configuration has been saved before exiting in order to avoid losing configuration changes accidentally.
  • Corrade no longer logs the full command sent by scripts. Instead, Corrade will now log the group name, the avatar (or identifier) sending the command and the name of the command. Other parameters are now omitted from the output and the logs in order to reduce the amount of private information that shows up in the logs.

18 June 2016

  • Release 9.92 - feature additions: add the ability to create Second Life events from scripts (thanks FireEyes) and minor changes to commands.
  • The getaccounttransactionsdata command has been changed to not restrict Corrade to be on the same grid. Corrade can then be on a different grid (such as OpenSim-based grids) but still query the transaction data from a Second Life account.Furthermore, Corrade only assumes that the calling account is the account Corrade connects on in case both firstname and lastname have not been specified.
  • Four new commands geteventformdata, addevent, deleteevent and modifyevent have been added that allows users to create events in Second Life using scripts (this feature is specific to SecondLife and will not work on other grids). The geteventformdata command can be used to query data on the event submission form - for instance, to determine what locations are available for hosting an event. The addevent command, given user-supplied parameters will schedule the Second Life event and return an event ID. The event ID can then be used by the deleteevent command in order to delete the event. Lastly, the modifyevent command will allow you to edit an event by ID and change all the parameters. For further information, please see the respective API pages of the newly introduced commands.

17 June 2016

  • Release 9.91 - added the ability to query Second Life Linden Lab webpage transactions (thanks FireEyes), added the possibility to ignore script dialogs (thanks Lucy).
  • A new command getaccounttransactionsdata has been added that allows querying the Linden Lab website for account transactions. Although, the command is called by authenticating via a group and password as per all the Corrade commands, the getaccounttransactionsdata command allows querying the transactions for any account given a firstname, lastname and secret (the password). Note that this command will reveal your account data to the person hosting the Corrade bot. Naturally, this command requires Corrade to be connected to the Second Life grid and can only query Second Life transactions.
  • A new parameter action with possible value set to ignore has been added to the replytoscriptdialog command that makes it possible to ignore and remove a dialog from Corrade's stack of dialogs. The addition does not change the behavior of the replytoscriptdialog command , which is by default to reply to the dialog.

11 June 2016

  • Release 9.90 - major refactoring: inventory handling improvements (including outfit changing with the changeappearance command), primitive and object finding improvements (both in speed and the number of items returned) and minor changes and additions to command - note that the current release may affect already existing scripts so please revise before upgrade.
  • The SIML/SIML sub-directory has been renamed to Corrade since the Syn Studio expects the folder containing SIML files to be named the same as the project (thanks Sidius).
  • The entire inventory subsystem has been updated to make inventory handling more consistent - this affects commands such as changeappearance for which the number of failures in finding the folder to equip has been drastically reduced (this also affects RLV-related commands).
  • The entire primitive and object searching subsystem has been overhauled. Corrade will now return a much larger set of primitives and objects found as well as returning them much faster than before. Note that this change separates primitives from objects (the former are link-set child nodes whilst the latter are entire objects).
  • Two new commands have been added getobjectdata, respectively getobjectsdata that function the same way as getprimitivedata, respectively getprimitiesdata with the exception that the new commands query objects instead of linked primitives - which may be more useful for command such as sit that usually need to interact with objects and not linked primitives.

9 June 2016

  • Release 9.89 - feature additions and removals.
  • Commands that manipulate inventory items now no longer use regular expressions to match the item. Instead the search is performed using UUIDs or item names. This should speed-up attaching and detaching items from Corrade (thanks MsLarah).
  • A new command getgroupmembersdata has been added as a plural of getgroupmemberdata and will return data for an entire group member set (thanks FireEyes).
  • Corrected syntax for most commands that additionally benefit from the target parameter for group-oriented commands.

8 June 2016

  • Release 9.88 - sped-up http requests and relaxed the default timeout.
  • HTTP requests now use async/wait to deliver callbacks and notifications.
  • The default callback and notification timeout has been changed to the standard value.

6 June 2016

  • Release 9.87 - removals.
  • Remove language detection except for local, message and group notifications - the rest can be achieved by using the detect command.
  • Speed-up language detection.

5 June 2016

  • Release 9.86 - feature additions.
  • Corrade now supports language detection for notifications that return user-input as well as separately as a language command called with a detect action. The language recognition implementation reports the most likely language for notifications and a list of most likely languages for the detect command using the ISO639_3 standard.
  • The notifications notice, region, local, alert, objectim, dialog, group, message, regionsayto, ownersay now return an additional key language set to an ISO639_3 code representing the most likely language matching the message.
  • A command language has been added with a detect action that takes a message and returns a CSV list of most probable languages in ISO639_3 by their score.

5 June 2016

  • Release 9.85 - extend tell command to support typing event and others.
  • The tell command has been extended to support dialog and message types such that you can now simulate start typing / stop typing when messaging agents. Furthermore, the command now allows sending a message as online-only - to be delivered only if the avatar is online. Additionally, the tell command allows further message types such as requesting a lure, sending a busy message response, etc...

4 June 2016

  • Release 9.84 - hotfix for getinvworn RLV command.
  • Revisited the getinvworn command and fixed a deadlock and optimized the code in order to speed-up the Browse #RLV feature of OpenCollar and similar devices that list the #RLV folder (thanks MsLarah).

4 June 2016

  • Release 9.83 - code fixes.
  • The listcommands and getcommand commands have been simplified along with Corrade's internal commands structures.
  • getgroupmemberdata now required the group Corrade permission instead of interact (thanks FireEyes).
  • Rebuilding the SIML brain using Corrade commands instead of the studio has been fixed.

1 June 2016

  • Release 9.82 - ditched the AIML implementation in favor of a SIML implementation.
  • The current implementation of AIML has been ditched in favor of the more powerful SIML. Customized AIML files can be imported into the new format by using the Syn Chatbot Studio. The change of AIML implementation drops Corrade's memory consumption considerably - from about 300MiB with AIML enabled to about 10MB with SIML enabled. Furthermore, the Syn Chatbot Studio provides a more friendly way of editing AIML files as well as testing them directly in the IDE rather than having to recompile the brain each time. Corrade implements both the learning and memorizing functions of SIML and provides the default English SIML base collection as a project that can be edited with the Syn Chatbot Studio.

1 June 2016

  • Release 9.81 - command changes and feature additions (thanks FireEyes).
  • The getgroupmemberdata command has been renamed to getavatargroupdata.
  • A new command getgroupmemberdata has been added that queries a GroupMember structure.
  • Corrade now overrides the GroupPowers structure on returned data with literal explicit values instead of just returning a mask.
  • The ParcelFlags property is now returned by Corrade using literal explicit values formatted using Corrade's RFC compliant CSV routines.
  • Data commands that request a Permission property now use the Corrade permission notation.
  • Tighten group membership scanning for less operations.

28 May 2016

  • Release 9.80 - bugfixes.
  • Fixed a problem with grouping when CSV data is returned such that groups are consistent even if some data slices are missing from the output (thanks Cale).

27 May 2016

  • Release 9.79 - hotfix for notice command.
  • The item parameter for the notice command is now optional (thanks Romeo).

21 May 2016

  • Release 9.78 - feature additions, command parameter adjustments and bug fixes.
  • The command getcurrentgroups has been added that allows retrieving the current groups that Corrade is part of as a CSV list of group name by UUID.
  • The command getcurrentgroupsdata has been added that allows you to query OpenMetaverse group data for the current groups that Corrade is part of.
  • The command getgroupsdata has been added that allows retrieving OpenMetaverse group data for a list of groups specified by name or UUID.
  • The Configurator application has been adjusted in order to take the data decay into consideration (thanks MsLarah).
  • The commands activate, addtorole, ban, batheject, bathinvite, creategroup, createrole, getgroupaccountsummarydata, getgroupdata, getgroupmemberdata, getmemberroles, getmembers, getrolemembers, getrolepowers, getroles, getrolesmembers, gettitles, invite, join, leave, moderate, notice, setgroupdata, setrolepowers, tag and tell have been been changed such that the commands now additionally take a target parameter that allows the command to act upon a group other than the configured group with which the command is invoked.

16 May 2016

  • Release 9.77 - minor feature additions.
  • Add firstname, lastname, owner and name for the permission notification.
  • Add time to the message notification.

14 May 2016

  • Release 9.76 - feature additions and fixes to AIML.
  • The very annoying issue with AIML responses coming out as ERROR: the request has timed out. should now be resolved - the issue pertained to the Reduce.aiml file being ill formatted. If you are upgrading, please replace Reduce.aiml in AIMLBot/AIML/ and remember to delete the current brain file at AIMLBot/brain/AIMLBot.brain to let Corrade recreate the file. Alternatively, just overwrite the entire AIMLBot directory with the one provided in the download.
  • The facebook command has been updated to allow uploading images from Corrade's inventory - or any other image referenced by UUID to Facebook.
  • Changes to refer to ScriptException instead of Exception.

13 May 2016

  • Release 9.75 - feature additions.
  • Add support for posting messages to Twitter and Facebook directly from scripts.

8 May 2016

  • Release 9.74 - feature additions to the RSS feed system
  • The feeds command now additionally takes a required name parameter that can be a descriptive name for the feed that will be passed along with the notification. This should help distinguish between various feeds.
  • Feeds are only sent to their destination group instead of using a shared pool of RSS feeds.

8 May 2016

  • Release 9.73 - feature additions and cleanups.
  • Added the ability for Corrade to continuously poll RSS feeds for updates and deliver them via notifications to a specified URL. This is performed by using the feed command to subscribe to an RSS feed and then using the notify command with the type set to feed; Corrade will then poll every minute (configurable via the Configurator) for news and deliver them to the URL specified with the notify command.
  • Locks have been tightened in order to guarantee the atomicity of operations for Corrade and RLV commands.
  • Permissions and notifications are now represented using 64 bit wide integers.
  • Multiple cleanups and consistency checks.

4 May 2016

  • Release 9.72 - bug fixes and minor optimizations.
  • Fixed a slowness when some parameters were missing from commands by adding the base case for grid service Resolvers.
  • Added more consistency checks for the invite and batchinvite command when roles were sent along with the command. Corrade now no longer requires the group power Roles -> Assign Members to Any Role (thanks Sidius) in some cases and is able to distinguish whether a member is to be invited to the same role as Corrade (and whether that role has the group power Roles -> Assign Members to Assigner Roles) or whether it does indeed need the group power Roles -> Assign Members to Any Role in case a role was specified that Corrade is not part of.

3 May 2016

  • Release 9.71 - bug fixes.
  • Fixed invite, bathinvite and returnprimitives commands that were affected by a concurrency bug that yielded an erroneous message instead of the usual message when called with various parameters (thanks Sidius).

2 May 2016

  • Release 9.70 - bug fixes and command additions.
  • The getrolepowers command no longer requires the role property group permissions since any member can query group powers even if they are in the default “Everyone” role.
  • The updategroupdata command has been renamed to setgroupdata and now requires the “Group Identity -> Change Charter, Insignia and 'Show in Search'” group permission in order to modify Charter, InsigniaID and AllowPublish; the “Membership -> Toggle 'Open Enrollment' and change 'Signup Fee'” group permission in order to change MembershipFee and OpenEnrollment and the “Parcel Identity -> Toggle 'Show in Find Places' and set category” group permission in order to change ShowInList. All the other settings (such as “ListInProfile”) do not require this permission check.
  • The setgroupdata command (formerly, updategroupdata) now can correctly set the AcceptNotices and ListInProfile properties (the old behaviour did not properly hide the group from the profile when required).
  • A new command setrolepowers has been introduced that allows setting the powers of a specified role (by UUID or by name). The command takes as parameter a CSV list of GroupPowers passed to the powers key and requires the “Roles -> Assign and Remove Abilities in Roles” group permission.

25 April 2016

  • Release 9.69 - hotfix for notifications purge.
  • A bug concerning purging notifications with the notify command has been addressed (thanks Desdemona).

21 April 2016

  • Release 9.68 - bug fixes.
  • The configuration command was not introduced and it has been added so it is accessible now (thanks Jym).
  • Corrade has been compiled to 32bit due to SQLite being only 32bit compatible and would yield errors when using the database command on some platforms.
  • Fixed a bogus error when the download command was used with a path parameter - although the command worked, an erroneous message was posted to the callback as a response (thanks Jym).
  • The RLV command getinvworn has been reverted to a previous state due to some issues with the latest optimizations (thanks Suiseiseki).
  • Make Configurator set the path to the current working directory on configuration load and save (thanks Desdemona).

17 April 2016

  • Release 9.67 - fixes for outfit notification.
  • The outfit notification has been changed to properly display the attachment or wearable slots.

17 April 2016

  • Release 9.66 - fixes and optimizations.
  • Optimized the lock handling for inventory related operations.
  • Fixed all outstanding issues with sifting.

17 April 2016

  • Release 9.65 - changes to the sifting mechanism.
  • The sifting mechanism has been altered in order to be able to apply filters in-order given a CSV list of actions to perform on some data returned by Corrade. You are now able to supply a CSV list of sift actions (as of this version: take, skip, each, match) by sift data to the sift parameter and Corrade will apply them in-order to any returned data. Note that his change will break scripts that rely on scripting. In order to maintain compatibility, in case you had a sift, REGEX key-value pair sent to Corrade, you will now have to provide to Corrade: sift, wasCSVToList([ match, REGEX ]). For more details please see the sifting tutorial on the Corrade project website.
  • Regression for finding primitives being a slow operation (re-release, please download 9.65 again in case the problem persists).
  • Minor changes to getrolesmembers command.

15 April 2016

  • Release 9.64 - feature additions and bug fixes.
  • A spurious bug has been fixed with Corrade crashing at startup during the notifications handling (thanks Suiseiseki).
  • The outfit notification has been added that is raised whenever an attachment or wearable is attached or detached from Corrade.
  • Small cleanups.

14 April 2016

  • Release 9.63 - change to detach command.
  • The detach command now additionally takes a type parameter that lets you detach attachments by slot, name or UUID.

13 April 2016

  • Release 9.62 - code maintenance, feature enhancements and bug fixes.
  • Fixed a bug concerning the changeappearance command that would not work in case the specified folder had sub-folders.
  • The attach and detach commands now also take a deanimate parameter that makes Corrade stop all animations before attaching, respectively detaching an object.
  • All the commands that deal with inventory items (folder, images, objects, etc...), depending on the parameter (usually item or folder) will now allow searching the inventory in order: by UUID, regular expression or string. This is performed by attempting to interpret the value passed to the item (or folder) key as an UUID and if that fails, the value is assumed a regular expression and if that fails, finally, the item is considered a string.
  • Reduced the work having to be done by any command that requires searching for a primitive. Instead of recursively searching for a parent, the range is considered instead, letting the sub-system add or remove items. This should result in an overall reduction of the search time required for Corrade to find a primitive.
  • Broke up a few commands in order to make the code more cursive and to make Corrade more responsive.
  • General overhaul of the code following optimization principles.

12 April 2016

  • Release 9.61 - optimizations and bug fixes.
  • Fixed the at command to properly take into account UTC timezones as per the documentation.
  • Corrected spelling mistake for the deletepick command.
  • The addpick and addclassified commands now properly set the texture for the pick, respectively classified (thanks Jym). Additionally, addpick and addclassified will now accept any UUID in case specified.
  • Optimized RLV commands as per Corrade commands and notifications.
  • Notifications are now cached for fast dispatch.
  • Multiple optimizations across the entire code-base that should make Corrade more responsive.

8 April 2016

  • Release 9.60 - minor changes and performance improvements.
  • The animation notification has been fixed and should not stall the bot on login (thanks Sidius).
  • Notifications now are sorted more efficiently for fast delivery.

5 April 2016

  • Release 9.59 - performance improvements and code maintenance.
  • Corrade used to block once it connected to the grid in order to load the inventory. This behaviour has been addressed such that loading the inventory should not block all Corrade threads.
  • Performance improvements across all the code-base.

3 April 2016

  • Release 9.58 - performance improvements and minor fixes.
  • The primitives and avatars notifications have been slightly optimized.
  • A bug concerning sending POST data when no output filters had been configured has been addressed.
  • Slight performance improvements for sending notifications.
  • More functions have been branched out to the OpenMetaverse library (update will require replacing the libs directory).
  • Group passwords now appear in Corrade.ini hashed with SHA1 - you can also send SHA1 hashed passwords from scripts to Corrade when sending commands.
  • The Configurator now attempts to load Corrade.ini from the same folder in case the file exists which should rule out some issues with misconfigured instances.

1 April 2016

  • Release 9.57 - command fixes and additions.
  • The parcelbuy command has been amended to include parcels that are sold to a specific avatar - notably Corrade.
  • The getparcelinfodata command has been added that allows you to query the parcel info class.

27 March 2016

  • Release 9.56 - hotfix release for deanimation.
  • Revert deanimate code such that Corrade properly deanimates when the deanimate parameter is supplied to supporting commands.

26 March 2016

  • Release 9.55 - feature additions.
  • The sit notification has been added that will allow you to determine when an avatar sits or unsits on, respectively from a primitive in the regions that Corrade is connected to (thanks Hintswen). The notification will send the keys new and old both of which represent the UUID of the primitive that the avatar sat on, respectively the UUID of the object that the avatar sat from. Note that this means that both keys will not necessarily be passed simultaneously except in the situation where an avatar makes a sit transition from a primitive to a different primitive. Otherwise, in cases where an avatar just unsits from a primitive then only the old key will be passed because there is no new primitive that the avatar is sitting on (because the avatar is standing).
  • Added the animation notification that allows tracking animation changes that Corrade experiences. For example, when sitting down on a primitive that triggers an animation, the animation notification will send the UUID of the animation and its sequence number.
  • Changed the routine that handles stopping all non-Linden animations in various situations where the deanimate parameter is involved.

24 March 2016

  • Release 9.54 - minor bugfixes.
  • The flyto command contained an unbalanced thruster on the upward direction such that any request to land after a flying sequence would have made the bot to bounce instead. This situation has been addressed and now Corrade can properly land.

23 March 2016

  • Release 9.53 - minor fixes.
  • The nudge and turn commands now respect flight status.

22 March 2016

  • Release 9.52 - Minor changes to commands and feature additions.
  • The angle parameter of the turn command has been renamed to degrees.
  • Corrade now benefits from take, skip and each (in order) post-processing commands when dealing with commands that deal with data aside from sift. The take post-processing command takes from the data parameter a certain number of elements from the returned CSV. skip will skip a given number of elements. each produces a stride from the returned CSV. The post-processing commands are applied in order: take, skip, each and finally sift.

20 March 2016

  • Release 9.51 - minor feature additions and corrections.
  • The nudge command now correctly uses NUDGE instead of movement agent control flags.
  • Add the turn command with possible directions left and right that takes an angle (in degrees) and rotates Corrade to the left, respectively right by the amount of degrees.

12 March 2016

  • Release 9.50 - code maintenance.

26 February 2016

  • Release 9.49 - changes to the database command, semantic fixes to the invite notification (thanks Sidius) and major code refactoring.
  • The database command has been changed such that Corrade now uses SQLite3 and allows sending SQL commands directly from scripts. If you are upgrading from a previous release and have used the database command please be aware that the command has changed entirely. Perform a backup on your databases and delete them so Corrade can create SQLite databases instead.
  • The invite notification now properly returns the UUID of the agent sending the group invite as well as the firstname and lastname. Separately, the group key has its value set to the group UUID that Corrade has been invited to.
  • More work on the wasOpenMetaverse library - functions moved over from the main Corrade source.

21 February 2016

  • Release 9.48 - minor fixes.
  • Lock handling has been improved for Corrade's caching function in all related commands.
  • Moved more services out to the wasOpenMetaverse library.
  • Fixed documentation for various resolver functions.

16 February 2016

  • Release 9.47 - bug fixes and code maintenance - to upgrade from a previous release, please make sure that you copy over the contents of the libs directory in this release because there are some significant changes to the libraries that Corrade uses.
  • In case an avatar is not in hearing range, then libopenmetaverse does not pass the message which leads to Corrade logging blank lines as well as corrupting the key-value data syntax. This issue has been addressed by making Corrade not pass the message key if there is no message to pass (thanks Sidius).
  • Split out the functions that Corrade uses to query grid services into a separate class wasOpenMetaverse and rearranged and optimized the calls. There should be a minor performance improvement in both CPU and RAM consumption.
  • Added compile-time conditionals in order to hopefully fix compilation under Linux and OSX as well as make Corrade progressive compatible under those platforms. Corrade should hopefully compile again using mono under those platforms and, in case you intent to run Corrade progressive under those platforms, please re-compile Corrade yourself such that the new code will be generated at compile-time.

28 December 2015

  • Release 9.46 - code maintenance.
  • Added locking for LookAt and PointAt effects. Made sure that effect UUIDs do not cross between the different viewer effects when using the setviewereffect command.
  • Added low-level file locking for all the file operations that Corrade uses. Reads are now performed under shared read locks and writes are performed under exclusive locks.

26 December 2015

  • Release 9.45 - minor feature additions and code maintenance.
  • It is now possible to delete beam and sphere effects.
  • Look effects are not removed now on deletion due to the fact that a viewer can have multiple viewer effects active (please see the documentation on setviewereffect for more details).
  • Converted more functions to precompiled expressions and used a calling mechanism to cache the compiled expressions.

16 December 2015

  • Release 9.44 - minor feature additions.
  • Extended the typing notification to include local chat typing messages.
  • Set the default offset to the zero vector in case there is no offset provided.

15 December 2015

  • Release 9.43 - minor fixes.
  • Group names containing the ampersand character (&) will now properly appear in the configurator.
  • Committed the logs command to the repository.

6 December 2015

  • Release 9.42 - fixes
  • The deanimate feature was fixed for the commands: autopilot, changeappearance, crouch, fly, gohome, jump, relax, sit, stand and teleport (thanks Sidius).
  • The group activation delay is now configurable using Corrade's configurator.
  • Various cleanups for the wasSharp library.

1 December 2015

  • Release 9.41 - code maintenance.

20 November 2015

  • Release 9.40 - code maintenance.
  • Use native Path.Combine since .NET 4.0 supports it and it should fix issues with running under mono.

19 November 2015

  • Release 9.39 - minor feature additions.
  • Added the logs command with which you can retrieve and search chat logs for: group messages, local messages, region messages and instant messages.
  • Moved rebake for RLV detach command closer to wearables where it makes sense.
  • Small cleanups.

8 November 2015

  • Release 9.38 - overhaul of Corrade and RLV commands dealing with wearing and unwearing inventory items (thanks Mark).
  • All commands that deal with attaching, detaching, wearing and unwearing inventory items have been overhauled such that Corrade does not suffer anymore from the libopenmetaverse penalty that hindered the functionality of manipulating wearables. In other words, commands such as getwearables should now work properly and return valid data.

6 November 2015

  • Release 9.37 - code maintenance and some performance enhancements.
  • Notifications are now branched out so we can treat them separately. This change may imply some minor performance enhancement since checking for notifications should be faster.
  • Branched out more functions to the wasSharp portable library.

4 November 2015

  • Release 9.36 - major overhaul of the notice command (please check the API page for changes) and some performance enhancements.
  • The notice command has been boosted in order to allow you to browse previous notices sent to a group by either Corrade or by agents with necessary permission. This change will break scripts slightly: if you want to update the scripts, please add the action parameter set to send in case your script was sending notices using the notice command. The notice command now takes a required parameter named action that can be set to either send, list, accept or decline. The send action is meant for sending a notice. The list action is meant for listing previous notifications. With action set to accept or decline you can now accept, respectively decline, notice attachments. For further information, please see the API page for the notice command.
  • There are important changes to the notice notification that now displays more data.
  • The commands gohome, stand, fly, crouch, autopilot, jump, relax, teleport and sit no longer stop all non-Linden animations before executing. Instead, these commands now take an optional parameter deanimate that will stop all non-Linden animations before executing.
  • Corrade now uses precompiled LINQ expressions which should offer a palpable performance boost.
  • All files have now normalized Windows-combatible newlines.

1 November 2015

  • Release 9.35 - code maintenance.
  • Switched the serializable dictionary to a PCL-compatible class.
  • Re-wrote the XML escape and unescape functions manually.

30 October 2015

  • Release 9.34 - overhaul of the changeappearance command and outfits handling (all credits go to Bintang and chakkichakki for extensive testing).
  • The changeappearance command now properly wears folders. The problem was traced to Corrade requesting the inventory through HTTP which seems fairly broken. Most of the functions have been overhauled and tested.
  • The throttle defaults have changed, and if you still experience issues, please update them with the following settings: set Total Throttle to 5000000, Resend Throttle to 2500000 and all the other throttles to 2500000.
  • Added a deanimate parameter to the changeappearance command that will attempt to stop all non-built-in animations before equipping the new outfit.
  • More work on outsourcing the Wizardry and Steamworks functions and classes to portable format.

28 October 2015

  • Release 9.33 - major code overhaul - please read the release notes.
  • Overall, there are multiple performance enhancements spanning the whole code-base which should make Corrade faster, snappier and also use less RAM and CPU.
  • This release breaks Corrade up into smaller pieces making most of the [WaS] functions portable and splitting the configuration into its own project as a shared library.
  • In case you are using the new Corrade configuration format starting with Corrade 9, please open up Corrade.ini and change the string CorradeConfiguration to Configuration and the string ENIGMA to ENIGMAConfiguration - there should be two instances of each. After that Corrade should start up fine and the Configurator should be able to read Corrade.ini.
  • Since there are changes to the libraries that Corrade uses, please copy the contents of the libs directory over the libs directory of your Corrade install - there should be two new files added wasSharp.dll and CorradeConfiguration.dll.

22 October 2015

  • Release 9.32 - code maintenance.
  • Simplified the Corrade thread pool.

13 October 2015

  • Release 9.31 - code maintenance and minor command adjustments.
  • The pay command now takes description as parameter for group and avatar entities instead of reason. The object entity takes as parameter name (usually the name of the object) instead of reason.
  • The getattachments command output now returns a CSV list of attachment point, by attachment name by attachment UUID. The attachment UUID being the new addition to this command.
  • The getprimitiveowners command now returns a flat CSV list of avatar name by avatar UUID by number of primitives. The UUID after the name being the new addition in this release.
  • The commands replytogroupinvite, replytoinventoryoffer, replytoscriptdialog, replytoscriptpermissionrequest and replytoteleportlure now check that the item to respond to is indeed managed by Corrade and additionally the item, if found, is removed.
  • Used Quaternion.Identity instead of converting from the zero vector.
  • Optimized the non-default animation cancellation on movement.
  • Extended locks for multiple items that should have been synchronized.
  • Multiple small fixes and cleanups across all the commands.

10 October 2015 (please re-download this release, it was cursed and we needed a bunch of priests to exorcise it back to normality, it's almost Halloween, after all)

  • Release 9.30 - more fixes to finding primitives (thanks Alexandrea).
  • In certain situations Corrade was not able to touch child primitives of attachments as they were not being scanned.

10 October 2015

  • Release 9.29 - feature additions and bugfixes.
  • An issue was fixed with Corrade not finding primitives when sitting on an object (thanks Alexandrea).
  • The sit command now can take an optional parameter called offset as an LSL vector that will make Corrade sit on the target with a given offset.
  • The teleport command now takes a turnto optional parameter as an LSL vector that will make Corrade turn and face a position after teleport.
  • Minor adjustments to setmovementdata and setcameradata command to trigger an update once parameters have been set.
  • This release adds AES encryption as filter for Corrade. The AES implementation is FIPS - 197 compliant, can take 128, 192 and 256 key-lengths and a 16 byte initialization vector and runs in CBC mode.

8 October 2015

  • Release 9.28 - feature additions.
  • Corrade now features a TCP notification server that will allowing you to create a stateful connection to Corrade in case you are designing a real-time applicaiton that needs to retrieve notifications. Up to now Corrade has been processing commands via the integrated HTTP web-server but notifications were sent via POST to a designated URL. The latter is not convenient in case you are designing a self-standing application where notifications should be posted to a connecting client when Corrade is unable to connect back to the client. For more information, please see the notifications TCP server documentation.
  • The design of the notification and callback queue has been overhauled to frequently refresh the queue and hopefully result in a cleaner shutdown.
  • The lowest priority has been removed from threads since we believe that the progressive version of Corrade is mature enough to handle thread prioritization on its own.
  • The configurator has been updated to add configuration options for the TCP server and to move the HTTP server's limits to their own page.

7 October 2015

  • Release 9.27 - feature additions and corrections.
  • The creategrass and createtree commands have been amended to allow the creation of grass, respectively trees when the land is group owned and Corrade has the necessary permissions.
  • A new command terraform has been added that allows Corrade to programmatically terraform land.
  • Added fetching the simulator parcels when getting the terrain height.

5 October 2015

  • Release 9.26 - minor feature additions (marks release of Vassal).
  • The getestatelist command now resolves UUIDs to names and passes back the name by UUID as a CSV in the data return key.

3 October 2015

  • Release 9.25 - code maintenance.

3 October 2015

  • Release 9.24 - minor adjustments, configurator now shows tool-tips for $~37s$ (thanks MsLarah)
  • The Configurator has been updated to display tool-tips for $~37s$ which should provide more time to read the messages.
  • The teleport command has been adjusted to return status 37559 (destination too close) faster when attempting a teleport (before querying grid-regions). This should speed-up scripts waiting for the teleport result.

2 October 2015

  • Release 9.23 - minor fixes and minor feature additions.
  • The flyto command now saves the movement state after moving.
  • The getregiontop command now correctly displays top colliders.
  • The teleport command now takes a fly parameter that will allow Corrade to fly once it reaches its destination. Additionally, the teleport command now saves movement state.
  • Very minor adjustments to the configurator (fonts, etc...).

1 October 2015

  • Release 9.22 - code maintenance and minor feature additions.
  • Corrade now also sends the client tag for viewers that use it. This setting is changeable in the configurator and it defaults to the UUID of the Corrade logo texture in Second Life (UUID: 0705230f-cbd0-99bd-040b-28eb348b5255).
  • Added hints and documentation for the settings in the configurator via tool-tips.
  • Added version string to the Corrade configurator.

29 September 2015

  • Release 9.21 - adjustment to replytoscriptpermissionrequest that maps the permissions to Corrade permissions.
  • The replytoscriptpermissionrequest command no longer requires only the Corrade interact permission. Instead, depending on the permission to be granted to the script, Corrade will first check that its own ACL takes precedence.

26 September 2015

  • Release 9.20 - fix for *nix (mono) HTTP web-server not starting (thanks Bintang).
  • mono does not support TimeoutManager which prevented the HTTP web-server from starting on *nix machines (Linux, BSD, etc...). The issue has now been resolved by conditionally using TimeoutManager depending on the platform that Corrade runs on. This unfortunately means that most HTTP timeout settings will be ignored under mono and the default values will be used. When in doubt, run Windows.

26 September 2015

  • Release 9.19 - feature additions.
  • Added the estateteleportusershome command that teleports avatars from the current estate home. The command takes an avatars parameter, as a CSV list of avatar UUIDs or avatar names and attempts to teleport them all home (granted estate manager rights) and returns a list of avatars that could not be teleported home. If no avatars key is provided, then all the avatars on the current estate will be teleported home.
  • Added the getestatecovenant command that returns covenant info for the current estate. The data returned is, in order: the covenant UUID, the estate name, the UUID of the estate owner and the timestamp.
  • Added the getregionterrainheights command that returns the estate heights as a CSV string of values, in order: Low SW, High SW, Low NW, High NW, Low SE, High SE, Low NE, High NE. Note that getregionterrainheights and setregionterrainheights have compatible input and output.
  • Added the setregionterrainheights command that sets the estate terrain heights given that the data key is set to a CSV of values, in order: Low SW, High SW, Low NW, High NW, Low SE, High SE, Low NE, High NE. Note that getregionterrainheights and setregionterrainheights have compatible input and output.
  • Added the setregioninfo command that takes the parameters: terraform (True or False), fly (True or False), damage (True or False), resell (True or False), push (True or False), parcel (True or False), limit - representing the agent limit; if not specified then set to 40, bonus - representing the object bonus; if not specified then set to 1 and mature (True or False).
  • Added the getregionterraintextures command that returns a CSV list of terrain textures as UUIDs, in order: low, middle low, middle high and high. This command is compatible with the setregionterraintextures.
  • Added the setregionterraintextures command that, given estate manager rights, sets the current region terrain textures. The command takes the textures as UUIDs supplied to the data key, representing, in order: low, middle low, middle high and high. This command is compatible with the getregionterraintextures.
  • Added the setregionterrainvariables that takes as parameters waterheight - representing the maximal height of the water for the current region (default 20), terrainraiselimit - that represents the maximal terrain raising limit (default 4), terrainlowerlimit - that represents the maximal lowering limit (default -4), usestatesun whether to use the estate sun or not, fixedsun - whether to use a fixed sun and sunposition (ranging from 6 to 30) representing the current position of the sun.

24 September 2015

  • Release 9.18 - minor feature additions.
  • The notice command for sending group notices now checks that Corrade has modify and copy permission to the attachment item to be sent. Additionally, the notice command now allows a permissions parameter to be specified which makes Corrade change the permission on the item before sending the notice.
  • The give command now optionally takes a permissions parameter and makes Corrade attempt to change the permissions on the item before sending it.

23 September 2015

  • Release 9.17 - code maintenance and minor bug fixes
  • The configurator did not properly read the idle timeout for the HTTP server. This has now been fixed.
  • Cleanups for the HTTP server and a better way of doing POST requests.

20 September 2015

  • Release 9.16 - hotfix for version and versionnew RLV commands - thanks MsLarah.

20 September 2015

  • Release 9.15 - code maintenance.
  • Move locks to inner scope.
  • Lock self on movement state restore.
  • Close connection on mismatched group for the HTTP server.
  • Transparently attempt to decompress gzip and deflate for all sent POST requests to Corrade's internal web-server.
  • Close connection after processing web request.
  • Read response from POST requests (as it should be).
  • Move state saves into internal blocks for “notify” command.
  • Save states inside the “setmovementdata” and “setcameradata” commands.

20 September 2015

  • Release 9.14 - feature additions and several fixes.
  • Only update inventory nodes if folders need an update.
  • Move locks into the cache structure.
  • Corrade now saves the movement to the state/Movement.state file. This means that in case Corrade logs out whilst flying, upon the next log-in Corrade will not fall down like all ill-inspired viewers. We are waiting to see how fast Linden Lab and the chipmunks making viewers will plagiarize this one given that Oz Linden seems to be an avid reader of our crap (even though your plagiarised our key-value data stuff, you STILL implemented it poorly!).
  • Re-added mute lists such that after the mute list is retrieved from the server, Corrade will honor it, meaning that it will not accept nor process any message originating from muted objects, their owners, or muted avatars.
  • Added the capability of specifying the timer resolution for scheduled group commands (by default Corrade has a resolution of 1 second). Note that you are most likely running a non-realtime operating system which means that setting this to a really small value will only torture the CPU.
  • Added the setcameradata command that is able to set the camera data (requires grooming permission).
  • Added the getcameradata command that is able to get the camera data (requires grooming permission).
  • Added the getmovementdata command that is able to get movement data (requires grooming permission).
  • Added the setmovementdata command that is able to set movement data (requires grooming and movement permission).

17 September 2015

  • Release 9.13 - hotfix for inventory offers (thanks Ryann)
  • This release fixes a bug with the inventory not being updated when a master sends an item. This is perhaps needed in cases where a master offers an inventory item to Corrade and then uses a script to act upon that item.

16 September 2015

  • Release 9.12 - feature additions and cleanups.
  • Added the at command which can schedule commands to be executed in the future. The at command takes as parameter a time stamp (in LSL notation, in the UTC time zone), an action either add, remove or list and a data parameter set to a full Corrade command. Corrade then schedules this command in the future and executes the command when the time is due. Additionally, all scheduled commands are stored in the state folder and are read upon Corrade's restart such that schedules that are in the past will still be executed as soon as Corrade is online. The configurator allows you to limit the amount of scheduled commands per group and the scheduler feature is only enabled if there is at least one group having the schedule permission.
  • Corrade now sends an LSL time stamp (compatible with llGetTimestamp) for all commands executed representing the time that the command has already executed. This may be beneficial to the linearisation of Corrade commands.

14 September 2015

  • Release 9.11 - feature additions.
  • Added the flyto command that makes Corrade fly towards a position in a given time duration getting as close to the vicinity of the position as possible with a specified affinity and finally turning flight mode on or off depending on whether fly is set to True, respectively False.
  • Corrade now processes commands on llOwnerSay since llOwnerSay is a private means of communication (thanks Elsa).

12 September 2015

  • Release 9.10 - code maintenance (the release should now be fully compatible with *nix systems running mono).

10 September 2015

  • Release 9.9 - removed globalization requirement entirely.

10 September 2015

  • Release 9.8 - fixes and enhancements.
  • The Linden globalisation has been removed since mono does not have support for it.

8 September 2015

  • Release 9.7 - code maintenance.
  • Various fixes and cleanups.

6 September 2015

  • Release 9.6 - code maintenance and minor feature addition.
  • Added copyright to files.
  • Added back the configuration command.
  • Minor cleanups.

6 September 2015

  • Release 9.5 - fix for commands not being ran at all due to SL mute list responses being too slow (thanks SectOLT). If you were having issues with Corrade not responding to commands, then please update to this version which should fix the bottleneck.
  • Removed the mute check since we will handle this separately in our own way - best to use as little libomv as possible since it is unreliable.

6 September 2015

  • Release 9.4 - code maintenance.
  • All commands and RLV behaviours are moved to their separate files.
  • Corrected an issue with the mute command not setting the flags properly.
  • Added the batchmute command that takes an array of mutes as a CSV string of mute name by UUID and proceeds to add the mutes as a faster variation of calling the mute command for all mutes to apply.

3 September 2015

  • Release 9.3 - fixes to the configurator (thanks MsLarah) and making Corrade able to deal with a large amount of groups (thanks Cesar).
  • The configurator now properly modifies the group parameters when editing a group. Similarly, the group name gets escaped in the background to XML entities and gets unescaped when reading a group - this eliminates issues with special XML characters having to be translated by the user. On the same note, the Masters addition has been revamped so the entered masters get modified dynamically.
  • Corrade now uses an alarm again to receive groups instead of an event - this will help case where Corrade is part of a large amount of groups and group operations should not fail. The change affects only commands that deal with group operations.

3 September 2015

  • Release 9.2 - fixes for mute-related commands.
  • The getmutes command has been fixed and corrected to also display the mute flags and the mute types.
  • The mute command has been fixed and extended to optionally take flags as the MuteFlags parameter.
  • Both functions are now masked by caching which should improve the speed of Corrade's responses to near instant responses.

2 September 2015

  • Release 9.1 - fixed some bugs with the Configurator not saving settings and cleaned-up the code for Corrade whilst testing the new configuration commands.

1 September 2015

  • Release 9.0 - A new major release of Corrade - now with a GUI configurator. :-)

This release adds a GUI configurator to Corrade that allows you to configure all Corrade's settings conveniently - as well as creating an MD5 hash when a password is typed in plaintext. On the other hand, the configuration Corrade.ini now comes in a different, albeit similar, format. Nevertheless, the Corrade Configurator will be able to load old configuration files using the Load Legacy... button and then save them to the new format using Save.... This change in style comes from the need to standardize Corrade's configuration as well as provide an easy start without having too much knowledge of Corrade's internals.

Functionally, there are two new commands setconfigurationdata and getconfigurationdata that are able to set, respectively get Corrade settings using scripts. The interface to changing Corrade's settings no longer requires knowledge of XPATH and all operations are performed using the same semantics as the rest of Corrade's data-related commands. 30 August 2015

  • Release 8.52 - code maintenance: many performance improvements.
  • Switched some getters to use events instead of alarms since alarms were not needed.
  • Cache the full group now instead of just the UUID.
  • Optimize outfit changing for speed.
  • Safety checks on most data-related commands.
  • Miscellaneous other fixes.

29 August 2015

  • Release 8.51 - added Linden Lab globalization.
  • This release adds localized globalization for Linden Lab. In other words, Corrade should now preserve the same locale that is used by Linden Labs with regards to the currency name (Linden Dollars), the date-time format that is used in LSL, etc...

29 August 2015

  • Release 8.50 - feature additions, fixes and code maintenance - this release switches to libomv 0.9.3 so if you update, please update the libs directory with the new libraries provided in the download; this release contains optional modifications to Corrade.ini.
  • Fixed some spurious errors on supplying parameters with empty strings.
  • Added the ban command that can now ban group members from a group. The ban command takes eject which, when set to True will act as a ban and an eject from the group. If eject is not set to True, then Corrade will just ban the avatar. The ban command takes as action ban, unban and also list that is able to show the avatars currently banned from joining the group.
  • Added the ping command that is accessible to every configured group and will make Corrade answer with pong.
  • Added more settings for Corrade's internal HTTP server which are added to the limits->server section of Corrade.ini - these settings influence default timeouts for the HTTP server.
  • A spurious bug has been fixed when updating the inventory recursively.

28 August 2015

  • Release 8.49 - code fixes and enhancements.
  • The configuration file watcher is disabled for the duration of saving the configuration file which prevents issues arising from double access to the file.
  • The notification state file now no longer carries a notification mask - this is now computed and stored internally. Furthermore, the notification file (state/Notifications.state) is being watched by Corrade for changes. It is now possible to change the notifications just by editing the notification state file and Corrade will load it automatically.
  • Notifications have been fixed to allow the proper removal of notifications - ie: write the file even if it is empty.
  • The notify command has been changed slightly -> the clear action now clears all the installed URLs for a notification type and a new action purge has been added that flushes all the notifications for a given command group.
  • Several minor cleanups pertaining to inventory loading and saving which should increase performance in the long run.

28 August 2015

  • Release 8.48 - fixes.
  • Corrade now properly returns notification not allowed when there are no group permissions for a notification instead of one or more errors occurred.
  • Status codes are now fixed and should work properly.

26 August 2015

  • Release 8.47 - code maintenance and feature additions.
  • Added the batcheject command that can be used to eject a list of avatars from a group which will be faster than using several eject commands.
  • Optimized wasEnumerableToCSV.
  • .Count.Equals(0) -> Any.
  • Simplification of wasGetInfo.
  • Removed locks from IsSecondLife.
  • Introduced locks for UpdateAvatars.
  • Added fast return for getattach RLV behaviour.
  • Parallelized the batchinvite command.
  • Fixed some Second Life limitations.
  • Added roles to the batchinvite command syntax.

23 August 2015

  • Release 8.46 - code maintenance.
  • Slim locks for the notify command.
  • Add exceptions for POST requests.
  • Optimize default comparisons.

23 August 2015

  • Release 8.45 - code maintenance.
  • Slimmed locks and added locks for various operations.
  • The membership notification has been fixed and a state file now tracks group members.

21 August 2015

  • Release 8.44 - feature additions.
  • Corrections to error messages.
  • Removed data-timeout for AgentInGroup - apparently the entire list is returned.
  • Added the batchinvite command that takes as input a CSV list of UUIDs or full-names passed to the avatars parameter and invites all the avatars in the list whilst returning avatar names and UUIDs that could not be invited. This has the benefit over invite that the group members have to be looked-up once which speeds-up the process a lot in case multiple avatars have been invited. As a counter-part, there will be a new PHP template available that allows you to mass-invite avatars.
  • invalid face index -> invalid face specified
  • Added the getprimitivelightdata command that can be used to query light parameters for any primitive.
  • Added the getprimitiveflexibledata command that can be used to query flexible data for any primitive.
  • Added the getobjectmediadata command that can be used to query media data for any object.
  • The getobjectpermissions command now returns a data key instead of permissions to follow the general Corrade output style.
  • Added the setobjectmediadata command that is able to set media data for any object.
  • Added the setprimitiveflexibledata command that is able to set flexible data for any primitive.
  • The setprimitiveshapedata command now first retrieves the shape of the primitive and then applies the parameters supplied by the data key - as opposed to starting off with a cube.
  • The setprimitivesculptdata command now first retrieves the sculpt data for a primitive before applying the parameters supplied by the data key.
  • Added the setprimitivematerial command that is able to set a primitive's material.
  • Added the setprimitivelightdata command that is able to set the light data for any primitive.

20 August 2015

  • Release 8.43 - feature additions.
  • Added default throttles to Corrade.ini where you can change the libopenmetaverse throttles for various parts of the library.
  • Corrade now additionally returns a status along with error and success in case a command failed. The new status key now contains an unique error code that should make branching easier from scripts. Please see the status codes section for the mapping of status codes to error descriptions.
  • Fixed a small problem with primitive and avatar detection since the previous versions only returned primitives and avatars from the current region in case the range was smaller than the draw distance.
  • Added a command creategrass that creates foilage at a specified location provided that Corrade is the owner of the parcel (Second Life limitation).
  • The setprimitivetexturedata command has been altered to take face instead of index as parameter and accept all and default as values which will set the texture data for all faces, respectively the default texture.
  • Added the getprimitivebodytypes command that retrieves the bodies that are built-in and can be supplied to the type parameter of commands such as createprimitive or setprimitiveshape.
  • Added the getstatus command with an entity parameter that must be set to description in order to retrieve the description of an error status.

18 August 2015

  • Release 8.42 - feature additions and corrections.
  • Added the grab command that is able to touch a primitive whilst account for the surface that is touched.
  • Added the getprimitivephysicsdata command that is able to query the physics data for a given primitive.
  • Added the setprimitiveflags command that is able to set some miscellaneous flags including physics and temporary properties.
  • The setprimitiveshapedata, setprimitivesculptdata, setprimitivetexturedata, primitivebuy and getprimitivepayprices commands now grab the simulator from the primitive and the region parameter has been removed and inferred from the found primitive.
  • The changeprimitivelink command no longer takes region as a parameter and additionally the command will check that all the supplied primitives are in the same region before attempting to link.

18 August 2015

  • Release 8.41 - feature addition and slight fix.
  • Eliminated the scale requirement for the createprimitive command. By default the scale will be $0.5m$ on all three axes.
  • Shapes -> Bodies.
  • Added the createtree command that can be used to create trees.
  • Various syntax corrections for commands.

18 August 2015

  • Release 8.40 - feature additions and fixes - please delete the state/Notifications.state file if there is one and add the control notification to your defined groups if needed.
  • Fixed a spurious bug created by inventory offers throwing errors due to the concurrency in the inventory update routine (thanks Hintswen).
  • Dialog notifications are now removed once they are responded to (thanks Hintswen).
  • Added the control notification which makes Corrade send llTakeControls requests from LSL scripts - the control notification has been added to Corrade.ini.
  • Added an Index parameter to routines that return data where that data is an array or a list. In such cases, Corrade will now always prepend the string Index and the index number of the array element in the returned output CSV. This affects all data-related commands.
  • Added a lot more type settings that can be used with data-related commands.
  • Removed parallelism limiters for querying primitives and avatars.
  • Corrade now explicitly turns the libopenmetaverse cache pruning off.
  • Corrade now does not throttle outgoing packets for grid-related functions.
  • A bug has been fixed that made Corrade send a trivial notification in case that notification was not meant for a specified group.
  • Added the command getprimitiveshapedata which returns a CSV list of parameters off the PrimData structure that reflect a primitive's shape. This output of this command can then be used with either the createprimitive or the setprimitiveshape command to create a new primitive, respectively to set the shape of an already existing primitive.
  • Added the command createprimitive that takes as input a CSV list of PrimData structure elements and creates a new primitive within the specified simulator. Note that this command is meant for the actual creation of new primitives; contrasted to rez which only rezzes an item from inventory in-world. Note that this command also bundles the default shapes in viewers and that by supplying the type parameter you can create a default primitive such as a Cube, Torus, etc... For more information, please consult the progressive API page.
  • Added the command setprimitiveshapedata that takes as input a CSV list of PrimData structure elements and modifies the shape of an existing in-world primitive. Note that this command also allows specifying a type parameter which will first create a default primitive such as a Cube, Torus, etc... And, if type was specified, then on top of that the command will apply the PrimData structure elements passed in the conventional data parameter.
  • Added the generic primitive shapes: cube, prism, pyramid, tetrahedron, cylinder, hemicylinder, cone, hemicone, sphere, hemisphere, torus and ring which can all be specified to primitive shape commands using the type parameter.
  • Added the getprimitivesculptdata command that queries the Sculpt structure of a primitive given a data parameter. The output of this command can then be used with the setprimitivesculptdata command in order to set the sculpt texture, etc...
  • Added the setprimitivesculptdata command that, given a data parameter containing elements of a Sculpt structure, will set the sculpt data for a specified primitive (ie: sculptie texture, mirroring, etc...)
  • Added the getprimitivetexturedata command that can query the Textures field of any primitive, optionally returning all the face textures by index. The returned data can then be used with the setprimitivetexturedata command to set the default texture of a primitive or the texture of individual faces.
  • Added the setprimitivetexturedata command that is able to set either the default texture or the textures of any face of any primitive given a supplied index parameter that represents the texture face.
  • Corrade now sets the simulator timeout as the services timeout specified in Corrade.ini.

17 August 2015

  • Release 8.39 - feature additions and code maintenance.
  • Removed locks around blocking queues (thanks Hintswen).
  • Properly handle unexpected thread exceptions from the Corrade thread pool.
  • Make Corrade log using the service name instead of a constant.
  • Added the ability to specify data as a CSV list of fields and properties as a key when installing a notification. When data is supplied, Corrade queries those fields in the resulting notification. This feature can be used to create your custom notifications and querying fields that are not returned by Corrade's standard notification system. For further information, please consult the progressive API page and the notification tutorial.
  • Added the ability to specify an afterburn as a CSV list of strings when installing notfications which will make Corrade send the afterburn for every notification that it sends. For further information, please consult the progressive API page and the notification tutorial.
  • Properly write logo from multiple threads.
  • The viewer effect expiration thread now starts conditionally from Corrade.ini (no changes to Corrade.ini are required in this release).
  • Stop showing dead I/O requests when the HTTP server is shut-down.
  • Used lists to prevent double enumerations.

17 August 2015

  • Release 8.38 - performance enhancements and fixes.
  • The getattachments command has been revised to avoid an issue with locking.
  • uint used instead of int when reading the configuration.
  • Start the HTTP server from the configuration block dynamically.
  • Use POST threads, configurable from Corrade.ini->limits->post->threads instead of blocking wait.

15 August 2015

  • Release 8.37 - major performance enhancements.
  • Most of the code-base was re-written to speed up commands over HTTP as well as from in-world scripts. This update is highly recommended and does not need any amendments to Corrade.ini.

15 August 2015

  • Release 8.36 - performance enhancements.
  • All logging is now performed asynchronously in separate threads (this can be configured from “Corrade.ini->limits->log->threads”).
  • Added a scheduler for Corrade that uses a genetic selection algorithm to throttle threads when Corrade is configured for multiple groups. If multiple groups are not configured then Corrade uses the default scheduling mechanism.
  • Extended exceptions over multiple blocks to prevent unexpected crashes on termination.
  • Added checks for initial notification firings and restricted building any notification if no groups have been configured for it.

13 August 2015

  • Release 8.35 - code maintenance - please delete the Notification.state file in the state/ sub-directory before upgrading and then re-install your notifications.
  • Reworked the notification sending routine to build objects only once which yields better performance.
  • Notifications for group messages and group membership events are now sent only to the concerned group instead of being broadcasted to all groups.
  • Added more points where avatars and groups can be cached.
  • Group checking for various commands has been amended to perform a search within the configured groups in Corrade.ini thereby making it possible to supply a hidden group.
  • The cache has been simplified, allowing the structure to do the work itself rather than adding items from various code points.

12 August 2015

  • Release 8.34 - code maintenance.
  • Protect file-system watchers with exceptions.
  • Move the thread protection in the Corrade thread spawning function.
  • Implement disposable for alarms and throttle timers.
  • Fix issues with attachments included in previous release hotfix.

10 August 2015

  • Release 8.33 - code maintenance: stability, fixes and enhancements.
  • The custom thread pool threads are now monitored for unexpected exceptions and will yield an error instead of shutting Corrade down.
  • Used IsSecondLife to determine current grid instead of in-place comparisons.
  • Generalized the user-agent strings sent by Corrade to the grid and whilst sending POST results and notifications.
  • Slimmed-down the notification lock by gathering groups with installed notifications and then constructing them.
  • Clean-up of name-handling routines in instant message processing handlers.
  • Telports and lures are now throttled as per specification in case the connecting grid is Second Life.
  • Auto-return time fixed to 999999 minutes as per specification.
  • Changed services dependencies to Netman and added an extra dependency on the eventlog.

9 August 2015

  • Release 8.32 - code cleanups and feature additions.
  • Switched to stream operations for more file operations including standardizing everything to UTF8.
  • Enhancements to the HTTP server, optionally allowing for KeepAlive on incoming connections which can be toggled from Corrade.ini (by default on).
  • Used async for POST requests originating from Corrade.
  • POST requests originating from Corrade now also take the default system proxy into account.
  • Changed the user agent to reflect the domain name change from was.fm -> grimore.org.
  • Various small fixes and code maintenance.

7 August 2015

  • Release 8.31 - fixes.
  • Use UTF8 to be consistent.

6 August 2015

  • Release 8.30 - code maintenance and feature additions.
  • Group names are now treated as case insensitive.
  • Added a bunch of checks for SecondLife limitations with corresponding errors.
  • Added the changeprimitivelink command with actions link and delink which is able to link and unlink primitives. In case of linking primitives, the first primitive in the list will become the root.
  • Added the primitivebuy command that can be used to buy a primitive.
  • Added the getprimitivepayprices command that returns a CSV list of pay prices for a primitive with the default pay price being first in the list.
  • Several minor cleanups.

5 August 2015

  • Release 8.29 - fixes and code-maintenance.
  • Added some NULL checks in various parts of commands.
  • Re-added the set action for notify which, unlike add, overwrites any notifications to the new one being supplied. This should make templates work again as well as provide a shortcut for smaller and simpler scripts that do not want to track the URL pool.

26 July 2015

  • Release 8.28 - fixes.
  • The asset cache directory has been moved to cache/assets - if you upgrade, you need to create the directory cache/assets and delete the directory openmetaverse_data/cache.
  • Textures are now downloaded in J2K and only after they are stored in the cache, they are then converted to the required format.
  • The cache command now additionally purges the asset cache.

26 July 2015

  • Release 8.27 - code maintenance.
  • Protect notifications with exceptions.
  • Add support for IArray types when recursing over properties.

23 July 2015

  • Release 8.26 - fix: allow downloading any asset regardless if it is in inventory or not.

22 July 2015

  • Release 8.25 - code maintenance.
  • Inventory offers are not stored over restarts anymore since that is simply not possible.
  • Code reductions on most commands: resolve group name to UUID instead of using configured groups.

5 July 2015

  • Release 8.24 - feature additions.
  • Added the getgroupmemberdata which is able to query data about group members.
  • All commands that deal with items have now been simplified to accept both name and UUIDs where relevant (for example, sending group notices by specifying an UUID instead of a name will work now - thanks FireEyes Fauna).
  • Several smaller cleanups and code reductions.

22 June 2015

  • Release 8.23 - fixes and performance enhancements.
  • Avoided deadlocks for the commands getmemberroles, getrolemembers, and gettitles (thanks Drake).
  • Renamed RoleNameToRoleUUID to RoleNameToUUID.
  • RoleNameToUUID and RoleUUIDToName now take the Everyone role into account.
  • Some fixes to the command syntax.
  • Several cleanups throughout the code.

8 June 2015

  • Release 8.22 - feature additions.
  • Some commands now take an optional region parameter: getregiondata, getparcellist, parcelreclaim, parcelrelease, parceldeed, parcelbuy, parceleject, parcelfreeze, returnprimitives, getprimitiveowners, getparceldata, setparceldata, getregionparcelsboundingbox, rez, getavatarpositions, terrain, getterrainheight since Corrade is able to see in neighboring simulators.
  • The command replytoscriptpermissionrequest now takes an additional parameter region set to the region name.
  • Added a new command getnetworkdata that returns network manager data.
  • The join command now checks whether joining a group would exceed the maximum number of groups that an avatar can join.
  • A new command getconnectedregions has been added added that returns the name of all connected simulators.
  • The parcelbuy, creategroup, addclassified commands now check for economy Corrade permissions if the land requires currency
  • Added a command getcommands that lists all available commands given the group's access level.
  • Added a command getcommand that is able to show the syntax and permissions of a command referred to by the name parameter.

7 June 2015

  • Release 8.21 - changes to commands, feature additions and code cleanups.
  • Corrade now supports multiple URLs per notification such that you can send the result of a notification to multiple URLs. As such, the notify command has been altered: the set action becomes add, the get action becomes list and a new action remove has been added which allows you to unbind from a notification given a notification name and an URL.
  • The serializable dictionary implementation has been replaced with a more powerful one that will allow the serialization of hash sets.
  • Some minor code-refactoring has been performed to handle potential issues with null exceptions (thanks Vero).

5 June 2015

  • Release 8.20 - feature additions.
  • Added the ability to specify Corrade's exit code in Corrade.ini - amongst others, this feature will allow you to set a negative exit code such that Windows will consider the Corrade service to have failed and will restart Corrade without requiring a manual restart on normal termination.

31 May 2015

  • Release 8.19 - hotfix for setparceldata to allow setting parcel flags (please see the API on the setparceldata command).
  • The setparceldata was unable to set parcel flags and this release adds the parcel flags structure to the function responsible for setting data. Note that you can set the parcel flags by supplying a CSV list of flags or you can also supply an integer with the values of the flags ORed.
  • Added requirement for minimal supported runtime.
  • Icon changed. :-)

30 May 2015

  • Release 8.18 - hotfix for finding parcels.
  • The parcel search has been amended to find the closest matching parcel.
  • The setparceldata command no longer checks for estate rights since it is irrelevant.

28 May 2015

  • Release 8.17 - fixes.
  • When running under Windows, Corrade now properly uses the name of the service as the source for the event logs.
  • Group names with an ampersand (&) in the name are now processed correctly (thanks Drake).

27 May 2015

  • Release 8.16 - performance optimizations.
  • Corrade now caches all the assets that it is told to retrieve via the download, exportxml and exportdae commands in order to speed-up download requests.
  • A new timer decay has been added called weighted and Corrade now uses that by default instead of the former arithmetic decay type. This new decay type should yield better results at a very slight penalty cost over the previous default algorithm.
  • A bug in the directorysearch command has been fixed that should allow for more results under the configured decay type and data timeout.

24 May 2015

  • Release 8.15 - switched to RFC1738 URL escaping for both incoming and outgoing data by default - note that this may break scripts and needs an RFC1738-compatible URL escape and unescape (you can find some on URL and URI encoding page) (thanks Kovu)
  • All input and output is now escaped using RFC1738 semantics. Although this may break current scripts, it is a necessary move since Corrade sends application/x-www-form-urlencoded data which must be escaped and unescaped using RFC1738. The LL API commands llEscapeURL and llUnescapeURL are not compatible with RFC1738 (since llEscapeURL and llUnescapeURL conform to RFC3986 which is actually an URI encoding making the name of the functions misleading) and you need to use either our implementation or your own implementation based on the RFC's specification.
  • Corrade's configuration file Corrade.ini now includes both decoders for RFC1738 and RFC3986 just that RFC1738 is chosen as the new default. You can always switch back to RFC3986 as needed during the transition.
  • When receiving HTTP requests and sending HTTP responses, Corrade automatically adjusts the content-type to whatever you have chosen as the last output filter. In other words, if RFC1738 was the last selected output filter, then the content-type is set to application/x-www-form-urlencoded otherwise it sets the content-type to text/plain.
  • The change to use RFC1738 by default now allows submitting forms directly via POST to Corrade. That means that pre-processing the form is no longer needed. This affects frontends such as node.js which post forms using the application/x-www-form-urlencoded content-type and thus RFC1738 by default.

24 May 2015

  • Release 8.14 - bug fix.
  • Add the dot when using exportxml and exportdae commands when format is specified (thanks Clara).

23 May 2015

  • Release 8.13 - command rename, fixes and feature additions.
  • The move command has been renamed to autopilot.
  • The download command now accepts an additional path parameter which, if specified, will save the asset data to that path instead of returning the binary data.
  • The exportxml and exportdae commands now normalize the exported file name such that objects with conflicting names will no longer trigger an error (thanks Clara). Furthermore, a path parameter has been added, which, if specified, will save the export to that path instead of returning the binary data.

19 May 2015

  • Release 8.12 - feature additions, corrections and command changes.
  • The getprimitivesdata command has been fixed such that it will now return all the primitives worn by avatars instead of objects.
  • For all commands that required the range parameter, this parameter has now been made optional and, in case of omission, Corrade assumes that the range is the current view distance (configurable in Corrade.ini). This affects the commands: sit, give, touch, getprimitivedata, derez, setscriptrunning, getscriptrunning, getprimitiveinventory, getprimitiveinventorydata, updateprimitiveinventory, getparticlesystem, setviewereffect , setobjectpermissions, objectdeed, setobjectgroup, setobjectsaleinfo, setobjectposition, setobjectrotation, setobjectname, setobjectdescription, exportxml and exportdae
  • The objectdeed, setobjectgroup, setobjectsaleinfo, setobjectposition, setobjectrotation commands now perform a check to make sure that the specified item is an object and not a primitive part of a link-set.
  • The setobjectname command has been renamed to setprimitivename.
  • The setobjectdescription command has been renamed to setprimitivedescription.
  • Conversely to the previous point, the following homologous commands have been added: setprimitivepositon and setprimitiverotation which operate on primitives (whether part of a link-set or not) rather than entire objects.
  • The setobjectpermissions command now use Corrade's permission notation - please see the scripting considerations page for details.
  • The converse command getobjectpermissions has been added that returns a Corrade permission mask for a specified object.
  • A new command setobjectscale has been added with an optional parameter uniform has been added that allows setting an object's size (along with all the primitives of the link-set).
  • Conversely, new command setprimitivescale has been added that can scale primitives regardless whether they are part of a link-set or not.
  • A new command away has been added with the possible actions enable, disable and get which allows setting and getting Corrade's away status.
  • The run command has been fixed to properly set always-run and now additionally benefits from a get possible action that returns whether always run is currently enabled or not.
  • A new command busy has been added with possible actions enable, disable and get which allows setting or getting Corrade's busy status.
  • A new command typing has been added with possible actions enable, disable and get which allows setting or getting Corrade's typing status.
  • Corrade now only stops animations that are not default animations.

14 May 2015

  • Release 8.11 - feature addition, enhancements and bug-fixes.
  • Some scripts seemed not to work when they pass a group UUID instead of a group name to Corrade. This situation has been resolved and now Corrade should accept group UUIDs from scripts as well.
  • Changed the algorithm that searches for avatars and primitives to a more robust mechanism that should be much faster.
  • The getprimitives command has been removed since it has been made redundant by the getprimitivesdata command. For an equivalent, please use the getprimitivesdata command which is more powerful.
  • The getavatarsdata command now takes entity as a parameter and is able to reduce the search scope to: a given range, a parcel, a region, or an avatar. There are major changes to this command that may break scripts relying on it.
  • The getprimitivesdata command now takes entity as a parameter and is able to reduce the search scope to: a given range, a parcel, a region or an avatar. There are major changes to this command that may break scripts relying on it.
  • A command exportxml has been added that is able to export an object to an XML file as well as download all the necessary textures for ulterior import. The command takes as parameter a format and can optionally download the images in the given format. When the format is not specified, the exportxml command defaults to JPEG 2000 Codestream. Since multiple files may be part of the export, the exportxml command bundles all the relevant files in ZIP file, Base64-encodes the ZIP file and then transmits the data using the usual Corrade output. In order to access the ZIP file, you need to retrieve the Base64-encoded data, then use Base64 to decide it and save it to a file - that file will then be a ZIP file that can be decompressed with any compatible program.
  • A command exportdae has been added that is able to convert any object (a single object or a link-set) to Collada DAE mesh as well as downloading all the relevant textures in any specified format - if the format is not specified the command defaults to JPEG 2000 Codestream. As with the exportxml command, the DAE file and the necessary textures are bundled in a ZIP file, Base64 encoded and sent using Corrade's regular output. In order to obtain the file, you will need to store the Base64 encoded output to file - that file will then be a ZIP file that can be decompressed and all the items can be retrieved.

11 May 2015

  • Release 8.10 - performance enhancements.
  • Lower the priority of non-essential threads.
  • Switch to blocking-queue for notifications and callbacks.
  • Lower the default throttle for notifications and callbacks.
  • Background inventory update further hopefully solving connection issues for hosts with a single CPU.

11 May 2015

  • Release 8.9 - changes to command and enhancements.
  • Corrade now extends the range automatically when a range is specified for command that deal with primitives and avatars.
  • A range parameter has been added to the getavatardata command.

10 May 2015

  • Release 8.8 - command alteration.
  • The getavatarsdata command can now be used to query profile data. The additional primitive UUID has been removed from the output.
  • The getprimitivesdata no longer returns an additional primitive UUID.

10 May 2015

  • Release 8.7 - fixes and optimizations.
  • Switched to parallel inventory fetch.
  • Fixed a potential exception in the primitive finding routine.

10 May 2015

  • Release 8.6 - corrections and feature additions.
  • The routine to locate primitives has been replaced by a slightly slower variant that ensures that all primitives are scanned. There seems to be a Linden limitation that imposes a restriction on how many primitives can be selected at once. After this change, Corrade works around that limitation at the cost of speed. Remember that when you refer to an item using various commands, you can always pass an UUID which makes the search very much faster.
  • The avatars notification now additionally passes the firstname and lastname of the sensed agent.
  • The primitives notification now additionally passes the owner of the sensed primitive.
  • A command has been added named getavatarsdata which allows you to query avatar data en-block. The command takes an optional parameter position which allows you to restrict the search area to a parcel.
  • A command has been added named getprimitivesdata which allows you to query primitives data en-block. The command takes an additional parameter position which allows you to restrict the search area to a parcel. Please note that this command is per Linden-protocol a very slow command and that if, for example,you are attempting to get the owners of the primitives, you should rather use the getprimitiveowners command which, although requiring land permissions, is very fast.

6 May 2015

  • Release 8.5 - code maintenance.
  • Slimmed the locks even more, used backing-fields for the configuration, optimized some parallelized operations and some other minor code cleanups.

6 May 2015

  • Release 8.4 - performance enhancements.
  • Reintroduced slim locks from ancient releases. This time every client asset is locked down individually, while the rest of commands are allowed to freely execute in parallel. This should make Corrade very fast by comparison to previous releases and hopefully it will not break any functionality.

5 May 2015

  • Release 8.3 - adjustments and additions.
  • Corrade is now fully-supported on FreeBSD (and much more stable apparently). The necessary libraries have been compiled and added to the distribution.
  • The getregiontop command has changed to return all the results by default (previous behaviour was the first top 5 results). The output has been changed to be closer to what one would expect from a viewer; in order: score, task name, task uuid, owner name and the position.
  • Failure to start a process with the execute command now results in a friendly Corrade error.
  • Reintroduced forced termination for hanging processes.
  • Multiple bug-fixes on all levels and performance enhancements.

4 May 2015

  • Release 8.2 - feature additions.
  • Corrade now saves inventory offer states between restarts such that Corrade can announce via notifications that an item was either accepted or declined after a restart (thanks Clara).
  • A new parameter format has been added to the download command that can be supplied an ImageFormat in order to be able to download textures as PNG, JPEG, etc... Instead of the JPEG2000 format which Second Life uses. This addition should help scripters that use Corrade's HTTP interface and have difficulties in converting JPEG2000 textures to a different format. Similarly, the upload command now also accepts Base64-encoded PNG, JPEG, GIF, etc... And converts them to JPEG2000 on the fly.
  • Several cleanups and optimizations to the entire code-base.

1 May 2015

  • Release 8.1 - stability enhancements.
  • Unix specifics were removed since they caused segmentation faults on various systems. Corrade now logs to its own log-file found in the logs directory on Unix and benefits from the implementation of mono-service to perform clean shutdowns. This stability fix should prevent random SEGVs on Unix - apparently, mono wrappers are still unstable.

1 May 2015

  • Release 8.0 - initial release of the progressive series.
  • Cleanups and parallelization of LINQ queries which should improve performance drastically under the .NET 4 framework.


secondlife/scripted_agents/corrade/changelog/progressive_changelog.txt · Last modified: 2017/11/30 20:23 by Wizardry and Steamworks

Access website using Tor

For the copyright, license, warranty and privacy terms for the usage of this website please see the license and privacy pages.