fix(callouts): een callout uit de interface overleeft nu het opslaan (#1848) #1858
No reviewers
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!1858
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/1848-callout-overleeft-opslaan"
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?
Uit de functionele reis van #1848. De zwaarste bevinding van de hele acceptatieronde: alles wat je in de callout-dialoog maakte, was na één keer opslaan en heropenen weg.
Wat de app schreef
Geen dia-anker, geen
(A)in de opsommingsregel. Twee helften van dezelfde fout, allebei op zichzelf blokkerend:(A)niet. Die letter is de koppelsleutel (§2.1) — de ziende lezer leest hem af, de editor koppelt de verwijzing eraan, en een oudere lezer houdt er tenminste nog iets aan over. Zonder hem hoorde de verwijzing bij geen enkele regel. Daardoor bleef bij élke regel "Toevoegen" staan (de lijst koppelt op die letter) en kon je er ongemerkt een tweede verwijzing bij zetten waar het formaat er één toelaat.Handgeschreven decks werkten al — daarom viel het niet eerder op. De interface staat nu op gelijke hoogte.
Waar het anker wordt toegekend, en waarom daar
In
updateSlide, niet in de editor. Alleen op die plek is het hele deck bekend, en een anker moet uniek zijn: twee naamloze dia's zouden allebeidiakrijgen en elkaars blok overschrijven. De gebruiker ziet het anker nooit, dus het wordt toegekend en niet gevraagd — dezelfde lijn als de sprong-ankers van #1162.Ook mee: de LaTeX-export compileerde niet
Zodra er een beeldverwijzing op een dia stond tekende de TikZ-code met
fill=ocideckTableAccent, maar die kleur werd alleen in de article-preamble gedefinieerd. xcolor gaf "Undefined color" en het hele document weigerde — terwijl de exportdialoog belooft "compileer je met pdflatex of xelatex". De beamer-preamble definieert hem nu, met de accentkleur van het deck.buildBeamerDocumentbundelt preamble en body, zodat de twee helften niet meer los kunnen lopen: dát was de fout.Test plan
make checkgroenmake check-secretsgroen ·make sastgroen (0 bevindingen)callout_survives_save_test.dart— de hele keten dia → markdown → terug, plus een toets die vastlegt wat er zónder anker gebeurtcallout_editor_test.dart: de letter komt in de regel, een tweede verwijzing landt op de tweede regel, en verwijderen haalt de letter weer wegdeck_provider_test.dart: anker toegekend, twee naamloze dia's krijgen elk een eigen anker, en een dia zónder verwijzingen krijgt er géén opgedrongen(A)niet schrijven maakt twee toetsen rood, het anker niet toekennen ook tweeTwee ratchets, geen enkele opgehoogd
_withCalloutAnchorraakt geen notifier-stand en staat top-level. De switch over de vijf exportformaten is_encodegeworden in het part-bestand dat de rasterbouwers al hield; alles ná die laag is voor alle formaten gelijk. Beide plafonds zakken:exportvan 148 naar 125 regels, het bestand van 525 naar 494.Bewaker
Raakt het bestandsformaat — maar in de richting die het formaatcontract al voorschrijft: de
(A)in de regel en het anker als sleutel staan allebei in IMAGE_CALLOUTS.md §2.1 en §2.2. Wat hier verandert is dat de app zich eraan houdt. Er komt geen nieuwe sleutel bij en er wordt niets afgeleids opgeslagen.🤖 Generated with Claude Code