The problem
Long chats get slow and forgetful, and starting a fresh one throws away everything the model learned about your problem, so you sit there re-explaining context you already explained an hour ago.
Carryover reads the conversation already on your screen, shows roughly how big it has grown, and on one click builds a compact handoff document you can paste into a new chat.
One click, start to finish
Press Carry over and the handoff is built, copied, and shown to you in an editable box. Press New chat and it opens a fresh conversation in the same tab with the text already sitting in the message box.
Nothing is ever sent for you. The handoff is placed in the box and left there, so you read it and press enter yourself. Alt+C does the same as clicking the pill, and at 80% full it tells you once.
Take part of it
Defaults to the whole conversation. Two boxes in the panel header narrow it, for when only the early part mattered.
Fits the site
The extension recognizes the current site and uses its matching reader and accent. Auto, light or dark.
What ends up in the handoff
| What we were working on | Your first real message. |
|---|---|
| Decisions and constraints | Lines that stated a choice, a rule or a correction, so the model does not re-suggest something you already ruled out. |
| Code and artifacts | Code blocks, deduplicated, newest version kept first. |
| Where we left off | The last few turns, verbatim. |
The summary is extracted, not generated
There is no model call anywhere in this. Carryover pulls out lines that are already in the conversation using plain pattern matching.
Two things follow from that. It runs instantly and offline, and it cannot invent anything: every line in the handoff is a line you or the model actually wrote. A generated summary can hallucinate a decision you never made and carry it into your next chat.
The cost is that it is blunt. It keeps more than a person would and phrases nothing gracefully, so it shows you the whole document in an editable box before you paste it.
Conversation processing stays in the tab
No automatic network requests
No server, API key or analytics endpoint. Project and donation links open only when clicked.
Three-site scope
The manifest matches only ChatGPT, DeepSeek and Grok. Chrome shows that site access because reading the open chat is the feature.
No dependencies
Two JavaScript files contain all extension behavior. No dependency tree to audit.
Rendered as text, never markup
Your chat content can never become HTML inside the extension's own UI.
Two things stored, locally
A handoff waiting to move tabs, deleted the moment it is used, and your theme choice. Neither leaves the browser. The details.
Install
Download the release zip, unzip it, then open chrome://extensions, turn on
Developer mode and click Load unpacked. The same install covers all three sites.
Or build the package yourself. It needs nothing but Node.
git clone https://github.com/cig13zs/carryover cd carryover node build.js # unpacked folder + store-ready zip node build.test.js # scope + reproducibility checks
Known limits
Current limits:
- The token number is an estimate, from a character heuristic rather than the real tokenizer. Expect it within about 15%. It is a fuel gauge, not a receipt.
- The percentage uses a fixed conservative planning budget for each free-tier workflow. The page never reveals your model, rollout or plan, so this is a preparation hint, not your account limit.
- Images don't carry over. A turn that was an uploaded screenshot is marked so you know something visual is missing.
- Long chats may be partly virtualized by the host page. Messages that aren't in the DOM can't be counted or carried.