+ Removed TabItems.reconstitute(), which we haven't actually needed for a while, but now it's also causing trouble
+ Removed Utils.activeWindow, which doesn't seem to work, and replaced its use in Utils.activeTab (the only remaining place it was being used) with Utils.getCurrentWindow(), which does seem to work
+ Utils.assert() now dumps a trace
+ Fixed paths to the edit pencil and new tab button images; they should now show up properly
+ The "code docs" item on the dev menu now opens the documentation from the repository into a new tab (used to open the local documentation, which doesn't exist in this new context, and replace the tab candy tab)
+ Removed the "tests" item from the dev menu, as they don't apply to this new context
+ Fixed an accidental comma in tabcandy.css (was disabling the pointer cursor for tabs)
+ Our toolbar button now uses the standard toolbar button styling; we just apply a glyph to it
+ Went through the code with http://caja.appspot.com/tools/index and fixed a number of minor issues it found
+ Added "refresh" to the dev menu (since you won't be able to just refresh the tabcandy page once it's in the xul:deck)
+ Removed the command-click quasimode for showing the tray version of stacked groups.
+ Added a new expand icon for showing the tray version of stacked groups
+ Refactored the Group.js code so that we now have both group.collapse() and group.expand()
-- Website Behavior --
+ Updated the website to pull the documentation section from the Etherpad
+ Some general DRY-based cleanup
-- Install.rdf --
+ Fiddled with the min/max version
+ The "zoom prep", where the div is resized behind the scenes, is now much more robust; items can be rearranged while in this state (in response to new tabs opening, for instance), and everything still works out.
+ Group._activeTab is now a TabItem rather than a DOM element
+ Most of the old "mod" routine is now in the TabItem constructor; "mod" no longer exists
+ First use of iQ.animate(), which uses CSS transitions: tab zoom up and down, as well as phantom group disappearing when you drag in empty space but don't make it big enough
+ Consolidated onFocus call of UIClass into onFocus call of Page
+ ui.js is jQuery-free
+ The zoom down animation happens after a setTimeout(…, 1), which causes an unfortunate delay, but without it, the animation doesn't happen at all
+ Added val, resize, change to iQ.fn and isAnimating to iQ
+ Fixed a typo where errors in onFocus weren't being logged. (When you go back to the TabCandy from a tab, the tab strip get hidden late, causing a jarring jump)
+ Also: fixed bug 567010
+ The last tab you were viewing is now highlighted as the focused tab.
+ You can get back to the tab you were looking at now by hitting the escape key.
+ You can navigate to the focused tab by hitting the return key.
+ You can select other tabs via the keyboard with the arrow keys.
+ Created Utils.copy to make duplicating objects cleaner
+ Fixed a number of issues with pulling tabs out of a tray. Temporarily disabled the delay on drag as well.
+ Improved the threshold for switching from grid to stack; only happens when the grid fills up.
+ No longer announcing "bad storage data" when there is in fact no storage data (fresh start)
+ A couple more asserts
(1) It means that the tabs are shown in the order which they appear in the group. Keeps the mental model clean.
(2) When you close a tab, the next tab that is focused is sane (i.e., it is in the group not some random tab)
+ TODOs (see the code)
+ (1) There is a potential race condition groups.js:line 121
+ (2) The new tab animation is to the wrong place groups.js:line 96