fix(web): broncontrole van de broneditor zonder Isolate.run (#2764) #2788
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!2788
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/web-deck-checks-2764"
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?
Closes #2764
Wat er mis was
De standaardrunner van de broncontrole (
deckChecksRunner) riep ook in de browserIsolate.runaan. Het web kent dat niet en gooit pas bij aanroep, ná de debounce van 350 ms. Gevolg: validatie, schrijftips en de Marp-controle kwamen niet, en de balk bleef op "Controleren…" staan. De widgettests zagen het niet, omdat ze de runner door een synchrone variant vervangen.Wat er verandert
lib/services/deck_source_checks.dart:kIsWeb ? Future.sync(...) : Isolate.run(...). Dat is hetzelfde patroon alsExportService._offload,_offloadPdfLayouten de zip-exports. Debounce, de pure regels en de bescherming tegen een verlopen ronde blijven gelijk.docs/CHECKS.md: de browserregressies staan in het commando om expliciet te draaien.Toetsen
markdown_deck_editor_web_test.dart@TestOn('browser'))deck_source_checks_test.dartRood vóór de fix: alle vier vielen in Chrome (
Unsupported operation: dart:isolate is not supported on dart4web). Met alleen de runnerwijziging erbij zijn alle vier groen.Sabotage native: met de runner altijd inline valt de isolatetoets (
Expected: <1>, Actual: <2>).Poorten
make check(incl. golden),make check-secretsenmake sastzijn groen op deze commit. De Chrome-toetsen draaien buitenmake check; ze zijn los gedraaid op deze commit.Niet in deze PR
lib/utils/sanitize_svg.dartheeft dezelfde fout: een geïmporteerde SVG boven 256 KB gaat op het web naarIsolate.run. Die krijgt een eigen issue en een eigen PR.🤖 Generated with Claude Code
De standaardrunner van de debounced inspectieronde riep ook in de browser `Isolate.run` aan. Dat gooit daar pas bij aanroep, ná de 350 ms debounce, als onafgevangen fout: validatie, schrijftips en de Marp-controle kwamen niet en de balk bleef op "Controleren…" staan. De widgettests zagen het niet, omdat ze de runner door een synchrone variant vervangen. Op het web draait de bundel nu via `Future.sync` op de main thread, zoals `ExportService._offload` het al deed; native blijft hij op een eigen isolate. Debounce, de pure controleregels en de bescherming tegen een verlopen ronde blijven ongewijzigd. Toetsen: - test/markdown_deck_editor_web_test.dart (@TestOn browser): de editor met de standaardrunner, openen en wijzigen, en een verdwenen editor. - test/deck_source_checks_test.dart (native en Chrome): zelfde oordeel als de directe controle; native blijft de teller van de UI-isolate staan, op web niet; een verlopen ronde levert niets af. Rood vóór de fix: alle vier in Chrome ("dart:isolate is not supported on dart4web"). Sabotage native (runner altijd inline): de isolatetoets valt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>