Cotab is a calm Chrome new-tab dashboard for people who live with too many tabs open.
If your browser regularly grows into dozens or hundreds of tabs, closing them can feel strangely risky: one page took effort to find, another might be useful later, and bookmarks feel too permanent for half-formed work. Cotab turns that mess into a lightweight working table: see what you actually use, stage what you may need later, and close the rest with confidence.
- Active tabs by recent usage: open tabs are ranked by activation count from the last 24 hours, so currently useful pages rise naturally.
- Complete open-tab coverage: Chrome internal pages, blank new tabs, extension pages, and local files stay visible in Active and grouped views.
- Optional group views: switch Active between a plain list, domain-based groups, or native Chrome tab groups.
- Stage instead of hoard: store a tab for later use and close the original tab in one click.
- Close without ceremony: close individual tabs or bulk-close the currently visible Active list.
- Select before closing: choose multiple Active or Staged rows and close only the selected items.
- Focused two-pane layout: Active takes the main workspace, while Staged sits beside it as a temporary holding area.
- Search as you type: filter Active and Staged tabs by title, URL, or domain.
- History search when needed: while searching, Cotab can surface matching Chrome history results that are not already visible in Active or Staged.
- Consistent favicons: Cotab prefers each site's normal favicon so discarded Chrome tabs do not appear as washed-out duplicates.
- Bilingual interface: Chinese and English modes, defaulting to the browser or system language.
- Light and dark themes: quiet theme controls with local preference storage.
- Design theme switcher: choose from every imported
themes/*/DESIGN.mdreference. - Richer focus quotes: a larger local library mixes classics, modern lines, and original social-inspired reflections.
- Private by default: no account, no backend, no page snapshots, and no full-history sync or upload.
- Name: Cotab
- Manifest: Chrome Extension Manifest V3
- Version:
2.6.0 - New tab override: yes
- Permissions:
tabs,storage,favicon,history,tabGroups - Local data: tab metadata and staged items in
chrome.storage.local - Icons:
icons/icon16.pngicons/icon48.pngicons/icon128.png- source SVG:
icons/icon.svg
-
Install dependencies:
npm install
-
Build the extension:
npm run build
-
Open Chrome and go to:
chrome://extensions -
Enable Developer mode.
-
Click Load unpacked and select the generated
extension/directory. -
Open a new tab. Cotab should replace the default Chrome new-tab page.
npm install
npm test
npm run buildUseful commands:
npm test # Run Vitest tests
npm run build # Type-check and build the MV3 extension into extension/
npm run release:archive # Build and package cotab-v<version>.zip for GitHub Releases
npm run dev # Start Vite dev mode for UI workAfter changes, reload the extension from chrome://extensions to test the latest extension/ build.
The project uses Vitest for focused behavior tests.
Covered today:
- tab search
- all opened tab URL tracking, including Chrome internal pages
- staged item search
- history result filtering and Active/Staged exclusion
- domain and Chrome tab group view models
- activation-count sorting
- staging/deduping behavior
- title truncation
- language preference fallback and manual override
Run:
npm testCotab follows a simple local release discipline:
-
After every requirement change that builds successfully, bump the version by
0.1. -
Keep
package.json,package-lock.json, andpublic/manifest.jsonin sync. -
Add a dated entry to
release-notes.md. -
Run:
npm test npm run build -
Confirm
extension/manifest.jsoncontains the new version. -
Package and publish the release artifact:
npm run release:archive gh release create v<version> cotab-v<version>.zip --repo yunshan/Cotab --title "Cotab v<version>" --notes-file release-notes.md
The local repository remote should point to:
git remote add origin https://github.com/yunshan/Cotab.gitCotab stores only local tab metadata needed for the dashboard:
- title
- URL
- favicon URL
- domain
- activation count
- last accessed time
- staged item metadata
- Chrome tab group id, title, and color
Cotab does not use an account, backend, cloud sync, analytics, page-content extraction, screenshots, or background browsing-history harvesting.
Cotab uses Chrome history only when the user types in the search box, and only to display matching pages that are not already shown in Active or Staged. History search results are not uploaded or synced to any server by Cotab.
Cotab reads Chrome tab group metadata only to render the optional Chrome Group view. This metadata stays in local Chrome storage.
public/manifest.json Chrome extension manifest
src/background.ts MV3 background service worker
src/lib/ tab rules, storage, message types
src/ui/ React new-tab dashboard
icons/ source extension icons
release-notes.md release history
themes/ imported DESIGN.md theme references
Cotab is released under the MIT License.