MCPcopy Index your code
hub / github.com/SenhorH/tab-labeler

github.com/SenhorH/tab-labeler @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
54 symbols 134 edges 8 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Browser Tab Renamer Extension

Rename browser tabs locally and bring order to chaotic sessions.

tab-labeler is a lightweight Manifest V3 browser extension for Chromium-based browsers. It lets you assign local labels to messy tabs, add emoji prefixes, reset titles, and review currently renamed tabs from a compact popup.

Screenshot placeholder

Features

  • Rename the current tab from the extension popup.
  • Reset the current tab title.
  • Persist labels across page reloads while the tab remains open.
  • Show all currently labeled open tabs.
  • Add an emoji or icon-style prefix.
  • Quick presets: ✅ Done, 🔥 Important, 📌 Read later, 🐛 Bug, 🧪 Testing.
  • Keyboard shortcut via the browser extension command.
  • Content script updates document.title.
  • Handles SPA title changes by reapplying the local label.
  • Clear all labels in one action.
  • No backend, tracking, analytics, or remote sync.

Install From Source

  1. Install dependencies:

bash npm install

  1. Build the extension:

bash npm run build

  1. Open your Chromium browser extension page:

  2. Chrome: chrome://extensions

  3. Edge: edge://extensions
  4. Brave: brave://extensions

  5. Enable developer mode.

  6. Choose Load unpacked.
  7. Select the generated dist folder.

Permissions

The extension keeps permissions intentionally small:

  • storage: saves tab labels in local browser extension storage.
  • tabs: reads the active tab title and lists currently open labeled tabs in the popup.
  • http://*/* and https://*/* content script access: lets the content script update document.title on normal web pages. Browser-internal pages such as chrome://extensions are not accessible, and the popup reports that limitation instead of failing silently.
  • Extension command: lets Chromium open the popup from the configured keyboard shortcut.

Privacy

Browser Tab Renamer Extension is local-first and privacy-first.

  • No backend.
  • No analytics.
  • No telemetry.
  • No tracking pixels.
  • No remote label sync.
  • Labels are stored only in browser.storage.local on your device.

The extension reads tab title and URL metadata only to show the current tab and the list of currently labeled open tabs.

Development

npm install
npm run lint
npm test
npm run build

During development, rebuild with npm run build and reload the unpacked extension from the browser extensions page.

Project Structure

  • public/manifest.json: Manifest V3 extension metadata.
  • src/popup: popup UI and tab actions.
  • src/content: page title updater.
  • src/background: service worker and content-script label lookup.
  • src/lib: shared label storage and message utilities.
  • docs/manual-testing.md: manual browser QA checklist.

Roadmap

  • Optional Firefox manifest adjustments.
  • Import/export labels for debugging.
  • Per-window grouping in the renamed tabs list.
  • Optional keyboard shortcut customization notes.
  • Store labels by stable URL hints when tab IDs change.

Extension points exported contracts — how you extend this code

LabelStorageArea (Interface)
(no doc) [2 implementers]
src/lib/labelStorage.ts
RuntimeApi (Interface)
(no doc)
src/content/index.ts
TabLabel (Interface)
(no doc)
src/lib/labelStorage.ts
IncomingLabel (Interface)
(no doc)
src/content/index.ts
SaveLabelInput (Interface)
(no doc)
src/lib/labelStorage.ts
ContentReadyResponse (Interface)
(no doc)
src/content/index.ts
ExtensionStorageGlobal (Interface)
(no doc)
src/lib/labelStorage.ts
ApplyLabelMessage (Interface)
(no doc)
src/lib/messages.ts

Core symbols most depended-on inside this repo

getRequiredElement
called by 12
src/popup/main.ts
getLabels
called by 8
src/lib/labelStorage.ts
setStatus
called by 8
src/popup/main.ts
getLabel
called by 7
src/lib/labelStorage.ts
saveLabel
called by 6
src/lib/labelStorage.ts
getDefaultStorage
called by 5
src/lib/labelStorage.ts
normalizeLabelText
called by 4
src/lib/labelStorage.ts
formatTabTitle
called by 4
src/lib/labelStorage.ts

Shape

Function 34
Interface 11
Method 7
Class 2

Languages

TypeScript100%

Modules by API surface

src/lib/labelStorage.ts18 symbols
src/content/index.ts13 symbols
src/popup/main.ts12 symbols
src/lib/labelStorage.test.ts6 symbols
src/lib/messages.ts5 symbols

For agents

$ claude mcp add tab-labeler \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact