fix: stijl reist mee naast de markdown (#2640) #2655

Merged
brenno merged 4 commits from fix/logo-stijl-2640 into main 2026-10-29 01:51:46 +00:00
Owner

Samenvatting

  • Een presentatie-, donker en documentlogo is ook in de browser te kiezen. De bytes blijven in deze sessie (mem:) en gaan mee in een project, een .ocideckstyle of een pakket. Een kale markdown-download waarschuwt al wanneer er sessie-afbeeldingen zijn.
  • Een opgeslagen project kopieert die logo's naast elkaar. Dezelfde bytes delen een bestand; verschillende bytes met dezelfde naam krijgen logo_2.png. Een ontbrekend documentlogo wordt in een pakket leeg gezet, niet als dood absoluut pad meegegeven.
  • Een .ocideck legt de stijl in ocideck-style.json naast de markdown. OciDeck past die toe op dat deck en laat het globale profiel staan. Een ouder pakket zonder dat bestand houdt het lokale profiel. Absolute en onveilige paden vallen weg.
  • Annuleren (en Escape, en het venster sluiten) gooit een nieuw of verwijderd stijlprofiel en een gewijzigde documentlay-out weg. Opslaan schrijft één keer. Geïmporteerde logobestanden op schijf worden bij Annuleren niet verwijderd.
  • De documentlettermaat geldt in DOCX (halve punten) en ODT (punten). Koppen blijven absoluut in DOCX en procenten in ODT. De Marp-CSS neemt lettertype en tabelvelden van het profiel over.

Closes #2640
Closes #2641
Closes #2642
Closes #2643
Closes #2644
Closes #2645
Closes #2648
Closes #2649
Closes #2650
Closes #2651

#2646 en #2647 stonden al op main.

Afweging

Uitwisselbaarheid van het gedeelde deck wint van stilzwijgend het profiel van de ontvanger gebruiken: anders ziet de ontvanger een andere tabel en andere logo's dan de afzender bedoelde. Autonomie van het globale profiel wint van dat profiel overschrijven: de sidecar geldt voor dit deck, niet voor alle volgende. De markdown zelf blijft stijlloos; wat specifiek is staat ernaast. Veiligheid wint bij een pad dat buiten logos/ wijst: dat valt weg in plaats van een lokaal bestand van de ontvanger te openen.

Van gedachten veranderen als een pakket nadrukkelijk alleen inhoud voor OciDeck moet zijn, en de CSS alleen voor Marp CLI. Dan hoort de sidecar weg en blijft het lokale profiel, ook als de ontvanger iets anders ziet.

Niet gedraaid

  • DAST met OWASP ZAP: ZAP is hier niet geïnstalleerd, en de webbundel is CanvasKit zonder serverlogica.
  • De echte browserbestandskiezer. Onder flutter test is kIsWeb altijd onwaar; de tests dekken de bytecontrole, mem: en de sweep, niet de dialoog van de browser.
  • Word en LibreOffice. soffice staat niet op deze machine. De regressietest leest de geschreven w:sz en fo:font-size.

make check is groen op deze tak, inclusief de merge van main (#2652). make check-secrets en make sast ook. Geen nieuwe afhankelijkheid, dus geen SBOM-ronde.

## Samenvatting - Een presentatie-, donker en documentlogo is ook in de browser te kiezen. De bytes blijven in deze sessie (`mem:`) en gaan mee in een project, een `.ocideckstyle` of een pakket. Een kale markdown-download waarschuwt al wanneer er sessie-afbeeldingen zijn. - Een opgeslagen project kopieert die logo's naast elkaar. Dezelfde bytes delen een bestand; verschillende bytes met dezelfde naam krijgen `logo_2.png`. Een ontbrekend documentlogo wordt in een pakket leeg gezet, niet als dood absoluut pad meegegeven. - Een `.ocideck` legt de stijl in `ocideck-style.json` naast de markdown. OciDeck past die toe op dat deck en laat het globale profiel staan. Een ouder pakket zonder dat bestand houdt het lokale profiel. Absolute en onveilige paden vallen weg. - Annuleren (en Escape, en het venster sluiten) gooit een nieuw of verwijderd stijlprofiel en een gewijzigde documentlay-out weg. Opslaan schrijft één keer. Geïmporteerde logobestanden op schijf worden bij Annuleren niet verwijderd. - De documentlettermaat geldt in DOCX (halve punten) en ODT (punten). Koppen blijven absoluut in DOCX en procenten in ODT. De Marp-CSS neemt lettertype en tabelvelden van het profiel over. Closes #2640 Closes #2641 Closes #2642 Closes #2643 Closes #2644 Closes #2645 Closes #2648 Closes #2649 Closes #2650 Closes #2651 #2646 en #2647 stonden al op main. ## Afweging Uitwisselbaarheid van het gedeelde deck wint van stilzwijgend het profiel van de ontvanger gebruiken: anders ziet de ontvanger een andere tabel en andere logo's dan de afzender bedoelde. Autonomie van het globale profiel wint van dat profiel overschrijven: de sidecar geldt voor dit deck, niet voor alle volgende. De markdown zelf blijft stijlloos; wat specifiek is staat ernaast. Veiligheid wint bij een pad dat buiten `logos/` wijst: dat valt weg in plaats van een lokaal bestand van de ontvanger te openen. Van gedachten veranderen als een pakket nadrukkelijk alleen inhoud voor OciDeck moet zijn, en de CSS alleen voor Marp CLI. Dan hoort de sidecar weg en blijft het lokale profiel, ook als de ontvanger iets anders ziet. ## Niet gedraaid - DAST met OWASP ZAP: ZAP is hier niet geïnstalleerd, en de webbundel is CanvasKit zonder serverlogica. - De echte browserbestandskiezer. Onder `flutter test` is `kIsWeb` altijd onwaar; de tests dekken de bytecontrole, `mem:` en de sweep, niet de dialoog van de browser. - Word en LibreOffice. `soffice` staat niet op deze machine. De regressietest leest de geschreven `w:sz` en `fo:font-size`. `make check` is groen op deze tak, inclusief de merge van main (#2652). `make check-secrets` en `make sast` ook. Geen nieuwe afhankelijkheid, dus geen SBOM-ronde.
Een logo bleef een absoluut pad of was in de browser helemaal niet te kiezen, en een pakket opende met het profiel van de ontvanger. De logo's gaan het project in, ook als ze dezelfde naam hebben; het pakket legt de stijl in ocideck-style.json naast de markdown en laat het globale profiel staan. Annuleren gooit de werkkopie van de instellingen weg. Corpsgrootte en tabelstijl komen in DOCX, ODT en de Marp-CSS terecht.

Signed-off-by: Brenno de Winter <brenno@dewinter.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
De handleiding beloofde dat een logo overal te kiezen is en dat de tabelstijl met het kale markdown meereist. De browser houdt de bytes tot de sessie eindigt, en een ander profiel bij de ontvanger wint tot het pakket een sidecar meeneemt.

Signed-off-by: Brenno de Winter <brenno@dewinter.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
De logokiezer en de profielboekhouding staan niet meer op de dialoogklasse. Het oude plafond liet zeventig regels lucht; dat is precies de ruimte waarin de klasse ongemerkt weer groeit.

Signed-off-by: Brenno de Winter <brenno@dewinter.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
brenno merged commit 978b199646 into main 2026-10-29 01:51:46 +00:00
brenno deleted branch fix/logo-stijl-2640 2026-10-29 01:51:56 +00:00
Sign in to join this conversation.
No description provided.