# Session 0020.0 — Transcript > App: vscode-cowriting-plugin > Start: 2026-06-11T08-19 (PST) > End: 2026-06-11T08-29 (PST) > Type: brainstorming > Status: **FINALIZED** ## Launch prompt Explore **F7 — rendered track-changes markdown preview** (baseline-aware, full mermaid) and write its Solution Design. Anchor Feature #21; deferred intra-diagram mermaid diffing #22. Builds on F6 baseline (#17/#19). Decisions locked during the preceding F6-follow-up ideation (session 0019), recorded in #21. ## Outcome **F7 Solution Design written and graduated.** `vscode-cowriting-plugin-content/specs/coauthoring-rendered-preview.md` (v0.1.0) pushed to the content repo (`--status graduated`). Feature **#21** anchors it; deferred task **#22** (intra-diagram mermaid diffing) captured. ## Plan Brainstorming → produce the F7 Solution Design from the locked ideation decisions. ## Pre-state - Main clean, on `origin/main`. F6 shipped (#17 PR #18, #19 PR #20). Epic #1 open. - This session continues a long conversation: F6 #17 was planned+executed (session 0018), the any-file follow-up #19 shipped (session 0019), then the operator's manual test of F6 surfaced "the diff view isn't intuitive" → an ideation that chose a **rendered track-changes preview** (Option 3) and locked its architecture. Issues #21 (F7 feature) + #22 (deferred mermaid) were filed during that ideation. ## Turn-by-turn arc 1. **Ideation (pre-session, in conversation).** From the F6 manual-test friction: compared single-pane gutter (quick-diff), inline track-changes marks, and a rendered preview with change highlights. Operator chose **Option 3** (rendered preview). Locked deps strategy (markdown-it + mermaid + diff libs; own the integration; no extension-deps, no CDN), the host/webview render split, and block-level diff with atomic code/mermaid + whole-diagram mermaid badge. Captured #21 (feature, with all decisions in the body) + #22 (deferred intra-diagram mermaid diffing). 2. **Claim.** Operator: "kick it off now" → claimed brainstorming session 0020 (`--type brainstorming`); baseline clean. 3. **Spec.** Wrote `coauthoring-rendered-preview.md` (Solution Design, §1–10): custom webview; INV-20..23; reuse F6 baseline + additive `onDidChangeBaseline`; command `cowriting.showTrackChangesPreview` (`ctrl+alt+r`, markdown-only); 4-slice plan; host-E2E tier with the pure render model as the test seam. Self-reviewed (no placeholders, consistent names, focused scope). 4. **Review + graduate.** Surfaced the spec + 3 deferred decisions for review. Operator thumbs-up → finalize graduated + submitted the spec. ## Cut state - Spec graduated on the content repo main (`coauthoring-rendered-preview.md`). - #21 commented (spec graduated); #22 captured (deferred). Epic #1 open. - Plugin repo `main` clean and synced (no code changed this session). - No code, tests, or builds this session — it is a brainstorming/spec session. ## Deferred decisions - **F7 coexists with F6** rather than replacing it — F6's native diff serves any file incl. code; F7 is markdown-only. (Operator reviewed; thumbs-up.) - **`ctrl+alt+r`** as the open keybinding (markdown-only). - **Webview DOM/mermaid rendering verified by manual smoke**, not automated E2E — the sealed webview sandbox can't be DOM-asserted from the host; the automated seam is the pure render model (`getLastModel`). All three recorded in spec §9; cheap to revisit. ## Next-session prompt ``` /goal Plan and execute Feature #21 (F7 rendered track-changes markdown preview) from the graduated Solution Design at content specs/coauthoring-rendered-preview.md — 4 slices per §7.2, host-E2E tier, no LLM in CI. ``` Read first: `memory/f7-rendered-preview-spec-graduated.md`. The plan starts with the pure `trackChangesModel` (vscode-free, unit-tested), then the webview asset + esbuild second entry (bundle mermaid), then the controller/command + F6 `onDidChangeBaseline` event, then host E2E + smoke. Keep mermaid intra-diagram diffing out (that's #22).