feat(kwaliteit,presenteren): splitsen-eerst, streepjes, live-fix (F) en Fix alle problemen (#912-#915) #917
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!917
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/kwaliteitssysteem-verbeteringen"
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?
Vier verbeteringen aan het kwaliteitssysteem, in één PR (issues #912, #913, #914, #915).
Wat & waarom
#912 — bij te veel bullets eerst splitsen. Op een dia met te veel bullets is Splits slide nu de eerste en enige aangeboden remedie. Uitleg naar notities verschijnt pas bij acht bullets of minder (
kMoveToNotesMaxBulletCount): naar de notities halen verandert het aantal bullets niet, dus lost "te vol" niet op — splitsen wel.#913 — streepjes in de notities. Regels die naar de sprekersnotities verhuizen (via Uitleg naar notities en Zinnen naar losse bullets) krijgen een
-ervoor, zodat ze daar als opsomming lezen. Een tussenkop blijft zonder streepje (het is context, geen punt).#914 — live-fix tijdens presenteren (F). Tijdens presenteren lost
Fhet probleem op de getoonde dia meteen op zonder te onderbreken: een meerzins-dia wordt opgeknipt (blijft één dia), een te volle dia wordt live gesplitst — de overloop komt als vervolgpagina('s) erachter. Werkt in enkel- én dubbelscherm (de beamer krijgt de verse dia-reeks via een nieuwreplaceDeck-kanaal). De knip wordt op de bron doorgeschreven via het dia-id (onSlideSplit→DeckNotifier.splitSlide), als één ongedaan-stap. Een geredigeerde dia blijft ongemoeid — de zwartgelakte blokken mogen niet naar de bron terug. Niets op te lossen of geredigeerd → een vluchtige melding in plaats van een stille no-op.#915 — knop "Fix alle problemen". Voor wie niet wil nadenken: één knop die alle structureel en veilig oplosbare problemen in de juiste volgorde wegwerkt (te volle dia's splitsen, meerzins-bullets opknippen, meegesleepte pagina's losmaken), steeds met de veiligste keuze en zonder ooit inhoud van een dia te halen. Eén ongedaan-stap. Wat menselijk oordeel vraagt (alt-tekst, themacontrast, privacy) blijft staan en wordt gemeld. De knop verschijnt alleen als er echt iets automatisch op te lossen valt.
Ontwerpkeuzes (met de indiener afgestemd)
Structuur
De split-in-pagina's logica is naar één gedeelde functie getrokken (
bullet_fixes.splitBulletSlidePages), zodat de paneelknop, de fix-alles-motor en de live-fix overal hetzelfde doen. De fix-beslissing zit in de pure, testbare serviceservices/quality_autofix.dart(fixAllStructuralQualityIssuesals vast punt;safeFixForSlidevoor één dia). In de presenter staan de fix-logica en de badge-bouwers top-level, zodat_FullscreenPresenterStateonder zijn plafond en het bestand onder de 1000-regelgrens blijft.Tests, docs, l10n
bullet_trim_test,bullet_fixes_test,quality_autofix_test,slide_quality_panel_test,fullscreen_presenter_test,audience_window_test.make checkgroen (11 gates, volledige testsuite, dekkingsvloer).Closes #912, #913, #914, #915.
🤖 Generated with Claude Code
Tijdens presenteren lost F het kwaliteitsprobleem op de huidige dia ter plekke op, zonder te onderbreken: een meerzins-dia wordt opgeknipt (blijft één dia), een te volle dia wordt live gesplitst — de overloop komt als vervolgpagina('s) erachter. Werkt in enkel- én dubbelscherm; de beamer krijgt de verse markdown via een nieuw replaceDeck-kanaal. Een geredigeerde dia blijft ongemoeid (de zwarte blokken mogen niet naar de bron terug). De knip wordt op de bron doorgeschreven via het dia-id (onSlideSplit → DeckNotifier.splitSlide), één ongedaan-stap. Gedeelde beslissing met de editor via safeFixForSlide(). Was er niets op te lossen of is de dia geredigeerd, dan verschijnt een vluchtige melding in plaats van een stille no-op. Klasse-plafond: de fix-logica en de drie badge-bouwers staan nu top-level (planLiveFix/sendDeckReplaceToAudience/_buildTypedBadge/_buildTargetBadge), AudienceWindowHandle verhuisde naar een part — zo blijft _FullscreenPresenterState onder zijn plafond en het bestand onder 1000 regels. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>