Documentmodus: platte terugval in de visuele stand wordt ten onrechte als Quill-bewerking opgeslagen #1649
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1649
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
De visuele stand valt bij niet-rondreisbare Markdown bewust terug op de platte broneditor. Wijzigingen in die terugval worden toch als visualEdit gemarkeerd, alleen omdat de geselecteerde modus visual is. Opslaan stuurt daardoor byte-getrouwe bronbewerkingen onnodig door de Quill-baseline en source patcher, met risico op normalisatie of verkeerde patches rond juist de constructies die Quill niet ondersteunt.
Reproductie
Verwacht
Bewerkingen in de platte terugval gelden als bronbewerkingen en worden rechtstreeks byte-getrouw opgeslagen.
Technische aanwijzing
lib/widgets/document_editor_screen.dart:_onControllerChanged baseert visualEdit uitsluitend op _viewMode. De werkelijke keuze voor Quill versus bronterugval wordt bepaald door markdownRoundTripsVisually.
Gevonden bij audit van commit
d439638c6b.Triage: accepted
Bevestigd tegen
main(e93ef205c).lib/widgets/document_editor_screen.dartzetvisualEdit: _viewMode == _DocViewMode.visual. De werkelijke keuze tussen Quill en de platte terugval valt een laag lager, inMarkdownNotesEditor._effectiveMode(lib/widgets/markdown_editor/markdown_editor.dart): zodramarkdownVisualLimitationsniet leeg is, staat daar de bewerkbare brontekst, niet Quill.Het scherm wisselt zelf ook om (
_autoFallbackToSource), maar dat gebeurt in een post-frame-callback. De bewerking die de niet-rondreisbare constructie binnenbrengt, is dan al metvisualEdit: truebij de notifier binnen. Wie op dat moment opslaat, stuurt byte-getrouwe brontekst door de Quill-baseline en de patcher — precies over de constructies die Quill niet aankan.Oplossingsrichting
Zelfde voorspelling gebruiken als de editor:
Dat is één uitdrukking en hij deelt de functie mét de terugval, dus ze kunnen niet meer uit elkaar lopen. Netter (en even goedkoop) is de editor laten mélden welk oppervlak de wijziging maakte —
onDiscreteVisualEditbestaat al als kanaal — zodat er één bron van waarheid is in plaats van twee aanroepers die hetzelfde raden.Regressietest (verplicht)
test/document_editor_screen_test.dart: document met rauwe HTML, modus Visueel gevraagd, typen in de terugval →documentProvider.state.visualEdited == false, en de opslag landt byte-getrouw.Kosten
Klein: één regel plus test. Wel eerst nagaan of er geen tweede aanroeper is die dezelfde aanname maakt.
Prioriteit
Middelhoog: smal venster, maar de schade is stille normalisatie van juist de fragiele constructies.