# Clean paste: HTML from Word, Docs and browsers to GFM Markdown (agy gap 24, roadmap 29) Part of `specs/plugins-parity/`. One new pure crate `notescraft-htmlmd` (L0, no third-party dependency); reused by link cards (`link-cards/spec.md`, OpenGraph scan). ## Research (2026-10-21; agy claims checked) - Obsidian ALREADY converts pasted rich text to Markdown natively (forum threads "Pasting now converts HTML and PDF markup to Markdown", a "Convert pasted HTML to Markdown" setting; some users want it optional). So agy's premise "Obsidian lacks this" is only half true: the gap is QUALITY and control, which the plugins sell: Paste Reformatter (detects HTML vs text, converts, optional cleanup, can override paste) https://community.obsidian.md/plugins/paste-reformatter , Smart Paste https://www.obsidianstats.com/plugins/smart-paste ; threads https://forum.obsidian.md/t/pasting-now-converts-html-and-pdf-markup-to-markdown/10506 and https://forum.obsidian.md/t/make-optional-turn-on-off-paste-that-converts-html-content-to-markdown-links/10096 . agy's source #2115 was not fetched. - Bear, Notion, Apple Notes: they keep rich text natively; "sanitizes into Markdown" is not their model. Not verified; dropped. - Feasibility: `arboard` (already approved, version 3.6 in root `Cargo.toml`) has `Get::html()` (docs mirror https://doc.servo.org/arboard/struct.Get.html). Verify it compiles with `default-features = false, features = ["image-data"]` in task 4 (STOP and report if it needs a feature flag: owner question Q1). - Current NotesCraft: `shell/attachment_drop/clipboard.rs` reads only image and file lists; text paste is the egui/editor plain text. HTML is ignored. ## Problem Copying from Word, Google Docs or a web page pastes flat text (lists, links, bold lost) or, in other editors, a mess of inline styles. Users want clean semantic Markdown. ## Goal Ctrl/Cmd+V in the Markdown source/live editor, when the clipboard holds HTML (text/html), inserts converted GFM: headings, paragraphs, bold, italic, strike, inline code, code blocks, links, images as `![alt](url)` (no download), nested lists, task checkboxes, blockquotes, simple tables, horizontal rules. Ctrl/Cmd+Shift+V pastes plain text (existing behaviour). A setting `[editor] paste_html = "convert" | "plain"` (default `convert`). Word/Docs junk is removed: `