Session manager & hierarchical tab tree
Unofficial fork with Firefox support, English / Russian UI, and a single shared codebase
🦊 Install from Mozilla Add-ons · 📦 Download GitHub release (ZIP)
Fork of the original Tabs Outliner by Vladyslav Volovyk, with:
- One shared codebase (
extension/) for both browsers - Chrome / Chromium — Manifest V3
- Firefox — Manifest V2 +
browser_specific_settings - i18n — English + Russian (
_locales/en,_locales/ru) + language switcher - Build scripts for unpacked loads and zip packages
Not an official distribution. Original extension is commercial. Use at your own risk. Support the original author if you need the official product.
extension/ # single source tree (load after build)
manifest.chrome.json # Chrome / Edge / Brave / Chromium (MV3)
manifest.firefox.json # Firefox (MV2)
background_v3.js # MV3 service worker entry (Chrome)
background.js # main background logic
_locales/en|ru/ # translations
tree/, img/, backup/, …
scripts/build.mjs # copies extension/ → dist/* + picks manifest
dist/ # generated (gitignored)
chrome/
firefox/
*.zip # when using npm run pack
There is no single manifest.json that both stores accept as-is: Chrome needs MV3 (service_worker, action, …), Firefox needs MV2 background scripts and a Gecko id.
The code is unified; the build step writes the right manifest.json into dist/chrome or dist/firefox.
Requires Node.js 18+ (no npm install needed).
# both browsers → dist/chrome + dist/firefox
npm run build
# one target
npm run build:chrome
npm run build:firefox
# same + zip archives in dist/
npm run pack
# CI: EN/RU key parity + all data-i18n / getMessage keys present
npm run check:localesOn every published GitHub Release the workflow .github/workflows/release.yml runs:
npm run pack- Uploads
tabs-outliner-chrome-v*.zipandtabs-outliner-firefox-v*.zipas workflow artifacts - Attaches the same zips to that Release
You can also run it manually: Actions → Release packages → Run workflow.
Example:
git tag v1.4.167
git push origin v1.4.167
# then create/publish a Release for that tag in the GitHub UI
# (or: gh release create v1.4.167 --generate-notes)npm run build:chrome- Open
chrome://extensions - Enable Developer mode
- Load unpacked → select
dist/chrome
npm run build:firefox- Open
about:debugging#/runtime/this-firefox - Load Temporary Add-on… → choose
dist/firefox/manifest.json
Temporary add-ons are removed when Firefox restarts. Permanent sideloading requires signing or a developer profile.
Strings live under extension/_locales/<code>/messages.json.
Registry of UI languages (switcher + CI):
extension/_locales/locales.json— must list every folder that hasmessages.json
UI pages use data-i18n / data-i18n-title and i18n-helper.js.
Options → Interface language is built dynamically from locales.json (Auto + all codes).
# 1. Copy base catalog
cp -r extension/_locales/en extension/_locales/es
# 2. Translate extension/_locales/es/messages.json
# 3. Register in locales.json:
# { "code": "es", "nativeName": "Español" }
# 4. Verify (same check as GitHub Actions)
npm run check:localesCI fails if:
- a locale folder is missing from
locales.json(or vice versa); - any locale’s keys differ from English base;
- a
data-i18n/getMessage('…')key is missing from the base catalog.
Unified source includes Firefox-safe patches that also work on Chrome:
chrome.action↔browserActionbridge- structured-clone-safe messaging (
JSONstrip for ports) tabs.update({ active: true })instead of deprecatedselected- optional
identity.emailfiltered on Firefox - guards for missing
webkitRequestFileSystem/ tree rows
Chrome package uses manifest.chrome.json (MV3 + background_v3.js service worker).
Firefox package uses manifest.firefox.json (MV2 persistent background scripts + Gecko id tabsoutliner-port@nikita.local).
- Chrome Web Store — Tabs Outliner
- tabsoutliner.com
- Author: Vladyslav Volovyk
Original code and trademarks belong to the original author.
This repository is an unofficial localization/compatibility fork for personal and educational use.
You are responsible for compliance with the original license and store policies.