Commit Graph

307 Commits

Author SHA1 Message Date
Ben Stull 5b1ff9e136 add sessions/0018/SESSION-0018.0-TRANSCRIPT-2026-06-11T07-03--2026-06-11T07-24.md + replace placeholder/variant SESSION-0018.0-TRANSCRIPT-2026-06-11T07-03--INPROGRESS.md 2026-06-11 07:25:02 -07:00
benstull da32e0c80b Merge pull request 'F6: diff-view toggle (Feature #17)' (#18) from f6-diff-view-toggle into main 2026-06-11 14:21:45 +00:00
Ben Stull 2edb66fe4c docs(f6): manual smoke + README pointer (SLICE-4)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 07:20:16 -07:00
Ben Stull e052ffc1a9 test(f6): assert toggleDiffView + pinDiffBaseline are no-folder stubs (#8, SLICE-4)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 07:18:53 -07:00
Ben Stull aed665a978 test(f6): host E2E — toggle, advance-on-accept, pin, persist, untracked (SLICE-4)
F6 §6.8. Drives the programmatic seam ingress (propose + accept, no LLM):
opened baseline → toggle opens cowriting-baseline diff → type (baseline steady)
→ accept advances past the landing (INV-18) → operator delta → pin → on-disk
baseline outside .threads (INV-19) → toggle closes (normal editor active) →
untracked warns.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 07:18:23 -07:00
Ben Stull 26474950df feat(f6): contribute toggleDiffView + pinDiffBaseline commands + ctrl+alt+d (SLICE-3)
F6 §5/§6.4. Palette-visible commands; ctrl+alt+d (when editorTextFocus),
unbound in stock VS Code, user-remappable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 07:16:20 -07:00
Ben Stull 17976809bf feat(f6): wire DiffViewController into activation (SLICE-3)
F6 §6.2. BaselineStore from context.storageUri (in-memory fallback), advance
subscribed to the seam's onDidApplyAgentEdit, ensureBaseline on first sight in
renderIfOpen, diffViewController on the CowritingApi, commands stubbed in the
no-folder path (#8 precedent).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 07:15:53 -07:00
Ben Stull 64e993992d feat(f6): toggle UX — vscode.diff open/close via tab groups (SLICE-3)
F6 §6.5 PUC-1. Detects the baseline diff tab (original scheme cowriting-baseline,
modified == the doc) to close-and-reveal; else opens vscode.diff with an epoch
title. Live document on the right — editor state preserved by construction.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 07:15:04 -07:00
Ben Stull 4f2fc6fa96 feat(f6): DiffViewController — baseline lifecycle + content provider (SLICE-2)
F6 §6.2/§6.4, INV-18/INV-19. ensure/advance/pin capture buffer text, persist
via BaselineStore, refresh the open diff via onDidChange. Storage-unavailable
degrades to in-memory + one warning. toggle UX lands in SLICE-3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 07:13:30 -07:00
Ben Stull 281eb09883 feat(f6): onDidApplyAgentEdit — the single machine-landing signal (SLICE-2)
F6 §6.2/§6.4, INV-9/INV-18. Additive EventEmitter on the seam owner, fired
after a real (non-no-op) applyEdit succeeds. Seam signature/return unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 07:12:31 -07:00
Ben Stull 6f0b903596 feat(f6): BaselineStore — vscode-free per-doc baseline persistence (SLICE-1)
F6 §6.2/§6.3, INV-19. One JSON per docPath under VS Code workspace storage,
never the repo. Mirrors CoauthorStore; unit-tested round-trip/paths/overwrite.

Also lands the F6 implementation plan
(docs/superpowers/plans/2026-06-11-f6-diff-view-toggle.md).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 07:11:42 -07:00
Ben Stull 19075f243b claim vscode-cowriting-plugin session 0018 (placeholder) + sessions.json entry 2026-06-11 07:04:00 -07:00
Ben Stull ad89fa343c add sessions/0017/SESSION-0017.0-TRANSCRIPT-2026-06-10T23-52--2026-06-11T06-59.md + replace placeholder/variant SESSION-0017.0-TRANSCRIPT-2026-06-10T23-52--INPROGRESS.md 2026-06-11 07:00:48 -07:00
Ben Stull 68810207d4 claim vscode-cowriting-plugin session 0017 (placeholder) + sessions.json entry 2026-06-10 23:52:50 -07:00
Ben Stull 265227a402 add sessions/0016/SESSION-0016.0-TRANSCRIPT-2026-06-10T23-31--2026-06-10T23-44.md + replace placeholder/variant SESSION-0016.0-TRANSCRIPT-2026-06-10T23-31--INPROGRESS.md 2026-06-10 23:46:09 -07:00
Ben Stull f109f362ef claim vscode-cowriting-plugin session 0016 (placeholder) + sessions.json entry 2026-06-10 23:31:47 -07:00
Ben Stull 26c1c90b3c add sessions/0015/SESSION-0015.0-TRANSCRIPT-2026-06-10T22-37--2026-06-10T23-29.md + replace placeholder/variant SESSION-0015.0-TRANSCRIPT-2026-06-10T22-37--INPROGRESS.md 2026-06-10 23:30:27 -07:00
benstull 611a18016a Merge pull request 'fix: proposal threads disable the dead reply input (decide-only, INV-12)' (#16) from fix/proposal-canreply into main 2026-06-11 06:26:33 +00:00
Ben Stull 4c947acc43 fix: proposal threads disable the reply input — decide-only, INV-12
Playing with F4, the operator hit VS Code's default "Reply…" box on a
proposal thread: no submit command is wired for cowriting.proposals, so
typed text had nowhere to go. Proposals are decide-only (accept/reject in
the title bar); discussion belongs in a coauthoring thread. Set
canReply=false so the dead input never renders, and expose canReply on the
test-facing RenderedProposal with an E2E assertion.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 23:26:11 -07:00
benstull 4651410136 Merge pull request 'F5: cross-rung format contract + round-trip (#14)' (#15) from feature/14-cross-rung-format into main 2026-06-11 06:07:39 +00:00
Ben Stull abb9c882a4 docs: cross-rung contract pointers in README (F5 SLICE-5, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 23:06:36 -07:00
Ben Stull 5de59fde11 test: host E2E — crossrung round-trip + newer-major fail-safe (F5 SLICE-4, PUC-2/PUC-4, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 23:05:38 -07:00
Ben Stull e0c127c4d9 feat: crossrung-reply stand-in writer — validate, append, stable-serialize (F5 SLICE-4, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 23:04:17 -07:00
Ben Stull 452f5d193f feat: mergeArtifacts — deterministic union-by-id with surfaced conflicts (F5 SLICE-3, INV-17, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 23:03:15 -07:00
Ben Stull ef7d9403c0 feat: VersionGuard — newer-major sidecars are read-only with one warning (F5 SLICE-2, INV-16/PUC-4, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 23:01:30 -07:00
Ben Stull ef4ec8dbe9 feat: currentAuthor() carries git user.email — fail-open identity (F5 SLICE-2, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 23:00:03 -07:00
Ben Stull 746071a585 feat: isNewerMajor + store write-refusal backstop (F5 SLICE-2, INV-16, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:59:04 -07:00
Ben Stull a6b16f0d9c feat: serializer preserves unknown fields at every level (F5 SLICE-2, INV-15, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:57:58 -07:00
Ben Stull da172a3117 feat: Provenance gains email + agent.onBehalfOf — cross-rung identity (F5 SLICE-2, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:56:45 -07:00
Ben Stull 7c4d3ed79f feat: publish coauthoring-sidecar JSON Schema + rung-neutral validator (F5 SLICE-1, PUC-5, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:54:39 -07:00
Ben Stull 0ddeaba5a6 chore: add ajv devDependency + F5 implementation plan (F5 SLICE-1, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:53:18 -07:00
Ben Stull 8591fc5de4 claim vscode-cowriting-plugin session 0015 (placeholder) + sessions.json entry 2026-06-10 22:38:12 -07:00
Ben Stull d28a75b316 add sessions/0014/SESSION-0014.0-TRANSCRIPT-2026-06-10T22-27--2026-06-10T22-34.md + replace placeholder/variant SESSION-0014.0-TRANSCRIPT-2026-06-10T22-27--INPROGRESS.md 2026-06-10 22:34:08 -07:00
Ben Stull 7d209cdacc claim vscode-cowriting-plugin session 0014 (placeholder) + sessions.json entry 2026-06-10 22:27:31 -07:00
Ben Stull cb91b8544f add sessions/0013/SESSION-0013.0-TRANSCRIPT-2026-06-10T22-22--2026-06-10T22-26.md + replace placeholder/variant SESSION-0013.0-TRANSCRIPT-2026-06-10T22-22--INPROGRESS.md 2026-06-10 22:26:39 -07:00
Ben Stull 012114a152 claim vscode-cowriting-plugin session 0013 (placeholder) + sessions.json entry 2026-06-10 22:23:00 -07:00
Ben Stull 5b49d09d9f add sessions/0012/SESSION-0012.0-TRANSCRIPT-2026-06-10T21-53--2026-06-10T22-18.md + replace placeholder/variant SESSION-0012.0-TRANSCRIPT-2026-06-10T21-53--INPROGRESS.md 2026-06-10 22:18:56 -07:00
benstull 0ef70a0226 Merge pull request 'F4: propose/accept diff flow — pending proposals, ✓/✗ review, seam-applied acceptance (Feature #12)' (#13) from feat/f4-propose-accept into main 2026-06-11 05:16:23 +00:00
Ben Stull 169abf06c8 F4: document propose/accept — manual smoke, README, playground loop (#12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:14:13 -07:00
Ben Stull 8fdea97d36 F4 SLICE-5: host E2E (propose/accept/reject/persist/stale/coexist) + seam fix: event-level net-effect matching survives host word-diff splitting (INV-9) (#12)
The accept E2E exposed a latent F3 limitation: VS Code word-diffs one
applied WorkspaceEdit into several minimal hunks when old/new share
interior tokens, so the registry's per-hunk exact match missed and seam
edits fell through as fragmented human spans. PendingEditRegistry.match
is replaced by matchEvent (all hunks inside the registered full range +
equal net delta — one applyEdit is one change event). Plan AMENDMENT 1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:12:15 -07:00
Ben Stull 452c071efb F4 SLICE-4: editSelection is propose-by-default — the turn ends in a proposal, the seam fires on accept (#12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:05:44 -07:00
Ben Stull 4688ac8bbd F4 SLICE-3: wire ProposalController — contributes, watcher fan-out, propose command, stubs, API (#12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:05:16 -07:00
Ben Stull 4efd34ffda F4 SLICE-2/3: ProposalController — propose ingress, resolve-or-flag, diff threads, accept/reject via the seam (#12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:04:19 -07:00
Ben Stull f474684946 F4 SLICE-1: proposalModel helpers — add/remove + fenced-diff body (#12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:03:20 -07:00
Ben Stull d5beb619aa F4 SLICE-1: anchor prune counts proposal anchorIds (closes store.ts F4 TODO) (#12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:02:48 -07:00
Ben Stull 652f8619d2 F4 SLICE-1: typed proposals[] on shared anchors/Provenance (spec §6.3, INV-13) (#12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:02:08 -07:00
Ben Stull debd09fb97 F4: add implementation plan (just-in-time from coauthoring-propose-accept spec §7.2) (#12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 22:00:42 -07:00
Ben Stull d30ebbbfb8 claim vscode-cowriting-plugin session 0012 (placeholder) + sessions.json entry 2026-06-10 21:53:35 -07:00
Ben Stull 6c2a9a2abb add sessions/0011/SESSION-0011.0-TRANSCRIPT-2026-06-10T21-41--2026-06-10T21-52.md + replace placeholder/variant SESSION-0011.0-TRANSCRIPT-2026-06-10T21-41--INPROGRESS.md 2026-06-10 21:52:53 -07:00
Ben Stull f21a6fd995 claim vscode-cowriting-plugin session 0011 (placeholder) + sessions.json entry 2026-06-10 21:42:00 -07:00