Documentopslag markeert schoon terwijl er nog getypt wordt #2720

Closed
opened 2026-11-02 22:19:01 +00:00 by brenno · 0 comments
Owner

Wat er mis is

Een documentopslag leest de bron, wacht op de schijf, en markeert het tabblad daarna onvoorwaardelijk als schoon. Aanslagen die tijdens dat wachten binnenkomen staan niet in het bestand. Het tabblad is niet meer vuil, de herstelkopie verdwijnt, en sluiten vraagt niets. Na sluiten of een crash is die tekst weg.

Bewijs

  • lib/widgets/shell/document_save_actions.dart saveDocumentWithDestination: de te schrijven bron wordt vóór de await vastgelegd; na een geslaagde schrijfactie volgt markSaved.
  • lib/state/document_provider.dart markSaved: zet isDirty op false en neemt de bron van dát moment als savedSource, niet de bron die net geschreven is.
  • lib/state/tabs_provider.dart: de herstelkopie gaat weg zodra het tabblad niet meer vuil is.

test/document_provider_test.dart dekt markSaved alleen op een stil document.

Voorstel

Na de await de bron opnieuw lezen. Alleen schoon markeren als die nog gelijk is aan wat er geschreven is. Anders vuil laten en meteen opnieuw schrijven, en daarop wachten vóór sluiten of afsluiten.

Regressietest: een DocumentNotifier waarvan het schrijven blokkeert, tussendoor een edit, daarna assert dat isDirty true blijft, de herstelkopie blijft, en een vervolgschrijfactie de nieuwe bron op schijf zet.

Het bestandsformaat verandert niet.

## Wat er mis is Een documentopslag leest de bron, wacht op de schijf, en markeert het tabblad daarna onvoorwaardelijk als schoon. Aanslagen die tijdens dat wachten binnenkomen staan niet in het bestand. Het tabblad is niet meer vuil, de herstelkopie verdwijnt, en sluiten vraagt niets. Na sluiten of een crash is die tekst weg. ## Bewijs - `lib/widgets/shell/document_save_actions.dart` `saveDocumentWithDestination`: de te schrijven bron wordt vóór de `await` vastgelegd; na een geslaagde schrijfactie volgt `markSaved`. - `lib/state/document_provider.dart` `markSaved`: zet `isDirty` op false en neemt de bron van dát moment als `savedSource`, niet de bron die net geschreven is. - `lib/state/tabs_provider.dart`: de herstelkopie gaat weg zodra het tabblad niet meer vuil is. `test/document_provider_test.dart` dekt `markSaved` alleen op een stil document. ## Voorstel Na de `await` de bron opnieuw lezen. Alleen schoon markeren als die nog gelijk is aan wat er geschreven is. Anders vuil laten en meteen opnieuw schrijven, en daarop wachten vóór sluiten of afsluiten. Regressietest: een `DocumentNotifier` waarvan het schrijven blokkeert, tussendoor een edit, daarna assert dat `isDirty` true blijft, de herstelkopie blijft, en een vervolgschrijfactie de nieuwe bron op schijf zet. Het bestandsformaat verandert niet.
brenno 2026-11-03 00:46:40 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2720
No description provided.