Formaat: een nieuw dia-directief overleeft geen opslag — weggegooid, of het wordt een notitie #1810

Closed
opened 2026-08-27 13:24:28 +00:00 by brenno · 0 comments
Owner

Wat er misgaat

Een nieuw ocideck_*-commentaar in een diablok overleeft geen enkele opslag.
Gemeten op main, parse → generateSlide, met
<!-- ocideck_iets: 0.62,0.28 --> op vier plaatsen:

plaats uitkomst
in split-text, getypeerde bulletsImage weggegooid
bovenaan het blok weggegooid
bovenaan een gewone bullets-dia weggegooid
onderaan een gewone bullets-dia wordt een presentatienotitie (_isTailNote)

Er is dus geen plaats waar hij heel blijft: drie keer stil verlies, één keer
stille verandering van betekenis — de waarde landt in de notities van de
gebruiker, waar hij niet hoort en waar hij bij de volgende opslag als notitie
wordt teruggeschreven.

Waarom dit nu een issue is en niet "gewoon hoe het werkt"

Het formaatcontract (FILE_FORMAT.md §3.0) belooft dit voor de front matter:
sleutels die OciDeck niet kent blijven exact staan. Voor per-dia-directieven
bestaat die belofte niet, en het gevolg is dat élk toekomstig dia-directief bij
een oudere lezer verdwijnt. Dat is niet hypothetisch: het is precies de reden dat
het callout-ontwerp (#1801) zijn gegevens níet in een dia-commentaar kan zetten
en moest uitwijken naar de front matter.

Zolang dit blijft staan, is "een nieuw dia-directief" geen begaanbare weg — niet
voor callouts, en niet voor wat er daarna komt.

Twee gaten, en ze verdienen allebei een reparatie

  1. De notitie-val. _isTailNote in
    lib/services/markdown_parse/markdown_service_parse_directives.dart maakt van
    elk onbekend commentaar aan het eind van een blok een presentatienotitie. Een
    commentaar dat met ocideck_ begint is per definitie een directief en hoort
    dat nooit te worden. Dit is klein en op zichzelf al winst: het voorkomt dat
    gegevens in andermans notities landen.

  2. De doorgeeflus. Voor de andere drie plaatsen moet er een bewaarroute zijn:
    een onbekend ocideck_*-directief wordt bij het lezen apart gezet en bij het
    schrijven onveranderd teruggezet, zoals preservedMarpLines dat al doet voor
    Marp-syntaxis die OciDeck niet modelleert. Dat is het echte werk, en het is
    wat "een oud bestand blijft leesbaar én bij te werken" ook de andere kant op
    waar maakt.

Toetsen

Een regressietest die een onbekend directief op alle vier de plaatsen door een
parse-en-opslag haalt en eist dat het er byte-voor-byte nog staat. Die test
faalt vandaag vier keer.

Herkomst

Gemeten tijdens het formaatontwerp voor #1801, met wegwerpprobes tegen main.
git diff v0.4.9..HEAD over het parse/serialiseer-pad is leeg, dus dit geldt
onverkort voor de uitgebrachte lezer.

**Wat er misgaat** Een nieuw `ocideck_*`-commentaar in een diablok overleeft geen enkele opslag. Gemeten op `main`, parse → `generateSlide`, met `<!-- ocideck_iets: 0.62,0.28 -->` op vier plaatsen: | plaats | uitkomst | | --- | --- | | in `split-text`, getypeerde `bulletsImage` | **weggegooid** | | bovenaan het blok | **weggegooid** | | bovenaan een gewone bullets-dia | **weggegooid** | | onderaan een gewone bullets-dia | **wordt een presentatienotitie** (`_isTailNote`) | Er is dus geen plaats waar hij heel blijft: drie keer stil verlies, één keer stille verandering van betekenis — de waarde landt in de notities van de gebruiker, waar hij niet hoort en waar hij bij de volgende opslag als notitie wordt teruggeschreven. **Waarom dit nu een issue is en niet "gewoon hoe het werkt"** Het formaatcontract (`FILE_FORMAT.md` §3.0) belooft dit voor de **front matter**: sleutels die OciDeck niet kent blijven exact staan. Voor per-dia-directieven bestaat die belofte niet, en het gevolg is dat élk toekomstig dia-directief bij een oudere lezer verdwijnt. Dat is niet hypothetisch: het is precies de reden dat het callout-ontwerp (#1801) zijn gegevens níet in een dia-commentaar kan zetten en moest uitwijken naar de front matter. Zolang dit blijft staan, is "een nieuw dia-directief" geen begaanbare weg — niet voor callouts, en niet voor wat er daarna komt. **Twee gaten, en ze verdienen allebei een reparatie** 1. **De notitie-val.** `_isTailNote` in `lib/services/markdown_parse/markdown_service_parse_directives.dart` maakt van elk onbekend commentaar aan het eind van een blok een presentatienotitie. Een commentaar dat met `ocideck_` begint is per definitie een directief en hoort dat nooit te worden. Dit is klein en op zichzelf al winst: het voorkomt dat gegevens in andermans notities landen. 2. **De doorgeeflus.** Voor de andere drie plaatsen moet er een bewaarroute zijn: een onbekend `ocideck_*`-directief wordt bij het lezen apart gezet en bij het schrijven onveranderd teruggezet, zoals `preservedMarpLines` dat al doet voor Marp-syntaxis die OciDeck niet modelleert. Dat is het echte werk, en het is wat "een oud bestand blijft leesbaar én bij te werken" ook de andere kant op waar maakt. **Toetsen** Een regressietest die een onbekend directief op alle vier de plaatsen door een parse-en-opslag haalt en eist dat het er byte-voor-byte nog staat. Die test faalt vandaag vier keer. **Herkomst** Gemeten tijdens het formaatontwerp voor #1801, met wegwerpprobes tegen `main`. `git diff v0.4.9..HEAD` over het parse/serialiseer-pad is leeg, dus dit geldt onverkort voor de uitgebrachte lezer.
brenno 2026-08-27 21:21:17 +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#1810
No description provided.