F12: inline editable proposed-change diff in the Markdown editor + Accept/Reject control parity (#64) #66

Merged
benstull merged 12 commits from s58-inline-editor-diff into main 2026-06-26 15:28:15 +00:00

12 Commits

Author SHA1 Message Date
BenStullsBets 1df3d2c154 Merge remote-tracking branch 'origin/main' into s58-inline-editor-diff
# Conflicts:
#	src/extension.ts
2026-06-26 08:28:02 -07:00
BenStullsBets 656089432f fix(proposals): reload-safe optimisticApply + reconciled toolbar summary (#64)
Final-review fixes:
- CRITICAL: optimisticApply no longer re-captures `original` from an
  already-applied buffer after a window reload (in-memory `applied` set is
  empty post-reload). A proposal already carrying `original` is marked applied
  and skipped, so Reject's revert target survives save+reload (INV-51/54).
  Adds a reload-safety host-E2E that reproduces the prior-session state.
- MINOR: the preview toolbar +N/-N summary now counts against the landed text
  (current minus pending proposals) via the new pure landedTextOf(), so a
  pending change is shown once (as a proposal), not double-counted (INV-50).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 08:21:53 -07:00
BenStullsBets f4594daa6f feat(webview): Accept/Reject + dropdown, rejectAll, control parity (#64, INV-53)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 08:07:06 -07:00
BenStullsBets 38053239fa fix(render): map author spans to landedText coords (INV-49/50 coloring alignment) (#64)
renderReview diffs against landedText (current minus pending proposals), so block
offsets are landedText-relative while authorSpans arrive in currentText coords. A
colored block after a length-changing pending proposal was mis-colored. Map the
spans through toLanded so authorship coloring stays aligned.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 07:49:04 -07:00
BenStullsBets 65293326c8 feat(render): INV-50 render-once — diff against current-minus-pending (#64)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 07:46:15 -07:00
BenStullsBets e5992840d2 feat(editor): EditorProposalController — optimistic apply + decorations + CodeLens (#64)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 07:39:14 -07:00
BenStullsBets 8c6e7822b4 feat(render): pure decorationPlan feeds editor + webview from one diff (#64, INV-49)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 06:34:47 -07:00
BenStullsBets ddbbb7aec3 feat(proposals): optimisticApply + finalize/revert in place + rejectAll (#64)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 06:31:28 -07:00
BenStullsBets 930b4ab056 test(e2e): pin --user-data-dir to a short /tmp path (fix macOS socket-length EINVAL)
The default .vscode-test/user-data socket path exceeds macOS's ~103-char UNIX
socket limit when the repo lives at a long path (e.g. a git worktree), so the
host-E2E harness failed to launch (listen EINVAL). Point --user-data-dir at a
short /tmp root so the IPC socket stays under the limit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 06:22:36 -07:00
BenStullsBets 6d54963f15 feat(attribution): landBaseline opt + signalLanded for F12 optimistic apply (#64)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 06:20:10 -07:00
BenStullsBets 92ff4dd4ac feat(proposalModel): setProposalApplied re-anchors + stores original (#64)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 06:17:38 -07:00
BenStullsBets bea9fd5148 feat(model): add Proposal.original for F12 optimistic-apply revert (#64) 2026-06-26 06:15:36 -07:00