Closed Thread
Results 1 to 4 of 4

  Click here to go to the first Rift Team post in this thread.   Thread: 1.9 Live Addon Changelog

  1.   Click here to go to the next Rift Team post in this thread.   #1
    Rift Team
    Join Date
    Oct 2010
    Posts
    927

    Default 1.9 Live Addon Changelog

    NEW FEATURES:

    * The addon system is no longer in beta!

    * Many enduser experience improvements!
    - We've added an Addon Error dialog that will display a user-friendly warning about addon errors. This provides an easy way to ignore errors, an easy way to disable broken addons, and an easy way to copy entire error messages to your clipboard. This also makes broken addons a bit noisier and more irritating. If your addon is broken, we recommend making it un-broken. This dialog can be disabled in Settings, under the Misc section.
    - We've changed the standard addon error spam to give a user-friendly single line, with a link that can be clicked for more details. This behavior can be overridden in Settings, under the Misc section.
    - The addon manager is now accessible through the escape menu. It is no longer necessary to return to character select in order to change addons, although changing addons will still trigger a UI reload.
    - Implemented the Addon Performance Watchdog. The Watchdog will monitor Lua execution performance. If a single Lua environment call (generally defined as "all the handlers of an event") takes more than a predefined amount of time (currently 0.1s), it will print out a performance warning once the execution is done. If it takes more than a much longer amount of time it will begin rapidly injecting errors into that execution, in the hopes to return control to the user. Note that this isn't intended to be a clean exit or a clean recovery - this is a hack attempt to forcibly keep the game playable. For addons which need large chunks of CPU in order to be initialization, Command.System.Watchdog.Quiet() can be used to relax the watchdog for a single event. Finally, we've also introduced Inspect.System.Watchdog() that tells you how much time you have remaining until warnings are generated, but we strongly don't recommend using this for performance-sensitive things - it is not 100% accurate.

    * Reworked the unit availability system. The original intention was that units would be either "available" or "unavailable". It turns out reality is more complicated than that - many units also have a partial availability, such as partymembers in a different map, or the player themselves before login. Added Event.Unit.Availability.* to notify you on availability changes. Added .availability member to Inspect.Unit.Detail() to monitor current availability. Added Utility.Unit.Availability() which outputs the members you can expect to see in various availability levels. This should make it possible to accurately track buff changes on partymembers.

    * Added the ability to handle limited HTML in Text elements. Right now, this is limited to <b>, <i>, <u>, <font color="#rrggbb">, and <a lua="scriptToBeRunOnClick()">. Support for more tags may be added later. See documentation for Text:SetText() for details.

    * Added Inspect.Setting.*, which can be used to inspect the user's game settings.
    * Added Inspect.Console.*, which can be used to inspect information about the user's open console windows.

    * Added Command.UI.Error(), which can be used to bring up the error window based on an error ID.
    * Added Command.Console.Display(), which can be used to display plaintext or HTML text in any console window.
    * Add Command.Item.Standard.*(). These functions are defined to behave exactly like the standard UI behaves, and should make it easier to implement inventory addons of various kinds. (Known issues: These currently do not work properly with wardrobe slots, and dropping an item on an inventory bag will result in opening the bag instead of the intended behavior. These will be fixed in an upcoming hotfix.)

    * Added Inspect.TEMPORARY.Experience() and Event.TEMPORARY.Experience(). Like *.TEMPORARY.Role(), these will probably be moved at some point in the future, but they won't be removed until the same functionality is available elsewhere.
    * Added Event.Unit.Detail.Radius.

    * Added clientside storage of recent addon errors. The ID is provided in Event.System.Error(), and Inspect.System.Error.Detail() can be used to inspect them. Note that there is an upper limit on how many will be stored, and old ones will be thrown away gradually.
    * Added Inspect.Time.Server().

    * Inspect.Addon.Detail() now includes name, nameShort, and description fields, to aid in displaying information for internationalized addons.
    * Inspect.Documentation()'s machine-readable mode will now include information on whether a given function is disabled for deprecation reasons.

    * Added UI.Native.Conquest, UI.Native.Streaming, and UI.Native.TraySocial.

    * RiftScrollbar and RiftSlider now support ranges where the min is equal to the max.

    BREAKING CHANGES:

    * Event.Cursor(), Inspect.Cursor(), Event.Tooltip(), and Inspect.Tooltip() will immediately use the new style of Ability ID. Look at the lower "Upcoming Breaking Changes" section for more detail.

    UPCOMING BREAKING CHANGES:

    * The old 'a' style of ability ID is going away! Ability IDs are taking on a new format. If the old ability was a0000000012345678, the new ability ID will be A12345678xxxxxxxx, where the x's will be some hex value. This is going to be a gradual changeover.
    - First, all existing *.Ability.* functionality has been duplicated into *.Ability.New.* functionality, and "ability" return members will be supplemented by "abilityNew" members.
    - In a future patch, the old *.Ability.* functionality, and "ability" members, will be removed.
    - We'll then wait for another patch, then re-introduce the *.Ability.* functions with new behavior.
    - Finally, we'll remove the now-redundant *.Ability.New.* functions. Note that the *.Cursor.* and *.Tooltip.* APIs will be changed immediately, as per the above "Breaking Changes" section.

    * "So, what should I do about this?"
    - If your addon does not deal with abilities in any way, you don't need to worry about this.
    - If your addon deals with abilities, but does not store ability IDs either in an internal database or in SavedVariables, then you'll need to replace any *.Ability.* API calls or event hooks with *.Ability.New.* API calls and event hooks. Later, you'll need to change that back. This should be all the changes required.
    - If your addon uses an internal ability database for player abilities, you'll also need to convert your database over. This can be done by calling Inspect.Ability.New.Detail() for each item in your database and replacing the old-style key with the idNew member of Inspect.Ability.Detail().
    - If your addon stores player ability IDs in SavedVariables, you'll need to convert your database over on each user's computer. This can, again, be done via Inspect.Ability.New.Detail(). Note that the ability to read old-style ability IDs will be going away eventually - if you wait until the last minute to implement this, any user who doesn't get your update may end up unable to convert their old settings.
    - If your addon stores non-player ability IDs, either as a database or as SavedVariables, and you don't have an easy way to get new ability IDs, then you may want to implement your own matching function. As mentioned, an ability of format a0000000012345678 will now show up as A12345678xxxxxxxx. You can therefore convert new-style ability IDs to old-style ability IDs easily, although the reverse conversion is not possible.
    - The old functions will remain fully functional until 1.10. They may generate warnings or require user intervention to work after that. Fix your code sooner, rather than later!

    * Event.Unit.Available and Event.Unit.Unavailable are going away, and being replaced by the new Event.Unit.Availability.* hierarchy. See New Features for details.

    * print_raw is now deprecated and will be removed. Use Command.Console.Display() instead.

    NONBREAKING CHANGES:

    * Added a valid Addon directory under My Documents. Rift will use this new directory if it has things in it. If not, it will check the old directory under the Rift install location. If neither location has addons installed, it will use the new location. This shouldn't break any existing installations, although new addon users will have their addons stored in a new place. Addon update tool developers should be aware of this change!

    * Updated Luajit to 2.0b9p1 (plus one cherrypicked patch from 2.0b10 that you don't have to worry about.)
    * Slightly reduce the addon system's memory usage.

    BUGFIXES:

    * Multiple uses of an addon texture will no longer result in that texture being loaded multiple times.

    * Fix issues with using Command.Cursor() on an equipped item.
    * Fix various problems with using Command.Cursor() in a mouse button event handler.
    * Fix problems with calling Command.Cursor() on bank items or guildbank items.

    * It should now be possible to create non-buyout auctions with Command.Auction.Post().
    * Fix a glitch preventing the "stack" and "stackMax" members from being included in Inspect.Item.Detail() calls when querying a guild bank item.
    * Command.Unit.Menu() will now function properly on logged-out partymembers.
    * Event.Ability.New.Cooldown.Begin will now show the time remaining on new cooldowns, not the total time. This should be the same in almost all situations but fixes a bug where talented Pyromancers would see 1.5s for their global cooldown.
    * The persistance library, including Utility.Serialize.* and SavedVariables, will now properly deal with tables that contain more than 65,535 items. Note that this will result in extraordinarily ugly and non-human-readable output for large tables.
    * "@mouseoverui" targeting will now properly understand the addon system.
    * Fixed an issue with the Pyromancer Spark talent causing the Cooldown.Begin events to occasionally give incorrect negative numbers.

    * Fix problems with the parameter type list shown on error when the first parameter is a string or a table.
    * Inspect.Documentation() will no longer incorrectly stash deprecation information in the signatures table.
    * Memory usage will no longer be significantly inflated after loading large SavedVariables files. Additionally, the garbage collector will now cycle through large addon environments somewhat faster.

    DIFF:

    Code:
    Inspectors:
    	Inspect.Ability.New.Detail
    	Inspect.Ability.New.List
    	Inspect.Console.Detail
    	Inspect.Console.List
    	Inspect.Setting.Detail
    	Inspect.Setting.List
    	Inspect.System.Error.Detail
    	Inspect.System.Watchdog
    	Inspect.TEMPORARY.Experience
    	Inspect.Time.Server
     
    Commands:
    	Command.Console.Display
    	Command.Item.Standard.Drag
    	Command.Item.Standard.Drop
    	Command.Item.Standard.Left
    	Command.Item.Standard.Right
    	Command.System.Watchdog.Quiet
    	Command.UI.Error
     
    Utilities:
    	Utility.Unit.Availability
     
    Native frames:
    	UI.Native.Mentor
     
    Events:
    	Event.Ability.New.Add
    	Event.Ability.New.Cooldown.Begin
    	Event.Ability.New.Cooldown.End
    	Event.Ability.New.Range.False
    	Event.Ability.New.Range.True
    	Event.Ability.New.Remove
    	Event.Ability.New.Target
    	Event.Ability.New.Usable.False
    	Event.Ability.New.Usable.True
    	Event.TEMPORARY.Experience
    	Event.Unit.Availability.Full
    	Event.Unit.Availability.None
    	Event.Unit.Availability.Partial
    	Event.Unit.Detail.Radius
     
    Parameter types:
    	console
    	error

  2.   Click here to go to the next Rift Team post in this thread.   #2
    Rift Team
    Join Date
    Oct 2010
    Posts
    927

    Default

    NONBREAKING CHANGES:

    * fileNotFound errors in embedded addons will now be credited to the addon that embedded it. (Note for those receiving error reports: old errors will take about a week to flush out.)

    BUGFIXES:

    * Improvements to cross-shard addon messages. This system probably isn't fully working yet.
    * Fix performance issues with frequent calling of Inspect.Unit.Castbar().
    * Fix behavior issues with Command.Item.Standard.Left() used to target inventory bags while holding an item.
    * The "Addons" entry will now show up in the system menu in the start tray.
    * Mail and Auction events will no longer fire if the appropriate interaction is unavailable.
    * Reloading the UI with an item in your cursor will no longer cause crashes.
    * Command.Message.Send() now functions properly again.

  3.   Click here to go to the next Rift Team post in this thread.   #3
    Rift Team
    Join Date
    Oct 2010
    Posts
    927

    Default

    NONBREAKING CHANGES:

    * The Addon Watchdog now counts execution time per event handler instead of per event. This means addons will no longer be influenced by the behavior of previous addons.
    * The result of Inspect.System.Watchdog() is now more reliable.

  4.   This is the last Rift Team post in this thread.   #4
    Rift Team
    Join Date
    Oct 2010
    Posts
    927

    Default

    NONBREAKING CHANGES:

    * The Addon Watchdog now counts CPU time instead of wall time. This should result in elimination of false positives caused by a heavily multitasking computer or by an unfortunately-timed context switch.

Closed Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts