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
20 changes: 0 additions & 20 deletions .docs/doing/2026-06-27-claude-code-capture-handoff/tasks.md

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Completion Summary: Frictionless Capture → Claude Code Handoff

Shipped as two sequential PRs off `main`.

## Change A — One-click capture (PR #8)

- Removed the popup. The toolbar icon now fires `chrome.action.onClicked`
(`src/background.ts`), opening the editor with `?tabId=&windowId=&autocapture=1`.
- The editor runs a one-shot, ref-guarded auto-capture effect on load; the manual
Capture button remains for re-capture.
- Dropped the `popup` entry from `vite.config.ts` and the Tailwind content glob;
deleted `popup.html` + `src/popup/`. Synced `CLAUDE.md`, `AGENTS.md`, `README.md`.

## Change B — Copy for Claude Code (PR #9)

- New third editor output saves the annotated PNG to `Downloads/shotback/` via
`chrome.downloads`, reads back its absolute path, and copies a Claude-ready
prompt referencing the file.
- `src/lib/wslPath.ts` `toClaudePath()` translates a Windows drive path to its WSL
`/mnt/<drive>/…` mount (lowercased drive, `\`→`/`); POSIX paths pass through.
- `src/lib/feedback.ts` `buildClaudeCodePrompt()` shares comment formatting with
`buildExternalLlmPrompt`.
- Added the `downloads` permission (rationale in `SECURITY.md`).
- If the absolute path can't be resolved, falls back to the relative
`Downloads/shotback/<name>.png` and reports a non-success status.

## Validation

- `npm run check` + `format:check` green on both PRs; CI green before each merge.
- Tests: 34 → 42 passing (`tests/wslPath.test.ts` + extended `tests/feedback.test.ts`).
- Dogfooded the `dist/` build: manifest reflects no popup / added `downloads`
permission; bundles contain `onClicked`, `autocapture`, `chrome.downloads`,
`/mnt/`, and the new prompt text.

## Deferred

- Live in-browser smoke test (load unpacked → click icon → editor auto-captures →
annotate → Copy for Claude Code → paste path into a WSL Claude Code session and
confirm the file reads). Not runnable in CI; track in the next manual QA pass.
20 changes: 20 additions & 0 deletions .docs/done/2026-06-27-claude-code-capture-handoff/tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Tasks: Frictionless Capture → Claude Code Handoff

## 1. Change A — One-Click Capture (PR1)
- [x] 1.1 Remove `default_popup` from `public/manifest.json` `action`.
- [x] 1.2 Add `chrome.action.onClicked` handler in `src/background.ts` → open `editor.html?tabId=&windowId=&autocapture=1`.
- [x] 1.3 Add one-shot auto-capture `useEffect` (ref-guarded) in `src/editor/main.tsx`.
- [x] 1.4 Delete `popup.html` + `src/popup/`; remove `popup` input from `vite.config.ts`.
- [x] 1.5 `npm run check` (+ `format:check`) green; build `dist/`; load-unpacked sanity check.
- [x] 1.6 Branch, commit, push, open PR, merge, delete branch.

## 2. Change B — Copy for Claude Code (PR2)
- [x] 2.1 Add `src/lib/wslPath.ts` (`toClaudePath`) + `tests/wslPath.test.ts` (TDD).
- [x] 2.2 Add `buildClaudeCodePrompt` to `src/lib/feedback.ts` + extend `tests/feedback.test.ts` (TDD).
- [x] 2.3 Add `"downloads"` permission to `public/manifest.json`; update `SECURITY.md`.
- [x] 2.4 Wire `copyForClaudeCode()` + new button in `src/editor/main.tsx`.
- [x] 2.5 `npm run check` (+ `format:check`) green; build `dist/`; load-unpacked sanity check.
- [x] 2.6 Branch off updated `main`, commit, push, open PR, merge, delete branch.

## 3. Wrap-up
- [x] 3.1 Move change folder `doing/ → done/`; add `completion-summary.md`.
Loading