A minimal Chrome Extension that displays your prompts in a floating panel on ChatGPT pages. Built with React, TypeScript, and Tailwind CSS.
- 🎯 Floating Panel: Displays user prompts in a draggable panel anchored to the top-right
- ⌨️ Hotkey Toggle: Press
Alt+Pto show/hide the panel - 🔄 Live Updates: Automatically detects new prompts as you chat
- 📋 Copy Prompts: One-click copy for any prompt
- 🎯 Jump to Prompt: Click to scroll to the original message and highlight it
- 🎨 Clean UI: Minimal, non-intrusive design that doesn't interfere with ChatGPT
- 🔒 Privacy: No data storage, no network calls, works entirely client-side
- Node.js 16+ and npm
- Chrome browser
-
Clone and install dependencies:
git clone <your-repo-url> cd promptbase npm install
-
Build the extension:
npm run build:extension
-
Load in Chrome:
- Open Chrome and go to
chrome://extensions/ - Enable "Developer mode" (toggle in top-right)
- Click "Load unpacked"
- Select the
distfolder from this project - The extension should now appear in your extensions list
- Open Chrome and go to
For development with auto-rebuild:
npm run devThis will watch for changes and rebuild automatically. You'll need to reload the extension in Chrome after each build.
- Navigate to ChatGPT: Go to
https://chatgpt.comorhttps://chat.openai.com - Toggle Panel: Press
Alt+Pto show/hide the prompt panel - View Prompts: Your prompts will appear in the floating panel
- Interact with Prompts:
- Copy: Click the copy button to copy a prompt to clipboard
- Jump: Click the jump button to scroll to the original message
- Expand: Click on prompt text to expand/collapse long prompts
- Drag Panel: Click and drag the panel to reposition it
- Collapse: Use the collapse button to minimize the panel
- Manifest V3: Uses the latest Chrome extension format
- Content Script: Injects React app into ChatGPT pages
- Shadow DOM: Isolates styles to prevent conflicts
- MutationObserver: Watches for new prompts in real-time
- No Storage: All data stays in memory, no persistence
src/
├── content/
│ ├── main.tsx # Content script entry point
│ ├── App.tsx # Main React component
│ ├── dom.ts # DOM utilities and selectors
│ ├── hotkeys.ts # Keyboard shortcut handling
│ └── styles.css # Tailwind CSS styles
├── manifest.json # Chrome extension manifest
├── vite.config.ts # Vite build configuration
├── tailwind.config.cjs # Tailwind CSS configuration
└── postcss.config.cjs # PostCSS configuration
The extension uses these selectors to find user prompts:
- Primary:
article[data-turn="user"] - Fallback:
[data-turn="user"] - Fallback:
article[data-testid^="conversation-turn"][data-turn="user"]
- Chrome 88+ (Manifest V3 support)
- Works on both
chatgpt.comandchat.openai.com
- Check Console: Open DevTools (F12) and look for errors
- Reload Extension: Go to
chrome://extensions/and click the reload button - Check Permissions: Ensure the extension has access to ChatGPT pages
- Clear Cache: Try clearing browser cache and reloading
- Press Alt+P: The panel is hidden by default
- Check Page: Make sure you're on a ChatGPT conversation page
- Refresh Page: Try refreshing the ChatGPT page
- Manual Refresh: Click the refresh button in the panel
- Check Selectors: ChatGPT may have updated their DOM structure
- Console Logs: Check for selector-related errors in DevTools
- Update DOM Selectors: Modify
src/content/dom.tsif ChatGPT changes their structure - UI Changes: Edit
src/content/App.tsxfor interface modifications - Styling: Update
src/content/styles.cssfor visual changes - Hotkeys: Modify
src/content/hotkeys.tsfor keyboard shortcuts
npm run build:extensionThis creates a dist folder with the built extension ready for distribution.
- Build the extension:
npm run build:extension - Load in Chrome as an unpacked extension
- Test on both
chatgpt.comandchat.openai.com - Verify all features work: toggle, copy, jump, drag, etc.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details.
- Initial release
- Basic prompt panel functionality
- Alt+P hotkey toggle
- Copy and jump actions
- Draggable panel
- Live updates with MutationObserver