Skip to content

About

An inbox for your Chrome tabs. Triage guilt-free with a local archive so nothing is ever lost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Tab Triage

An inbox for your Chrome tabs. Instead of hoarding hundreds of tabs out of fear that you'll lose something, you triage them one at a time — and closing a tab never loses it.

Core promise: everything you close is saved to a local, searchable Library. Once you trust that, clearing tabs stops feeling like deleting information.

Why it exists

Two very common tab pains:

  • The read-later graveyard — dozens of "I'll read this later" tabs you never return to.
  • Tabs as fragile memory — you keep tabs open as a to-do list, so you can't bring yourself to close anything.

Tab Triage attacks both:

  • A one-at-a-time Triage flow (like an email inbox) with four decisions.
  • Clustering that groups related tabs (same site, shared topic, duplicates) so you can clear a whole group at once.
  • A prioritized Reading Queue so "read later" becomes a finishable list.
  • A fully searchable Library so your closed tabs are always recoverable.

The four triage actions

Action Key What happens
Read later R Closes the tab, saves it to your Reading Queue
Keep open K Leaves the tab open, moves to the next
Archive A Closes the tab, saves it to the Library (guilt-free close)
Delete D Closes the tab and does not save it

Stale, un-pinned tabs are shown first — the ones safest to clear.

Clustering

Open the Triage tab to see your tabs grouped locally (no network, no AI required):

Kind How it’s formed
Same site Multiple tabs from the same hostname
Topic Shared significant words in titles (even across sites)
Duplicates Same page opened more than once
Ungrouped Singletons you can still review one-by-one

Each cluster supports Review (one-at-a-time) plus bulk Read all / Archive all / Delete all. Pinned tabs are skipped by bulk actions.

Undo & safe deletes

Every close action (single or bulk, read / archive / delete / deduplicate) shows a toast with an Undo button for a few seconds. Undo reopens the closed tabs and, for read/archive, removes the archive rows it just created (never pre-existing Library items). Delete all additionally requires a second confirming click, so mass deletes can't happen by accident.

Deduplicate

Same page opened twice (query/hash ignored) counts as a duplicate. Each cluster shows a Deduplicate button when extras exist; the toolbar has Deduplicate all. The best copy is kept (pinned → active → most recently used); pinned tabs are never closed.

ArXiv papers are special-cased: alphaxiv.org / arxiv.org abs and pdf tabs for the same paper id count as one duplicate group. Keeper priority:

alphaxiv.org/pdf → alphaxiv.org/abs → arxiv.org/pdf → arxiv.org/abs

Reading Queue and Library also dedupe on write: one row per dedupe key (including across those arXiv variants), so triaging the same paper twice upserts instead of stacking copies.

Organize tabs

Organize tabs reorders every window so cluster members sit next to each other, then wraps multi-tab clusters in named Chrome tab groups. Pinned tabs stay at the front.

Everything is local & private

  • No account, no server, no analytics.
  • Your archive lives in the browser's IndexedDB (via Dexie) on your machine.
  • Light / dark theme: defaults to your OS preference. Click the sun / moon button in the header to switch between Light and Dark. Choice is stored locally.
  • Planned AI features (summaries, smarter cluster naming, importance ranking) will use Chrome's on-device AI (Gemini Nano), so tab data never leaves your device. Clustering itself already works fully offline via local heuristics.

Development

npm install
npm run dev      # Vite dev server with HMR for the extension
npm run build    # Type-check + production build into dist/
npm run pack     # Build + zip into release/tab-triage-vX.Y.Z.zip

Install in Chrome

Requires Chrome 116+ (for the side panel API).

From a release zip (easiest)

  1. Download tab-triage-v*.zip from Releases
  2. Unzip it (you should see manifest.json in the folder)
  3. Go to chrome://extensions
  4. Toggle Developer mode (top right)
  5. Click Load unpacked and select the unzipped folder
  6. Pin the extension and click it to open the side panel

From source

  1. npm run build (or npm run pack)
  2. Go to chrome://extensions
  3. Toggle Developer mode
  4. Click Load unpacked and select the dist/ folder
  5. Pin the extension and click it to open the side panel

For live development, run npm run dev, load unpacked from dist/, and changes hot-reload.

Project structure

manifest.config.ts        MV3 manifest (tabs, tabGroups, storage, sidePanel)
src/
  background/             Service worker (opens the side panel)
  lib/
    types.ts             Shared types (LiveTab, ArchivedTab, TabCluster)
    url.ts               URL normalization for dedupe
    dedupe.ts            Pick which duplicate open tabs to close
    db.ts                IndexedDB archive (upsert by normalized URL)
    tabs.ts              chrome.tabs helpers (query/close/focus/reopen)
    cluster.ts           Local clustering (domain / topic / duplicates)
    organize.ts          Reorder tabs + create Chrome tab groups
  sidepanel/
    App.tsx              Shell + nav between the three views
    views/
      TriageView.tsx     Clusters, dedup, organize, one-at-a-time review
      ReadingQueueView.tsx
      LibraryView.tsx    Searchable archive

Roadmap

Done: triage, local archive, search, reading queue, clustering, deduplicate, organize tabs (reorder + tab groups).

Next, layered on top:

  • On-device AI one-line summaries so you triage without reopening tabs
  • Clustering ("these 6 tabs are all Japan-trip research")
  • Importance scoring against a short note about your current projects
  • "Why I kept this" notes on archived items
  • Real read-time estimates from page content
  • Bulk actions & duplicate detection
  • On-device AI cluster naming (richer labels than keyword heuristics)

About

An inbox for your Chrome tabs. Triage guilt-free with a local archive so nothing is ever lost.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages