1 item
A keyboard centric most recently used (MRU) ordered page list plugin with seek and switch functionality inspired by IntelliJ IDEA # 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
Mar 7, 2026
rating_count is the Chrome Web Store ratings count, not a written-review count.
Media assets
Screenshots and videos on the listing.
Has promo video
Whether the listing includes at least one video.
Languages
Declared language locales.
Developer website
Listing exposes a developer website URL.
Contact email
Listing exposes a contact email.
Keyword in name
Case-insensitive substring match in the name.
Keyword in description
Case-insensitive substring match in the description.
Keyword occurrences in description
Count of case-insensitive occurrences in the description.
Category user-count percentile
Share of same-category extensions with fewer users (null if unknown).
These are transparent listing completeness / keyword signals, not a prediction of Chrome Web Store search ranking.