From d2a27a21b2e45b2fc90539d8b9882af0061c1a0b Mon Sep 17 00:00:00 2001 From: Sidney von Katzendame Date: Sat, 13 Jun 2026 18:25:35 -0400 Subject: [PATCH] docs: sync root README + CLAUDE.md with this session's features Root README was stale after the popup/options theme, save-all-tabs, and web-UI-link work: - Features: add 'Save all open tabs', 'Open web UI from popup', themed pages - Status line: mention save-all-tabs - Test count 290 -> 306 (core 77->82, extension-shared 104->115; web 109) - Packages table: extension-shared 104 -> 115 tests - Roadmap: add #46 bookmark-all-tabs + popup polish as shipped CLAUDE.md: same test-count corrections. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 6 +++--- README.md | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 981a66b..160b743 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,13 +5,13 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project status Five packages are merged to main and working: -- `@gitmarks/core` (`packages/core/`) — schemas, GitHub Contents API client with optimistic concurrency, ULID/URL helpers (incl. opt-in tracking-param stripping), pure mutation helpers, example fixtures. 77 unit tests. -- `@gitmarks/extension-shared` (`packages/extension-shared/`) — canonical owner of the cross-browser extension code: popup, options, background, all of `src/lib/`, and the chrome/browser stub. 104 unit tests live here. Consumed by both browser shells via `workspace:*`. Uses `browser.*` via `webextension-polyfill`. +- `@gitmarks/core` (`packages/core/`) — schemas, GitHub Contents API client with optimistic concurrency, ULID/URL helpers (incl. opt-in tracking-param stripping), pure mutation helpers (incl. batched `addBookmarks`), example fixtures. 82 unit tests. +- `@gitmarks/extension-shared` (`packages/extension-shared/`) — canonical owner of the cross-browser extension code: popup, options, background, all of `src/lib/`, and the chrome/browser stub. 115 unit tests live here. Consumed by both browser shells via `workspace:*`. Uses `browser.*` via `webextension-polyfill`. - `@gitmarks/extension-chrome` (`packages/extension-chrome/`) — Chrome MV3 shell. Manifest + Vite/crxjs build + Playwright e2e (4 passing, 2 skipped — see issue history for the activeTab/Playwright limitation). Source files are thin entries that re-export from `extension-shared` via its `exports` map. - `@gitmarks/extension-firefox` (`packages/extension-firefox/`) — Firefox MV3 shell. Manifest + plain Vite build + manual smoke test (Playwright Firefox doesn't reliably drive WebExtensions). Targets Firefox 121+ for MV3 SW parity. Load via `about:debugging` → "Load Temporary Add-on". - `@gitmarks/web` (`packages/web/`) — Vite + React + Tailwind SPA. List, search, tag management, bulk operations, trash, Netscape HTML export. Talks directly to GitHub via `@gitmarks/core`. Hash routing (`#/setup`, `#/`, `#/tags`, `#/trash`). 109 unit + component tests. -Total: 290 unit + component tests across the monorepo, plus 6 Playwright e2e (4 passing, 2 skipped) in the Chrome shell. The web UI is auto-deployed to GitHub Pages by `.github/workflows/deploy-web.yml` on every push to `main` that touches `packages/web/**` or `packages/core/**`. +Total: 306 unit + component tests across the monorepo, plus 6 Playwright e2e (4 passing, 2 skipped) in the Chrome shell. The web UI is auto-deployed to GitHub Pages by `.github/workflows/deploy-web.yml` on every push to `main` that touches `packages/web/**` or `packages/core/**`. Pending packages (in dependency order): Safari. diff --git a/README.md b/README.md index 5672325..ef5d55b 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,9 @@ infrastructure to host. You own your data — it's just a file in a repo you control. **Status:** Chrome extension is functional end-to-end (save via toolbar -button, two-way sync with the native bookmark tree, 5-min poll for remote -changes, automatic conflict retry). Firefox MV3 add-on shipping the same +button, save all open tabs in one action, two-way sync with the native +bookmark tree, 5-min poll for remote changes, automatic conflict retry). +Firefox MV3 add-on shipping the same source as Chrome via a shared package. Web UI (list, search, tag management, bulk operations, trash, Netscape HTML export, sign out) deploys as a static SPA. Safari is next in the roadmap. See `spec.md` for the full design. @@ -16,6 +17,10 @@ SPA. Safari is next in the roadmap. See `spec.md` for the full design. ## Features (Chrome, today) - Save the current tab to GitHub via a toolbar button +- **Save all open tabs** in the current window in one action — batched into a + single `bookmarks.json` write, grouped under a dated `Session YYYY-MM-DD` + folder, with exact-URL de-dupe and browser-internal tabs skipped +- Open the companion **web UI** directly from the popup - Drag a URL to your Chrome bookmarks bar → it appears in `bookmarks.json` on GitHub within ~1 second - Edit a bookmark's title in Chrome → updates remote within ~1 second @@ -26,15 +31,16 @@ SPA. Safari is next in the roadmap. See `spec.md` for the full design. on the next 5-minute poll - Concurrent edits from multiple devices reconcile automatically via GitHub's file SHA + optimistic retry-replay -- 290 automated unit + component tests + 6 Playwright e2e (against real Chromium) +- 306 automated unit + component tests + 6 Playwright e2e (against real Chromium) - Optional **tracking-param stripping** (utm_*, fbclid, gclid, etc.) at save time — opt-in via settings +- Dark cyan/magenta themed popup + options pages, matching the web UI ## Packages | Package | Role | |---|---| | `@gitmarks/core` | Shared TypeScript library: schemas (Zod), GitHub Contents API client with optimistic concurrency, ULID + URL helpers, pure mutation helpers | -| `@gitmarks/extension-shared` | Cross-browser extension source — popup, options, background, lib/ helpers. Consumed by both browser shells via `workspace:*`. 104 unit tests live here. | +| `@gitmarks/extension-shared` | Cross-browser extension source — popup, options, background, lib/ helpers. Consumed by both browser shells via `workspace:*`. 115 unit tests live here. | | `@gitmarks/extension-chrome` | Chrome MV3 shell. Manifest + Vite/crxjs build + Playwright e2e. Thin entry files import from `extension-shared`. | | `@gitmarks/extension-firefox` | Firefox MV3 shell. Manifest + plain Vite build. Same source as Chrome via `extension-shared`. Load via `about:debugging`. | | `@gitmarks/web` | Static SPA — list, search, tag management, bulk operations, trash, Netscape HTML export, sign out. Vite + React + Tailwind. Talks directly to GitHub via `@gitmarks/core`. Deploys to GitHub Pages or Cloudflare Pages. | @@ -149,6 +155,8 @@ The load-bearing invariants: - ✅ Firefox MV3 add-on ([#23](https://github.com/paperhurts/gitmarks/issues/23)) - ✅ Web UI v1: list + search + tag management ([#24](https://github.com/paperhurts/gitmarks/issues/24)) - ✅ Web UI v2: bulk operations + trash + export ([#25](https://github.com/paperhurts/gitmarks/issues/25)) +- ✅ Bookmark all open tabs in one action ([#46](https://github.com/paperhurts/gitmarks/issues/46)) +- ✅ Popup polish: web-UI theme, auto-dismiss after save, "Open web UI" link - ⬜ Safari ([#26](https://github.com/paperhurts/gitmarks/issues/26)) ## Files in this repo