Contribute rewrite Phase 5: inline word-diff in manual pending card
The §8.11 manual-edit card was a stub — "{N} paragraphs edited
directly" plus a countdown and a Save-now button. The spec says the
card should grow one inline word-diff per touched paragraph as the
contributor types, in the same green/red register the Phase 3 accepted
overlay uses. Phase 5 lands that.
In RFCView.jsx, the 800ms-debounced handleEditorUpdate now computes a
per-paragraph token diff alongside the existing paragraph count and
stores both on manualPending. Baseline is the same Phase 4 gutter
source — originalSourceLinesRef.current, the last server-confirmed
body split on blank lines — so the card resets to empty the same
moment the gutter clears (accept/decline/manualFlush/branch-switch).
In ChangePanel.jsx, diffWords is exported (it was already the AI
card's inline-diff engine — token-level LCS over a whitespace-
preserving /(\\s+)/ split, ~30 lines, no runtime dep). The manual
card consumes the same tokens. Wholly-inserted paragraphs render as
all-insert blocks; wholly-deleted paragraphs as all-delete blocks.
Visual register is intentionally shared with Phase 3's preview
overlay: same #dcfce7/#166534 inserts, same #fee2e2/#991b1b
strike-through deletes. Selectors are scoped under .change-manual-diff
rather than reusing .markdown-preview .tracked-* since the card lives
outside the preview surface.
Pre-fancy stance, matching Phase 4's gutter: the diff is index-aligned
against the baseline, so adding a paragraph in the middle lights up
the rest of the doc. Tolerated as the "you've touched stuff below this
point" cue. An LCS-anchored future pass can fix it.
Verification gap matching Phases 2/3/4: backend was not running this
session, so the live RFCView → real-branch flow wasn't exercised.
Drove the Vite preview sandbox instead — mounted ChangePanel with a
hand-built diffs payload, confirmed three blocks render (mixed edit,
wholly-inserted, wholly-deleted), inserts/deletes carry the expected
computed colors, no console errors. Backend integration suite still
green (125 passed).
This commit is contained in:
@@ -879,6 +879,33 @@
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
/* §8.11 Phase 5 — per-paragraph word-diff inside the pending manual
|
||||
card. Shares Phase 3's green/red register with .markdown-preview
|
||||
.tracked-insert / .tracked-delete so the contributor sees one
|
||||
"change layer" vocabulary across the preview pane (accepted) and the
|
||||
change card (their own pending typing). Scoped under its own class
|
||||
rather than reusing the preview selectors since the card is not
|
||||
inside .markdown-preview. */
|
||||
.change-manual-diff {
|
||||
margin: 6px 0;
|
||||
display: flex; flex-direction: column; gap: 6px;
|
||||
}
|
||||
.change-manual-diff-block {
|
||||
font-size: 12px; line-height: 1.6;
|
||||
background: #f9fafb; border-radius: 4px;
|
||||
padding: 6px 8px; border: 1px solid #e5e5e5;
|
||||
white-space: pre-wrap; word-break: break-word;
|
||||
}
|
||||
.change-manual-diff .manual-diff-insert {
|
||||
background: #dcfce7; color: #166534;
|
||||
border-radius: 2px; padding: 1px 2px;
|
||||
}
|
||||
.change-manual-diff .manual-diff-delete {
|
||||
background: #fee2e2; color: #991b1b;
|
||||
text-decoration: line-through;
|
||||
border-radius: 2px; padding: 1px 2px;
|
||||
}
|
||||
.btn-save-now {
|
||||
background: none; border: 1px solid #d4d4d4;
|
||||
border-radius: 4px; padding: 2px 8px;
|
||||
|
||||
Reference in New Issue
Block a user