Skip to content

Repository files navigation

English · 简体中文

Current Work Grouper

A Chrome extension that puts newly opened, ungrouped web pages — including links opened from other apps — into a tab group you choose, instead of at the far end of the tab strip.

CI License

Report a bug · Request a feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. How grouping works
  5. Known limitations
  6. Permissions and privacy
  7. Development
  8. Contributing
  9. License
  10. Contact

About The Project

When another app (Notes, a chat client, a mail client) opens a link in Chrome, the new tab always lands at the end of the tab strip. If you keep the pages you are working on in one tab group, you end up dragging every one of them in by hand.

This extension does that step for you:

  • New, ungrouped web pages join a target group. The default name is Current Work, and you can change it.
  • An open group with the same name is reused; if there is none, a blue group is created.
  • Click the toolbar icon to rename the target group, pause and resume grouping, or switch the interface language.
  • No network requests, no content scripts, no stored browsing history.

The interface is in English by default and can be switched to Simplified Chinese (简体中文) from the language menu in the popup. The extension's name in chrome://extensions follows Chrome's own display language.

See the open issues for planned features and known issues.

Getting Started

Prerequisites

  • Google Chrome 102 or later (or another Chromium browser with tab groups)

Installation

The extension is installed as an unpacked extension.

  1. Download current-work-grouper-v*.zip from the latest release and unzip it somewhere permanent — Chrome loads it from that folder, so do not move or delete it afterwards. Alternatively, clone the repository and use its extension/ folder.
  2. Open chrome://extensions and turn on Developer mode in the top-right corner.
  3. Click Load unpacked and select the folder that contains manifest.json.
  4. Pin Current Work · Auto-Group from the puzzle-piece menu in the toolbar.

To update, replace the files in the same folder and click the reload button on the extension's card in chrome://extensions. Keeping the same folder keeps your settings.

Usage

  1. Click the toolbar icon, enter the target group name under Target group name, and click Save settings.
  2. Click a web link in another app. The new tab appears in that group.
  3. To pause, clear Auto-group new tabs and save; the badge shows OFF. Check it and save again to resume (ON).

The name is trimmed, must not be empty, and is matched literally, so Chinese characters, spaces and symbols all work. Changing it only affects tabs opened afterwards; existing groups are not renamed and existing tabs are not moved.

To change the language, pick English or 简体中文 in the menu at the top right of the popup; it applies right away. If you have never saved a group name, the default name follows the language (Current Work or 当前工作). If you used a version before 1.2.0 without saving a name, upgrading keeps 当前工作 as your saved name.

How grouping works

  • A new HTTP or HTTPS page that is neither pinned nor already grouped joins the target group.
  • A matching group in the new tab's own window is preferred. If the only match is in another window, the tab is moved there. Keep a single group with that name to avoid surprises.
  • If no matching group is open, a new one is created. A saved group that is currently closed is not reopened.
  • If the new tab was the active tab, the target group is expanded, and when the tab moved to another window, that window is focused.
  • After grouping an active tab in the same window, briefly select another tab in the group and return to encourage the vertical tab strip to reveal its new position. Background tabs do not trigger this; skip it if no other non-discarded group member exists.
  • Incognito windows, non-normal windows, browser pages (chrome://), file:// pages, and pinned or already grouped tabs are ignored. Tabs that were open before installation are left alone.
  • When a new tab's URL arrives late, the extension waits for it for up to 10 seconds. A blank new tab you open by hand is not grouped when you later type an address into it.

Known limitations

  • The browser creates the tab before the extension can group it, so it may still appear at the end briefly. Extensions cannot read or set the native tab strip's scroll position. The reselection workaround may briefly show another page in the group, and its visual effect depends on the browser version.
  • On macOS, Chrome gives links opened from other apps an opener tab too, so the extension cannot reliably tell an external link from one opened inside the browser. It therefore takes every new, ungrouped web page, including bookmarks, pages opened from within the browser and restored ungrouped tabs. Pause the extension before restoring a large session if you do not want those grouped.
  • When an external link reuses an already open blank tab, it may not be grouped.
  • Dragging tabs or closing the target window at the wrong moment can make one grouping attempt fail. The tab stays where Chrome put it and the badge shows !. Pause and save, then enable and save again to reset it.

Permissions and privacy

The extension requests three permissions:

Permission Used for
tabs Reading the URL and state of new tabs
tabGroups Finding, creating and updating tab groups
storage Saving the group name, the on/off switch, the interface language and short-lived pending tab IDs

It makes no network requests, injects no content scripts, has no history permission, sends no telemetry and never stores URLs. Pausing or removing the extension does not undo groupings it already made.

Built on the Chrome extension APIs chrome.tabs and chrome.tabGroups.

Development

There are no third-party dependencies; you only need Node.js 20 or later.

git clone https://github.com/anyingiit/current-work-grouper.git
cd current-work-grouper
npm run lint      # syntax check and manifest validation
npm test          # behavior tests against a mocked Chrome API
npm run package   # builds dist/current-work-grouper-v<version>.zip

Load the extension/ folder in chrome://extensions to try a change in Chrome.

Non-trivial features start as a spec. The repository is set up for Spec Kit: the project principles live in .specify/memory/constitution.md, and the /speckit-specify, /speckit-plan, /speckit-tasks and /speckit-implement skills under .claude/skills/ write a feature's spec, plan and tasks into specs/. The plan step checks the design against the constitution before any code is written. The checked-in files work without extra tools; install the specify CLI with uv tool install specify-cli --from git+https://github.com/github/spec-kit.git only if you want to refresh them. Small fixes and documentation edits can skip the spec and go straight to a pull request.

To release, bump the version in both extension/manifest.json and package.json, move the Unreleased entries in CHANGELOG.md under the new version, and push a v<version> tag. The release workflow runs the checks, builds the zip and publishes a GitHub release with it attached.

Contributing

Contributions are welcome. Read CONTRIBUTING.md for how to open an issue or a pull request, and CODE_OF_CONDUCT.md for the standards expected of everyone taking part.

Please do not report security issues in public issues or pull requests. SECURITY.md explains how to report them privately.

License

Distributed under the MIT License. See LICENSE for details.

Contact

Project link: https://github.com/anyingiit/current-work-grouper

(back to top)

About

Chrome extension that puts newly opened, ungrouped web pages, including links from other apps, into a tab group you choose.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages