Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,12 @@ pnpm --filter @gitmarks/extension-chrome e2e
1. ✅ `@gitmarks/core`
2. ✅ Chrome MVP (toolbar save)
3. ✅ Chrome native tree integration
4. ⬜ Firefox build (`webextension-polyfill` over the same source)
5. ⬜ Web UI: list / search / tag management (Vite + React + Tailwind SPA)
6. ⬜ Web UI: bulk operations + trash + export
7. ⬜ Safari (`safari-web-extension-converter` over the Chrome bundle)
4. ⬜ Firefox build (`webextension-polyfill`) — issue [#23](https://github.com/paperhurts/gitmarks/issues/23)
5. ⬜ Web UI v1: list / search / tag management — issue [#24](https://github.com/paperhurts/gitmarks/issues/24)
6. ⬜ Web UI v2: bulk operations + trash + export — issue [#25](https://github.com/paperhurts/gitmarks/issues/25)
7. ⬜ Safari (`safari-web-extension-converter`) — issue [#26](https://github.com/paperhurts/gitmarks/issues/26)

For next-piece-of-work: pick one of #23–#26. Each has a scope block in its issue description. The plan-driven workflow (`docs/superpowers/plans/YYYY-MM-DD-<feature>.md`) is the expected approach for anything larger than ~3 commits.

## Non-goals (do not implement)

Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,14 @@ The load-bearing invariants:
## Files in this repo

- `spec.md` — full design spec (source of truth for non-obvious decisions)
- `CONTRIBUTING.md` — branch/PR conventions, TDD policy, plan-driven workflow
- `CLAUDE.md` — guidance for AI agents working in this repo
- `LICENSE` — MIT
- `docs/superpowers/plans/` — implementation plans, one per branch
- `packages/*/README.md` — package-specific documentation
- `examples/example-bookmarks-repo/` — sample `bookmarks.json` + `tags.json`
to seed a fresh repo, used by `@gitmarks/core` fixture tests
- `.github/workflows/test.yml` — CI (typecheck + unit tests + build on every PR)

## Contributing

Expand Down
24 changes: 14 additions & 10 deletions packages/extension-chrome/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,19 +168,23 @@ pnpm --filter @gitmarks/extension-chrome typecheck

**Coverage:**

Unit tests (53) cover the pure logic — settings, machine ID, bookmark
Unit tests (97) cover the pure logic — settings, machine ID, bookmark
factory, save flow, folder path conversion, ID mapping, suppression
registry, apply-remote, reconciliation, and the listener
batch/debounce/flush algorithm. Tests use a vitest setup file that stubs
registry (URL + node ID), apply-remote, reconciliation, the listener
batch/debounce/flush algorithm, and the background-core poll/reconcile
orchestration. Tests use a vitest setup file that stubs
`chrome.storage.local` and `chrome.bookmarks.*` with an in-memory backend.

E2e tests (6) launch real Chromium with the built extension, mock the
GitHub API via Playwright route interception, and exercise:
- Popup before-setup → "Set up gitmarks" button visible
- Options page validate + save flow with the mocked API
- "Save this page" round-trip → mocked GitHub receives the PUT
- `chrome.bookmarks.create` → expected PUT payload
- Remote add seeded into the mock → bookmark appears in local tree
E2e tests (4 passing, 2 skipped) launch real Chromium with the built
extension and mock the GitHub API via Playwright route interception:
- ✓ Popup before-setup → "Set up gitmarks" button visible
- ✓ Options page validate against missing `bookmarks.json` (404 path)
- ✓ `chrome.bookmarks.create` → expected PUT payload
- ✓ Remote add seeded into the mock → bookmark appears in local tree
- ⊘ Save flow via popup → GitHub PUT (skipped: depended on the dropped
`tabs` permission fallback; the save-flow logic is fully covered by
unit tests)
- ⊘ Popup save view after configure (same dependency, same coverage)

**Known gap (not fully understood):** during development we couldn't
reliably get `chrome.bookmarks.*` events dispatched from
Expand Down
Loading