Keeps long AI chat conversations responsive by showing only recent messages first, then letting you load older ones when you need them.
Works on ChatGPT, Claude, Gemini, and any AI chat app you add to the config.
| Browser | Version | Link |
|---|---|---|
| Chrome | v1.4.3 | chromewebstore |
| Firefox | v1.4.3 | addons.mozilla.org |
We suggest using your browser's official extension store because it updates automatically. If the extension is not available in your browser's store, either open an issue to let us know or download the extension and import it manually. Keep in mind that manually installed versions do not update automatically when a new release is published.
Store listings (Chrome/Firefox) may lag because review can take time.
git clone https://github.com/Noah4ever/ai-chat-speed-booster.git
cd ai-chat-speed-booster
npm install
Build all targets:
npm run build:all
You can also just build one target (chrome, firefox, safari, edge):
npm run build:chrome
Build output goes to dist/chrome/.
The two scripts under scripts/ handle everything between editing code and uploading zips to the stores.
npm run bump 1.4.5
Updates the version in package.json and all four browser manifests (browsers/{chrome,edge,firefox,safari}/manifest.json), stages only those five files, commits with fix: update version to 1.4.5, and creates the tag v1.4.5.
Flags:
npm run bump 1.4.5 -- --dry — preview the changes, write nothingnpm run bump 1.4.5 -- --no-tag — commit but skip the tagThe script refuses to run if the tag already exists, if you're already on that version, or if the version isn't semver-shaped (X.Y.Z or X.Y.Z-beta.1).
npm run package
Builds Chrome + Firefox, then writes three zips into deploys/ (gitignored):
| File | What it's for |
|---|---|
chrome-v<version>.zip |
Upload to the Chrome Web Store |
firefox-v<version>.zip |
Upload to Firefox AMO |
firefox-source-v<version>.zip |
Source archive AMO requires for review |
The source zip is produced by git archive HEAD, so it always matches the last commit — bump and commit before packaging, otherwise the source archive will show the previous version's tree.
Flag: npm run package -- --skip-build re-zips whatever's already in dist/ without rebuilding.
git push && git push --tags
Then upload from deploys/:
chrome-v<version>.zipfirefox-v<version>.zip, then attach firefox-source-v<version>.zip when prompted for source code. AMO also asks for release notes — paste a short summary of what changed.Update the version numbers in the Install via official browser extension store table at the top of this README. Store review can take days, so the listed version is allowed to lag behind the tag.
All site definitions live in one file: sites.config.json.
To add a new site, add an entry to the array:
{
"id": "mysite",
"name": "My AI Chat",
"hostnames": ["mysite.com"],
"urlPatterns": ["*://mysite.com/*"],
"selectors": {
"messageTurn": ".message-selector",
"scrollContainer": ".scroll-container"
},
"messageIdAttribute": "data-message-id"
}
Then rebuild. The build script auto-injects the URL patterns into all browser manifests. No other files need to change.
messageTurnscrollContainerscrollContainerAltmessageIdAttribute (defaults to data-testid)| Site | Status |
|---|---|
| ChatGPT | ✅ Tested |
| Claude | ✅ Tested |
| Gemini | ✅ Tested |
PRs to add or fix site configs are welcome.
Set these from the popup:
| Setting | Default | Range |
|---|---|---|
| Visible messages | 3 | 1-200 |
| Load more batch | 3 | 1-50 |
| Status indicator | On | On/Off |
| Badge position | Top right | 4 corners |
Automated tests use Playwright to validate build outputs and run the real extension in headless Chromium against mock pages.
npm test
This builds all browser targets, validates every dist/ output, then loads the extension in Chromium and verifies it works for each configured site (60 tests, ~7s).
npm run test:build # validate dist/ outputs only
npm run test:extension # extension tests on mock pages
npm run test:integration # live site tests (requires auth, see below)
To test against real sites with your account:
.env.example to .env and fill in your credentialsnpm run test:auth — a browser opens, log in to each site, press Enternpm run test:integrationThe auth profile is saved to tests/.auth-profile/ (git-ignored) and reused across runs.
Set HEADLESS=1 to run without a visible browser window:
HEADLESS=1 npm test
This project is built from TypeScript source files and bundled with esbuild.
git clone https://github.com/Noah4ever/ai-chat-speed-booster.git
cd ai-chat-speed-booster
npm ci
npm run build:firefox
The Firefox extension output is generated in dist/firefox/.
The file to load or package is dist/firefox/manifest.json.
Build script used by this project: scripts/build.mjs
Fast Mode in this project uses a fetch-interception approach that trims API responses before the app renders them. Earlier work in this area includes Speed Booster for ChatGPT by BGSN.
MIT
$ claude mcp add ai-chat-speed-booster \
-- python -m otcore.mcp_server <graph>