MCPcopy
hub / github.com/piroor/treestyletab

github.com/piroor/treestyletab @4.3.5 sqlite

repository ↗ · DeepWiki ↗ · release 4.3.5 ↗
1,897 symbols 5,508 edges 112 files 0 documented · 0%
README

Tree Style Tab (aka TST)

Build Status

This extension to Firefox provides the ability to work with tabs as "trees".

New tabs opened from the current tab are automatically organized as "children" of the current tab. Such "branches" are easily folded (collapsed) by clicking on the arrow shown in the "parent" tab, so you no longer need to suffer from too many visible tabs. If you want, you can restructure the tree via drag and drop.

  • Such a tree of tabs will behave like a visual browsing history for you. For example, if you see a list of search results for a topic, each search result link will open in new child tab. New tabs opened from these "child" tabs will appear as descendants of their originating tabs. You'll easily dig and dig deeply, without losing your browsing trail - if you want to go back to the original search result, you just have to switch to the "root" tab.
  • Moreover, each tree will reflect a group of tabs on a similar topic.

Please enjoy as you like!

Release builds

Development builds

  • Builds for each commit are available at "Artifacts" of the CI/CD action. Please note that you need to log in to the GitHub to see artifacts. And you'll need to unzip the downloaded file treestyletab-we.xpi.zip manually to extract the XPI package file treestyletab-we.xpi, otherwise you'll see an error about invalid manifest.

Development builds are not signed, so you need to load them by an atypical method. (Please click this section to see instructions.)

There are two methods to try them in your environment:

  • Go to about:debugging and click "Load Temporary Add-on" button, then choose a XPI file. The development build will be loaded and active until you restart Firefox. Note: don't uninstall the remporarily installed dev build even if you finished a test, because uninstallation clears all configs of TST. Instead you just restart Firefox, then temporarily installed build are unloaded and the previously installed version will go back.
  • If you want to try it as a regular addon instead of a temporary addon, you need to use Nightly instead of the stable Firefox or Firefox beta. On Nightly, go to about:config and set xpinstall.signatures.required to false. Then you will be able to install such an unsigned XPI file.

Also, you can build a custom development build locally. For example, here are the steps to build an XPI on Ubuntu (native, or WSL on Windows 10):

$ sudo apt install git nodejs npm jq zip
$ git clone --recursive https://github.com/piroor/treestyletab.git
$ cd treestyletab/webextensions
$ make

Steps to build a specific revision (for example bb467286d58b3da90fd1b2e6ee8a8016e3377b97):

$ cd treestyletab/webextensions
$ git checkout bb467286d58b3da90fd1b2e6ee8a8016e3377b97
$ git submodule update
$ make

Then you will see new .xpi files in the current directory. You can install such a development build via about:debugging. Click the Load Temporary Add-on button and choose treestyletab/manifest.json or a built .xpi file.

Extensions that extend TST

TST provides an API for other extensions. Some extend the behavior of TST's sidebar panel. See also the list of known helper addons.

Similar projects

There are some similar project by someone not me providing similar features:

Vertical tab bar with tree (and more features)

Vertical tab bar with grouping

Vertical tab bar without tree or grouping

Listing tabs with a search field

Some extensions provide a pop-up list of tabs with a search field that complements TST:

for Google Chrome and Chromium

for Vivaldi

Requests, proposals, or unexpected trouble from bugs

All feedback is handled as GitHub issues.
Please read FAQ below, before you post any new feature request.

Basic project policy

  • TST is basically designed to be used as a permanently-shown tab management UI, an alternative of Firefox's native tab bar.
  • To avoid users' confusion, TST respects Firefox's built-in behavior and features regarding the tab bar as possible as it can: tab context menu, gestures, etc., except features impossible to be implemented with regular WebExtensions API.
  • TST is designed to work with "tree of tabs".
  • TST's tree is designed to work as an extended memory for your brain. To satisfy this concept, TST is designed to guess the relationship between tabs automatically, from the context.
  • Better usability for ungrouped flat tabs in a vertical tab bar is an added benefit.
  • Any feature request unrelated to these points may be rejected, even if many people love it.
  • For example: session management, search field, detailed focus control of tabs, and so on.
  • Instead of adding more features, I hope to make TST compatible with other tab-related extensions. If it is required for better compatibility, I have added public APIs for other extensions, and there are many implementations using this API. If you need any new APIs, please file API proposals in the issue tracker.
  • Here is the basic policy about decision to accept or reject feature requests:
    • If Firefox has the option, TST also should provide similar option to emulate it. (ex. browser.tabs.closeTabByDblclick emulation, browser.tabs.selectOwnerOnClose emulation, warnings for closing multiple tabs, style switch for leftside/rightside sidebar)
    • If TST imitates Firefox's UI and Firefox doesn't provide any options to control them, TST basically don't provide options for them. (ex. visibility options for imitated context menu commands)
    • If it is essential for accessibility, TST should provide the option. (ex. text direction option, animation effects, "High Contrast" theme, color switch for the toolbar button icon)
    • If it is impossible to be done via customizations with user stylesheets, TST should provide the option. (ex. unfaviconizing of pinned tabs, positioning options for new tabs, drag-and-drop behavior)
    • If it is already available during combination with other extensions, TST don't provide options for them. (ex. coloring of tabs, suspending of tabs, detailed control of tab focus, and other features covered by existing helper extensions](https://github.com/piroor/treestyletab/wiki/Helper-addons-extending-functionality-of-TST))
    • If it couldn't be (or hard to be) done with any of existing methods listed above, it can become a new built-in, even if it looks not related to any of native tab features or tree management.
  • TST supports official latest releases of Firefox: both regular and ESR.
  • We keep codes compatibe with both these reelases. Features depending on new APIs not available on the latest ESR are disabled on ESR, but we may implement that. Changes incompatible to the latest ESR will be left pending until a new ESR is released.

Please remind that some existing features or options may violate this policy due to historical reasons.

FAQ / frequently rejected requests/proposals

Other browsers support

Support for Pale Moon, Waterfox, and other Firefox forks

Please use a forked version of TST for Pale Moon instead. TST is designed for latest release of Mozilla Firefox (*Please see also the strict_min_version information in the install manifest to know the minimum supported Firefox version), and other applications forked from Firefox are not supported.

"Waterfox Current" looks based on Firefox ESR68 and you can install TST 2.0 and later to it. However "Waterfox Classic" based on Firefox 56 is never supported.

Support for other browsers based on Chromium (ex. Google Chrome) and WebKit (ex. Safari)

TST can't be ported to other browsers because it depends on some Firefox specific APIs like sidebar, so it needs to be re-implemented completely. Sorry, but I won't re-implement TST as an extension for other browsers by myself because I use Firefox. (But there are some alternatives developed by others.)

Support for Firefox Mobile

Currently I have no plan to add support for mobile devices (Android and iPhone) from some reasons:

  • Firefox Mobile doesn't support Sidebar API.
  • Mobile devices have limited RAM. Too many numbers of tabs opened by TST may lead OOM killer to kill Firefox Mobile.

Appearance

How to hide the top tab bar (horizontal tab strip)?

As a workaround, you can create a userChrome.css file. But please remind that I - the original author of TST - never recommend such an usage, because

Core symbols most depended-on inside this repo

get
called by 689
webextensions/common/TreeItem.js
add
called by 310
webextensions/common/MetricsData.js
sendMessage
called by 263
webextensions/resources/module/InContentPanelController.js
setAttribute
called by 159
webextensions/common/TreeItem.js
indent
called by 135
webextensions/background/browser-action-menu.js
log
called by 135
webextensions/background/tree.js
is
called by 98
webextensions/tests/assert.js
update
called by 89
webextensions/common/TreeItem.js

Shape

Function 1,243
Method 600
Class 54

Languages

TypeScript100%

Modules by API surface

webextensions/common/TreeItem.js329 symbols
webextensions/common/tabs-store.js73 symbols
webextensions/background/commands.js63 symbols
webextensions/sidebar/components/TreeItemElement.js61 symbols
webextensions/sidebar/components/TreeItemSubstanceElement.js55 symbols
webextensions/sidebar/scroll.js48 symbols
webextensions/common/common.js47 symbols
webextensions/sidebar/drag-and-drop.js43 symbols
webextensions/common/tst-api.js42 symbols
webextensions/options/init.js41 symbols
webextensions/tests/test-close-parent-behavior.js39 symbols
webextensions/background/tree.js39 symbols

Dependencies from manifests, versioned

@babel/core7.26.0 · 1×
@babel/eslint-parser7.25.9 · 1×
@babel/preset-env7.26.0 · 1×
@eslint/compat1.2.4 · 1×
@prantlf/jsonlint16.1.0 · 1×
babel-plugin-module-resolver5.0.0 · 1×
codemirror5.57.0 · 1×
codemirror-colorpicker* · 1×
confusing-browser-globals1.0.11 · 1×
dompurify3.4.1 · 1×
eslint9.17.0 · 1×
eslint-import-resolver-babel-module5.3.2 · 1×

For agents

$ claude mcp add treestyletab \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact