Local-first Chrome extension — save tab sessions, restore them later, organize with tags and categories, work with your bookmark library, and optionally link a project folder index (names and structure only).
Everything stays on your device in chrome.storage.local. No Tab Stack servers, no analytics, no sync service.
Tab Stack is the sister extension to TubeStack, which saves YouTube sessions as playlists. Both follow the same save → organize → restore later workflow, but Tab Stack is aimed at long-running projects: research, client work, or any tab sprawl you need to pick up again weeks later. Collect and organize sources across sessions and bookmark folders, then reopen a whole project in one click.
- Save & restore — current window, context menu (this tab / window / left / right / except current)
- Restore tabs flat, or with Chrome tab groups rebuilt from bookmark folder paths
- Sessions — name, notes, tags, priority, category labels (L1 / L2 / L3), custom groups, favorites
- List, details, and grid views; per-tab priority, tags, page metadata backups, and Wayback links
- Bookmarks — import Chrome bookmarks, browse like a mini file manager
- Sidebar + manager layout with folders, plus flat list and icon grid views
- Home page — bookmarks first (Bookmarks Bar, all bookmarks, or a folder you pick), then a compact text-only news list; DuckDuckGo search and weather (Open-Meteo)
- Global search across saved sessions and the bookmark library; themes and a custom background; hide a shortcut from the page without removing the bookmark
- News headlines — 5 or 10 text headlines from the sources you switch on (BBC News, NPR, The Guardian), each linking to the original article. No images, adverts, or tracking. Reuters and AP are listed separately as sources requiring licensed or authenticated access
- Linked local folder — manual folder picker per session or bookmark folder; stores file/folder names, relative paths, extensions, sizes, and modified dates only
- Backup — export / import JSON; erase all data in Settings
Add screenshots here after capture (recommended 1280×800 for store listings).
| Home page | Sessions | Bookmark manager |
|---|---|---|
| coming soon | coming soon | coming soon |
Coming soon. For now, load unpacked in Developer mode (below).
- Clone this repository.
- Open Chrome and go to
chrome://extensions - Enable Developer mode (top right)
- Click Load unpacked
- Select this repository folder (the one containing
manifest.json) - Pin Tab Stack from the extensions menu, then open the popup or home page
Reload the extension after pulling updates from git.
| Permission | Why |
|---|---|
tabs |
Read and restore open tabs |
storage |
Local sessions and indexes (Chrome ~10 MB quota) |
bookmarks |
Import and display bookmarks |
tabGroups |
Optional restore with Chrome tab groups |
contextMenus |
Right-click save actions |
Host: api.open-meteo.com |
Launchpad weather forecast |
Host: geocoding-api.open-meteo.com |
Settings: look up city / postal code |
Host: icons.duckduckgo.com |
Favicons in session lists |
Host: feeds.bbci.co.uk |
BBC News RSS, only when BBC News is switched on |
Host: feeds.npr.org |
NPR RSS, only when NPR is switched on |
Host: www.theguardian.com (/*/rss) |
Guardian RSS, only when The Guardian is switched on |
Not used in v1: history, downloads, broad optional hosts, remote code.
TabStack/
├── manifest.json # Manifest V3 entry
├── background/ # Service worker (context menus, news feed fetches)
├── popup/ # Toolbar popup — quick save
├── home/ # Main UI (Launchpad, Sessions, Bookmarks, Settings)
├── sidepanel/ # Side panel stub → opens home
├── dashboard/ # Redirect to home
├── shared/ # Storage, tabs, bookmarks, folder index scan, news adapters
├── scripts/ # lint + build (Node, no dependencies)
├── tests/ # node --test suite (no dependencies)
├── icons/ # Extension icons (16–128)
├── assets/ # In-app branding (logo)
├── PRIVACY.md # Privacy policy
├── STORE_LISTING.md # Chrome Web Store draft copy
└── RELEASE_CHECKLIST.md # Manual QA before publish
Providers are adapters behind one normalized headline interface
(shared/newsProviders.js). A provider only appears as usable when an
official, public, key-free feed has been verified.
Operational sources — selectable in Settings, BBC News on by default:
| Provider | Feed host | Topics |
|---|---|---|
| BBC News | feeds.bbci.co.uk |
Top, U.S. & Canada, World, Politics (UK), Business, Technology, Science, Health |
| NPR | feeds.npr.org |
Top, U.S., World, Politics, Business, Technology, Science, Health |
| The Guardian | www.theguardian.com/*/rss |
Top, U.S., World, Politics (US), Business, Technology, Science, Health & society |
Additional sources requiring access — listed beneath the operational ones in Settings, permanently disabled, never counted as a selection, and never requested over the network:
| Provider | Note |
|---|---|
| Reuters | Official public feeds are unavailable. Future support may use licensed Reuters API access or an authenticated Reuters RSS feed. |
| Associated Press | Official public feeds are unavailable. Future support may use the licensed AP Media API or another authenticated AP feed. |
Tab Stack does not use unofficial mirrors or scrape publisher websites. Both provider definitions are preserved so either can be enabled later if suitable API or authenticated feed access is obtained. Stored settings that still name Reuters or AP are migrated to the working defaults on load.
npm run lint # syntax, import graph, manifest and host-permission checks
npm test # node --test suite
npm run build # dist/ + tab-stack-<version>.zipNo dependencies are installed; Node 20+ is all that is required.
See PRIVACY.md. Linked folders never upload data; Tab Stack does not read file contents.
See STORE_LISTING.md and RELEASE_CHECKLIST.md.
MIT — see LICENSE.