Yahoo! Widget Engine  3.1
General Engine Changes
* Added support for a new flat file format for Widgets which permits signing or Widget code to enhance security.
* Added preference to control whether or not the Widget Engine automatically starts up when your system starts.
* Implemented importNode() from the Level 2 DOM spec.
* Implemented widget.extractFile( path ) API to allow people with flat file Widgets to extract files for use. For example, we need this internally to play sound files since we can only play sounds that are in files. This API extracts files to the 'widget data' folder. It does not extract folders. Also, this API always overwrites any other file in the widget data folder of the same name. It is up to the caller to deal with this.
* Implemented new security block. For yahooLogin() to work now, you must put the APIs you connect to in this block.
* We now warn if you have multiple preference groups with the same name defined in XML.
* Found/fixed a bug where no tags or attributes were ever being reported as unrecognized.
* Allow null parameter to be passed to Send() in XMLHttpRequest for compatibility with other browsers.
* Fixed bug in replaceChild() where we weren't properly throwing an exception if you attempted to move a node from one document to another.
* Fixed crash when calling string() in XPath.
* Modified the invalid character exception in the XML Parser to print out the hex value of the bad character to give the caller a clue what it found that it didn't like.
* Fixed problem where 'this' was not being set in a context menu's onSelect function.
* Fixed issues when garbage collecting where we might try to create objects.
* Allow -1 as a valid h/vOffset for an object. If you want true 'auto' behavior, set the offsets to null. Also, if you don't specify a h/vOffset, the Widget will return null, not -1.
* Added widget.getLocalizedString().
* By popular demand: implemented /clear in the debug window.
* Put up an alert if we encounter a Widget with no
* Added /tracethrow to the debug window to help figure out where exceptions come from.
* Added widget.locale to get the current language/locale that a Widget is running in.
* Fixed problem with COM inherited interfaces. It was impossible to call an inherited method. Also fixed problem where if we encountered a method defined to have a return value as a parameter we would barf. No more barfing. We also handle setting properties a bit better (more numeric types are supported).
* Fixed problem where animations weren't running during sleep() like they should.
* Fixed problem with missing images in prefs.
* Fixed baseline of truncated text.
* Include trailing whitespace when measuring text (this matches Mac behavior)
* Fixed problem with scroll bars where if you resized them we wouldn't recompute the thumb rect, range, etc.
* Enabled window shadows. All the same rules apply as on the Mac, e.g. if you change the content, but not the window geometry, you need to call recalcShadow().
* Restricted filesystem APIs to not allow writing into C:\Windows (or whatever your 'windows' directory is). This applies to moveToTrash(), move() source and destination, copy() destination, and writeFile(). An exception is raised when you attempt to pass what we deem to be a disallowed path into those functions. The Mac has real permissions in place in the filesystem, so this is a Windows-only change.
* Fixed problem selecting the right item in preferences if multiple options started with the same sequence of characters.
* Fixed problem where the login window would not disappear.
* Don't rely on setting the current directory on open. Instead, set it as we load things.
* Fixed bug where the IME candidate window would close immediately if the cursor ever wasn't on top of it.
* Added language preference in Preference dialog.
* Fixed problem where
* Fixed problem where initial file name wasn't being set for a selector preference (via defaultValue).
* Fixed problems with EUC-JP encoding on web pages scraped with URL.fetch, etc.
* Added a -reset switch for telling Konfabulator to clear all of its preferences and the application data folder. It does NOT remove the My Widgets folder.
* Fix crash when setting a window reference to null when inside a mouse handler.
* Fix tick marks in CPU Portal. The real issue was that the number of ticks was greater than the number of possible choices. I now pin to the max.
* Switched to use a new unzip library that does unicode properly.
* Fixed COM issue where we weren't resolving VT_USERDEFINED types properly. Should be able to connect to WMP correctly now.