Skip to content

Releases: shw1606/tabswirl

v0.2.0 — 3-tier classification + Pouches

Choose a tag to compare

@shw1606 shw1606 released this 15 May 15:53

First public release. The MVP defined in PRD §9 (M1–M7) is functionally
complete: auto-classify, Stash, and consume-on-restore Pouches all work
as a daily driver.

What's in v0.2.0

Three-tier classification cascade

Most tabs never reach the LLM. In order of attempt:

  1. Domain cache (~10ms) — instant if we've seen this domain in the window before.
  2. Domain rules (~30ms) — ~210 hand-curated well-known sites across 9 categories. Hit → group + cache. No LLM call.
  3. Chrome built-in AI (~100ms) — on-device Gemini Nano via the LanguageModel API. Zero key, zero network. Auto-skipped when LanguageModel.availability() isn't "available".
  4. BYOK provider (~500–1500ms) — Anthropic Claude Haiku 4.5 by default, with the 500ms debounce that batches sibling tab opens.

Stash & Restore Pouches

The product's defining flow. Pouches persist across browser restart in
chrome.storage.local; restoring one reopens the tabs and deletes
the Pouch in the same step
. Working memory ↔ long-term memory split
none of the surveyed competitors implement.

Smart cache invalidation

  • Manual tab moves between groups → cache learns (the next same-domain tab takes the user's preferred group).
  • Group renames / recolors → cache re-seeds for every tab in the group.
  • Group deletions → invalidate eagerly via chrome.tabGroups.onRemoved.
  • Stale group ids (e.g. group auto-deleted when last tab closes) → recovered with proactive eviction + reactive fallback.

Quality of life

  • Verbose timing toggle in options for chasing slow-path latency.
  • Popup footer with Settings · SW devtools · Re-classify N tabs so you don't need to dive into chrome://extensions.
  • Per-window isolation: a PWA / app window can't crash the classifier for the rest of your normal windows.
  • Color drift auto-correct: small models occasionally assign one group two colors mid-batch — first color wins instead of failing the batch.

Install

  1. Download `tabswirl-v0.2.0.zip` (below) and extract.
  2. Chrome → `chrome://extensions` → toggle Developer mode.
  3. Load unpacked → select the extracted folder.
  4. Open the popup → Settings to add an Anthropic API key. (Skip if you're on Chrome 148+ with Sync — Chrome built-in AI handles it.)

Test status

  • 167/167 unit tests (Vitest)
  • 9/9 E2E tests against real Chromium (Playwright with the extension loaded)
  • CI on every push (typecheck + unit + build)

See `docs/WORK_LOG.md` for the per-commit history and decision log.