Visuele modus toont front matter (Theme/TLP) als bewerkbare tekst #1759

Closed
opened 2026-08-24 07:35:05 +00:00 by brenno · 0 comments
Owner

Wat wordt gevraagd

In de visuele modus van de documenteditor verschijnt soms de tekst Theme: Vigilis TLP:AMBER (of vergelijkbaar) als bewerkbare tekst in het schrijfvlak. Dit is front matter-meta-data (stijl en classificatie) en hoort niet als documentinhoud zichtbaar te zijn.

Onderzoek

De documenteditor bewerkt de body: de bron zonder het leidende YAML-front-matter-blok (lib/widgets/document_editor_screen.dart:196-201). De splitsing gebeurt in splitDocumentFrontMatter (lib/utils/document_front_matter.dart:137-173). De body wordt aan de visuele editor (MarkdownNotesEditor) gevoed via _controller.

De front matter wordt alleen herkend wanneer:

  1. De bron opent met een regel die exact --- is, én
  2. een latere regel sluit met ---, én
  3. het blok opent met een YAML-key (_opensWithYamlKey, regel 498-505).

Voldoet de bron niet aan alle drie de voorwaarden, dan is de hele bron de body — inclusief de theme:- en tlp:-regels — en toont de visuele editor ze als gewone tekst.

Er is al een functie stripLeadingFrontMatterLeakage (lib/utils/document_front_matter.dart:187-212), toegevoegd in #1726, die gelekte front matter-regels (theme:, tlp: en ----fences) van het begin van de body verwijdert. Maar deze functie wordt alleen in het exportpad aangeroepen, niet in de editor. De editor toont de body dus onopgeschoond.

Daarnaast kan de lekkage ontstaan doordat de front matter niet als zodanig wordt herkend (bijv. een handgeschreven document dat met theme: Vigilis begint zonder ----fences, of een bestand waarbij de sluitende --- ontbreekt). In die gevallen staat de meta-data écht in de body en is er geen front-matter-blok om te splitsen.

Voorgestelde oplossing

Twee sporen, afhankelijk van de oorzaak:

  1. Editor toont geen gelekte front matter: pas stripLeadingFrontMatterLeakage toe op de body vóór deze aan de controller/visuele editor wordt gevoed (in document_editor_screen.dart bij de initialisatie van _controller en bij het gelijktrekken van buitenaf). De functie bestaat al en is getest; dit is de kleinste diff. De oorspronkelijke bron (document.source) blijft ongemoeid — alleen de weergave in het schrijfvlak verbergt de lekkage.

  2. Voor de gebruiker zichtbaar maken dat meta-data in de body staat: wanneer splitDocumentFrontMatter geen blok vindt maar de body begint met bekende keys (theme:, tlp:), toon een eenmalige hint dat deze regels bij de front matter horen en via de stijl-/TLP-kiezer beheerd moeten worden, niet als tekst. Dit voorkomt verwarring zonder de bron stilletjes te veranderen.

Voorkeur gaat uit naar spoor 1 (verbergen in de editor) als primaire oplossing, met spoor 2 als aanvulling wanneer de lekkage structureel is (geen fences).

Impact

  • De editor toont geen meta-data-regels meer als tekst.
  • De .md-bron verandert niet; de functie is zuiver weergave-kant.
  • Bestaande tests voor stripLeadingFrontMatterLeakage dekken de logica; een nieuwe test controleert dat de editor-body schoon is.
## Wat wordt gevraagd In de visuele modus van de documenteditor verschijnt soms de tekst `Theme: Vigilis TLP:AMBER` (of vergelijkbaar) als bewerkbare tekst in het schrijfvlak. Dit is front matter-meta-data (stijl en classificatie) en hoort niet als documentinhoud zichtbaar te zijn. ## Onderzoek De documenteditor bewerkt de **body**: de bron zonder het leidende YAML-front-matter-blok (`lib/widgets/document_editor_screen.dart:196-201`). De splitsing gebeurt in `splitDocumentFrontMatter` (`lib/utils/document_front_matter.dart:137-173`). De body wordt aan de visuele editor (`MarkdownNotesEditor`) gevoed via `_controller`. De front matter wordt alleen herkend wanneer: 1. De bron opent met een regel die exact `---` is, én 2. een latere regel sluit met `---`, én 3. het blok opent met een YAML-key (`_opensWithYamlKey`, regel 498-505). Voldoet de bron niet aan alle drie de voorwaarden, dan is de hele bron de body — inclusief de `theme:`- en `tlp:`-regels — en toont de visuele editor ze als gewone tekst. Er is al een functie `stripLeadingFrontMatterLeakage` (`lib/utils/document_front_matter.dart:187-212`), toegevoegd in #1726, die gelekte front matter-regels (`theme:`, `tlp:` en `---`-fences) van het begin van de body verwijdert. Maar deze functie wordt **alleen in het exportpad** aangeroepen, niet in de editor. De editor toont de body dus onopgeschoond. Daarnaast kan de lekkage ontstaan doordat de front matter niet als zodanig wordt herkend (bijv. een handgeschreven document dat met `theme: Vigilis` begint zonder `---`-fences, of een bestand waarbij de sluitende `---` ontbreekt). In die gevallen staat de meta-data écht in de body en is er geen front-matter-blok om te splitsen. ## Voorgestelde oplossing Twee sporen, afhankelijk van de oorzaak: 1. **Editor toont geen gelekte front matter:** pas `stripLeadingFrontMatterLeakage` toe op de body vóór deze aan de controller/visuele editor wordt gevoed (in `document_editor_screen.dart` bij de initialisatie van `_controller` en bij het gelijktrekken van buitenaf). De functie bestaat al en is getest; dit is de kleinste diff. De oorspronkelijke bron (`document.source`) blijft ongemoeid — alleen de weergave in het schrijfvlak verbergt de lekkage. 2. **Voor de gebruiker zichtbaar maken dat meta-data in de body staat:** wanneer `splitDocumentFrontMatter` geen blok vindt maar de body begint met bekende keys (`theme:`, `tlp:`), toon een eenmalige hint dat deze regels bij de front matter horen en via de stijl-/TLP-kiezer beheerd moeten worden, niet als tekst. Dit voorkomt verwarring zonder de bron stilletjes te veranderen. Voorkeur gaat uit naar spoor 1 (verbergen in de editor) als primaire oplossing, met spoor 2 als aanvulling wanneer de lekkage structureel is (geen fences). ## Impact - De editor toont geen meta-data-regels meer als tekst. - De `.md`-bron verandert niet; de functie is zuiver weergave-kant. - Bestaande tests voor `stripLeadingFrontMatterLeakage` dekken de logica; een nieuwe test controleert dat de editor-body schoon is.
brenno 2026-08-24 09:03:04 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1759
No description provided.