Releases: shw1606/tabswirl
Releases · shw1606/tabswirl
Release list
v0.2.0 — 3-tier classification + Pouches
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:
- Domain cache (~10ms) — instant if we've seen this domain in the window before.
- Domain rules (~30ms) — ~210 hand-curated well-known sites across 9 categories. Hit → group + cache. No LLM call.
- Chrome built-in AI (~100ms) — on-device Gemini Nano via the
LanguageModelAPI. Zero key, zero network. Auto-skipped whenLanguageModel.availability()isn't "available". - 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
- Download `tabswirl-v0.2.0.zip` (below) and extract.
- Chrome → `chrome://extensions` → toggle Developer mode.
- Load unpacked → select the extracted folder.
- 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.