fix(import): voer presentatievalidatie en parsing buiten de UI-isolate uit (#875) #902
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!902
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/875-import-off-isolate"
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?
Wat
Haalt de presentatie-import (#875, P0) van de UI-isolate af. Formaatvalidatie,
ZIP-decodering, XML/IWA/Snappy-parsen, reconstructie en classificatie draaiden
synchroon op de isolate die de UI tekent — bij een middelgroot, complex of
vijandig bestand bevroor het venster daardoor secondenlang, zonder betrouwbaar
annuleren en zonder verschil tussen "lang bezig" en "vastgelopen".
Hoe
pipeline/import_task.dart):ImportRequest→ sealed
ImportTaskResult, metImportProgressen de coöperatiefannuleerbare gedeelde kern
parseAndClassify.pipeline/import_runner*.dart): op desktop eenworker-isolate (
Isolate.spawn, kill bij annuleren, één uitkomst achter eenlatch); op web in-process met yields. Alleen de lichte deckbouw blijft op de
hoofd-isolate — die raakt
WebAssetStoreen de l10n-vertaler, die geen vanbeide over een isolategrens reizen.
directe kill. Stopt binnen een gedocumenteerde tijd en laat niets half af.
Nieuw annuleerbaar voortgangsvenster voor de enkelvoudige import; de wachtrij
stopt nu ook midden in een bestand.
ImportBudgetkrijgt demaxDuration-deadline die #874 al hadvoorzien (overschrijding →
tooLarge).Acceptatiecriteria (#875)
tikken tijdens het parsen van een groot deck.
(service- én bulk-niveau, ook midden in een bestand).
ImportFailure-redenen en per-dia-resultaten behouden.Toetsing
make checkvolledig groen: 6720 tests, dekking 86,6%, per-file-floor 0 onder20%, alle statische poorten. Nieuwe tests dekken het isolate-, web-, annuleer-,
deadline- en foutpad; de twee bestaande widget-tests draaien via de
debugImportTaskRunner-haak in-process (fake-async kan geen echte isolateaansturen).
Sluit #875.