feat(document): niet-verliesvrije Markdown als lokaal bronblok in Visueel (#2463) #2484

Merged
brenno merged 1 commit from fix/document-bronfragment into main 2026-10-19 19:07:49 +00:00
Owner

Samenvatting

Eén niet-verliesvrije constructie (HTML-commentaar, ontsnapt leesteken, losse
tabelregel) dwong het hele document naar Bron-modus — of de normalisatie
herschreef de tekst stil. Nu reist zo'n brok als x-embed-source-fragment:
één atomaire, bewerkbare embed ("Bron"-vlak) midden in de visuele editor.

  • sourceFragmentRanges() wijst witregel-begrensde brokken aan rond
    beperkings-hits; wrapSourceFragments() + SourceFragmentSyntax dragen
    ze verbatim als embed
  • Escape-detector verbreed naar de volledige CommonMark-klasse (\|, \~,
    \? e.d. gingen eerder stil verloren)
  • Visuele laadweg gebruikt normalizeRichTextMarkdownForStorage zodat de
    scanner escapes ziet vóór ontsnapping
  • Documentbrede terugval, wisselweigering, snackbar en waarschuwingsbalk
    verwijderd; ook de <!---arm van de dialogpoort is overbodig geworden
  • Sentinels zijn puur intern: ze bereiken het opgeslagen .md nooit

Testplan

  • Codec-rondreizen: commentaar, escapes in kop/lijst/citaat, losse \|,
    fragmenten op documentranden, aangrenzende fragmenten, tweede rondreis
  • Widget-tests: bronblok bewerkbaar, rest visueel, opslag byte-getrouw
  • Golden: bronvlak met "Bron"-bijschrift tussen visuele alinea's
  • make check groen (EXIT: 0, incl. goldens)

Generated with Devin

## Samenvatting Eén niet-verliesvrije constructie (HTML-commentaar, ontsnapt leesteken, losse tabelregel) dwong het hele document naar Bron-modus — of de normalisatie herschreef de tekst stil. Nu reist zo'n brok als `x-embed-source-fragment`: één atomaire, bewerkbare embed ("Bron"-vlak) midden in de visuele editor. - `sourceFragmentRanges()` wijst witregel-begrensde brokken aan rond beperkings-hits; `wrapSourceFragments()` + `SourceFragmentSyntax` dragen ze verbatim als embed - Escape-detector verbreed naar de volledige CommonMark-klasse (`\|`, `\~`, `\?` e.d. gingen eerder stil verloren) - Visuele laadweg gebruikt `normalizeRichTextMarkdownForStorage` zodat de scanner escapes ziet vóór ontsnapping - Documentbrede terugval, wisselweigering, snackbar en waarschuwingsbalk verwijderd; ook de `<!--`-arm van de dialogpoort is overbodig geworden - Sentinels zijn puur intern: ze bereiken het opgeslagen `.md` nooit ## Testplan - [x] Codec-rondreizen: commentaar, escapes in kop/lijst/citaat, losse `\|`, fragmenten op documentranden, aangrenzende fragmenten, tweede rondreis - [x] Widget-tests: bronblok bewerkbaar, rest visueel, opslag byte-getrouw - [x] Golden: bronvlak met "Bron"-bijschrift tussen visuele alinea's - [x] `make check` groen (EXIT: 0, incl. goldens) Generated with [Devin](https://devin.ai)
Stond er één HTML-commentaarregel, ontsnapt leesteken of losse tabelregel
in een document, dan dwong de visuele modus het héle bestand naar de
bronstand — of herschreef de normalisatie je tekst stilletjes. Nu wijst
sourceFragmentRanges zulke brokken aan en reist elk als
x-embed-source-fragment: één atomaire embed met de bron verbatim, getekend
als bewerkbaar monospace vlak onder het bijschrift "Bron". Alles eromheen
blijft rijke tekst; de automatische bronterugval, de weigering bij
wisselen naar Visueel en de waarschuwingsbalk vallen weg.

De escape-detector dekt nu de volledige CommonMark-interpunctieklasse,
dus ook \| en \~ die de codec eerder stil verloor. De visuele laadweg
normaliseert met normalizeRichTextMarkdownForStorage zodat de scanner de
escapes ziet vóór ze ontsnapt worden; sentinels bestaan alleen in de
parse/serialisatie-keten en bereiken het bestand nooit.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno force-pushed fix/document-bronfragment from 5582c54f3d to 8e35bc81e0 2026-10-19 19:07:42 +00:00 Compare
brenno merged commit 123c9e0ed2 into main 2026-10-19 19:07:49 +00:00
Sign in to join this conversation.
No description provided.