Introduction
Tabs++ is a high-performance productivity layer for Google Chrome — treating your browser as a persistent workspace. It ensures that your pinned tabs, grouped tabs, and session state survive accidental closures, browser crashes, and resource exhaustion.
With 90+ features spanning tab protection, workspace management, media tools, focus timers, system controls, and a global Command Palette, Tabs++ turns your browser into a Browser OS.
Ctrl+Shift+K) is the heart of Tabs++. Tools should be invisible until you need them, leaving your screen real estate for your actual work.
Getting Started
Installation
Recommended: Install directly from the Chrome Web Store:
Developer install (from source):
- Clone the GitHub repository or download the source.
- Open Chrome and navigate to
chrome://extensions/. - Enable Developer mode in the top right corner.
- Click Load unpacked and select the extension folder.
Your First Steps
- Press
Ctrl+Shift+K(Mac:Cmd+Shift+K) to open the Command Palette. - Start typing to search open tabs, history, and bookmarks.
- Type
>to enter Action Mode — the prefix for all commands. - Type
!to trigger Search Bangs for external sites. - Open the extension popup (toolbar icon) to configure which features are enabled.
Protection Engine
The core of Tabs++ is the real-time protection engine. It silently monitors your tabs in the background and ensures protected tabs survive any accident.
What Gets Protected
- Pinned Tabs — If you close a pinned tab, Tabs++ instantly recreates it at its baseline URL.
- Grouped Tabs — Any tab inside a Chrome Tab Group is considered "protected." If closed, it is restored back into its exact group and original position.
How Protection Works
- Memory Baseline System: Tabs++ tracks the "ground truth" of your workspace in a high-speed background Map. This stores the URL, index, window ID, group ID, group title, and group color for every protected tab.
- Deterministic Hibernation: Restored tabs are created and instantly "discarded." They appear in your tab strip but use zero CPU and zero RAM until you click them.
- URL-First Reconciliation: After a browser restart, Chrome assigns brand-new Tab IDs. Tabs++ re-binds stored baselines to new Tab IDs by matching canonical URLs — so protection is fully preserved across restarts.
- Startup Hibernate: On browser launch, all background tabs are automatically discarded to save RAM.
Inheritance Protection
New tabs opened from protected (pinned/grouped) tabs are automatically ungrouped when they navigate to a different domain. This prevents your organized groups from being polluted by temporary navigation tabs.
Session Vault
While the protection engine handles real-time accidents, the Session Vault handles system-level failures and deliberate cleanups.
- Tabs++ takes periodic snapshots of your workspace state to
chrome.storage.local. - If Chrome fails to restore your sessions on startup, you can summon the Vault to revive everything.
- When closing an entire window, all its protected tabs are bulk-saved to the vault.
- When closing multiple tabs at once (batch close), they are archived to the vault instead of being individually restored.
- When an entire group is deliberately closed, its tabs go to the vault.
> Restore Vault
You can also restore or clear the vault from the extension popup Settings tab.
Auto-Grouping
Tabs++ includes a background intelligence engine that automatically organizes high-frequency domains into themed groups as you browse. Enable it via the Smart Groups toggle in the popup.
Thematic Rules
| Category | Color | Example Domains |
|---|---|---|
| AI | Green | chatgpt.com, claude.ai, gemini.google.com, perplexity.ai, deepseek.com, grok.com, and all .ai domains |
| Dev | Blue | github.com, gitlab.com, stackoverflow.com, aws.amazon.com, vercel.com, netlify.com, npmjs.com, cursor.sh, leetcode.com |
| Design | Purple | figma.com, canva.com, dribbble.com, adobe.com, unsplash.com, fonts.google.com, spline.design |
| Media | Red | youtube.com, netflix.com, spotify.com, twitch.tv, vimeo.com, steampowered.com |
| News | Yellow | nytimes.com, bbc.com, theverge.com, techcrunch.com, wsj.com, medium.com, wikipedia.org |
| Social | Cyan | x.com, twitter.com, facebook.com, reddit.com, instagram.com, linkedin.com, discord.com, threads.net, bsky.app |
When enabled, any new tab matching a rule is automatically added to an existing group or a new group is created. The group name matches the category (e.g., "Dev", "AI").
Auto-Collapse
When enabled, Tabs++ automatically collapses tab groups once all their tabs have been discarded (hibernated). This maximizes horizontal space in the tab strip while keeping your logical groups one click away.
Collapse triggers after the last active tab in a group is discarded. Groups that still have a loaded (non-discarded) tab remain expanded.
Enable via the Auto-Collapse toggle in the popup.
Organization Commands
All commands are accessible via the Action Engine (> prefix) in the Command Palette.
| Command | Description |
|---|---|
> Magic Organize | Auto-sort all tabs in the window into domain-based groups. |
> Dedupe | Close all duplicate tabs in the current window. |
> Gather Standalone | Pull all ungrouped tabs into a single "Standalone" group. |
> Consolidate Domain | Group all tabs from the same hostname together. |
> Merge Duplicate Groups | Consolidate groups that share the same name across windows. |
> Extract Group | Move the current tab group into its own window. |
> Group All Tabs | Put all unprotected tabs into one "Grouped Tabs" container. |
> Ungroup All | Flatten all grouped tabs in the current window. |
> Close Other Tabs | Close everything except the active tab. |
> Clear Unprotected | Remove all unpinned and ungrouped tabs. |
> Toggle Pin | Pin or unpin the current tab. |
> Toggle Group | Group or ungroup the current tab. |
> Toggle Mute | Mute or unmute the current tab. |
> Duplicate Tab | Clone the current tab. |
Command Palette
The Command Palette is the central hub of Tabs++. Access your entire browser state via Ctrl + Shift + K (Win/Linux) or Cmd + Shift + K (Mac).
What It Searches
- Open Tabs — All tabs across all windows, with fuzzy matching on title and URL.
- Bookmarks — Your entire bookmark collection.
- Browser History — Recently visited pages.
- Recently Closed — Tabs and sessions you recently closed.
- Actions — All Tabs++ commands and tools.
- Google Suggestions — Live search suggestions from Google.
- Saved Tab Sets — Your saved workspaces appear in search results.
Navigation
- Arrow Up/Down — Navigate between results.
- Enter — Activate the selected result (switch tab, open URL, execute action).
- Escape — Close the palette or cancel a pending command prompt.
- Shift+Click on a result in media mode — Toggle selection.
Action Engine (>)
Type > in the palette to enter Action Mode. This gives you access to 50+ system commands. Type part of a command name to filter — fuzzy matching is supported.
Performance Commands
| Command | Description |
|---|---|
> Hibernate All | Discard all background tabs across all windows to free RAM. Also bound to Ctrl+Shift+H. |
> Hibernate Window | Sleep all background tabs in the current window. |
> Hibernate Pinned | Force sleep on all pinned tabs. |
> Hibernate Current | Put the active tab to sleep immediately. |
> Mute Background | Silence all audible tabs except the current one. |
> Pause Media | Stop all playing video and audio elements globally. |
Focus Commands
| Command | Description |
|---|---|
> Focus View | Enter Reader Mode — clean, minimal reading interface. |
> Zen Fullscreen | Enter fullscreen with all browser UI hidden. |
> Split View | Tile current and previous tabs side by side. |
> Start 25m Pomodoro | Begin a 25-minute focus session. |
> Start 50m Pomodoro | Begin a 50-minute deep work session. |
> Start 5m Break | Begin a 5-minute short break. |
> Start 15m Break | Begin a 15-minute long break. |
> Stop Timer | Cancel the active Pomodoro session. |
Safety & Control
| Command | Description |
|---|---|
> Snapshot Session | Force a manual backup of your current session to the Vault. |
> Panic Close | Close all tabs opened in the last hour and wipe history. |
> Hard Reload | Bypass cache and force-refresh the page. |
> Update Pinned URL | Lock the current pinned tab to its current URL (includes video timestamps on YouTube/Vimeo). |
> Set Custom Baseline URL | Manually set a persistent URL for a protected tab. |
Dynamic Commands
Some commands accept inline arguments directly in the palette:
| Syntax | Description |
|---|---|
> vol 80 | Set current tab volume to 80%. |
> summon [name] | Merge a saved set or group into the current window. |
> replace [name] | Swap the current workspace with a saved set. |
> launch [name] | Open a saved set in a new window. |
> delete set [name] | Delete a saved tab set. |
> clean time 2h | Set auto-archive threshold to 2 hours. |
> hibernate time 30m | Set auto-hibernate threshold to 30 minutes. |
Search Bangs (!)
Skip the middleman. Type a ! prefix followed by the bang code to search external sites directly from the palette.
| Bang | Site | Bang | Site |
|---|---|---|---|
!g | !ddg | DuckDuckGo | |
!yt | YouTube | !w | Wikipedia |
!gh | GitHub | !so | Stack Overflow |
!r | !x / !tw | X (Twitter) | |
!maps | Google Maps | !img | Google Images |
!mdn | MDN Web Docs | !npm | npm Registry |
!a | Amazon | !sp | Spotify |
!gpt | ChatGPT | !px | Perplexity |
!fig | Figma Community | !can | Canva |
!pin |
Usage: !yt lofi beats searches YouTube for "lofi beats". !gh tabsplusplus searches GitHub.
Tab Sets & Workspaces
Tab Sets let you save, launch, and swap entire workspaces — collections of protected tabs (pinned and grouped) with their group titles, colors, and positions preserved.
Save Commands
| Command | Description |
|---|---|
> Save Workspace | Save all protected (pinned + grouped) tabs in the current window. |
> Save All Tabs | Save every tab in the window, including unprotected ones. |
> Save Group | Save only the tabs in the current group. |
> Stash Group | Save the current group and close all its tabs. |
> Export Sets | Download all saved sets as a JSON backup file. |
Load Commands
| Command | Description |
|---|---|
> Launch [name] | Open a saved set in a brand-new window. Uses a Window Launch Lock to prevent auto-grouping interference. |
> Summon [name] | Merge a saved set into the current window. Uses smart deduplication — won't create duplicate tabs. |
> Replace [name] | Swap the entire current workspace with a saved set. Old tabs are safely removed after the new ones load. |
> Delete Set [name] | Remove a saved set. |
Workspace Types
- Workspace Set: Saves only protected tabs (pinned and grouped).
- Complete Set: Saves all tabs in the window, including unprotected ones.
- Group Set: Saves only the tabs within a specific group.
Tab Sets are also manageable from the Sets tab in the extension popup, with Summon, Replace, and Delete buttons for each set. Import/Export is also available there.
Smart Palette Tools
The palette automatically detects math, units, colors, and text transformations. No prefix needed — just type and see the result. Press Enter to copy to clipboard.
Math Calculator
Type expressions like 25 * 4, 1024 / 8, or 3.14 + 2. Supports +, -, *, /.
Unit Converter
- px ↔ rem: Type
32pxto see rem value, or2remto see px value. Based on configurable root font size (default 16px). - Physical Units: Type
10in,25cm,6ft,100mm, or2mto see conversions to all other units.
Color Converter
Type any hex code like #ff0000 or #333 to instantly see the RGB and HSL values. Press Enter to copy.
Case Converter
| Syntax | Result |
|---|---|
slug My Page Title | my-page-title |
camel my component name | myComponentName |
snake My Variable | my_variable |
title hello world | Hello World |
upper quiet | QUIET |
lower SHOUTING | shouting |
Encoding Tools
| Syntax | Result |
|---|---|
base64 hello | Encodes to Base64 (or decodes if input looks like Base64). |
url hello world | URL-encodes (or decodes if input contains %). |
Lorem Ipsum Generator
| Syntax | Result |
|---|---|
lorem 10 | Generates 10 words of Lorem Ipsum. |
lorem p | Generates a full paragraph (~40 words). |
lorem 5 | Generates 5 words. |
Tab Volume Control
Set the perfect audio levels for music, videos, or any tab with audio — without hunting for the browser's native mixer.
Commands
| Command | Description |
|---|---|
> Vol Up | Increase volume by +10%. |
> Vol Down | Decrease volume by -10%. |
> Vol Max | Set volume to 100%. |
> vol 75 | Set volume to exactly 75% (dynamic command). |
Feedback
When the palette is closed, a slide-in on-page toast confirms your volume level. When the palette is open, the volume is shown directly in the input bar.
Enable via the Tab Volume Control toggle in the popup.
Media Extractor
A high-performance engine to scan, filter, and batch download images and videos from any page.
How To Use
- Open the Command Palette (
Ctrl+Shift+K). - Type
> Extract Mediaand press Enter. - The palette switches to Media Mode — a masonry grid of all detected images and videos.
- Click to select/deselect items. Use Enter to download all selected.
Smart Filtering
Type a query in the palette to filter results in real time using a hybrid natural-language parser:
| Filter | Example | Effect |
|---|---|---|
| Format | png, jpg, webp, gif | Show only images of that type. |
| Width | w > 1000, width >= 800 | Filter by image width in pixels. |
| Height | h < 500, height = 600 | Filter by image height in pixels. |
| Default dim | > 800 | Defaults to width comparison. |
| Orientation | landscape, portrait, square | Filter by aspect ratio. |
| Keywords | logo, banner | Match filename or alt text. |
| Combined | >1000 png landscape | All filters together. |
Enable via the Extract Media Assets toggle in the popup.
Picture-in-Picture Player
Pop out any video (YouTube, Twitch, Vimeo, Netflix, etc.) into a floating window that stays on top of all other windows.
> PiP
Or use the PiP Player card in the popup Tools tab. Enable via the autoPiP toggle.
Pomodoro Timer
Stay focused without leaving your browser. A minimalist, glassmorphic timer that syncs across every single tab.
Commands
| Command | Duration |
|---|---|
> Start 25m Pomodoro | 25-minute work session. |
> Start 50m Pomodoro | 50-minute deep work session. |
> Start 5m Break | 5-minute short break. |
> Start 15m Break | 15-minute long break. |
> Stop Timer | Cancel the active session. |
Custom Duration
Type timer 10 (without the > prefix) in the palette to start a custom 10-minute timer.
Type > pomo 30 via the dynamic command system for a 30-minute custom Pomodoro.
Features
- Desktop Notifications: Get notified when a session ends, even if Chrome is minimized.
- Cross-Tab Sync: The timer pill appears in the bottom-right corner of every open tab. All tabs show the same countdown.
- Click to Stop: Click the timer pill in any tab to cancel.
- Auto-Transition: Work sessions end with a "Time for a break!" notification. Break sessions end with "Ready to start working again!"
Enable via the Pomodoro Timer toggle in the popup.
Focus View (Reader Mode)
Strip away ads, sidebars, and distractions with one click. Tabs++ renders a clean, high-contrast, monochromatic reading interface for any article.
> Focus View
Alias: > read, > reader.
Features
- Smart Content Extraction: Heuristic-based detection finds the main article content and ignores navigation, ads, and sidebars.
- Premium Typography: Serif body text at 21px, sans-serif headers, and optimized line spacing for comfortable reading.
- Dark/Light Mode: Automatically follows your system preference.
- Image Support: All article images are preserved and displayed at full width.
- Close Button: A fixed close button in the top-right corner returns you to the original page.
Enable via the Focus View toggle in the popup.
Zen Fullscreen
Enter true fullscreen mode with all browser UI hidden — tabs, address bar, bookmarks bar, and window chrome.
> Zen Fullscreen
This is equivalent to the browser's native fullscreen (F11) but accessible directly from the palette.
Split View
Quickly tile the current tab and the previous tab side by side. The current window resizes to half its width on the left, and a new window opens with the same URL on the right.
> Split View
Color Eyedropper
Pick any color from anywhere on the screen. Tabs++ captures a screenshot, lets you click any pixel, and returns the Hex, RGB, and HSL values.
> Eyedropper
Alias: > color, > picker, > hex.
The palette closes, a screenshot is captured after a 350ms delay, and a crosshair cursor appears over the full-page image. Click to pick. Press Escape to cancel.
Enable via the Eyedropper toggle in the popup.
Full-Page Screenshot
Capture the entire scrollable page as a single PNG — including content below the fold and lazy-loaded images.
> Screenshot
The content script drives the capture loop: it scrolls down in viewport-sized increments, asks the service worker to capture each slice via captureVisibleTab, stitches them together on a canvas, and triggers a download.
Enable via the Full-Page Screenshot toggle in the popup.
Smart Converter & Math
The Command Palette doubles as a zero-UI calculator, unit converter, and color translator. No prefix needed — Tabs++ auto-detects what you're typing.
| Type | Example Input | Example Output |
|---|---|---|
| Arithmetic | 25 * 4 | 100 |
| Addition | 128 + 64 | 192 |
| Division | 1024 / 8 | 128 |
| px to rem | 32px | 2rem (at 16px base) |
| rem to px | 2rem | 32px (at 16px base) |
| Inches to cm | 10in | 25.4cm, 0.254m, 254mm, 0.8333ft |
| cm to inches | 30cm | 0.3m, 300mm, 11.811in, 0.9843ft |
| Feet to m | 6ft | 1.8288m, 182.88cm, etc. |
| Hex to RGB | #ff0000 | rgb(255, 0, 0) |
| Hex to HSL | #ff0000 | hsl(0, 100%, 50%) |
Each result appears as an action in the palette — press Enter to copy it to your clipboard.
Enable via the Smart Converter toggle in the popup.
Utility Commands
| Command | Description |
|---|---|
> Copy Markdown Link | Copy the current page as [Title](URL) to clipboard. |
> Hard Reload | Force refresh bypassing the browser cache. |
> Duplicate Tab | Clone the current tab. |
> Toggle Pin | Pin or unpin the current tab. |
> Toggle Mute | Mute or unmute the current tab. |
> Toggle Group | Group or ungroup the current tab. |
> Export Sets | Download all saved tab sets as a JSON backup. |
Chrome Deep Links
Tabs++ maps dozens of internal Chrome settings pages to easy keywords. Type > followed by the command to open that settings page in a new tab.
| Command | Opens |
|---|---|
> Downloads | chrome://downloads/ |
> Extensions | chrome://extensions/ |
> Settings | chrome://settings/ |
> Gpu | chrome://settings/?search=hardware+acceleration |
> Performance | chrome://settings/performance |
> Privacy | chrome://settings/privacy |
> Clear Data | chrome://settings/clearBrowserData |
> Cookies | chrome://settings/cookies |
> Ad Privacy | chrome://settings/adPrivacy |
> Permissions | chrome://settings/content |
> Passwords | chrome://password-manager/passwords |
> Autofill | chrome://settings/addresses |
> Payments | chrome://settings/payments |
> Appearance | chrome://settings/appearance |
> Fonts | chrome://settings/fonts |
> Search Engine | chrome://settings/search |
> Download Settings | chrome://settings/downloads |
> Languages | chrome://settings/languages |
> Accessibility | chrome://settings/accessibility |
> Flags | chrome://flags/ |
> Reset | chrome://settings/reset |
> About | chrome://settings/help |
> Sync | chrome://settings/syncSetup |
> Startup | chrome://settings/onStartup |
Tab Hibernation
Modern browsers consume gigabytes of RAM. Tabs++ solves this by forcing background tabs into a "Discarded" (hibernated) state. Restored tabs use zero CPU and zero RAM until you click to focus them.
Manual Hibernation
> Hibernate All— Discard all background tabs globally. Also bound toCtrl+Shift+H.> Hibernate Window— Sleep all background tabs in the current window.> Hibernate Pinned— Force sleep on all pinned tabs.> Hibernate Current— Sleep the active tab immediately.
Smart Auto-Hibernate
When enabled, Tabs++ automatically discards tabs that have been idle for a configurable duration (default: 1 hour). This runs on a periodic alarm and only affects unprotected, non-active tabs.
Configure the threshold: > hibernate time 30m or > hibernate time 2h.
Enable via the Smart Hibernate toggle in the popup.
Startup Hibernate
When Chrome starts, Tabs++ immediately discards all background tabs — so the browser opens light and fast.
Auto-Archive (Ruthless Clean)
To prevent tab sprawl, Tabs++ monitors unprotected (non-pinned, non-grouped) tabs. By default, any unprotected tab that hasn't been accessed for 12 hours is automatically closed and archived to the Session Vault.
- Configurable: Adjust the threshold via
> clean time 2hor> clean time 30m. - Protected Tabs Exempt: Pinned tabs and grouped tabs are never auto-closed.
- Vault Integration: Closed tabs are saved to the vault so they can be restored later.
Enable via the Ruthless Clean toggle in the popup.
Transient Peek
Explore links without bloating your workspace. Shift+Click any link to open it in a centered popup overlay window.
- The Peek window is a borderless popup sized at 85% of your current window.
- While peeking, the parent page gets a subtle blur overlay.
- If the content is useful, click the Promote to Workspace button in the bottom-right corner to move it back into your main window as a regular tab.
- If not, simply close the Peek window — the parent page un-blurs automatically.
Smart Auto-Peek
Enable Cross-Domain Peek in the popup Settings tab to automatically open cross-domain links in peek windows. Auto-peek is smart — it skips navigational sites (search engines, social media, video, shopping) where peeking doesn't make sense. Reference sites like Wikipedia, MDN, and Stack Overflow still auto-peek normally.
- Type
> peek block siteto disable auto-peek on the current site. - Type
> peek unblock siteto re-enable auto-peek on the current site. - Shift+Click always peeks regardless of auto-peek or blocklist.
New Tab Page
Tabs++ replaces the standard Chrome New Tab Page with a minimalist, premium dashboard.
Features
- Clock & Date: Large, clean time display with weekday and full date.
- Dynamic Backgrounds: Choose from 4 designs — Mesh Blobs, Complex SVG Blobs, Grid Mask, or Grid Focal Point. Each reacts to your chosen accent color.
- Accent Color Picker: Click the color dot in the bottom-left to change the primary accent hue. The background design adapts dynamically.
- Full Palette Integration: The search input at the center of the NTP is the full Tabs++ Command Palette. Search tabs, history, bookmarks, or trigger actions — directly from the new tab page.
- Auto-Focus: The NTP automatically focuses the search input on load, so you can start typing immediately.
Default NTP Toggle
Enable the Default NTP card in the popup Tools tab to redirect new tabs to your chosen search engine homepage instead of the Tabs++ dashboard. The redirect is instant with zero visual flash. All extension features (palette, PiP, peek, etc.) continue to work on normal pages.
Search Engine
Type > search engine in the palette to pick from 5 engines: Google, DuckDuckGo, Bing, Brave, and Perplexity. All search queries, suggestions, and raw Enter searches use your chosen engine. The NTP redirect (when enabled) also opens your chosen engine's homepage.
Popup & Settings
The extension popup — accessible via the toolbar icon — is your quick-access control center. It has three tabs:
Settings Tab
Toggle the core protection and automation features on/off:
| Toggle | What It Controls |
|---|---|
| Pinned Protection | Auto-recreates closed pinned tabs. |
| Group Guard | Keeps grouped tabs alive and persistent. |
| Command Palette | Enables the Ctrl+Shift+K global palette. |
| Smart Groups | Auto-sorts tabs by domain category. |
| Ruthless Clean | Auto-closes idle tabs after a set duration. |
| Focus Guard | Always land on NTP when closing tabs. |
| Auto-Collapse | Collapse groups when inactive to save space. |
| Smart Hibernate | Auto-sleeps idle tabs after a set duration. |
| Cross-Domain Peek | Auto-open cross-domain links in peek windows (smart blocklist applied). |
Tools Tab
Enable/disable individual power tools:
| Tool | What It Does |
|---|---|
| PiP Player | Pop out any video into a floating window. |
| Eyedropper | Pick any color from the screen via the palette. |
| Full-Page Screenshot | Capture the entire scrollable page as a PNG. |
| Smart Converter | Auto-convert units, math, and colors in the palette. |
| Pomodoro Timer | Focus/Break timers with desktop notifications. |
| Focus View | Strip distractions and read in a clean interface. |
| Extract Media Assets | Download images and videos directly from the page. |
| Tab Volume Control | Set volume of the current tab via the palette. |
| Default NTP | Use browser default instead of the Tab++ new tab page. |
Sets Tab
Manage your saved Tab Sets — summon, replace, delete, export, and import.
Focus Guard
Focus Guard prevents new tabs from accidentally "inheriting" the protected state of their parent. If you open a link from a grouped or pinned tab, Tabs++ ensures the result is a standalone tab, keeping your core workspace clean.
When Focus Guard NTP is enabled: if you close an active tab, Tabs++ redirects focus to a clean New Tab Page instead of jumping to the nearest tab. This prevents accidentally re-focusing a previously hibernated protected tab.
Enable via the Focus Guard toggle in the popup.
Keyboard Shortcuts
| Shortcut | Platform | Action |
|---|---|---|
Ctrl+Shift+K | Windows / Linux | Toggle the Command Palette. |
Cmd+Shift+K | macOS | Toggle the Command Palette. |
Ctrl+Shift+H | Windows / Linux | Hibernate all background tabs globally. |
Cmd+Shift+H | macOS | Hibernate all background tabs globally. |
Palette Navigation
| Key | Action |
|---|---|
> | Enter Action Mode (command prefix). |
! | Enter Bang Mode (external search prefix). |
Arrow Up/Down | Navigate result list. |
Enter | Activate selected result or copy smart tool output. |
Escape | Close palette or cancel pending command. |
Shift+Click | Open link in Peek window (on any page). |
chrome://extensions/shortcuts.
Advanced Workspace Logic
Eviction Graveyard
When moving dozens of tabs at once, Chrome can trigger race conditions. The Eviction Graveyard is a race-condition buffer that tracks tabs in the process of being restored or moved, preventing "ghost" tabs or infinite restoration loops.
Group Closure Tracker
When closing tabs individually, Tabs++ must distinguish between "user is closing one tab" and "user is closing the entire group." The Group Closure Tracker counts how many tabs from a group are closed within a 250ms window. If all tabs are closed (deliberate full-group close), the tabs go to the vault. If only one is closed, it gets restored.
Window Launch Lock
When launching a Tab Set into a new window, Tabs++ uses a Window Launch Lock that suppresses the auto-grouping engine for all tabs in that window. This prevents the auto-grouping engine from racing against the set's own grouping logic.
Ghost Group Prevention
When closing or replacing a workspace, Tabs++ manually disassembles every tab group before closing the tabs. This prevents Chrome's native "Restore Tab Group" feature from saving redundant duplicates to history.
Recreation Registry
When restoring a tab into a group, Tabs++ uses a Recreation Registry to cache group-creation promises. This prevents duplicate API calls when multiple tabs are being restored into the same group simultaneously.
Baseline Reconciliation
After a browser restart, Chrome assigns new Tab IDs but retains the same URLs. Tabs++ performs a URL-First Reconciliation pass: for each stored baseline whose old Tab ID no longer exists, it checks whether any living tab shares the same canonical URL. If yes, the baseline is re-bound to the new Tab ID — protection is fully preserved across restarts.
Privacy & Data Integrity
Tabs++ is built for local-first privacy. Your browsing habits stay on your machine.
- No Syncing: Your Workspace Sets, Group Baselines, and Vault snapshots are stored locally using
chrome.storage.local. They are never uploaded to any cloud service. - No Tracking: Tabs++ does not include analytics, telemetry, or any third-party data collection.
- Search Isolation: Search suggestions use the public Google Suggest API via HTTPS. No account data or authentication is shared.
- History Access: The palette searches your local Chrome History for convenience, but this data never leaves your browser context.
- No External Servers: Tabs++ communicates with no external servers other than the Google Suggest API (for palette search suggestions).
Technical Architecture
| Manifest | V3 (Service Worker) |
| Background | Service worker (background.js) — event-driven, modular imports |
| Content Script | Injected into all pages (content.js) — renders Command Palette UI via Shadow DOM |
| New Tab Page | Overrides Chrome NTP (ntp.html, ntp.js, ntp.css) |
| Popup | Extension toolbar popup (popup.html, popup.js) |
| State | Central reactive state module (state.js) — Maps, Sets, and sync helpers |
| Services | tabService, paletteService, setService, peekService, pomoService |
| Storage | chrome.storage.local — baselines, settings, vault, tab sets, NTP preferences |
| Sync Strategy | Debounced writes (2-second buffer) to avoid storage thrashing |
| Threading | Event-driven triggers for chrome.tabs.onCreated, onUpdated, onRemoved |
| Permissions | tabs, storage, tabGroups, history, bookmarks, sessions, alarms, browsingData, scripting, notifications, downloads |