GhostTabs is a Chrome extension that helps users maintain context while switching between tabs, particularly useful for tasks like form-filling and research. The extension allows users to capture tab content and quickly reference it through a semi-transparent overlay system, all controlled via keyboard shortcuts.
- Manual Tab Capture: Capture any tab's content with Alt+C
- Quick Reference Overlay: Toggle a semi-transparent overlay of captured content with Alt+Shift+Space
- History Navigation: Cycle through recent captures with Alt+Left/Alt+Right
- Visual History: View all captures in a clean, organized popup interface
- Auto-Cleanup: Maintains the last 20 captures to manage storage efficiently
- Visual Feedback: Badge counter shows number of active captures
- Toast Notifications: Non-intrusive feedback for user actions
- TypeScript
- React
- Vite
- Chrome Extension APIs
- Clone the repository:
git clone https://github.com/yeekitc/ghostTabs.git- Install dependencies:
cd ghostTabs
npm install- Build the extension:
npm run build- Load the extension in Chrome:
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" in the top right
- Click "Load unpacked" and select the
distdirectory from your build
- Open Chrome and navigate to
After installation, the extension can be controlled using these keyboard shortcuts:
Alt+C: Capture the current tabAlt+Shift+Space: Toggle overlay of current captureAlt+Left/Alt+Right: Navigate through capture history- Click the extension icon to view capture history
ghostTabs/
├── dist/ # Built extension files
├── public/ # Static assets
├── src/
│ ├── App.tsx # Main popup component
│ ├── components/ # React components
│ ├── extension/ # Extension scripts
│ │ ├── background.ts
│ │ ├── content.ts
│ └── ...
- Start the development server:
npm run dev- Make your changes
- Build the extension:
npm run build- Reload the extension in Chrome:
- Go to
chrome://extensions/ - Find GhostTabs
- Click the refresh icon
- Go to
- The extension uses Chrome's
tabs.captureVisibleTabAPI for screenshots - Storage is managed using Chrome's
storage.localAPI with a 20-capture limit - Communication between components uses Chrome's messaging system
- The overlay system is implemented via content scripts
- Captures are only made when explicitly triggered by the user
- All data is stored in your browser
- Captures are automatically cleaned up when exceeding the 20-capture limit