From 4b5e193d9f17d0b9cc073e53d74dd40866c0e984 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Sun, 4 Oct 2026 13:25:17 -0400 Subject: [PATCH] =?UTF-8?q?feat(web):=20notes=20render=20as=20markdown=20?= =?UTF-8?q?=E2=80=94=20markdown-it+DOMPurify=20pipeline,=20rich=20paste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Objective 6 (web half). Storage/sync stay raw markdown (KOReader shows literal source, accepted). Notes-grade syntax: headings, emphasis/ strikethrough, code, links, lists, blockquotes, GFM tables, reference links, footnotes (markdown-it-footnote); images/raw HTML/math excluded (html:false posture + FORBID img/style/form + default safe-scheme URI check). Display sites: annotations-drawer note rows and highlight note lines render pre-sanitized HTML (x-html); render-time sanitize only. Rich paste: both note textareas intercept paste; a text/html clipboard flavor converts via turndown (gfm tables incl. a headingless-table rule emitting pipe syntax; images blanked) and inserts at the caret; plain pastics fall through to the default paste unchanged. Verified live in Brave: bold/italic/strike/code/lists/quote/table/ footnote-ref/reference-link render;