This provides tree-style tab bar, like a folder tree of Windows Explorer. New tabs opened from links (or etc.) are automatically attached to the parent tab. If you often use many many tabs, it will help your web browsing because you can understand relations of tabs.
This is developed under a project to restructure TBE for Firefox 2.
If you see any problem, see FAQ at first. If there is no solution, post a report to the issue tracker on the GitHub please.
Released version 0.19.x includes following language packs:
This section describes about old version 0.19.x. For latest information, see Mozilla Add-ons website.
Demonstration video:
Tree example. New tabs from link (or etc.) are opened as children of the original tab.
Tab bar can bemoved to leftside, rightside, top, or bottom. Horizontal tree is also available. Moreover, vertical tab bar can be shown/hidden automatically.
Drag and drop is available to modify relations of tabs and to rearrange. The behavior seems to be like "layer tree " of Adobe Illustrator/Photoshop.
A built-in theme, "Metal" is available. It will match to the default theme on Mac OS X.
Multiple Tab Handler can work with this. drag-and-do features of it will be more useful.
Informational Tab also works. With the Multiple Tab Handler, Firefox becomes like old Firefox powered by TBE.This section describes about APIs in old versions. For latest information, see API document on GitHub Wiki.
The service object of this addon always observes operations to open new tabs, and makes a tree of tabs if the service receives a message to notify to attach new tab to the parent as a child. You can use following methods to send messages to the service to insert new tabs to the existing tree, for your addons or user scripts.
BTW, there is no AIP to control tab tree from webpages, because Tree Style Tab opens any tabs from webpages as children of the tab of the page.
TreeStyleTabService.readyToOpenChildTab(in DOMNode/DOMWindow aParent, in boolean aMultiple)TreeStyleTabService.stopToOpenChildTab() manually if no new tab is opened.
true" if you want to open multiple tabs in a time. If you wish to open only one tab, specify "false" or hand no value.TreeStyleTabService.readyToOpenChildTabNow(in DOMNode/DOMWindow aParent, in boolean aMultiple)TreeStyleTabService.stopToOpenChildTab() manually even if no new tab is opened actually.
(In exchange of that, you cannot open new tabs for the reservation in later event loops.)
true" if you want to open multiple tabs in a time. If you wish to open only one tab, specify "false" or hand no value.TreeStyleTabService.readyToOpenNextSiblingTab(in DOMNode/DOMWindow aParent)TreeStyleTabService.stopToOpenChildTab() manually if no new tab is opened.
TreeStyleTabService.readyToOpenNextSiblingTabNow(in DOMNode/DOMWindow aParent)TreeStyleTabService.stopToOpenChildTab() manually even if no new tab is opened actually.
(In exchange of that, you cannot open new tabs for the reservation in later event loops.)
TreeStyleTabService.readyToOpenNewTabGroup(in DOMNode aTabBrowser)tabbrowser.loadTabs() after this method is called, are becomes a sub tree of tabs (and the first tab becomes their "parent".)
The reservation is effectual until a new tab is opened, so you have to call TreeStyleTabService.stopToOpenChildTab() manually if no new tab is opened.
TreeStyleTabService.readyToOpenNewTabGroupNow(in DOMNode aTabBrowser)tabbrowser.loadTabs() after this method is called, are becomes a sub tree of tabs (and the first tab becomes their "parent".)
This automatically cancels the reservation after the current event loop is finished, so you don't have to call TreeStyleTabService.stopToOpenChildTab() manually even if no new tab is opened actually.
(In exchange of that, you cannot open new tabs for the reservation in later event loops.)
TreeStyleTabService.stopToOpenChildTab(in DOMNode/DOMWindow aParent)readyToOpenChildTab(), you have to call this method if you finish the operation before opening tab or finish to open multiple tabs.
TreeStyleTabService.checkToOpenChildTab(in DOMNode/DOMWindow aParent)readyToOpenChildTab() method has called for the "parent" or not.
readyToOpenChildTab() has already called, true. if not, false.For example:
// Example to open a new tab as a child of the current tab
if ('TreeStyleTabService' in window)
TreeStyleTabService.readyToOpenChildTab(gBrowser.selectedTab);
gBrowser.addTab('http://www.example.jp/');
// Example to open multiple tabs as children of the current tab
if ('TreeStyleTabService' in window)
TreeStyleTabService.readyToOpenChildTab(gBrowser.selectedTab, true);
gBrowser.addTab('http://www.example.jp/');
gBrowser.addTab('http://www.example.com/');
gBrowser.addTab('http://www.google.co.jp/');
if ('TreeStyleTabService' in window)
TreeStyleTabService.stopToOpenChildTab(gBrowser.selectedTab);
// Example to open multiple tabs as a "tab group"
if ('TreeStyleTabService' in window)
TreeStyleTabService.readyToOpenNewTabGroup(gBrowser);
gBrowser.loadTabs([
'http://www.google.co.jp/',
'http://www.google.com/',
'http://www.google.co.jp/'
]);
// Example to cancel operation
if ('TreeStyleTabService' in window)
TreeStyleTabService.readyToOpenChildTab(gBrowser.selectedTab, true);
if (!confirm('Sure?')) {
if ('TreeStyleTabService' in window)
TreeStyleTabService.stopToOpenChildTab(gBrowser.selectedTab);
return;
}
gBrowser.addTab('http://www.example.jp/');
He will be happy when he uses Tree Style Tab with your addon, if your addon has a feature to open relational information of the current page as a new tab.
gBrowser.treeStyleTab.collapseExpandSubtree(in DOMNode aParentTab, in Boolean aCollapsed)Collapses or expands the sub tree following the tab, if it is a "parent". This does nothing if collapsing of tabs is disabled by user's preference.
true" means "to be collapsed", "false" is "to be expanded".TreeStyleTabService.canCollapseSubtree(in DOMNode aTabBrowser)Returns "can I collapse any tree of tabs in the tabbrowser?"
true if we can collapse trees of tabs, by user preference. Otherwise false.TreeStyleTabService.isSubtreeCollapsed(in DOMNode aParentTab)Returns "is the tree of the tab is collapsed?"
true if the tab has any child and the tree is collapsed. Otherwise false.TreeStyleTabService.isCollapsed(in DOMNode aChildTab)Returns "is the tree the tab belongs to collapsed? (is the tab itself collapsed?)"
true if the tab is a child of another tab and the tree is collapsed. Otherwise false.gBrowser.treeStyleTab.attachTabTo(in DOMNode aChildTab, in DOMNode aParentTab)Attaches a tab (and its sub tree) to another one as a new child. The attached child tab is moved under the parent automatically as user's preference.
gBrowser.treeStyleTab.detachTab(in DOMNode aChildTab)Detaches the specified tab (and its sub tree) from its parent. Detached tab stay on its current position, and be not moved automatically. So you have to move it to another place manually if you want.
This API was renamed from partTab(). For backward compatibility, the old name is still available.
gBrowser.treeStyleTab.partAllChildren(in DOMNode aParentTab)Detaches all of children of the specified tab from the tree. Detached tabs stay on their current position, and be not moved automatically. So you have to move them manually if you want.
TreeStyleTabService.promoteTab(in DOMNode aTab)Promotes the specified tab as an upper level. This does nothing if the tab has no parent.
TreeStyleTabService.promoteCurrentTab()Promotes the current tab as an upper level. This does nothing if the tab has no parent.
TreeStyleTabService.demoteTab(in DOMNode aTab)Demotes the specified tab as a lower level. This does nothing if the tab has no sibling.
TreeStyleTabService.demoteCurrentTab()Demotes the current tab as a lower level. This does nothing if the tab has no sibling.
gBrowser.treeStyleTab.importTabs(in Array aTabs)Demotes the current tab as a lower level. This does nothing if the tab has no sibling.
gBrowser.treeStyleTab.moveTabs(in Array aMovedTabs, [in aDOMNode aReferenceTab])Moves the given array of tabs to another position, with their relations (tree structure). If they are remote tabs, they will be imported (and removed from the remote window).
insertBefore() of DOM level1. If you give nothing, tabs are placed in the end of the tab bar.gBrowser.treeStyleTab.importTabs(in Array aTabs, [in aDOMNode aReferenceTab])An alias for the gBrowser.treeStyleTab.moveTabs().
gBrowser.treeStyleTab.duplicateTabs(in Array aTabs, [in aDOMNode aReferenceTab])Duplicates the given array of tabs, with their relations (tree structure).
insertBefore() of DOM level1. If you give nothing, tabs are placed in the end of the tab bar.TreeStyleTabService.hasChildTabs(in DOMNode aTab)Checks that the tab has any children or not.
TreeStyleTabService.getChildTabs(in DOMNode aTab)Gets an array of tabs which are direct children of the tab.
TreeStyleTabService.getFirstChildTab(in DOMNode aTab)Gets the first-direct child from children of the tab.
nullTreeStyleTabService.getLastChildTab(in DOMNode aTab)Gets the last-direct child from children of the tab.
nullTreeStyleTabService.getDescendantTabs(in DOMNode aTab)Gets an array of any descendant tabs (children, grand children, and so on).
TreeStyleTabService.getLastDescendantTab(in DOMNode aTab)Gets the last tab from the list of descendant tabs of the tab.
nullTreeStyleTabService.getParentTab(in DOMNode aTab)Gets the parent tab of the tab.
nullTreeStyleTabService.getRootTab(in DOMNode aTab)Gets the top-level parent of the tab.
nullTreeStyleTabService.rootTabsGets an array of top-level parent tabs.
TreeStyleTabService.getNextSiblingTab(in DOMNode aTab)Gets the next tab in the same level.
nullTreeStyleTabService.getPreviousSiblingTab(in DOMNode aTab)Gets the previous tab in the same level.
nullThere is no GUI but you can those APIs introduced in ver.0.7.2009041401 or later.
TreeStyleTabService.setTabbarWidth(in Number aWidth, [in Boolena aForceExpanded])Changes the width of the tab bar to the value specified as the first argument. When "Auto Hide" is activated, shrunken width will change. If you wish to change expanded width of the tab bar anyway, specify "true" as the second argument.
This works only for vertical tab bar.
TreeStyleTabService.setContentWidth(in Number aWidth, [in Boolena aKeepWindowSize])Changes the width of the content area to the value specified as the first argument. If there are spaces on your screen, this expands the window. If you are in the fullscreen mode, or there is less spaces, width of the tab bar will be shrunken. To keep size of the window and resize only the tab bar, specify "true" as the second argument.
TreeStyleTabService.positionTreeStyleTabService.position = String aPositionReturns the current position of the tab bar as a string, one of "top", "bottom", "left" or "right". If you set one of "top", "bottom", "left" or "right", then the position of the tab bar will be changed to the specified.
Tree Style Tabs controls tab focus for closing of the current tab, by default. If you wish to control tab focus as you like, you have to disable this TST feature.
When the current tab is closed, TST dispatches a custom event "TreeStyleTabFocusNextTab" before focusing to another tab. If you cancel the event by aEvent.preventDefault();, TST doesn't move focus.
window.addEventListener(
"TreeStyleTabFocusNextTab",
function(aEvent) {
if (Prefs.getCharPref('myextension.focus.mode') != 'default')
aEvent.preventDefault();
},
false
);
TreeStyleTabService.treeViewEnabledTreeStyleTabService.treeViewEnabled = Boolean aEnabledReturns the current state of tree view. If you set false, all of collapsed trees are automatically expanded, and indentation is disabled. If true, collapsing of trees and indentations is applied again. Default value is always true.
You can the tree structure of tabs to bookmarks, when you create new bookmarks from tabs. For example:
var tabs = MyAddon.getTargetTabs();
if ('TreeStyleTabBookmarksService' in window)
TreeStyleTabBookmarksService.beginAddBookmarksFromTabs(tabs);
MyAddon.createBookmarksFromTabs(tabs);
// You must call this method even if you canceled to create bookmarks.
if ('TreeStyleTabBookmarksService' in window)
TreeStyleTabBookmarksService.endAddBookmarksFromTabs();
TreeStyleTabBookmarksService.beginAddBookmarksFromTabs(in Array aTabs)Sends a message that "new bookmarks may be created from tabs" to the service.
TreeStyleTabBookmarksService.endAddBookmarksFromTabs()Sends a message that "anyway creating of bookmarks finished" to the service.
Tree Style Tab provides some custom events. You can listen them via DOM2 Event API.
nsDOMTreeStyleTabCollapsedStateChangeDispatched when a sub tree is collapsed or expanded.
originalTargetgetData('collapsed')true" means the sub tree is now collapsed, "false" means expanded.nsDOMTreeStyleTabAutoHideStateChangeDispatched when the tab bar is shown or hidden by the "auto hide" feature.
originalTargetgetData('shown')true" means the tab bar is now shown, "false" means "hidden".getData('state')treestyletab-tabbar-autohide-state attribute of the tabbrowser element, so one of "expanded", "shrunken" or "hidden".nsDOMTreeStyleTabTabbarPositionChangingDispatched just before the position of the tab bar is changed.
originalTargetgetData('oldPosition')"top", "bottom", "left", or "right".getData('newPosition')"top", "bottom", "left", or "right".nsDOMTreeStyleTabTabbarPositionChangedDispatched after the position of the tab bar is changed.
originalTargetgetData('oldPosition')"top", "bottom", "left", or "right".getData('newPosition')"top", "bottom", "left", or "right".about;treestyletab-group on any existing group tab.log.logs.join('\n') in the remote debugger, if you're running TST in the debug mode.de locale (by sicherist, thanks!)keydown. This behavior is same to native UI.de locale (by sicherist, thanks!)enable and icons parameters for extra menu items of the fake context menu.icons parameter for the register-self API.HTTP_USER_AGENT to the data-user-agent attribute of the root element, for easy platform-specific styling.get-tree API now returns ancestorTabIds for each tab.de locale (by sicherist, thanks!)zh_TW locale (by Bo-Sian Li, thanks!)browser.tabs.selectOwnerOnClose correctly when new child tabs are configured to be inserted to top of tree. (regression on 2.4.9)senderTab which is resolved to the owner tab for a content script.de locale (by sicherist, thanks!)about:treestyletab-startup as a shorthand of the startup tab.indent information as a part of extended tabs.Tab.Highlight system color to highlight active and hover tabs at the Vertigo and the Mixed themes, on Linux.en locale (by Thomas Bertels, thanks!)zh_TW locale (by Bo-Sian Li, thanks!)de locale (by sicherist, thanks!)tabHide is rejected by Mozilla Add-ons website itself for now.extensions.webextensions.tabhide.enabled, a secret preference of Firefox itself.moveDroppedTabToNewWindowForUnhandledDragEvent to deactivate "move tab to new window by drag and drop" behavior.zh_TW locale (by lycsjm, thanks!)de locale (by sicherist, thanks!)current and other special values to specify tabs via APIs.svg.context-properties.content.enabled via about:config and deactivate the simulation by the checkbox under "Debug mode" in Tree Style Tab's configurations.about:privatebrowsing as a new blank tab, in the private browsing mode.zoomable to true in the debug mode.title=.about:treestyletab-group URI to new moz-extensions://... URL.tabs.Tab.openerTabId of each tab is now updated based on tree structure, for other addons.tabs.Tab.openerTabId are now automatically attached to the opener's tree. (Due to the bug 1409262, updated relation is not applied immediately.)browser.tabs.selectOwnerOnClose feature.true for the notified message with the type tabbar-clicked, TST's default behavior (open new tab) is canceled.0 case.)ping API to check TST's living status from other addons is now available.get-tree API now have correct active status.browser.tabs.selectOwnerOnClose more correctly. Now the "owner" tab is focused when the current tab is closed. You need to disable the option via about:config if you want TST to control focusing of tabs completely.browser.tabs.insertRelatedAfterCurrent=true more correctly.browser.tabs.animate=false in about:config.browser.tabs.drawInTitlebar=false (regression on 0.18.2016090601.)new Function().eval() hack.base tag are attached to the current tab as new children correctly.extensions.treestyletab.blockTabsInTitlebar in introduced to allow customization with userChrome.css around "tabs in titlebar" style.extensions.treestyletab.controlNewTabPosition to disable new tab position control by TST itself. When you use any other addon like Tab Mix Plus which provides ability to control new tab position for bookmarks or others, you possibly get better experience with turning it to false.about:treestyletab-group tabs and the rich tooltip without XHTML. (We don't need to mix XHTML and XUL to apply multi-column properties of CSS.)extensions.treestyletab.tabbar.autoHide.delay.show and extensions.treestyletab.tabbar.autoHide.delay.hide.relatedToCurrent=true option (or referrer) to the current tab, as the default behavior for compatibility with other addons.extensions.treestyletab.groupTab.columnize=false.)extensions.treestyletab.tooltip.columnize=false.)extensions.treestyletab.tabbar.autoShow.feedback.opened, extensions.treestyletab.tabbar.autoShow.feedback.closed, extensions.treestyletab.tabbar.autoShow.feedback.moved, extensions.treestyletab.tabbar.autoShow.feedback.selected and extensions.treestyletab.tabbar.autoShow.feedback.titleChanged.eval() hack.browser.tabs.insertRelatedAfterCurrent.
Now TST respects the default behavior for the preference, about new tabs opened from links.
See also the next topic.gBrowser.addTab() method with the option relatedToCurrent:true or a referrer information are now basically opened as children of the current tab.
By this change, new tabs from various other addons will be opened as children of the current tab without any hack.window.open() are now opened as orphan tabs, when TST cannot find the possible parent tab from the referrer information.gBrowser.treeStyleTab.readyToOpenOrphanTab() and gBrowser.treeStyleTab.readyToOpenOrphanTabNow().
They are useful to open new independent tab with relatedToCurrent:true (to go back to the previous "current" tab after the new tab closed immediately).browser.ctrlTab.previews is true.extensions.treestyletab.closeParentBehavior.promoteAllChildrenWhenParentIsLastChild is instoruced to disable a safeguard for the edge case: promoting all children to the upper level when a parent tab which has no sibling is closed.GM_openInTab() are placed at the top of existing child tabs of the current tab, if it is the default position of newly opened children.TreeStyleTabService.getLastDescendantTab() now returns correct value always.nsDOMTreeStyleTabTabbarRendered for addons who need to modify appearance of the tab bar, like Unified Sidebar.Leftside and Rightside - they simply became Left and Right.GM_openInTabs() from Greasmeonkey scripts become children of the current tab again.extensions.treestyletab.debug.*.eval() hack to avoid errors around invalid references to objects defined with ECMAScript 6's const in separate scopes for Firefox sources.gBrowser.treeStyleTab.dumpTreeInformation() to dump tree structure information stored in each tab, for debugging around unexpectedly broken tree.String.prototype.quote().target="_blank" in e10s mode.
(See also the related bug on the bugzilla.mozilla.org)dom.compartment_per_addon=true.browser.fullscreen.autohide is false.extensions.treestyletab.openGroupBookmark.temporaryGroup (for bookmark groups) and extensions.treestyletab.createSubtree.underParent.temporaryGroup (for "create new tree from selected tabs" feature) with the value false.extensions.treestyletab.autoAttach.fromCurrent to control new tab position from the current tab.extensions.treestyletab.animation.enabled to browser.tabs.animate.extensions.treestyletab.indent.autoShrink.onlyForVisible.extensions.treestyletab.indent.horizontal, extensions.treestyletab.indent.vertical, extensions.treestyletab.indent.min.horizontal and extensions.treestyletab.indent.min.vertical are available.extensions.treestyletab.tabbar.width.default, extensions.treestyletab.tabbar.height.default and extensions.treestyletab.tabbar.shrunkenWidth.default.extensions.treestyletab.autoExpand.intelligently works correctly. If you set the preference to false , not-focused trees are never collapsed by expansion of the newly focused tree.extensions.treestyletab.autoExpandSubtreeOnSelect.whileFocusMovingByShortcut.extensions.treestyletab.counter.role.horizontal and extensions.treestyletab.counter.role.vertical are available to control this behavior. See discussions in #197.extensions.treestyletab.restoreTree.level to 0..tabbrowser-tab { -moz-user-focus: normal !important; } to your userChrome.css.)extensions.treestyletab.tabbar.autoHide.contentAreaScreen.enabled to false.partTab() is renamed to detachTab() . For backward compatibility, the old name is still available.extensions.treestyletab.autoCollapseExpandSubtreeOnSelect.whileFocusMovingByShortcut.delay.)extensions.treestyletab.tooltip.fullTooltipDelay.)extensions.treestyletab.pinnedTab.faviconized is available to change pinned tabs in a vertical tab bar from "faviconized" to "regular tab".MozBeforePaint event.extensions.treestyletab.tooltip.mode to 1. (0 means "never", 2 means "always").TreeStyleTabService.treeViewEnabled was set to false twice, twisties in tabs were lost unexpectedly.extensions.treestyletab.pinnedTab.width and extensions.treestyletab.pinnedTab.height. If you set the width to -1, then pinned tabs will be expanded to the width of the vertical tab bar.GM_openInTab() in Greasemonkey scripts didn't become children of the current tab.gBrowser.treeStyleTab.moveTabs() , gBrowser.treeStyleTab.importTabs() , and gBrowser.treeStyleTab.duplicateTabs() to process multiple tabs with their tree structure.TreeStyleTabService.readyToOpenChildTabNow() , TreeStyleTabService.readyToOpenNextSiblingTabNow() , and TreeStyleTabService.readyToOpenNewTabGroupNow() . They are useful for reservation of new child tab, if the new tab is possibly canceled by some reason. Reservations made by these new API are automatically canceled with delay, so you don't have to call TreeStyleTabService.stopToOpenChildTab() manually.chromehidden attribute.extensions.treestyletab.tabbar.scrollToNewTab.mode didn't work for new tabs opened in the background.TreeStyleTabService.readyToOpenNextSiblingTab(aSourceTab) is available.extensions.treestyletab.closeRootBehavior should work only if extensions.treestyletab.closeParentBehavior is 0. (regression)multiselected attribute) are moved by drag and drop, even if selected tabs have any not-selected child.multiselected attribute, drag and drop of a parent tab to a bookmark tree is handled by Firefox or other addons, not by Tree Style Tab itself.extensions.treestyletab.tabbar.invertScrollbar.extensions.treestyletab.indent.min. Default value is 3.extensions.treestyletab.indent.autoShrink.extensions.treestyletab.repositionStatusPanel.extensions.treestyletab.compatibility.* items in the about:config.extensions.treestyletab.collapseExpandSubtree.sessionRestore. -1 restores the last state, 0 collapses all of restored trees, 1 expands all of them.extensions.treestyletab.tabbar.transparent.partialTransparency has a value equals to or larger than 1.TreeStyleTabService.position didn't work.extensions.treestyletab.autoAttachNewTabsAsChildren is renamed to extensions.treestyletab.autoAttach.TreeStyleTabService.currentTabbarPosition was renamed to TreeStyleTabService.position . For backward compatibility, the old name is still available.TreeStyleTabService.treeViewEnabled becomes false, then stacked tabs in horizontal tab bar are correctly unstacked.getData() from events fired with old names (without "nsDOM" prefix).extensions.treestyletab.autoAttachSearchResultAsChildren was set to 2.aEvent.getData(property name) to get the value from the event object.)extensions.treestyletab.autoAttachSearchResultAsChildren. 1 = default, 2 = always open result tabs as children, 0 = disable this behavior.)TreeStyleTabFocusNextTab event didn't fired and controlling of tab focus didn't work.getAncestorTabs() and TreeStyleTabFocusNextTab event. You can cancel focus handling of Tree Style Tab when the current tab is closed, by canceling of TreeStyleTabFocusNextTab events.extensions.treestyletab.urlbar.invertDefaultBehavior to true.)window.open() with features) disappeared.TreeStyleTabService.readyToOpenChildTab() works correctly (ignores the call) if it is called in the sidebar panel. (reported by Bert Blaha)extensions.treestyletab.openGroupBookmark.behavior. If you dislike this behavior, set a value: current value minus 2048)extensions.treestyletab.tabbar.scrollToNewTab.mode (default=1), 0 will disable this change, and 2 will scroll to new tabs anyway.pinTab() are shown as icons, even if it is in a vertical tab bar on Minefield 3.7a6pre.window.open() is called with an option toolbars=no .:-moz-window-inactive pseudo class introduced by Bug 508482.TabOpen event is dispatched don't break tree structure anymore.extensions.treestyletab.autoExpandSubtreeOnCollapsedChildFocused extensions.treestyletab.autoCollapseExpandSubtreeOnSelect.whileFocusMovingByShortcut .tabs-newtab-button { visibility: collapse !important; } into the userChrome.css.extensions.treestyletab.openGroupBookmark.behavior.)extensions.treestyletab.compatibility.TMP.gBrowser.treeStyleTab.partAllChildren(aTab)
TreeStyleTabService.currentTabbarPosition TreeStyleTabService.treeViewEnabled TreeStyleTabService.promoteTab(aTab) TreeStyleTabService.promoteCurrentTab() TreeStyleTabService.demoteTab(aTab) TreeStyleTabService.demoteCurrentTab() treestyletab-tabbar-autohide-state attribute.browser.tabs.loadInBackground works correctly for Ctrl/Command-click on links. (browser.tabs.loadDivertedInBackground was wrongly applied.)scroll event frequently.browser.tabs.loadDivertedInBackground works for new tabs automatically opened from links.extensions.treestyletab.tabbar.fixed.insensitiveArea )extensions.treestyletab.autoCollapseExpandSubTreeOnSelect.whileFocusMovingByShortcut to true .extensions.treestyletab.openGroupBookmark.behavior.extensions.treestyletab.autoExpandSubTreeOnCollapsedChildFocused.TreeStyleTabParted (for detaching of a tab from a tree) and TreeStyleTabAutoHideStateChanging (for auto-show/hide of the tab bar)extensions.treestyletab.tabbar.invertClosebox becomes a secret preference (checkbox for the option will not be shown in the configuration dialog). And, on Mac OS X, the default value becomes same to other platforms.moveTabTo() method are correctly indented.TreeStyleTabService.setTabbarWidth() and TreeStyleTabService.setContentWidth() are available.TreeStyleTabCollapsedStateChange is available for developers. extensions.treestyletab.clickOnIndentSpaces.enabled to false.extensions.treestyletab.TMP.doNotUpdate.isTabVisible to true.)extensions.aios.tbx.tabbar, are available on vertical tab bar. If you turn it to true, customizable toolbars are shown on/below the vertical tab bar.extensions.treestyletab.autoAttachNewTabsAsChildren. If you don't want any tabs to be children automatically, you should turn it to false.target attribute which were wrongly loaded to both of new tab and the current tab, is corrected.tabbrowser.loadTabs() is available.