A brief history of our various versions
Version 4.5
HTML
Yes! We've added HTML support to Konfabulator! It is provided by an embedded version of WebKit, the open-source engine that is also the basis of Apple's Safari browser.
HTML objects behave like other Konfabulator objects. The content of an HTML object can be manipulated at will, and standard Konfabulator effects, such as rotation or transparency, can be applied. It is also possible to invoke Konfabulator functionality via JavaScript from within an HTML object. This allows a developer to create the entire Widget UI using HTML and Ajax.
For security reasons, only local HTML (HTML that is included in the Widget bundle) can access Konfabulator functionality. Remote HTML (HTML fetched from the Internet) is strictly sandboxed.
Flash
As if HTML weren't enough, we've also added Flash support to Konfabulator. The new Flash object allows developers to load Flash content into their Widgets. The Flash object exposes all methods that are normally available to Flash developers (Play, Stop, Back, Forward, Rewind, etc.). As with HTML objects, Flash objects can be combined with other Konfabulator objects, rotated, etc. As with 'fetched' HTML, the bridge between Flash and Konfabulator is strictly unidirectional - it is not possible to call Konfabulator APIs from within Flash.
Shiny New DOM
If you really want to geek out, then you'll be pleased to know that Konfabulator version 4.5 implements a W3C-compliant Document Object Model (DOM). The elements within the DOM are bridged to their JavaScript capabilities. Want to have some real fun? Walk your Widget's DOM tree using Konfabulator 4.5.
Security
An enhanced security block in version 4.5 allows developers to specify Widget operations, such as file system access or Internet access, in fine-grained detail. This information is displayed to the end-user in a redesigned security dialog when the Widget runs for the first time. If the Widget tries to perform a potentially malicious operation that was not declared in the security block, Konfabulator stops the widget from running. If the security block is not present, the user is notified that full rights are being granted to the Widget -- this allows legacy Widgets, which were created without a security block, to run.
Fixes
Konfabulator 4.5 also addresses a number of known issues from previous releases
- Implemented text speedup for Mac.
- Fixed event.key
- Added support for numlock modifier on keyboard, mouse, and drag events
- map the window levels correctly (mac only)
- Added timeout property to XHR.
- Added JSON object (from json.org).
- Leopard support
- Fix issue with unlocalized "Preferences" submenu in system tray.
- Allow CSS to affect text alignment even in non-wrapped text objects. Only works with a minimum version of 4.5 or later.
- Fix issue where saveImageToFile() couldn't deal with scrolled frames.
- Fix localization of preferences dialog title.
- Fix localization of dialog title when iTunes is not installed.
- FINALLY support ctrl-a and ctrl-e in the evaluation field in the debug window on Windows.
- Always set system.event when minVersion >= 4.5. system.event is, however, considered deprecated. You should always use the event passed to your handlers.
- Implement URL properties to expose a URL 'cracking' API, i.e. you can access the components of a URL.
- Get Drag/Drop working for window objects (Windows only?)
- Allow 0 as a valid length value in CSS. It's supposed to be valid.
- Only print warnings about elements being in widget and metadata files if the values actually differ
- Changed XPath to work to spec. It wasn't returning the correct result for string() functions.
- Added window.getCurrentMousePosition()
- Added window.close()
- Added widget.createWindowFromXML()
- Lazier GC on minimum version or 4.5 or greater.
- Added onPreferencesCancelled.
- We now properly propagate exceptions thrown in the ready state callback of an XMLHttpRequest through to the open or send call that may have called it.
- Fixed issues with text files getting double linefeeds.
- Made sure the main window doesn't get shown if hidden and form() is called.
- Fixed issue where we couldn't parse XML with DOCTYPE, particularly for vitality.
- Added Display object and various functions to allow you to get the display list.
- Added Rectangle object to allow you to do fun things like union and intersection. Wahooo!!!
- Fixed various canvas drawing issues.
- Now allow canvas to render another canvas via drawImage.
- Ubiquitous mouse handlers.
- No more crashing when calling removeChild on context menu items.
- No more crashing when passing an anonymous function to URL.fetchAsync().
Known Issues
- On Mac OS 10.5 (Leopard), a call to Flash's IsPlaying() method always returns false ' even if the Flash object is, in fact, playing.
- Flash's readystate reporting cycles through all five states, even if the Flash movie does not exist.
- Flash quality method is not returning proper information.
- HTML is not supported on Windows 2000 or Mac OS 10.3.9
- No IME support for Flash or HTML
Version 4.0.5
- Fixed various issues with COM objects.
- Mac: Fixed a Japanese text input problem.
- Mac: Fixed a SQLite problem on Intel-based Macs.
Version 4.0.3
- Fixed getDirectoryContents when passed C:\\.
- Fixed Drag and Drop events in Textareas.
- Fixed problem where opacity on frames wasn't being obeyed properly.
- Fixed issue with debug window never showing file/line number info. Also pulled in change to debug window to avoid having to use print() to see values.
- Fixed problem with duplicate widgets when consolidating. This would manifest itself as the apparent duplication of Widgets if you kept downloading and running the same Widget over and over (or an update to a Widget not gotten via the built-in update mechanism).
- Fixed truncation of Japanese characters in prefs.
- Fixed 'with' with COM objects.
- Fixed problem where we weren't always properly releasing COM objects.
- Fixed last remaining positioning issue wrt context menus when windows have shadows.
- Mac: Fixed reloadWidget() bug.
- Mac: Fixed font styling problem on Panther.
- Mac: Fixed Japanese font rendering issues in textareas.
Version 4.0.2
- Fixed appendChild in submenus.
- Fixed sound truncation and allow empty path again.
- Fixed problems with effective window opacity.
- Fixed problems with window positions and popup menu positions when a window has a shadow.
- Fixed "close widget" applescript bug.
- Fixed "open widget" applescript bug.
- Fixed saveImageToFile when using jpeg.
- Fixed | operator in XPath.
- Fixed problem (again) where widgets don't restart automatically when restarting your computer.
- Fixed issues verifying certificates.
- Fixed exception caused from calling reloadWidget inside onLoad.
- Fixed Recent Menu clearing synchronization between gear and dock menus.
- Fixed Context Menus not showing up when in HUD.
- Fixed wireless reporting on Vista.
- Allow hot key to be set to none correctly.
- Fixed issue with rotation and transparency.
- Fixed problem where launching a Widget hidden made it stay hidden forever.
- Tell all Widgets when proxy settings are changed.
- Fixed problems where we weren't detecting session end and were mistakenly marking widgets as not running.
- Fixed problem where we weren't putting windows back into the right layer when exiting HUD.
- Fixed issues where we weren't putting widgets back into place when switching screen configs.
Version 4.0.1
- Obey application/xml and +xml types when accessing responseXML from XMLHttpRequest.
- Fixed bug where onKeyDown/Up onMouseDown/Up onMouseEnter/Exit elements specified in XML for a window were not sticking.
- Fixed proxy connections.
- Allow manual proxy field to be freeform.
Version 4.0
Performance
- Implemented image sharing to attempt to reduce memory consumption for some Widgets.
- When a Window is hidden, we now release all the drawing buffers. Not a huge savings in most cases, but hey.
- XPath is now substantially faster on large XML DOMs.
- We now load Win HTTP on-demand.
- Rewrote COM support to be faster and fixed some issues with event sinks.
Animations
- Implemented Resize Animation.
- It is now possible to reuse an animation. Previously, once an animation was complete, it was useless.
- Changed animations to always call any 'done' function you pass in even if the animation is run with runUntilDone (i.e. synchronously). This only takes effect if your minimumVersion is 4.0 or later.
Filesystem
- Added filesystem.zip() and filesystem.unzip() as simple utilities to do basic zip/unzip actions.
- Filesystem.move() now will rename a file (i.e. it should now behave exactly like the unix mv command).
- Added filesystem.getMD5() to return the MD5 string for a given file.
- Added optional third parameter to filesystem.writeFile. You can now pass a boolean to tell us whether or not to append to the file instead of merely overwriting the entire file. appendFile( path, content [, append] );
- Added filesystem.createDirectory() and filesystem.remove().
DOM/View System
- Canvas object. Use 2D drawing primitives to draw whatever you like.
- Added convertPointToWindow, convertPointFromWindow, convertPointToParent and convertPointFromParent to successfully deal with translating points into different coordinate systems. This is especially necessary when you have multiple nested, scrolled, rotated frames. Each function can either take an x, y coordinate or a Point object, which is also new in this build. These routines all return Point objects as well. A Point only has two properties, x and y.
- You can now set the height/width to null to reset an object to use the natural size of the content, if any.
- Enabled clickable hyperlink in text areas. The "handleLinks" JavaScript property was added.
- Changed z-order handling. When minimumVersion is set to 4.0 or later, the new behavior is as follows: as views are created, they are all given a zorder of 0 (instead of the previous ever-increasing z-order number). Views are ordered within z-order in the order they were added (the last view will get the highest effective z-order). To change the z-ordering with a particular z-order, you use orderAbove and orderBelow. This much is the same as it was after the first time this was changed for this release. The new twist is that we still pay attention to the zOrder of a view. Views with zOrder set to 1 will always be layered on top of views with zOrder 0. This allows older Widget definitions to still behave the same as they ever did. orderAbove() and orderBelow() still can be used to shuffle views around but they cannot be shuffled between zOrders. So if you have 10 views with zOrder 0, then 5 views with zOrder 1. If you take the top most view in zOrder 1 and call orderBelow(null), it will not put the view to the rear of all views, but rather to the rear of all views with zOrder 1. So effectively, zOrder can now be interpreted as a 'layer'. And orderAbove and orderBelow only operate within layers. This gives us the best of both worlds, and allows things to be done in ways they never could before.
- Enabled rotation for text, canvas, scroll bar, and frame objects. Text areas cannot be rotated on either platform. Don't even get any funny ideas and try to put it in a frame and then rotate the frame... the result will be the same: badness.
- Fixed issue where setting image.colorize to "\" was setting it to black instead of clearing the colorization, as setting to null would. Did the same thing for HSLAdjustment and clipRect.
- If minimumVersion is set to 4.0, onMouseMove changes its meaning to track mouse motion while the mouse is up. To get mouse motion events when the mouse button is down, use onMouseDrag.
- Menu items can now have submenus. In XML, you just put another menuItem element inside another. In JS, you use appendChild/removeChild to add or remove child menu items. This affects contextMenus and popup menus.
- Implemented <script> element. You can now put your Javascript in far more places in your file, or just point to another file.
- Fixed crash trying to set a Frame's scroll bars to null.
- Added new anchorStyle property to text objects. This allows you to tell the engine to base its hOffset at the baseline of the text (the historical default) or the top-left of the text box that surrounds the text. In future builds, vAlign will work with text items when the topLeft anchor mode is used.
- Fixed problem in scroll bars that caused horizontal scroll bars to not respond to clicks properly.
- Implemented onClick in text, textArea, image, frame, scrollBar, and canvas objects.
- Scroll bars now have the full complement of mouse events available to it. Typically you'd never use them, but they are there for completeness.
- If minimumVersion is set to 3.0 or greater (triggering our change for our JS object lifetime), we now add the following properties to objects in a window to create a more DOM-like environment: firstChild, lastChild, nextSibling, previousSibling, and parentNode. If you wish to walk the tree of objects in a window, this is the fastest way to do it. Using the previous 'subviews' method is very slow if you are making changes to the subview list as you are adding items. We used to build this array all the time, and it caused some bad slowdowns. We now only build the subview array on demand. As a result, adding hundreds or thousands of views is now significantly faster (at least an order of magnitude). Along with these changes, to keep things as DOM-tastic as possible, the window object also has firstChild and lastChild. firstChild will point to the first child of the 'root' view. Likewise, any object inside the root view will yield a parentNode of the window, not the root. Superview still returns the true superview (the root). In other words, when using the DOM access, the root node effectively does not exist.
- getElementById has been added to the widget object. This means that you can now add a mutable 'id' property to windows, frames, scrollBars, text object, textArea objects, image object, canvas objects, timer objects, and hotKey objects and look them up later. You don't need to use the 'name' property at all now (though it's certainly still useful).
- Action triggers are now attached to the Widget object directly. So an onUnload action can be accessed via widget.onUnload. This also means you can set these triggers at runtime as well now... something you could never do before.
- Option/OptionValue arrays in preferences can now be adjusted at runtime and the engine will see the changes. You don't have to reset the property with a new array any longer.
- Implemented appendChild and removeChild DOM APIs on windows and views (image, text, etc.). They throw DOM exceptions as specified by the DOM specification per W3C. Consult the Level 1 or 2 DOM spec on their site for more information.
- You can now change the context menu array of an object on the fly, i.e. it is no longer necessary to set the entire array to see a change. Just remove or add an item, etc. and the change will be reflected in the menu.
Events
-
Added keyCode, charCode, shiftKey, ctrlKey and altKey to system.event. These match the definitions in something like Firefox. They are much improved over the older key handling mechanism, and should behave properly on both platforms (as you'd expect).
XML Support
-
Improved DOCTYPE parsing in XML parser.
Miscellaneous
- Added SQLite support.
- Created a web-based version of our documentation
- Reloading a Widget no longer kills and respawns the process. It merely shuts the Widget down and restarts it.
- Behavior change: when a widget is opened, if it is already running it is simply shown. We no longer do a reload in this situation.
- You can now use the exact same terms when setting things in XML as well as Javascript. For example, you can pass "10%" for opacity on an object, as you would in XML.
- Changed Windows slider behavior in preferences to match the Mac. They now snap to the tick marks.
- Fixed a crash in the debug window on Windows when using the arrow keys to switch between previous commands. If you went 'past' the end of the list and then back, you'd get a crash.
- We now allow paths to start with ./ in flattened Widgets when loading files, etc.
- Updated Converter Widget
Version 3.1.5
Macintosh Only
-
Fixed problem with Yahoo! sign in Widget.
Version 3.1.4
General
-
Fixed issue which caused signed Widgets to stop working.
Version 3.1.3
General
-
Fixed problem where removeFromSuperview() didn't work for scrollbars.
Windows
-
Fixed runtime error. Only occurs when you have your My Documents folder pointed to a network share and you are working offline.
-
Fix problem where we were removing the startup shortcut inappropriately.
Macintosh
-
This version is a Universal Binary.
-
Japanese text can now be reliably input in one line textareas.
-
Fixed issue which caused clicks on the Debug Window to sometimes be lost (when trying to focus the window).
-
Fixed bug that caused "About" item in context menu to be corrupted for Japanese Widgets (actually for any non-roman language).
-
Fixed bug in konfabulatorVersion() which caused it to incorrectly include the build number.
Widgets
-
Yahoo! Maps: changed search field to better deal with empty search strings.
-
Yahoo! Maps: clipped map tile images to prevent stripes in roads in hybrid view mode.
Version 3.1.2
General
-
Fixed problem where readFile() wouldn't locate a local file in a flat-file
widget.
-
Fix problem where about boxes were affected by the master opacity.
-
Fix Korean localization.
-
Be more tolerant in string file whitespace parsing.
-
Allow .kon files to access localized resources properly.
-
Fix problem where we weren't loading images properly for custom scroll bars in
flattened Widgets.
Windows
-
Attempt to fix problems where non-English font names with "Regular" in them
(localized) didn't work.
-
Fix problem where debug window was not remembering its size/location.
-
Initialize COM on secondary web request threads so we can use text encoding
stuff (which is COM-based).
-
Fixed problem which caused Personal radioTuner to crash when opening
preferences.
-
Filter out all font names that start with @
-
Fixed problem on Win2K where preference OK/Cancel buttons were blank.
-
We no longer localize our shortcut name. It was leading to multiple shortcuts
in the startup folder if you changed languages.
-
Make sure to return null as documented from chooseFolder. Also make sure to
return forward-slashed paths.
Macintosh
-
Fixed problem which caused zipped Widgets to recreate their Widget Data Folder
on each run (thus losing any saved data).
-
Fixed ugly memory allocator diagnostic message in Converter.
-
Fixed several instances in which international characters were handled
incorrectly.
-
Prevent multiple clicks on gear menu while a dialog is open.
-
Fixed a crash when a Widget requested login and the Purple Box was already
displayed.
-
Fixed problem where UTF-8 file encodings were sometimes misinterpreted.
-
Addressed a minor memory leak in animated GIFs.
-
Fixed a problem where filesystems.volumes would report random results for
volumes that aren't really there (Mac OS X 10.3.9 sometimes continues to report
the presence of USB drives which have been ejected). The engine now
double-checks (on 10.3.9) to make sure a volume really is there before
reporting it.
Widgets
-
Added satellite views to Yahoo! Maps Widget.
-
Fixed Korean localization of Purple Box (Yahoo! Login) Widget.
Version 3.1.1
Windows Changes
-
Fixed an issue that caused Widgets whose actual character encoding didn't match their stated character encoding to fail to load.
-
Fixed issues with the Debug Window when running on Korean language systems.
Version 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. This will break any existing Widgets
that use yahooLogin(), but the fix is simple: add the block.
<security>
<api>SERVER_NAME_HERE</api>
</security>
-
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 <security> block to let
the user know that the Widget will not be able to connect to Yahoo! feeds.
-
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.
Windows Changes
-
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 <directory> wasn't being set for a selector
preference.
-
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.
Macintosh Changes
-
Finished up the grand renaming of the product from Konfabulator to Yahoo!
Widget Engine. There are a few lingering vestiges but these are mostly
for backwards compatibility and will remain.
-
Preferences for the engine, for Widgets and the Widget data folders are
migrated to the new product name.
-
Fix problem where timers with real functions weren't firing.
-
Fixed a problem that caused certain cookies to not be returned when a
URL.getResponseHeaders("Set-Cookie") was issued.
-
Implemented auto checking for updates.
-
Fixed bug that could cause garbage characters to appear at the end of
runCommand() output.
-
Fix problems with scroll bars on frames.
-
Fixed issue with scrolling partially transparent textareas.
-
You can now drag all but 5 pixels of the Widget's window off the screen.
-
The escape key is no longer stolen by textareas (this started in an update to Mac OS X 10.4).
-
Fixed a crash on reloading a Widget.
-
Fixed crash when setting contextMenuItems.
-
Fixed handling of "editSourceFile" preference so it gets the full path to files.
Widget Changes
-
Yahoo! Mail Checker: Handles invalid feed data better.
-
Day Planner: Fix issue searching for appointments in different locales.
-
Day Planner: Display location for Outlook, too.
-
Day Planner: Fix time/location switch for all day events.
-
Improvements to Yahoo! Login Widget.
-
Yahoo! Login Widget now supports Japanese logins.
-
Picture Frame: Added visual indicator while loading photo lists over the
network.
-
Picture Frame: Filtered the Flickr photos a user sees by default.
-
Picture Frame: Suppress picture update timer when Widget is first run.
-
Picture Frame: Disable "Refresh Pictures" and "Find Current Image"
menu options while Widget displays "choose image source" panel.
-
Picture Frame: Properly handle Cancel button when dismissing "Everyone's tags" form.
-
Picture Frame: Use a Widget-generated window for blogging photos.
-
Picture Frame: Fixed multiple reload of photo list when selecting Yahoo! Photos as a source.
-
Yahoo! Notepad: Saves notes when it says it will when the Widget is logged out of Yahoo! via the Options menu.
-
Yahoo! Notepad: Overengineered platform-specific alert button placement code removed.
-
Yahoo! Notepad: Removed extra "Don't Save" button when saving a single note.
-
Yahoo! Notepad: Proper saving/notifying of unsaved notes on Widget quit.
-
Yahoo! Notepad: Widget should correct for expired login cookie.
-
Yahoo! Notepad: Improvement of sidebar appearance.
-
Yahoo! Notepad: Update to dragging notes between folders in sidebar.
-
Yahoo! Notepad: Notes show last modified date/time.
-
Yahoo! Notepad: Stale cookies should be silently refreshed.
-
Yahoo! Notepad: Validate length of URL text when doing a Blast.
-
Yahoo! Notepad: Added "Refresh Notepad" item to the Options menu: reloads full note list from server.
-
Yahoo! Notepad: A dialog opens to resolve differences when the Widget note is out of sync with the server.
-
Yahoo! Weather: Usability improvements for the location search box.
-
Yahoo! Weather: Fixes a bug that occurred when you searched for a city and got multiple results, then submitted another search for a specific location, like, say, a ZIP code.
-
Yahoo! Weather: Fixes a situation in the location searcher where it would get stuck with old data. An obscure bug, but still easy to reproduce (and fix).
-
Yahoo! Weather: No longer acts strangely when a city is selected from the context menu while the location searcher is up.
-
Yahoo! Weather: No longer allows duplicated entries in the recent locations list.
-
Yahoo! Stock Ticker: Usability improvements for the symbol search box.
-
Yahoo! Stock Ticker: No longer allows for search criteria to be switched around while a search is being performed.
Version 3.0.2 (Macintosh)
- Fixed bug which cause HUD-only Widgets not to work correctly.
- Fixed bug which caused hOffset and vOffset in XML for Windows not to be honored (causing some Widgets to display "off screen" and not visible).
- Fixed occasional hang when editing preferences.
- Removed restriction on dragging windows above the screen (a few pixels of the window always remain visible so it can moved again).
- Report -1 when no network connection to yahooLogin for Purple Box (Yahoo! Login).
- Allow null parameter to be passed to Send() in XMLHttpRequest for compatibility with other browsers.
- Improved behavior when displays are disconnected and reconnected.
- Fixed bug where TextArea.thumbColor causes an error on the Mac but not on Windows.
- Fixed bug which caused horizontal scrollbars not to work.
- Fixed problem where 'this' was not being set in a context menu's onSelect function.
- Fixed issue which corrupted secure preferences under certain circumstances.
- Fixed bug which caused focusWidget() to make the main window visible even if another window is already visible.
- Fixed bug which caused window positions to be lost when the Widget fails to display due to an error.
- Fixed some issues with the Finnish localization.
- Fixed product name displayed in Debug Window.
Version 3.0.2 (Windows)
- Fixed problem upgrading non-admin preferences, etc.
- Fixed annoying weirdness in InstallShield installer which yielded a 'missing dll' error.
Version 3.0.1
General Engine Changes
-
Improved upgrade path from pre-3.0 installs. We now migrate preferences for Stock Ticker, The Weather, and PIM Overview
correctly to Yahoo! Stock Ticker, Yahoo! Weather, and Day Planner. We also now adjust the user's loaded and recent Widgets
lists so that the Widgets launch as expected after the upgrade completes.
- Fixed crash when unescaping a string with bogus escape codes in it.
- Fixed problem in animations that could lead to a crash if a function object went out of scope.
- Fixed Traditional Chinese string file. Was leading to a crash on startup.
Windows Fixes
- Fixed problem where tick mark labels were not displaying in preferences.
- Fixed problem where setting a windows visibility to true when already visible was forcing the window to the front.
- We now move any older Widgets (during upgrades) into a folder inside the My Widgets folder.
- We properly remove the older Konfabulator shortcut in the startup items folder.
- Added uninstall shortcut to the program group in the Start menu.
- Fixed problem where onMouseWheel actions weren't being sent to frames without scrollbars.
- Fixed issue where prefs weren't always written.
- Fixed problem fetch icon images.
- No longer allow the debug window to get too small (which was previous causing some serious ugliness).
Macintosh Fixes
- We now move any older Widgets (during upgrades) into an Older Widgets folder inside the Widgets folder.
- Fixed problem which caused Desktop Widgets to become Floating whenever their preferences were changed.
- system.languages now works.
- Fixed bug where the first click in a window was sometimes ignored if the window appeared under the cursor (affected security dialogs in particular).
- Fixed encoding of Dutch translation file.
- Improved Widget window behavior when activated with a "secondary" (right) mouse click (the default action for right click on two button mice). This should address the cases of Widgets being unresponsive to clicks and the mouse cursor not changing appropriately.
- Fixed problem with opening new windows when Heads Up Display is active (fixes issues with the Yahoo! Login Window and Picture Frame info panel).
Widget Fixes
- Day Planner: Fixed problems with all day events in Outlook.
- Day Planner: Fixed problem where events weren't showing from Yahoo! Calendar
- Day Planner: Fixed problem where it wasn't removing views and therefore growing in size (resource-wise).
- Picture Frame: Changed animation of controls to be asynchronous.
- Maps: Reversed direction of the disclosure arrows.
- Maps: Made drawer opening chained to the main scroll opening so that it is perceivably smoother.
Version 3.0
General Engine Changes
-
We now allow functions to be passed into onFoo handlers. You can also specify
them in the XML for a handler by specifying the "function" attribute. When a
function attribute is specified, the contents of the onFoo handler are ignored.
object.onMouseUp = _myMouseUpFunction;
// or in XML:
<onMouseUp function="_myMouseUpFunction"/>
// Later, in Javascript:
function _myMouseUpFunction()
{
// will be the object you attached this function to.
print( this );
}
// If you're a fancy man, you can set it to an
// anonymous function
myObject.onMouseUp = function()
{
print( this );
}
-
Added ability to specify colorize attribute like so: "r:128; g:55; b:255"
Values must be in decimal from 0 to 255.
-
Added textarea.loseFocus() to force a text area to unfocus if it is the focus.
-
Added onGainFocus and onLoseFocus actions to text areas to allow hooking these
events in JavaScript.
-
Added 'visible' attribute to text, textarea, image, and frame objects.
-
Made 'name' attribute read-only. It is not meant to be changed, it is only a
unique name that was only really meant to give us the variable name to assign
new objects when created via XML. In general, the name should be ignored after
creation, except potentially as a unique ID for the object.
-
Added 'author', 'company', 'copyright', and 'image' widget attributes.
These are used in our new security dialogs, and may be used in the future for
other things. Each of these attributes is a string. Image contains the relative
path to a 150x150 image used to represent your Widget (think of it as a big
icon). These must be specified as attributes and not sub-elements of
<widget>.
-
Added Shadow objects to Javascript and ability to set shadows on text items.
-
We now suspend timers on sleep and don't allow them to fire until we send out
the onWakeFromSleep event.
-
Enabled new text object truncation type: "center"
-
On first run of a Widget that is not known by the Yahoo! Widget Engine, we now
put up a dialog informing you of this fact and allow you the choice to run the
Widget or not. If the Widget is modified, the dialog is presented again,
telling you the Widget has been modified since we last saw.
-
Added ability to fetch images asynchronously when setting the source to a
remote image. You must set "remoteAsync" to true for this to take effect. Once
set, you can also set the "loadingSrc" property and "onImageLoaded" action
on an image. The loadingSrc is displayed while the remote image is being
fetched. When the fetch is complete, if your object has an onImageLoaded
action, it will be called. If the image fails to load, your onImageLoaded
action will still be called, but the image will have been set to the standard
built-in'missing' image.
-
Added global 'widget' object which allows read-only access to some widget
attributes such as version.
-
Adding 'missingSrc' attribute to images to customize what shows if an image
cannot be loaded.
-
Added ability to log into a user's Yahoo! account for use with Yahoo!
APIs.
Subviews
-
Added new object type frame which acts as a container. You can add items to a
frame by calling frame.addSubview( <object> ). This frame will clip its
children to its bounds. Moving a frame moves all of its children. Changing the
opacity of a frame affects its children accordingly. Frames can also be
scrolled. Consult the Reference for more information.
-
Added new ScrollBar object to allow you to tie them into frames easily. You can
also use them for your own purposes and adjust the way they look.
-
Added window.root, the root view that all other views live in or below.
Also added 'subviews' attribute to Root and Frame objects to allow you to
iterate the contents. To get the parent of any view, you can now use the
'superview' property. These are all read-only. You add views to a Frame or the
Root with addSubView(), and you detach a view from its parent with
removeFromSuperview(). It's important to note that views will remain on screen
unless you detach them. Calling 'delete' on the object or setting its reference
to null is not enough.
XML/Networking Changes
-
Added URL.autoRedirect, which defaults to true. You can set this to false to
handle a status 302 error from a server.
-
Passing either no parameters, or "*", into URL.getResponseHeaders will return
all headers in the response, including the header name.
-
Added XML parsing/DOM Level 1 support with XPath 1.0. There are some omissions
from the RFC, but the bulk should be there and functioning now. To parse some
XML, you use the new XMLDOM object and call XMLDOM.parse( xml ). It will return
an DOMDocument node which you can then use the Level 1 DOM APIs on. It may also
throw an exception if the parse fails, so be sure to wrap it in a try/catch
block. To create a new document, call XML.createDocument(). You'll get a new
XML DOMDocument node which you can create new nodes from, etc. When you want to
get the tree as XML, just call toXML() on the document node. You can then use
filesystem.writeFile to write the data out. We currently only use the utf-8
encoding for our XML files, and there is no way to alter that at present.
- Added XMLHttpRequest.
- Manual Proxy setup (Windows only).
Windows Specific Changes/Fixes
-
Fixed issue with scroll bars hanging Widgets on Win2K. Scroll bar arrows still
don't draw pressed, but at least the Widgets are useable now.
-
Fixed getting of locked, shadow, and title on window object.
-
Fixed bug where if a preference item referred to a group that did not
exist, we would crash when closing the preferences dialog.
-
Increased number of types we support in COM to fill out all of the
numerical types (int, short, etc.)
-
Fixed problem where 'description' wasn't in the list of properties for a
FormField.
-
Fixed problem with descenders getting cut off in the textarea object.
-
Fixed problem where rejectKeyPress was not rejecting certain keys like return
when a textarea was in multiline mode.
-
Fixed problem setting text styles on the textarea object.
-
Fixed some missing attributes on TextArea.
-
Fixed performance issue in our tinting code.
-
Fixed problem where you couldn't hit return/esc to save/cancel a preferences
dialog.
-
Fixed 'bug' where if you didn't specify a width or columns for a text area, we
would not compute a size for it.
-
Debug command history is now persistent between Widget runs.
-
Fixed bug where we needed to fix up items with ampersands in them to avoid
having them look like accelerator keys or just disappear.
-
Fixed bug where disk paths were not returning info from
filesystem.getFileInfo().
-
Fixed problem where the preference dialog was transposing the shift and alt
keys because of MS inanity.
-
Fixed problem where icons without ARGB weren't rendering.
-
We now extract the 48x48 icons from the system.
-
Fixed problem in filesystem.isDirectory() and filesystem.itemExists() where if
you passed a drive path like E:/ it would fail to report the truth.
-
Fixed problem with kEaseNone in animator.Ease()
-
Fixed debug window resizing issue when "Show Window Contents While Dragging" is
turned off.
-
Fix problem where if a file selector was made empty, we wouldn't save out the
empty pref. We'd ignore it completely.
-
We now properly deal with 'dirty rects', i.e. we now only draw those
portions of a Widget that really need to be redrawn. This should result in even
better performance.
-
Added proxy preference for those users who cannot use the IE proxy settings.
-
We now deal properly with secure connections whose certificates are bad (we
prompt the user to allow the connection using the standard system dialogs).
-
saveAs now accepts an array of valid extensions like chooseFile. The first
extension in the list is selected as the default extension to be appended if
none is added by the user.
-
Text Areas now use our own custom scroll bars and allow you to change the thumb
color via a new property.
-
Fixed problem in COM support that caused Outlook to report times that were off
by an hour.
Macintosh Specific Changes/Fixes
-
We no longer support Mac OS X 10.2 and the application will refuse to run if
the OS is less than 10.3.
-
Added debug log for runCommand() and runCommandInBg() to match Windows.
-
Fixed Window.shadow. Window.RecalcShadow() still exists (and does what it says)
but should no longer be needed as we now have a good place to automatically
recalculate the shadow when we paint in the window.
-
Fixed system.userWidgetsFolder (it had a missing path separator).
-
Fixed handling of Shift-Tab when character codes are being interpreted
directly.
-
Improved reliability of the reload button on the Debug window.
-
Nicer Debug window.
-
Removed Grid object.