Navigate long ChatGPT conversations with clarity.
ChronoChat is a Manifest V3 browser extension for ChatGPT that adds a native-feeling conversation map on the right side of the page. It helps you scan long threads, filter turns, search quickly, and jump back to the exact part of the conversation you need.
- Built for long ChatGPT sessions that become hard to navigate
- Designed to feel visually coherent with ChatGPT instead of competing with it
- Keeps everything local: no backend, no analytics, no remote runtime assets
- Right-side conversation map for the current chat
- Filters for
All,You, andAI - Text search with optional regex and case sensitivity
- Keyboard navigation:
Ctrl/Cmd + J: open or close ChronoChat/: focus searchj/k: move selectionEnter: jump to the selected messageEsc: close the sidebar or clear search focus state
- Export as
JSON,CSV, orMarkdown - Resizable sidebar
- Theme-aware UI with a ChatGPT-adjacent visual language
- No message content is sent to external services
- No tracking or analytics
- No remote fonts or third-party runtime requests
- Preferences are stored locally through extension storage
https://chat.openai.com/*https://chatgpt.com/*
- Clone this repository
- Install dependencies:
npm install- Build the extension:
npm run build- Open
chrome://extensions/ - Enable Developer Mode
- Click
Load unpacked - Select this project directory
The project is designed primarily for Chromium MV3. Content-script behavior may work in Firefox, but background compatibility should be verified before relying on it for release.
Run tests:
npm test -- --runInBandRun the full validation gate:
npm run validateSource code lives in src/:
src/content/: modular content-script sourcesrc/service_worker.js: background command routingsrc/style.css: source stylesheet
Build outputs used by the manifest:
content_script.jsservice_worker.jsstyle.css
The runtime stays vanilla, while the source stays modular and testable.
- Keep UI changes visually aligned with ChatGPT, not brand-heavy
- Prefer selector-first DOM parsing with resilient fallbacks
- Keep global preferences separate from transient UI state
- Add runtime tests for behavior changes instead of source-inspection placeholders
MIT