Skip to content

furybee/chrome-tab-modifier

Repository files navigation

icon Tabee

GitHub Release license GitHub Actions Workflow Status .nvmrc yarn:required Conventional Commits pr welcome

The original Tab Modifier.

Take control of your tabs!

Features

  • Rename tab
  • Change tab icon
  • Pin tab
  • Group tabs
  • Prevent tab closing
  • Unique tab
  • Mute tab

Quick rename can be done by right-clicking anywhere in the page and click on "Rename Tab".

Installation

Tabee is compatible with Chromium-based browsers.

Browser Install Link Web Store
Google Chrome ⬇️ Install Chrome Web Store
Arc ⬇️ Install Chrome Web Store
Brave ⬇️ Install Chrome Web Store
Opera ⬇️ Available Soon Opera Addons
Microsoft Edge ⬇️ Available Soon Microsoft Edge Addons

Firefox and Safari are not available.

Usage

  • Click on the Tabee icon icon to open Popup or Right-Click then Options.
  • Create your tab rules.
  • Try & enjoy!

Why did you build this extension?

I needed a quick UI element in Chrome to know the environment of the tab, as a Web developer I often use multiple versions of the same website: local, pre-production and production.

Not easy to find the appropriate tab when you have multiple tabs called "My awesome website".

I created Tabee (formerly Tab Modifier) to add prefixes to website titles with a specific match.

  • [DEV] My awesome website: .local.domain.com
  • [PREPROD] My awesome website: .preprod.domain.com
  • [PROD] My awesome website: .domain.com

After that, I have added more features like "auto-pin", custom favicons and more.

Core system

Tabee is based on user rules and act on the tab URL that matches the first seen rule. When you open a tab (or refresh), the extension will check if the URL matches a rule and apply the actions.

Aware of that, there is no reason to include a feature that is not "rule-based". Prefer to install specific extensions or create your own.

Examples

You have infinite possibilities, here are some configurations:

Distinguish development environments:

  • Detection: Contains
  • URL fragment: localhost
  • Title: [LOCAL] {title}
  • Icon: select "bullets > bullet-green"

Add staging prefix:

  • Detection: Contains
  • URL fragment: staging.yourapp.com
  • Title: [STAGING] {title}
  • Icon: select "bullets > bullet-amber"

Auto-pin documentation tabs:

  • Detection: Contains
  • URL fragment: /docs/
  • Pinned: ON

Mute video streaming sites by default:

  • Detection: Contains
  • URL fragment: youtube.com
  • Mute: ON

Keep only one email tab open:

Add project info to GitHub repository tabs:

  • Detection: Contains
  • URL fragment: github.com
  • Title: {title} | $2 by $1
  • URL matcher: github[.]com/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)

Tab title will be: "user/repo: Description | repo by user"

Display filename for GitHub file views:

  • Detection: RegExp
  • URL fragment: github[.]com/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/blob/
  • Title: {#file-name-id-wide}

Group all production tabs:

  • Detection: Contains
  • URL fragment: app.yoursite.com
  • Title: [PROD] {title}
  • Icon: select "bullets > bullet-red"
  • Group: Production

And now, build your own... 💪

Known issues

Local icon path doesn't work

Related issue: #5

Due to browser security restrictions, this path won't work: file://<path>/icon.png. Your icon will not be shown by Chrome.

Alternatively, you can upload your icon somewhere like imgur.com and paste the direct link in your rule.

Another solution consists in transform your image in the Data URI format. Go to ezgif.com and paste the given output (the long text) in the icon input on your rule.

Chrome system pages chrome://

Related issues: #11, #14

Pages that start with chrome:// URL are protected. No content script can be injected then Tab Modifier will not work on these pages.

Local files file:///

Related issue: #13

By default, extensions don't have access to local files. You have to opt-in "Allow access to file URLs" from chrome://extensions/?id=hcbgadmbdkiilgpifjgcakjehmafcjai.

Protected action is not triggered

Related issue: #95

Since Chrome 90, the JS event that triggers a refresh or a closure has been reworked. See related issue.

Development

In case you want to contribute or just want to play with the code, follow the guide.

Setup

Download and install NodeJS v18 to get npm.

💡 Use nvm to allow you to quickly install and use different versions of node via the command line.

Install yarn globally:

npm install -g yarn

Clone the project and install dependencies with yarn.

Type yarn dev to watch your changes inside src/ folder or type yarn build after each change.

Load local extension in Chrome

Go to chrome://extensions/ and enable the "Developer mode".

Click on "Load unpacked extension..." and select the project dist/ folder.

Donation

A huge thanks to all donators!

If you like this extension and want to support its development, you can make a donation by clicking one of the links below.

Security

Tabee takes security seriously. Every code change goes through automated security checks in our CI/CD pipeline:

  • ClamAV Malware Scan: Detects viruses, trojans, and malware in the codebase
  • Gitleaks Secret Scan: Prevents hardcoded secrets, API keys, and credentials
  • Dependency Audit: Checks for known vulnerabilities in dependencies (HIGH severity and above)
  • Test Coverage: Ensures code quality with comprehensive test suite
  • ReDoS Protection: Built-in protection against Regular Expression Denial of Service attacks

For detailed security documentation, see docs/SECURITY.md.

License

See license file.