diff --git a/README.md b/README.md index 038c59e..362701b 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,8 @@ catalog (a pure, key-free SDK call) in a notification and the Features shipped so far: F2 region-anchored threads (Feature #4), F3 live human/Claude attribution (Feature #6), F4 propose/accept diff flow -(Feature #12). +(Feature #12), F5 cross-rung sidecar contract (Feature #14), F6 diff-view +toggle (Feature #17). ## Architecture @@ -131,6 +132,32 @@ record per the contract; git push/pull is the transport, no re-homing ever. Design: `vscode-cowriting-plugin-content/specs/coauthoring-cross-rung-format.md`. +## F6 — Diff-view toggle (Feature #17) + +**Cmd/Ctrl-Alt-D** (or **Cowriting: Toggle Diff View**) flips a tracked +document into a native `vscode.diff` against a **coauthoring baseline** — the +readonly baseline on the left, your **live, editable** document on the right +(so you keep writing inside the diff; toggling again closes it). The diff +answers "what did *I* change?" in one keystroke instead of git archaeology. + +- **Machine-factored baseline (INV-18):** the baseline initializes when a doc + is first tracked and **advances automatically at every machine landing** + (every successful `applyAgentEdit` seam apply — INV-9). So text Claude landed + never shows as a change; everything the diff shows is operator-authored by + construction — no attribution filtering. +- **Pin on demand:** **Cowriting: Pin Diff Baseline to Now** resets the + baseline to the current buffer for a deliberate "review my next pass" epoch; + the diff tab title names the epoch (`opened` / `Claude landed` / `pinned`). +- **Pure view, repo-free (INV-19):** the baseline snapshot lives in VS Code + workspace storage, **never** the repo — `.threads/`, the cross-rung contract + (INV-14..17), and `SCHEMA_VERSION` are untouched. Storage-unavailable + degrades to in-memory baselines + one warning. +- **No LLM in CI:** host E2E (`test/e2e/suite/diffView.test.ts`) drives the same + programmatic seam ingress (propose + accept) the F4 suite uses. + +Design: `vscode-cowriting-plugin-content/specs/coauthoring-diff-view.md`. +Live smoke: [`docs/MANUAL-SMOKE-F6.md`](docs/MANUAL-SMOKE-F6.md). + ## Develop - `npm run watch` — rebuild on change. diff --git a/docs/MANUAL-SMOKE-F6.md b/docs/MANUAL-SMOKE-F6.md new file mode 100644 index 0000000..f3279fe --- /dev/null +++ b/docs/MANUAL-SMOKE-F6.md @@ -0,0 +1,26 @@ +# Manual smoke — F6 diff-view toggle (live) + +Pre-req: a real machine (not CI). Step 4 uses a live Claude turn — Claude Code +installed + signed in (the `claude-code` provider rides that login, INV-8). The +rest of F6 needs no credentials and no network. + +1. `npm run build`, launch the extension (F5 in VS Code opens the committed + `sandbox/` playground), open `playground.md`. +2. Edit a sentence by hand, then **Cmd/Ctrl-Alt-D** (or run **Cowriting: Toggle + Diff View**). ✅ A diff opens: the readonly baseline on the left, your live + document on the right; the tab title reads `playground.md — my changes since + opened