Whales π
β¨ AI-Powered View on Chrome Web StoreChrome will indicate if you already have this installed.
Overview
# Whales
A personal fork of [Quick Tabs](https://github.com/babyman/quick-tabs-chrome-extension) with power-user enhancements for managing large numbers of tabs.
## Fork Changes
### π Domain-Grouped Tab View ("Whales")
Toggle the grouping icon (β‘) in the popup header (or assign a keyboard shortcut via `chrome://extensions/shortcuts` β "Open Quick Tabs in Domain Groups mode") to see all open tabs **grouped by domain**. Each group shows:
- Domain favicon, name, and tab count
- Expandable/collapsible tab list
- URL paths with domain stripped (already in the header)
- Close-all button per group
### π§ Semantic Title Extraction
SPAs like Google Gemini share a single generic `<title>` across all pages, making tabs impossible to distinguish. This fork injects a content script that extracts the **actual page title** from the DOM:
- **Gemini** β reads the selected conversation name from the sidebar's `aria-label`
- **Other sites** β falls back to `document.title` β `<h1>` β `<meta description>`
Titles are cached in the background service worker and displayed in the popup.
### πΈ Visual Thumbnails
On tab visit, a compressed JPEG screenshot is captured via `chrome.tabs.captureVisibleTab` and cached in-memory. Thumbnails render alongside each tab item in the popup.
### β‘ jQuery Removed β Vanilla JS Only
All jQuery and jQuery Hotkeys dependencies have been completely removed. DOM manipulation, event handling, focus management, and scrolling now use native browser APIs (`querySelector`, `classList`, `scrollIntoView`, etc.), reducing extension size and improving performance.
### π Faster Popup Loading
- **Parallel init** β `Config.init()` and `getPopupData()` run simultaneously via `Promise.all` instead of sequentially
- **Favicon pre-caching** β favicons are fetched and converted to data URIs in the background service worker, eliminating per-tab network requests when the popup opens
- **Batched data transfer** β a single `getPopupData()` call returns tabs, closed tabs, bookmarks, semantic titles, and thumbnails in one message instead of three separate `getTabs`/`getClosedTabs`/`getBookmarks` calls
### π¨ Modernized UI
Complete visual overhaul of `styles-popup.css` β clean spacing, refined colors, improved hover states, and better layout structure for tab items and domain groups.
### Technical Notes
- All caching uses `Map` objects in the background service worker (`faviconCache`, `semanticTitleCache`, `thumbnailCache`)
- `compareTabArrays()` preserves injected properties (`semanticTitle`, `thumbnailUrl`) during the tab refresh cycle
- Added `"scripting"` permission and `host_permissions` for cross-origin favicon fetching and content script injection
- Extension `key` set in manifest for stable extension ID across installs
Tags
Privacy Practices
π Security Analysis
This extension hasn't been security-scanned yet.