Skip to content

yunshan/Cotab

Repository files navigation

Cotab

English | 简体中文

Cotab icon

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.

Cotab dashboard preview

Highlights

  • 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.md reference.
  • 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.

Current Extension Info

  • 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.png
    • icons/icon48.png
    • icons/icon128.png
    • source SVG: icons/icon.svg

Install Locally

  1. Install dependencies:

    npm install
  2. Build the extension:

    npm run build
  3. Open Chrome and go to:

    chrome://extensions
    
  4. Enable Developer mode.

  5. Click Load unpacked and select the generated extension/ directory.

  6. Open a new tab. Cotab should replace the default Chrome new-tab page.

Development

npm install
npm test
npm run build

Useful 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 work

After changes, reload the extension from chrome://extensions to test the latest extension/ build.

Testing

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 test

Release Process

Cotab follows a simple local release discipline:

  1. After every requirement change that builds successfully, bump the version by 0.1.

  2. Keep package.json, package-lock.json, and public/manifest.json in sync.

  3. Add a dated entry to release-notes.md.

  4. Run:

    npm test
    npm run build
  5. Confirm extension/manifest.json contains the new version.

  6. 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.git

Privacy

Cotab 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.

Project Structure

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

License

Cotab is released under the MIT License.

About

Cotab is Chrome new-tab dashboard for ranking active tabs, staging pages for later, and closing tab clutter with confidence.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages